├── .gitignore ├── .gitlab-ci.yml ├── LICENSE ├── Makefile ├── configs ├── boards │ ├── ebf_imx_6ull_mini.conf │ ├── ebf_imx_6ull_pro.conf │ ├── ebf_imx_8m_mini.conf │ ├── ebf_rockchip_3328.conf │ ├── ebf_rockchip_3399.conf │ └── ebf_stm_mp157_star.conf ├── common.conf ├── functions │ ├── build │ ├── common-functions │ ├── functions │ └── git-repo └── user.conf ├── doc ├── image-builder_2.0 构建镜像过程.md ├── image-builder_2.0编译过程.png └── setting.md ├── env ├── ci.sh └── setenv.sh ├── firmware └── gpu │ └── galcore.ko ├── local_directory └── user_files_example ├── local_pkg ├── deb-example.deb └── ebf-boardtest_0.9.0_armhf.deb ├── publish └── fire-imx-stable.sh ├── readme.md ├── scripts ├── RootStock-NG.sh ├── build.sh ├── chroot.sh ├── common.sh ├── create_image.sh ├── create_imx8mm_uboot_bin.sh ├── create_rk3328_uboot_bin.sh ├── create_rk3399_uboot_bin.sh ├── create_rk3399_uboot_bin_common.sh ├── debootstrap.sh └── install_dependencies.sh ├── target ├── boot │ ├── autorun.inf │ └── fire.ico ├── init_scripts │ ├── actlogo.service │ ├── autowifi.service │ ├── bootlogo.service │ └── systemd-generic-board-startup.service ├── keyring │ ├── cacert.pem │ ├── deb.dovetail-automata.com-keyring.asc │ ├── deb.machinekit.io.pubkey.asc │ ├── keyfile │ ├── nodesource.gpg.key │ ├── packages.namniart.com-archive-keyring.asc │ ├── repos.azulsystems.com.pubkey.asc │ ├── repos.rcn-ee.net-archive-keyring.asc │ ├── repos.seeed-archive-keyring.asc │ └── ros-archive-keyring.asc └── other │ └── zz-uenv_txt └── tools ├── create_sdcard_from_flashlayout.sh ├── hwpack ├── FlashLayout_sdcard_stm32mp157c-dk2-basic.tsv └── boot.scr.cmd ├── imxv7_setup_sdcard.sh ├── setup_sdcard.sh └── stm32mp1_setup_sdcard.sh /.gitignore: -------------------------------------------------------------------------------- 1 | latest_version 2 | ignore/ 3 | deploy/ 4 | git/ 5 | *.host 6 | release 7 | .project 8 | *linux*/ 9 | *uboot*/ 10 | build/ 11 | history/ 12 | rkbin/ -------------------------------------------------------------------------------- /.gitlab-ci.yml: -------------------------------------------------------------------------------- 1 | variables: 2 | #git 邮箱 3 | GIT_USEREMAIL: hjw0415@outlook.com 4 | #git 用户名 5 | GIT_USERNAME: hejiawen 6 | 7 | # 定义 stages 8 | stages: 9 | 10 | - build_image 11 | 12 | # 定义 build_image job 13 | build_image_job: 14 | 15 | tags: 16 | - ENABLE 17 | 18 | stage: build_image 19 | 20 | #指定分支更新进行编译 21 | only: 22 | #- image-builder_2.0 23 | - master 24 | 25 | before_script: 26 | 27 | - git config --global user.email "$GIT_USEREMAIL" 28 | - git config --global user.name "$GIT_USERNAME" 29 | 30 | script: 31 | 32 | #编译镜像 33 | - if [ $uboot_branch ];then 34 | - ./env/ci.sh $uboot_branch 35 | - elif [ $kernel_branch ]; then 36 | - ./env/ci.sh $kernel_branch 37 | - else ./env/ci.sh 38 | - fi 39 | 40 | 41 | when: delayed 42 | start_in: 180 minutes 43 | #start_in: 10 sec 44 | 45 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2009-2014 Robert Nelson 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | this software and associated documentation files (the "Software"), to deal in 7 | the Software without restriction, including without limitation the rights to 8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 9 | the Software, and to permit persons to whom the Software is furnished to do so, 10 | subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | all: 2 | ifeq ($(and $(DISTRIBUTION),$(DISTRIB_RELEASE),$(DISTRIB_TYPE),$(FIRE_BOARD),$(LINUX),$(UBOOT),$(INSTALL_TYPE)),) 3 | $(call help_message) 4 | else 5 | @./scripts/create_image.sh 6 | endif 7 | 8 | define help_message 9 | @echo "You should setup environment first." 10 | @echo "Run 'source env/setenv.sh' to setup environment." 11 | endef 12 | 13 | kernel: 14 | ifeq ($(and $(DISTRIBUTION),$(DISTRIB_RELEASE),$(DISTRIB_TYPE),$(FIRE_BOARD),$(LINUX),$(UBOOT),$(INSTALL_TYPE)),) 15 | $(call help_message) 16 | else 17 | @./scripts/build.sh linux 18 | endif 19 | 20 | uboot: 21 | ifeq ($(and $(DISTRIBUTION),$(DISTRIB_RELEASE),$(DISTRIB_TYPE),$(FIRE_BOARD),$(LINUX),$(UBOOT),$(INSTALL_TYPE)),) 22 | $(call help_message) 23 | else 24 | @./scripts/build.sh u-boot 25 | endif 26 | 27 | kernel-deb: 28 | ifeq ($(and $(DISTRIBUTION),$(DISTRIB_RELEASE),$(DISTRIB_TYPE),$(FIRE_BOARD),$(LINUX),$(UBOOT),$(INSTALL_TYPE)),) 29 | $(call help_message) 30 | else 31 | @./scripts/build.sh linux-deb 32 | endif 33 | 34 | tfa: 35 | ifeq ($(and $(DISTRIBUTION),$(DISTRIB_RELEASE),$(DISTRIB_TYPE),$(DISTRIB_ARCH),$(FIRE_BOARD),$(LINUX),$(UBOOT),$(INSTALL_TYPE)),) 36 | $(call help_message) 37 | else 38 | @./scripts/build.sh tfa 39 | endif 40 | 41 | info: 42 | @echo "" 43 | @echo "Current environment:" 44 | @echo "===========================================" 45 | @echo 46 | @echo "#FIRE_BOARD=${FIRE_BOARD}" 47 | @echo "#LINUX=${LINUX}" 48 | @echo "#UBOOT=${UBOOT}" 49 | @echo "#DISTRIBUTION=${DISTRIBUTION}" 50 | @echo "#DISTRIB_RELEASE=${DISTRIB_RELEASE}" 51 | @echo "#DISTRIB_TYPE=${DISTRIB_TYPE}" 52 | @echo "#INSTALL_TYPE=${INSTALL_TYPE}" 53 | @echo 54 | @echo "===========================================" 55 | @echo "" 56 | 57 | help: 58 | @echo "" 59 | @echo "fire scripts help messages:" 60 | @echo "" 61 | @echo "TARGET:" 62 | @echo " info - Display current environment." 63 | @echo " all - Create image according to environment." 64 | @echo " uboot - Build u-boot." 65 | @echo " kernel - Build linux kernel." 66 | @echo " kernel-deb - Build linux kernel." 67 | @echo "" 68 | @echo "OPTIONS:" 69 | @echo " DOWNLOAD_MIRROR=china - Improve download speed for Chinese users." 70 | @echo " FORCE_UPDATE=enable - Force everything to recompile." 71 | @echo "" -------------------------------------------------------------------------------- /configs/boards/ebf_imx_6ull_mini.conf: -------------------------------------------------------------------------------- 1 | ## [Git Remote Repository] 2 | SUPPORTED_UBOOT=("2020.10") 3 | SUPPORTED_UBOOT_TAGS=("latest") 4 | SUPPORTED_LINUX=( "4.19.35" "4.19.35-rt19" "4.19.71") 5 | SUPPORTED_LINUX_TAGS=("latest" "ebf_imx_4.19_2020_12_09") 6 | 7 | case "$UBOOT" in 8 | 2020.10) 9 | UBOOT_GIT_BRANCH="ebf_v2020_10_imx" 10 | UBOOT_COMPILER="arm-none-eabi-" 11 | UBOOT_DIR="$ROOT/ebf_linux_uboot" 12 | UBOOT_BUILD_FILE="u-boot-dtb.imx" 13 | NUBOOT_FILE="u-boot-nand.imx" 14 | MUBOOT_FILE="u-boot-mmc.imx" 15 | UBOOT_MMC_DEFCONFIG="mx6ull_fire_mmc_defconfig" 16 | UBOOT_NAND_DEFCONFIG="mx6ull_fire_nand_defconfig" 17 | ;; 18 | esac 19 | 20 | case "$UBOOT_TAGS" in 21 | latest) 22 | UBOOT_GIT_TAGS="" 23 | ;; 24 | ebf_imx_4.19_2020_12_09) 25 | UBOOT_GIT_TAGS="ebf_imx_4.19_2020_12_09" 26 | ;; 27 | esac 28 | 29 | case "$LINUX" in 30 | 4.19.71) 31 | LINUX_MMC_DTB="imx6ull-mmc-npi.dtb" 32 | LINUX_NAND_DTB="imx6ull-nand-npi.dtb" 33 | LINUX_GIT_BRANCH="ebf_4.19_imx" 34 | LINUX_DEFCONFIG="npi_v7_defconfig" 35 | KERNEL_COMPILER="arm-linux-gnueabihf-" 36 | LINUX_DIR="$ROOT/ebf_linux_kernel" 37 | LOCAL_VERSION="-imx6" 38 | KERNEL_DEB="linux-image-${LINUX}${LOCAL_VERSION}_${KDEB_VERSION}_armhf.deb" 39 | ;; 40 | 41 | 4.19.35) 42 | LINUX_MMC_DTB="imx6ull-mmc-npi.dtb" 43 | LINUX_NAND_DTB="imx6ull-nand-npi.dtb" 44 | LINUX_GIT_BRANCH="ebf_4.19.35_imx6ul" 45 | LINUX_DEFCONFIG="npi_v7_defconfig" 46 | KERNEL_COMPILER="arm-linux-gnueabihf-" 47 | LINUX_DIR="$ROOT/ebf_linux_kernel" 48 | LOCAL_VERSION="-imx6" 49 | KERNEL_DEB="linux-image-${LINUX}${LOCAL_VERSION}_${KDEB_VERSION}_armhf.deb" 50 | ;; 51 | 4.19.35-rt19) 52 | LINUX_MMC_DTB="imx6ull-mmc-npi.dtb" 53 | LINUX_NAND_DTB="imx6ull-nand-npi.dtb" 54 | LINUX_GIT_BRANCH="ebf_4.19.35-rt19_imx6ul" 55 | LINUX_DEFCONFIG="npi_v7_defconfig" 56 | KERNEL_COMPILER="arm-linux-gnueabihf-" 57 | LINUX_DIR="$ROOT/ebf_linux_kernel" 58 | LOCAL_VERSION="-imx6" 59 | KERNEL_DEB="linux-image-${LINUX}${LOCAL_VERSION}_${KDEB_VERSION}_armhf.deb" 60 | ;; 61 | esac 62 | 63 | case "$LINUX_TAGS" in 64 | latest) 65 | LINUX_GIT_TAGS="" 66 | ;; 67 | ebf_imx_4.19_2020_12_09) 68 | LINUX_GIT_TAGS="ebf_imx_4.19_2020_12_09" 69 | ;; 70 | esac 71 | 72 | ## [Image Build Info] 73 | ARCH="arm" 74 | ebf_repo_dist="carp-imx6" 75 | deb_arch="armhf" 76 | time=$(date +%Y-%m-%d) 77 | image_name="${deb_distribution}-${release}-${DISTRIB_TYPE}-${deb_arch}-${time}" 78 | target_name="imx6ull" 79 | options="--img-2gb ${target_name}-${image_name} --enable-fat-partition" 80 | options="${options} --enable-uboot-cape-overlays --force-device-tree ${LINUX_MMC_DTB} " 81 | options="${options} --backup-device-tree ${LINUX_NAND_DTB} --bootloader ${BUILD}" 82 | conf_board="fire-imx6ull-npi" 83 | chroot_COPY_SETUP_SDCARD="enable" 84 | chroot_bootPart_logo="enable" 85 | chroot_custom_setup_sdcard="imxv7_setup_sdcard.sh" 86 | include_firmware="enable" 87 | 88 | ## [Bootloader Partition] 89 | bootloader_location="dd_uboot_boot" 90 | boot_name="$MUBOOT_FILE" 91 | dd_uboot_count="" 92 | dd_uboot_seek="2" 93 | dd_uboot_conf="" 94 | dd_uboot_bs="512" 95 | conf_boot_startmb="4" 96 | conf_boot_endmb="40" 97 | conf_boot_fstype="fat" 98 | conf_root_device="/dev/mmcblk0" 99 | USE_LOCAL_BOOT="yes" 100 | 101 | ## [CPU Perfermance] 102 | CPUMIN=19800000 103 | CPUMAX=79200000 104 | GOVERNOR=performance 105 | 106 | ## Extra software 107 | board_deb_include="ebf-gst" 108 | other_pk="ebf-gst" 109 | ## [Firmware] 110 | ROOT_FIRMWARE_PATH="" 111 | NEED_EXT4_IMG="false" 112 | ## [Device Tree Overlays] 113 | OVERLAYS=" 114 | dtoverlay=/usr/lib/linux-image-${LINUX}${LOCAL_VERSION}/overlays/imx-fire-i2c1.dtbo 115 | dtoverlay=/usr/lib/linux-image-${LINUX}${LOCAL_VERSION}/overlays/imx-fire-i2c2.dtbo 116 | dtoverlay=/usr/lib/linux-image-${LINUX}${LOCAL_VERSION}/overlays/imx-fire-74hc595.dtbo 117 | #dtoverlay=/usr/lib/linux-image-${LINUX}${LOCAL_VERSION}/overlays/imx-fire-485r1.dtbo 118 | #dtoverlay=/usr/lib/linux-image-${LINUX}${LOCAL_VERSION}/overlays/imx-fire-485r2.dtbo 119 | dtoverlay=/usr/lib/linux-image-${LINUX}${LOCAL_VERSION}/overlays/imx-fire-adc1.dtbo 120 | #dtoverlay=/usr/lib/linux-image-${LINUX}${LOCAL_VERSION}/overlays/imx-fire-hdmi.dtbo 121 | #dtoverlay=/usr/lib/linux-image-${LINUX}${LOCAL_VERSION}/overlays/imx-fire-cam.dtbo 122 | #dtoverlay=/usr/lib/linux-image-${LINUX}${LOCAL_VERSION}/overlays/imx-fire-btwifi.dtbo 123 | #dtoverlay=/usr/lib/linux-image-${LINUX}${LOCAL_VERSION}/overlays/imx-fire-can1.dtbo 124 | #dtoverlay=/usr/lib/linux-image-${LINUX}${LOCAL_VERSION}/overlays/imx-fire-can2.dtbo 125 | #dtoverlay=/usr/lib/linux-image-${LINUX}${LOCAL_VERSION}/overlays/imx-fire-dht11.dtbo 126 | #dtoverlay=/usr/lib/linux-image-${LINUX}${LOCAL_VERSION}/overlays/imx-fire-ecspi3.dtbo 127 | dtoverlay=/usr/lib/linux-image-${LINUX}${LOCAL_VERSION}/overlays/imx-fire-key.dtbo 128 | dtoverlay=/usr/lib/linux-image-${LINUX}${LOCAL_VERSION}/overlays/imx-fire-lcd.dtbo 129 | dtoverlay=/usr/lib/linux-image-${LINUX}${LOCAL_VERSION}/overlays/imx-fire-touch-capacitive-goodix.dtbo 130 | dtoverlay=/usr/lib/linux-image-${LINUX}${LOCAL_VERSION}/overlays/imx-fire-led.dtbo 131 | #dtoverlay=/usr/lib/linux-image-${LINUX}${LOCAL_VERSION}/overlays/imx-fire-sound.dtbo 132 | #dtoverlay=/usr/lib/linux-image-${LINUX}${LOCAL_VERSION}/overlays/imx-fire-sound-aic3106.dtbo 133 | dtoverlay=/usr/lib/linux-image-${LINUX}${LOCAL_VERSION}/overlays/imx-fire-uart2.dtbo 134 | #dtoverlay=/usr/lib/linux-image-${LINUX}${LOCAL_VERSION}/overlays/imx-fire-uart3.dtbo 135 | #dtoverlay=/usr/lib/linux-image-${LINUX}${LOCAL_VERSION}/overlays/imx-fire-mpu6050.dtbo 136 | " 137 | 138 | -------------------------------------------------------------------------------- /configs/boards/ebf_imx_6ull_pro.conf: -------------------------------------------------------------------------------- 1 | ## [Git Remote Repository] 2 | SUPPORTED_UBOOT=("2020.10") 3 | SUPPORTED_UBOOT_TAGS=("latest") 4 | SUPPORTED_LINUX=( "4.19.35" "4.19.35-rt19" "4.19.71") 5 | SUPPORTED_LINUX_TAGS=("latest" "ebf_imx_4.19_2020_12_09") 6 | 7 | case "$UBOOT" in 8 | 2020.10) 9 | UBOOT_GIT_BRANCH="ebf_v2020_10_imx" 10 | UBOOT_COMPILER="arm-none-eabi-" 11 | UBOOT_DIR="$ROOT/ebf_linux_uboot" 12 | UBOOT_BUILD_FILE="u-boot-dtb.imx" 13 | NUBOOT_FILE="u-boot-nand.imx" 14 | MUBOOT_FILE="u-boot-mmc.imx" 15 | UBOOT_MMC_DEFCONFIG="mx6ull_fire_mmc_defconfig" 16 | UBOOT_NAND_DEFCONFIG="mx6ull_fire_nand_defconfig" 17 | ;; 18 | esac 19 | 20 | case "$UBOOT_TAGS" in 21 | latest) 22 | UBOOT_GIT_TAGS="" 23 | ;; 24 | ebf_imx_4.19_2020_12_09) 25 | UBOOT_GIT_TAGS="ebf_imx_4.19_2020_12_09" 26 | ;; 27 | esac 28 | 29 | case "$LINUX" in 30 | 4.19.71) 31 | LINUX_MMC_DTB="imx6ull-mmc-npi.dtb" 32 | LINUX_NAND_DTB="imx6ull-nand-npi.dtb" 33 | LINUX_GIT_BRANCH="ebf_4.19_imx" 34 | LINUX_DEFCONFIG="npi_v7_defconfig" 35 | KERNEL_COMPILER="arm-linux-gnueabihf-" 36 | LINUX_DIR="$ROOT/ebf_linux_kernel" 37 | LOCAL_VERSION="-imx6" 38 | KERNEL_DEB="linux-image-${LINUX}${LOCAL_VERSION}_${KDEB_VERSION}_armhf.deb" 39 | ;; 40 | 41 | 4.19.35) 42 | LINUX_MMC_DTB="imx6ull-mmc-npi.dtb" 43 | LINUX_NAND_DTB="imx6ull-nand-npi.dtb" 44 | LINUX_GIT_BRANCH="ebf_4.19.35_imx6ul" 45 | LINUX_DEFCONFIG="npi_v7_defconfig" 46 | KERNEL_COMPILER="arm-linux-gnueabihf-" 47 | LINUX_DIR="$ROOT/ebf_linux_kernel" 48 | LOCAL_VERSION="-imx6" 49 | KERNEL_DEB="linux-image-${LINUX}${LOCAL_VERSION}_${KDEB_VERSION}_armhf.deb" 50 | ;; 51 | 52 | 4.19.35-rt19) 53 | LINUX_MMC_DTB="imx6ull-mmc-npi.dtb" 54 | LINUX_NAND_DTB="imx6ull-nand-npi.dtb" 55 | LINUX_GIT_BRANCH="ebf_4.19.35-rt19_imx6ul" 56 | LINUX_DEFCONFIG="npi_v7_defconfig" 57 | KERNEL_COMPILER="arm-linux-gnueabihf-" 58 | LINUX_DIR="$ROOT/ebf_linux_kernel" 59 | LOCAL_VERSION="-imx6" 60 | KERNEL_DEB="linux-image-${LINUX}${LOCAL_VERSION}_${KDEB_VERSION}_armhf.deb" 61 | ;; 62 | esac 63 | 64 | case "$LINUX_TAGS" in 65 | latest) 66 | LINUX_GIT_TAGS="" 67 | ;; 68 | ebf_imx_4.19_2020_12_09) 69 | LINUX_GIT_TAGS="ebf_imx_4.19_2020_12_09" 70 | ;; 71 | esac 72 | 73 | ## [Image Build Info] 74 | ARCH="arm" 75 | ebf_repo_dist="carp-imx6" 76 | deb_arch="armhf" 77 | time=$(date +%Y-%m-%d) 78 | image_name="${deb_distribution}-${release}-${DISTRIB_TYPE}-${deb_arch}-${time}" 79 | target_name="imx6ull" 80 | options="--img-2gb ${target_name}-${image_name} --enable-fat-partition" 81 | options="${options} --enable-uboot-cape-overlays --force-device-tree ${LINUX_MMC_DTB} " 82 | options="${options} --backup-device-tree ${LINUX_NAND_DTB} --bootloader ${BUILD}" 83 | conf_board="fire-imx6ull-npi" 84 | chroot_COPY_SETUP_SDCARD="enable" 85 | chroot_bootPart_logo="enable" 86 | chroot_custom_setup_sdcard="imxv7_setup_sdcard.sh" 87 | include_firmware="enable" 88 | 89 | ## [Bootloader Partition] 90 | bootloader_location="dd_uboot_boot" 91 | boot_name="$MUBOOT_FILE" 92 | dd_uboot_count="" 93 | dd_uboot_seek="2" 94 | dd_uboot_conf="" 95 | dd_uboot_bs="512" 96 | conf_boot_startmb="4" 97 | conf_boot_endmb="40" 98 | conf_boot_fstype="fat" 99 | conf_root_device="/dev/mmcblk0" 100 | USE_LOCAL_BOOT="yes" 101 | ## Extra software 102 | board_deb_include="ebf-gst" 103 | other_pk="ebf-gst" 104 | ## [Firmware] 105 | ROOT_FIRMWARE_PATH="" 106 | NEED_EXT4_IMG="false" 107 | ## [Device Tree Overlays] 108 | OVERLAYS=" 109 | dtoverlay=/usr/lib/linux-image-${LINUX}${LOCAL_VERSION}/overlays/imx-fire-i2c1.dtbo 110 | dtoverlay=/usr/lib/linux-image-${LINUX}${LOCAL_VERSION}/overlays/imx-fire-i2c2.dtbo 111 | dtoverlay=/usr/lib/linux-image-${LINUX}${LOCAL_VERSION}/overlays/imx-fire-74hc595.dtbo 112 | #dtoverlay=/usr/lib/linux-image-${LINUX}${LOCAL_VERSION}/overlays/imx-fire-485r1.dtbo 113 | #dtoverlay=/usr/lib/linux-image-${LINUX}${LOCAL_VERSION}/overlays/imx-fire-485r2.dtbo 114 | dtoverlay=/usr/lib/linux-image-${LINUX}${LOCAL_VERSION}/overlays/imx-fire-adc1.dtbo 115 | dtoverlay=/usr/lib/linux-image-${LINUX}${LOCAL_VERSION}/overlays/imx-fire-hdmi.dtbo 116 | #dtoverlay=/usr/lib/linux-image-${LINUX}${LOCAL_VERSION}/overlays/imx-fire-cam.dtbo 117 | #dtoverlay=/usr/lib/linux-image-${LINUX}${LOCAL_VERSION}/overlays/imx-fire-btwifi.dtbo 118 | #dtoverlay=/usr/lib/linux-image-${LINUX}${LOCAL_VERSION}/overlays/imx-fire-can1.dtbo 119 | #dtoverlay=/usr/lib/linux-image-${LINUX}${LOCAL_VERSION}/overlays/imx-fire-can2.dtbo 120 | #dtoverlay=/usr/lib/linux-image-${LINUX}${LOCAL_VERSION}/overlays/imx-fire-dht11.dtbo 121 | #dtoverlay=/usr/lib/linux-image-${LINUX}${LOCAL_VERSION}/overlays/imx-fire-ecspi3.dtbo 122 | dtoverlay=/usr/lib/linux-image-${LINUX}${LOCAL_VERSION}/overlays/imx-fire-key.dtbo 123 | dtoverlay=/usr/lib/linux-image-${LINUX}${LOCAL_VERSION}/overlays/imx-fire-lcd.dtbo 124 | dtoverlay=/usr/lib/linux-image-${LINUX}${LOCAL_VERSION}/overlays/imx-fire-touch-capacitive-goodix.dtbo 125 | #dtoverlay=/usr/lib/linux-image-${LINUX}${LOCAL_VERSION}/overlays/imx-fire-touch-capacitive-gt1151.dtbo 126 | dtoverlay=/usr/lib/linux-image-${LINUX}${LOCAL_VERSION}/overlays/imx-fire-led.dtbo 127 | dtoverlay=/usr/lib/linux-image-${LINUX}${LOCAL_VERSION}/overlays/imx-fire-sound.dtbo 128 | #dtoverlay=/usr/lib/linux-image-${LINUX}${LOCAL_VERSION}/overlays/imx-fire-sound-aic3106.dtbo 129 | dtoverlay=/usr/lib/linux-image-${LINUX}${LOCAL_VERSION}/overlays/imx-fire-uart2.dtbo 130 | #dtoverlay=/usr/lib/linux-image-${LINUX}${LOCAL_VERSION}/overlays/imx-fire-uart3.dtbo 131 | dtoverlay=/usr/lib/linux-image-${LINUX}${LOCAL_VERSION}/overlays/imx-fire-mpu6050.dtbo 132 | #dtoverlay=/usr/lib/linux-image-${LINUX}${LOCAL_VERSION}/overlays/imx-fire-bluetooth.dtbo 133 | #dtoverlay=/usr/lib/linux-image-${LINUX}${LOCAL_VERSION}/overlays/imx-fire-otg1.dtbo 134 | " 135 | 136 | -------------------------------------------------------------------------------- /configs/boards/ebf_imx_8m_mini.conf: -------------------------------------------------------------------------------- 1 | ## [Git Remote Repository] 2 | SUPPORTED_UBOOT=("2020.04") 3 | SUPPORTED_UBOOT_TAGS=("latest") 4 | SUPPORTED_LINUX=("5.4.47") 5 | SUPPORTED_LINUX_TAGS=("latest") 6 | 7 | case "$UBOOT" in 8 | 2020.04) 9 | UBOOT_GIT_BRANCH="imx_v2020.04_5.4.47_2.2.0" 10 | UBOOT_COMPILER="aarch64-linux-gnu-" 11 | UBOOT_DIR="$ROOT/ebf_linux_uboot" 12 | SPL_BUILD_FILE="u-boot-spl.bin" 13 | UBOOT_BUILD_FILE="u-boot-nodtb.bin" 14 | NUBOOT_FILE="u-boot-nodtb.bin" 15 | MUBOOT_FILE="u-boot-nodtb.bin" 16 | UBOOT_MMC_DEFCONFIG="imx8mm_fire_mmc_defconfig" 17 | UBOOT_NAND_DEFCONFIG="imx8mm_fire_mmc_defconfig" 18 | UBOOT_DTB="imx8mm-fire-mmc.dtb" 19 | BUILD_BIN_SCRIPT="create_imx8mm_uboot_bin.sh" 20 | SCRIPT_URL="git@gitlab.embedfire.local:st-mp1/ebf-imx-mkimage.git" 21 | SCRIPT_DIR="ebf-imx-mkimage" 22 | ;; 23 | esac 24 | 25 | case "$UBOOT_TAGS" in 26 | latest) 27 | UBOOT_GIT_TAGS="" 28 | ;; 29 | esac 30 | 31 | case "$LINUX" in 32 | 5.4.47) 33 | LINUX_MMC_DTB="freescale/imx8mm-ebf-basic.dtb" 34 | LINUX_NAND_DTB="freescale/imx8mm-ebf-basic.dtb" 35 | LINUX_GIT_BRANCH="ebf_5.4.47_imx8mmini" 36 | LINUX_DEFCONFIG="imx_v8_defconfig" 37 | KERNEL_COMPILER="aarch64-linux-gnu-" 38 | LINUX_DIR="$ROOT/ebf_linux_kernel" 39 | LOCAL_VERSION="-imx8mm" 40 | KERNEL_DEB="linux-image-${LINUX}${LOCAL_VERSION}_${KDEB_VERSION}_arm64.deb" 41 | ;; 42 | esac 43 | 44 | case "$LINUX_TAGS" in 45 | latest) 46 | LINUX_GIT_TAGS="" 47 | ;; 48 | esac 49 | 50 | ## [Image Build Info] 51 | ARCH="arm64" 52 | ebf_repo_dist="carp-imx6" 53 | deb_arch="arm64" 54 | time=$(date +%Y-%m-%d) 55 | image_name="${deb_distribution}-${release}-${DISTRIB_TYPE}-${deb_arch}-${time}" 56 | target_name="imx8m-mini" 57 | options="--img-2gb ${target_name}-${image_name} --enable-fat-partition" 58 | options="${options} --enable-uboot-cape-overlays --force-device-tree ${LINUX_MMC_DTB} " 59 | options="${options} --backup-device-tree ${LINUX_NAND_DTB} --bootloader ${BUILD}" 60 | conf_board="fire-imx8m-mini-npi" 61 | chroot_COPY_SETUP_SDCARD="enable" 62 | chroot_bootPart_logo="enable" 63 | chroot_custom_setup_sdcard="imxv7_setup_sdcard.sh" 64 | include_firmware="enable" 65 | 66 | repo_external_pkg_list="" 67 | 68 | ## [Bootloader Partition] 69 | bootloader_location="dd_uboot_boot" 70 | boot_name="$MUBOOT_FILE" 71 | dd_uboot_count="" 72 | dd_uboot_seek="66" 73 | dd_uboot_conf="" 74 | dd_uboot_bs="512" 75 | conf_boot_startmb="4" 76 | conf_boot_endmb="100" 77 | conf_boot_fstype="fat" 78 | conf_root_device="/dev/mmcblk1" 79 | USE_LOCAL_BOOT="yes" 80 | ## [Firmware] 81 | ROOT_FIRMWARE_PATH="" 82 | NEED_EXT4_IMG="false" 83 | ## [Device Tree Overlays] 84 | OVERLAYS=" 85 | dtoverlay=/usr/lib/linux-image-${LINUX}${LOCAL_VERSION}/freescale/overlays/imx8mm-fire-rx8010sj.dtbo 86 | dtoverlay=/usr/lib/linux-image-${LINUX}${LOCAL_VERSION}/freescale/overlays/imx8mm-fire-leds.dtbo 87 | dtoverlay=/usr/lib/linux-image-${LINUX}${LOCAL_VERSION}/freescale/overlays/imx8mm-fire-keys.dtbo 88 | dtoverlay=/usr/lib/linux-image-${LINUX}${LOCAL_VERSION}/freescale/overlays/imx8mm-fire-rs485.dtbo 89 | dtoverlay=/usr/lib/linux-image-${LINUX}${LOCAL_VERSION}/freescale/overlays/imx8mm-fire-rs232.dtbo 90 | dtoverlay=/usr/lib/linux-image-${LINUX}${LOCAL_VERSION}/freescale/overlays/imx8mm-fire-touch-capacitive-goodix.dtbo 91 | dtoverlay=/usr/lib/linux-image-${LINUX}${LOCAL_VERSION}/freescale/overlays/imx8mm-fire-cam.dtbo 92 | #dtoverlay=/usr/lib/linux-image-${LINUX}${LOCAL_VERSION}/freescale/overlays/imx8mm-fire-hdmi.dtbo 93 | dtoverlay=/usr/lib/linux-image-${LINUX}${LOCAL_VERSION}/freescale/overlays/imx8mm-fire-mipi-hx8399.dtbo 94 | dtoverlay=/usr/lib/linux-image-${LINUX}${LOCAL_VERSION}/freescale/overlays/imx8mm-fire-sound.dtbo 95 | dtoverlay=/usr/lib/linux-image-${LINUX}${LOCAL_VERSION}/freescale/overlays/imx8mm-fire-pcie.dtbo 96 | dtoverlay=/usr/lib/linux-image-${LINUX}${LOCAL_VERSION}/freescale/overlays/imx8mm-fire-btwifi.dtbo 97 | dtoverlay=/usr/lib/linux-image-${LINUX}${LOCAL_VERSION}/freescale/overlays/imx8mm-fire-rpmsg.dtbo 98 | 99 | " 100 | 101 | -------------------------------------------------------------------------------- /configs/boards/ebf_rockchip_3328.conf: -------------------------------------------------------------------------------- 1 | ## [Git Remote Repository] 2 | SUPPORTED_UBOOT=("2017.09") 3 | SUPPORTED_UBOOT_TAGS=("latest") 4 | SUPPORTED_LINUX=("5.10.25") 5 | SUPPORTED_LINUX_TAGS=("latest") 6 | 7 | case "$UBOOT" in 8 | 2017.09) 9 | UBOOT_GIT_BRANCH="ebf_v2017_09_rk3328" 10 | UBOOT_COMPILER="aarch64-linux-gnu-" 11 | UBOOT_DIR="$ROOT/ebf_linux_uboot" 12 | BUILD_SCRIPT_OF_UBOOT="make.sh" 13 | BUILD_BIN_SCRIPT="create_rk3328_uboot_bin.sh" 14 | NUBOOT_FILE="rk3328_uboot.bin" 15 | MUBOOT_FILE="rk3328_uboot.bin" 16 | SCRIPT_URL="https://gitee.com/Embedfire/rkbin.git" 17 | SCRIPT_DIR="rkbin" 18 | ;; 19 | esac 20 | 21 | case "$UBOOT_TAGS" in 22 | latest) 23 | UBOOT_GIT_TAGS="" 24 | ;; 25 | esac 26 | 27 | case "$LINUX" in 28 | 5.10.25) 29 | LINUX_MMC_DTB="rockchip/rk3328-doornet1.dtb" 30 | LINUX_NAND_DTB="rockchip/rk3328-doornet1.dtb" 31 | LINUX_GIT_BRANCH="ebf_5.10.25_rk33xx" 32 | LINUX_DEFCONFIG="doornet1_defconfig" 33 | KERNEL_COMPILER="aarch64-linux-gnu-" 34 | LINUX_DIR="$ROOT/ebf_linux_kernel" 35 | LOCAL_VERSION="-rk3328" 36 | KERNEL_DEB="linux-image-${LINUX}${LOCAL_VERSION}_${KDEB_VERSION}_arm64.deb" 37 | ;; 38 | esac 39 | 40 | case "$LINUX_TAGS" in 41 | latest) 42 | LINUX_GIT_TAGS="" 43 | ;; 44 | esac 45 | 46 | ## [Image Build Info] 47 | ARCH="arm64" 48 | ebf_repo_dist="carp-imx6" 49 | deb_arch="arm64" 50 | time=$(date +%Y-%m-%d) 51 | image_name="${deb_distribution}-${release}-${DISTRIB_TYPE}-${deb_arch}-${time}" 52 | target_name="rockchip-3328" 53 | options="--img-2gb ${target_name}-${image_name} --enable-fat-partition" 54 | options="${options} --enable-uboot-cape-overlays --force-device-tree ${LINUX_MMC_DTB} " 55 | options="${options} --backup-device-tree ${LINUX_NAND_DTB} --bootloader ${BUILD}" 56 | conf_board="fire-rockchip-3328" 57 | chroot_COPY_SETUP_SDCARD="enable" 58 | chroot_bootPart_logo="enable" 59 | chroot_custom_setup_sdcard="imxv7_setup_sdcard.sh" 60 | include_firmware="enable" 61 | 62 | repo_external_pkg_list="" 63 | 64 | ## [Bootloader Partition] 65 | bootloader_location="dd_uboot_boot" 66 | boot_name="$MUBOOT_FILE" 67 | dd_uboot_count="" 68 | dd_uboot_seek="0" 69 | dd_uboot_conf="" 70 | dd_uboot_bs="512" 71 | conf_boot_startmb="20" 72 | conf_boot_endmb="60" 73 | conf_boot_fstype="fat" 74 | conf_root_device="/dev/mmcblk0" 75 | USE_LOCAL_BOOT="yes" 76 | ## [Firmware] 77 | ROOT_FIRMWARE_PATH="" 78 | NEED_EXT4_IMG="false" 79 | ## [Device Tree Overlays] 80 | OVERLAYS=" 81 | 82 | " 83 | 84 | -------------------------------------------------------------------------------- /configs/boards/ebf_rockchip_3399.conf: -------------------------------------------------------------------------------- 1 | ## [Git Remote Repository] 2 | SUPPORTED_UBOOT=("2017.09" "2021.07") 3 | SUPPORTED_UBOOT_TAGS=("latest") 4 | SUPPORTED_LINUX=("5.10.25") 5 | SUPPORTED_LINUX_TAGS=("latest") 6 | 7 | case "$UBOOT" in 8 | 2017.09) 9 | UBOOT_GIT_BRANCH="ebf_v2017_09_rk3399" 10 | UBOOT_COMPILER="aarch64-linux-gnu-" 11 | UBOOT_DIR="$ROOT/ebf_linux_uboot" 12 | BUILD_SCRIPT_OF_UBOOT="make.sh" 13 | BUILD_BIN_SCRIPT="create_rk3399_uboot_bin.sh" 14 | NUBOOT_FILE="rk3399_uboot.bin" 15 | MUBOOT_FILE="rk3399_uboot.bin" 16 | SCRIPT_URL="https://github.com/Caesar-github/rkbin.git" 17 | SCRIPT_DIR="rkbin" 18 | ;; 19 | 2021.07) 20 | UBOOT_GIT_BRANCH="ebf_v2021_07_rk3399" 21 | UBOOT_CONFIG="doornet2-rk3399_defconfig" 22 | UBOOT_COMPILER="aarch64-linux-gnu-" 23 | UBOOT_DIR="$ROOT/ebf_linux_uboot" 24 | BUILD_SCRIPT_OF_UBOOT="make" 25 | BUILD_BIN_SCRIPT="create_rk3399_uboot_bin_common.sh" 26 | NUBOOT_FILE="rk3399_uboot.bin" 27 | MUBOOT_FILE="rk3399_uboot.bin" 28 | SCRIPT_URL="https://github.com/Caesar-github/rkbin.git" 29 | SCRIPT_DIR="rkbin" 30 | ;; 31 | esac 32 | 33 | case "$UBOOT_TAGS" in 34 | latest) 35 | UBOOT_GIT_TAGS="" 36 | ;; 37 | esac 38 | 39 | case "$LINUX" in 40 | 5.10.25) 41 | LINUX_MMC_DTB="rockchip/rk3399-doornet2.dtb" 42 | LINUX_NAND_DTB="rockchip/rk3399-doornet2.dtb" 43 | LINUX_GIT_BRANCH="ebf_5.10.25_rk33xx" 44 | LINUX_DEFCONFIG="doornet2_defconfig" 45 | KERNEL_COMPILER="aarch64-linux-gnu-" 46 | LINUX_DIR="$ROOT/ebf_linux_kernel" 47 | LOCAL_VERSION="-rk3399" 48 | KERNEL_DEB="linux-image-${LINUX}${LOCAL_VERSION}_${KDEB_VERSION}_arm64.deb" 49 | ;; 50 | esac 51 | 52 | case "$LINUX_TAGS" in 53 | latest) 54 | LINUX_GIT_TAGS="" 55 | ;; 56 | esac 57 | 58 | ## [Image Build Info] 59 | ARCH="arm64" 60 | ebf_repo_dist="carp-imx6" 61 | deb_arch="arm64" 62 | time=$(date +%Y-%m-%d) 63 | image_name="${deb_distribution}-${release}-${DISTRIB_TYPE}-${deb_arch}-${time}" 64 | target_name="rockchip-3399" 65 | options="--img-2gb ${target_name}-${image_name} --enable-fat-partition" 66 | options="${options} --enable-uboot-cape-overlays --force-device-tree ${LINUX_MMC_DTB} " 67 | options="${options} --backup-device-tree ${LINUX_NAND_DTB} --bootloader ${BUILD}" 68 | conf_board="fire-rockchip-3399" 69 | chroot_COPY_SETUP_SDCARD="enable" 70 | chroot_bootPart_logo="enable" 71 | chroot_custom_setup_sdcard="imxv7_setup_sdcard.sh" 72 | include_firmware="enable" 73 | 74 | repo_external_pkg_list="" 75 | 76 | ## [Bootloader Partition] 77 | bootloader_location="dd_uboot_boot" 78 | boot_name="$MUBOOT_FILE" 79 | dd_uboot_count="" 80 | dd_uboot_seek="0" 81 | dd_uboot_conf="" 82 | dd_uboot_bs="512" 83 | conf_boot_startmb="20" 84 | conf_boot_endmb="60" 85 | conf_boot_fstype="fat" 86 | conf_root_device="/dev/mmcblk2" 87 | ROOT_DEVICE_LABEL="enable" #使能磁盘设备标签,将在setup_sdcard.sh创建/etc/fstab时使用,如果使能,将使conf_root_device设置无效 88 | conf_root_label="LABEL=rootfs" 89 | conf_boot_label="LABEL=BOOT" 90 | USE_LOCAL_BOOT="yes" 91 | ## [Firmware] 92 | ROOT_FIRMWARE_PATH="" 93 | NEED_EXT4_IMG="false" 94 | ## [Device Tree Overlays] 95 | OVERLAYS=" 96 | 97 | " 98 | 99 | 100 | -------------------------------------------------------------------------------- /configs/boards/ebf_stm_mp157_star.conf: -------------------------------------------------------------------------------- 1 | ## [Git Remote Repository] 2 | SUPPORTED_TFA=("v2.0") 3 | SUPPORTED_UBOOT=("2018.11") 4 | SUPPORTED_UBOOT_TAGS=("latest") 5 | SUPPORTED_LINUX=("4.19.94") 6 | SUPPORTED_LINUX_TAGS=("latest") 7 | 8 | case $"$TFA" in 9 | v2.0) 10 | TFA_GIT_BRANCH="ebf_2.0-r0_star" 11 | TFA_COMPILER="arm-linux-gnueabihf-" 12 | TFA_DIR="$ROOT/ebf_linux_tfa" 13 | TFA_EXTRA_ARGS="-f Makefile.sdk EXTRA_OEMAKE=CROSS_COMPILE=arm-linux-gnueabihf- PLAT=stm32mp1 ARCH=aarch32 ARM_ARCH_MAJOR=7 DEBUG=1 LOG_LEVEL=40 all" 14 | TFA_BUILD_FILE="tf-a-stm32mp157a-star-trusted.stm32" 15 | esac 16 | 17 | 18 | case "$UBOOT" in 19 | 2018.11) 20 | UBOOT_GIT_BRANCH="ebf_v2018.11_star" 21 | UBOOT_COMPILER="arm-linux-gnueabihf-" 22 | UBOOT_DIR="$ROOT/ebf_linux_uboot" 23 | # SPL_BUILD_FILE="u-boot-spl.stm32" 24 | UBOOT_BUILD_FILE="u-boot.stm32" 25 | NUBOOT_FILE="u-boot.stm32" 26 | MUBOOT_FILE="u-boot.stm32" 27 | UBOOT_MMC_DEFCONFIG="stm32mp15_trusted_defconfig" 28 | UBOOT_NAND_DEFCONFIG="stm32mp15_trusted_defconfig" 29 | UBOOT_EXTRA_ARGS="all DEVICE_TREE=stm32mp157a-star" 30 | ;; 31 | esac 32 | 33 | case "$UBOOT_TAGS" in 34 | latest) 35 | UBOOT_GIT_TAGS="" 36 | ;; 37 | ebf_imx_4.19_2020_12_09) 38 | UBOOT_GIT_TAGS="ebf_imx_4.19_2020_12_09" 39 | ;; 40 | esac 41 | 42 | case "$LINUX" in 43 | 4.19.94) 44 | LINUX_MMC_DTB="stm32mp157a-basic.dtb" 45 | LINUX_NAND_DTB="stm32mp157a-basic.dtb" 46 | LINUX_GIT_BRANCH="ebf_4.19_star" 47 | LINUX_DEFCONFIG="stm32mp157_ebf_defconfig" 48 | KERNEL_COMPILER="arm-linux-gnueabihf-" 49 | LINUX_DIR="$ROOT/ebf_linux_kernel" 50 | #KDEB_VERSION="1stable" 51 | KDEB_VERSION="1.$(date +%g%m)stable" 52 | LOCAL_VERSION="-stm-r1" 53 | KERNEL_DEB="linux-image-${LINUX}${LOCAL_VERSION}_${KDEB_VERSION}_armhf.deb" 54 | KERNEL_EXTRA_ARGS="" 55 | ;; 56 | esac 57 | 58 | case "$LINUX_TAGS" in 59 | latest) 60 | LINUX_GIT_TAGS="" 61 | ;; 62 | esac 63 | 64 | ## [Firmware] 65 | ROOT_FIRMWARE_PATH="" 66 | NEED_EXT4_IMG="true" 67 | ## [Image Build Info] 68 | ARCH=arm 69 | ebf_repo_dist="carp-stm32-mp157" 70 | deb_arch="armhf" 71 | time=$(date +%Y-%m-%d) 72 | image_name="${deb_distribution}-${release}-${DISTRIB_TYPE}-${deb_arch}-${time}" 73 | target_name="stm32mp157" 74 | options="--img-2gb ${target_name}-${image_name} --enable-fat-partition" 75 | options="${options} --enable-uboot-cape-overlays --force-device-tree ${LINUX_MMC_DTB} " 76 | options="${options} --backup-device-tree ${LINUX_NAND_DTB} --bootloader ${BUILD} " 77 | conf_board="fire-stm32mp157-star" 78 | chroot_COPY_SETUP_SDCARD="enable" 79 | chroot_bootPart_logo="enable" 80 | chroot_custom_setup_sdcard="stm32mp1_setup_sdcard.sh" 81 | chroot_sdcard_flashlayout="create_sdcard_from_flashlayout.sh" 82 | include_firmware="enable" 83 | ## [Bootloader Partition] 84 | bootloader_location="part_spl_uboot_boot" 85 | ## [UBOOT_SPL Configs] 86 | spl_name="$SPL_BUILD_FILE" 87 | dd_spl_uboot_count="2" 88 | dd_spl_uboot_seek="1" 89 | dd_spl_uboot_conf="" 90 | dd_spl_uboot_bs="17k" 91 | ## [Bootloader Partition] 92 | boot_name="$MUBOOT_FILE" 93 | dd_uboot_count="4" 94 | dd_uboot_seek="1" 95 | dd_uboot_conf="" 96 | dd_uboot_bs="529k" 97 | conf_boot_fstype="fat" 98 | conf_boot_startmb="4" 99 | conf_boot_endmb="96" 100 | 101 | SERIAL="ttySTM0" 102 | 103 | conf_root_device="/dev/mmcblk0" 104 | USE_LOCAL_BOOT="yes" 105 | 106 | flashlayout_tsv="FlashLayout_sdcard_stm32mp157c-dk2-basic.tsv" 107 | bootscr_img="boot.scr.cmd" 108 | ## Extra software 109 | board_deb_include="libc6" 110 | 111 | ## [Device Tree Overlays] 112 | OVERLAYS=" 113 | # BUS class/function 114 | dtoverlay=/usr/lib/linux-image-4.19.94-stm-r1/overlays/stm-fire-i2c1.dtbo 115 | dtoverlay=/usr/lib/linux-image-4.19.94-stm-r1/overlays/stm-fire-i2c2.dtbo 116 | dtoverlay=/usr/lib/linux-image-4.19.94-stm-r1/overlays/stm-fire-ltdc.dtbo 117 | # DEV class/function 118 | #dtoverlay=/usr/lib/linux-image-4.19.94-stm-r1/overlays/stm-fire-485r1.dtbo 119 | #dtoverlay=/usr/lib/linux-image-4.19.94-stm-r1/overlays/stm-fire-485r2.dtbo 120 | dtoverlay=/usr/lib/linux-image-4.19.94-stm-r1/overlays/stm-fire-adc.dtbo 121 | #dtoverlay=/usr/lib/linux-image-4.19.94-stm-r1/overlays/stm-fire-bluetooth.dtbo 122 | #dtoverlay=/usr/lib/linux-image-4.19.94-stm-r1/overlays/stm-fire-btwifi.dtbo 123 | dtoverlay=/usr/lib/linux-image-4.19.94-stm-r1/overlays/stm-fire-can.dtbo 124 | #dtoverlay=/usr/lib/linux-image-4.19.94-stm-r1/overlays/stm-fire-cam.dtbo 125 | dtoverlay=/usr/lib/linux-image-4.19.94-stm-r1/overlays/stm-fire-hdmi.dtbo 126 | dtoverlay=/usr/lib/linux-image-4.19.94-stm-r1/overlays/stm-fire-key.dtbo 127 | 128 | dtoverlay=/usr/lib/linux-image-4.19.94-stm-r1/overlays/stm-fire-lcd.dtbo 129 | dtoverlay=/usr/lib/linux-image-4.19.94-stm-r1/overlays/stm-fire-led.dtbo 130 | #dtoverlay=/usr/lib/linux-image-4.19.94-stm-r1/overlays/stm-fire-mipi.dtbo 131 | #dtoverlay=/usr/lib/linux-image-4.19.94-stm-r1/overlays/stm-fire-mpu6050.dtbo 132 | dtoverlay=/usr/lib/linux-image-4.19.94-stm-r1/overlays/stm-fire-sound.dtbo 133 | dtoverlay=/usr/lib/linux-image-4.19.94-stm-r1/overlays/stm-fire-touch-capacitive-goodix.dtbo 134 | #dtoverlay=/usr/lib/linux-image-4.19.94-stm-r1/overlays/stm-fire-touch-capacitive-4.3.dtbo 135 | #dtoverlay=/usr/lib/linux-image-4.19.94-stm-r1/overlays/stm-fire-usart1.dtbo 136 | #dtoverlay=/usr/lib/linux-image-4.19.94-stm-r1/overlays/stm-fire-usart3.dtbo 137 | " 138 | 139 | MMC0extlinux=" 140 | # Generic Distro Configuration file generated by OpenEmbedded 141 | menu title Select the boot mode 142 | #MENU BACKGROUND /splash.bmp 143 | TIMEOUT 20 144 | DEFAULT stm32mp157a-basic 145 | LABEL stm32mp157a-basic 146 | KERNEL /kernel/vmlinuz-4.19.94-stm-r1 147 | #FDT /dtbs/4.19.94-stm-r1/stm32mp157a-basic.dtb 148 | APPEND root=/dev/mmcblk0p6 rootwait rw console=ttySTM0,115200 \${cmdline} 149 | " 150 | 151 | MMC1extlinux=" 152 | # Generic Distro Configuration file generated by OpenEmbedded 153 | menu title Select the boot mode 154 | #MENU BACKGROUND /splash.bmp 155 | TIMEOUT 20 156 | DEFAULT stm32mp157a-basic 157 | LABEL stm32mp157a-basic 158 | KERNEL /kernel/vmlinuz-4.19.94-stm-r1 159 | #FDT /dtbs/4.19.94-stm-r1/stm32mp157a-basic.dtb 160 | APPEND root=/dev/mmcblk1p4 rootwait rw console=ttySTM0,115200 \${cmdline} 161 | " 162 | 163 | NANDextlinux=" 164 | # Generic Distro Configuration file generated by OpenEmbedded 165 | menu title Select the boot mode 166 | #MENU BACKGROUND /splash.bmp 167 | TIMEOUT 20 168 | DEFAULT stm32mp157a-star 169 | LABEL stm32mp157a-star 170 | KERNEL /kernel/vmlinuz-4.19.94-stm-r1 171 | #FDT /dtbs/4.19.94-stm-r1/stm32mp157a-star.dtb 172 | APPEND ubi.mtd=UBI rootfstype=ubifs root=ubi0:rootfs rootwait rw console=ttySTM0,115200 \${cmdline} 173 | " 174 | 175 | 176 | FlashLayout_NAND=" 177 | FlashLayout_NAND=\" 178 | fsbl,/dev/mtd0,bin,x,/opt/backup/tfa/tf-a-stm32mp157a-star-trusted.stm32 179 | ssbl1,/dev/mtd1,bin,x,/opt/backup/uboot/u-boot.stm32 180 | ssbl2,/dev/mtd2,bin,x,/opt/backup/uboot/u-boot.stm32 181 | uboot_config,/dev/mtd3,x,0x7c000,x 182 | uboot_config_r,/dev/mtd3,x,0x7c000,x 183 | bootfs,/dev/mtd3,systemfs,0x1268000,x 184 | rootfs,/dev/mtd3,systemfs,x,x\"" 185 | 186 | FlashLayout_EMMC=" 187 | FlashLayout_EMMC=\" 188 | fsbl1,/dev/mmcblk1boot0,bin,x,/opt/backup/tfa/tf-a-stm32mp157a-star-trusted.stm32 189 | fsbl2,/dev/mmcblk1boot1,bin,x,/opt/backup/tfa/tf-a-stm32mp157a-star-trusted.stm32 190 | ssbl,/dev/mmcblk1p1,ext4,0x00080000,/opt/backup/uboot/u-boot.stm32 191 | bootfs,/dev/mmcblk1p2,ext4,0x00280000,x 192 | vendorfs,/dev/mmcblk1p3,ext4,0x06680000,x 193 | rootfs,/dev/mmcblk1p4,ext4,0x06700000,x\"" 194 | 195 | 196 | -------------------------------------------------------------------------------- /configs/common.conf: -------------------------------------------------------------------------------- 1 | ## [Project Path] 2 | ROOT="$(dirname "$(dirname "$(readlink -fm "$0")")")" 3 | CONFIG="$ROOT/configs" 4 | BOARD_CONFIG="$CONFIG/boards" 5 | BUILD="$ROOT/build" 6 | BUILD_IMAGES="$BUILD/images" 7 | BUILD_DEBS="$BUILD/debs" 8 | BUILD_SCRIPT="$ROOT/scripts" 9 | LOCAL_PKG="$ROOT/local_pkg" 10 | LOCAL_DIR="$ROOT/local_directory" 11 | 12 | ## [download mirror] 13 | DEBIAN_MIRROR='deb.debian.org/debian' 14 | UBUNTU_MIRROR='ports.ubuntu.com/' 15 | if [[ $DOWNLOAD_MIRROR == china ]] ; then 16 | #DEBIAN_MIRROR='mirrors.tuna.tsinghua.edu.cn/debian' 17 | #UBUNTU_MIRROR='mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/' 18 | DEBIAN_MIRROR='mirrors.bfsu.edu.cn/debian' 19 | UBUNTU_MIRROR='mirrors.bfsu.edu.cn/ubuntu-ports/' 20 | fi 21 | #repo_external_server="https://Embedfire.github.io" 22 | repo_external_server="https://cloud.embedfire.com/mirrors/ebf-debian" 23 | #repo_external_server="https://cloud.embedfire.com/mirrors/ebf-test" 24 | repo_external_server_backup1="https://Embedfire.github.io/" 25 | repo_external_server_backup2="https://sourceforge.net/projects/embedfire-debian-sources/files/" 26 | 27 | ## [pakage features] 28 | if [[ $DISTRIBUTION == Debian ]]; then 29 | release="carp" 30 | deb_distribution="lubancat" 31 | deb_codename=$DISTRIB_RELEASE 32 | #deb_arch="armhf" 33 | deb_components="main contrib non-free" 34 | deb_mirror=$DEBIAN_MIRROR 35 | repo_external_dist=$DISTRIB_RELEASE 36 | repo_external_components="main" 37 | #KDEB_VERSION="2.2LubanCat" 38 | KDEB_VERSION="1.$(date +%g%m)stable" 39 | else 40 | deb_distribution="ubuntu" 41 | deb_codename=$DISTRIB_RELEASE 42 | #deb_arch="armhf" 43 | deb_components="main universe multiverse" 44 | repo_external_dist=$DISTRIB_RELEASE 45 | repo_external_components="main" 46 | deb_mirror=$UBUNTU_MIRROR 47 | if [[ $DISTRIB_RELEASE == bionic ]]; then 48 | release="18.04" 49 | #KDEB_VERSION="18.04-Ubuntu" 50 | KDEB_VERSION="1.$(date +%g%m)stable" 51 | fi 52 | 53 | if [[ $DISTRIB_RELEASE == focal ]]; then 54 | release="20.04" 55 | #KDEB_VERSION="20.04-Ubuntu" 56 | KDEB_VERSION="1.$(date +%g%m)stable" 57 | fi 58 | 59 | fi 60 | chroot_tarball="enable" 61 | 62 | ## [install default pakage] 63 | deb_arch="armhf" 64 | deb_include="apt-transport-https ca-certificates connman curl dosfstools\ 65 | gnupg gnupg2 ifupdown initramfs-tools isc-dhcp-client nano \ 66 | net-tools netcat rsync sudo udhcpd parted mtd-utils mmc-utils\ 67 | rng-tools haveged wpasupplicant udhcpc openssh-server avahi-daemon\ 68 | gpiod kpartx jq libgpiod-dev rfkill usbutils exfat-fuse exfat-utils \ 69 | ssh alsa-utils" 70 | 71 | deb_exclude="aptitude aptitude-common groff-base info install-info man-db manpages\ 72 | manpages-dev tasksel tasksel-data" 73 | 74 | ## [install extern pakage] 75 | repo_external_arch="armhf" 76 | repo_external="enable" 77 | repo_external_key="keyfile" 78 | repo_local_file="enable" 79 | case $DISTRIB_TYPE in 80 | console) 81 | repo_external_pkg_list="kobs-ng-for-imx6ull fire-config-v2 wifi-depent libatomic1 " 82 | system_directory="/usr/share" 83 | ;; 84 | qt) 85 | repo_external_pkg_list="kobs-ng-for-imx6ull fire-config-v2 wifi-depent ebf-qtdemo libatomic1" 86 | system_directory="/usr/share" 87 | ;; 88 | desktop) 89 | repo_external_pkg_list="kobs-ng-for-imx6ull fire-config-v2 wifi-depent xfce4" 90 | system_directory="/usr/share" 91 | ;; 92 | esac 93 | 94 | ## [TFA & U-boot & Linux GitHub info] 95 | if [[ $DOWNLOAD_MIRROR == china ]] ; then 96 | #LINUX_SOURCE_URL="https://e.coding.net/embedfire/lubancat/ebf_linux_kernel.git" 97 | LINUX_SOURCE_URL="https://github.com/Embedfire/ebf_linux_kernel" 98 | UBOOT_SOURCE_URL="https://gitee.com/Embedfire/ebf_linux_uboot" 99 | TFA_SOURCE_URL="https://gitee.com/Embedfire/ebf_linux_tfa" 100 | else 101 | LINUX_SOURCE_URL="https://github.com/Embedfire/ebf_linux_kernel" 102 | UBOOT_SOURCE_URL="https://github.com/Embedfire/ebf_linux_uboot" 103 | TFA_SOURCE_URL="https://github.com/Embedfire/ebf_linux_tfa/" 104 | fi 105 | 106 | if [[ $SOURCE_URL == gitlab ]] ; then 107 | LINUX_SOURCE_URL="git@gitlab.embedfire.local:st-mp1/ebf_linux_kernel.git" 108 | UBOOT_SOURCE_URL="git@gitlab.embedfire.local:st-mp1/ebf_linux_uboot.git" 109 | fi 110 | 111 | GIT_CLONE_OPTIONS="--depth=1" 112 | FENIX_BRANCH="master" 113 | ROOTFSCACHE_VERSION=6 114 | DATE=$(date +%F | sed 's/-//g') 115 | IMAGE_RELEASE_VERSION="${DATE:2}" 116 | 117 | ## [CPU info] 118 | NR_JOBS_MAX=20 119 | NR_CPUS=$(grep -c processor /proc/cpuinfo) 120 | if [ ${NR_CPUS} -le ${NR_JOBS_MAX} ]; then 121 | NR_JOBS=${NR_CPUS} 122 | else 123 | NR_JOBS=${NR_JOBS_MAX} 124 | fi 125 | 126 | ## [Define colors] 127 | BLACK="\e[0;30m" 128 | BOLDBLACK="\e[1;30m" 129 | RED="\e[0;31m" 130 | BOLDRED="\e[1;31m" 131 | GREEN="\e[0;32m" 132 | BOLDGREEN="\e[1;32m" 133 | YELLOW="\e[0;33m" 134 | BOLDYELLOW="\e[1;33m" 135 | BLUE="\e[0;34m" 136 | BOLDBLUE="\e[1;34m" 137 | MAGENTA="\e[0;35m" 138 | BOLDMAGENTA="\e[1;35m" 139 | CYAN="\e[0;36m" 140 | BOLDCYAN="\e[1;36m" 141 | WHITE="\e[0;37m" 142 | BOLDWHITE="\e[1;37m" 143 | ENDCOLOR="\e[0m" 144 | 145 | ## [Enable Proxy?] 146 | #apt_proxy=localhost:3142/ 147 | 148 | ## [info colors] 149 | ERROR="${RED}Error:${ENDCOLOR}" 150 | WARNING="${YELLOW}Warning:${ENDCOLOR}" 151 | INFO="${GREEN}Info:${ENDCOLOR}" 152 | 153 | -------------------------------------------------------------------------------- /configs/functions/build: -------------------------------------------------------------------------------- 1 | # Functions: 2 | # build_uboot 3 | # build_linux 4 | # build_linux_debs 5 | 6 | ## Build TF-A 7 | build_tfa() { 8 | ret=0 9 | 10 | if [ "$TFA_GIT_BRANCH" == "" ]; then 11 | error_msg "'TFA_GIT_BRANCH' is empty!" 12 | return -1 13 | fi 14 | 15 | cd ${ROOT} 16 | if [ ! -d ${TFA_DIR}/.git ]; then 17 | info_msg "tfa repository does not exist, clone tfa repository('$TFA_GIT_BRANCH') from '$TFA_SOURCE_URL'..." 18 | ## Clone tfa from Khadas GitHub 19 | git clone $GIT_CLONE_OPTIONS $TFA_SOURCE_URL -b $TFA_GIT_BRANCH 20 | [ $? != 0 ] && error_msg "Failed to clone 'tfa'" && return -1 21 | fi 22 | 23 | cd ${TFA_DIR}/ 24 | 25 | if ! git branch | grep "^* $TFA_GIT_BRANCH$" > /dev/null; then 26 | if ! git branch | grep "^ $TFA_GIT_BRANCH$" > /dev/null; then 27 | # New branch? Try to fetch it. 28 | info_msg "Fetching '$TFA_GIT_BRANCH' from '$TFA_SOURCE_URL'..." 29 | git fetch origin $TFA_GIT_BRANCH:$TFA_GIT_BRANCH 30 | fi 31 | 32 | info_msg "tfa: Switch to branch '$TFA_GIT_BRANCH'" 33 | make distclean 34 | # Check modifications 35 | check_modifications || { 36 | error_msg "tfa: can't checkout to branch '$TFA_GIT_BRANCH', please commit your modifications and try again!" 37 | return -1 38 | } 39 | 40 | git checkout $TFA_GIT_BRANCH 41 | [ $? != 0 ] && error_msg "tfa: Switch to branch '$TFA_GIT_BRANCH' failed." && return -1 42 | else 43 | info_msg "tfa: Already on branch '$TFA_GIT_BRANCH'" 44 | fi 45 | 46 | # Update tfa 47 | update_git_repo "$PWD" "$TFA_GIT_BRANCH" 48 | 49 | info_msg "Build tfa..." 50 | 51 | make ARCH=arm CROSS_COMPILE="${TFA_COMPILER}" distclean 52 | 53 | info_msg "Build tfa..." 54 | 55 | make -j${NR_JOBS} ARCH=arm CROSS_COMPILE="${TFA_COMPILER}" ${TFA_EXTRA_ARGS} 56 | 57 | cp ${TFA_DIR}//build/trusted/${TFA_BUILD_FILE} ${BUILD}/${TFA_BUILD_FILE} 58 | 59 | ret=$? 60 | 61 | return $ret 62 | } 63 | 64 | ## Build U-Boot 65 | build_uboot() { 66 | ret=0 67 | cd ${ROOT} 68 | if [ ! -d ${UBOOT_DIR}/.git ]; then 69 | info_msg "U-boot repository does not exist, clone u-boot repository('$UBOOT_GIT_TAGS') from '$UBOOT_SOURCE_URL'..." 70 | ## Clone u-boot from Khadas GitHub 71 | if [ "$UBOOT_GIT_TAGS" == "" ]; then 72 | git clone $GIT_CLONE_OPTIONS $UBOOT_SOURCE_URL -b $UBOOT_GIT_BRANCH 73 | [ $? != 0 ] && error_msg "Failed to clone 'u-boot'" && return -1 74 | else 75 | git clone $GIT_CLONE_OPTIONS $UBOOT_SOURCE_URL -b $UBOOT_GIT_TAGS 76 | [ $? != 0 ] && error_msg "Failed to clone 'u-boot'" && return -1 77 | fi 78 | fi 79 | 80 | cd ${UBOOT_DIR}/ 81 | make distclean 82 | if [ "$UBOOT_GIT_TAGS" == "" ]; then 83 | if ! git branch | grep "^* $UBOOT_GIT_BRANCH$" > /dev/null; then 84 | if ! git branch | grep "^ $UBOOT_GIT_BRANCH$" > /dev/null; then 85 | # New branch? Try to fetch it. 86 | info_msg "Fetching '$UBOOT_GIT_BRANCH' from '$UBOOT_SOURCE_URL'..." 87 | git fetch $GIT_CLONE_OPTIONS origin $UBOOT_GIT_BRANCH:$UBOOT_GIT_BRANCH 88 | fi 89 | 90 | info_msg "U-boot: Switch to branch '$UBOOT_GIT_BRANCH'" 91 | make distclean 92 | # Check modifications 93 | check_modifications || { 94 | error_msg "U-boot: can't checkout to branch '$UBOOT_GIT_BRANCH', please commit your modifications and try again!" 95 | return -1 96 | } 97 | 98 | git checkout $UBOOT_GIT_BRANCH 99 | [ $? != 0 ] && error_msg "U-boot: Switch to branch '$UBOOT_GIT_BRANCH' failed." && return -1 100 | else 101 | info_msg "U-boot: Already on branch '$UBOOT_GIT_BRANCH'" 102 | fi 103 | else 104 | if ! git tag | grep "^* $UBOOT_GIT_TAGS$" > /dev/null; then 105 | if ! git tag | grep "^ $UBOOT_GIT_TAGS$" > /dev/null; then 106 | # New branch? Try to fetch it. 107 | info_msg "Fetching '$UBOOT_GIT_TAGS' from '$UBOOT_SOURCE_URL'..." 108 | git fetch $GIT_CLONE_OPTIONS origin tag $UBOOT_GIT_TAGS 109 | fi 110 | 111 | info_msg "U-boot: Switch to branch '$UBOOT_GIT_TAGS'" 112 | make distclean 113 | # Check modifications 114 | check_modifications || { 115 | error_msg "U-boot: can't checkout to branch '$UBOOT_GIT_TAGS', please commit your modifications and try again!" 116 | return -1 117 | } 118 | 119 | git checkout $UBOOT_GIT_TAGS 120 | [ $? != 0 ] && error_msg "U-boot: Switch to tag '$UBOOT_GIT_TAGS' failed." && return -1 121 | else 122 | info_msg "U-boot: Already on tag '$UBOOT_GIT_TAGS'" 123 | fi 124 | fi 125 | 126 | # Update u-boot 127 | if [ "$UBOOT_GIT_TAGS" == "" ]; then 128 | update_git_repo "$PWD" "$UBOOT_GIT_BRANCH" 129 | else 130 | git checkout $UBOOT_GIT_TAGS 131 | fi 132 | 133 | info_msg "Build u-boot..." 134 | 135 | rm -rf .config *.bin *.img 136 | 137 | if [ "$BUILD_SCRIPT_OF_UBOOT" == "" ]; then 138 | if [ "x${INSTALL_TYPE}" = "xeMMC/SD" -o "x${INSTALL_TYPE}" = "xALL" ] ; then 139 | make distclean 140 | make $UBOOT_MMC_DEFCONFIG CROSS_COMPILE="${UBOOT_COMPILER}" ARCH=arm 141 | make -j${NR_JOBS} CROSS_COMPILE="${UBOOT_COMPILER}" ${UBOOT_EXTRA_ARGS} 142 | 143 | cp ${UBOOT_BUILD_FILE} ${BUILD}/${MUBOOT_FILE} 144 | if [ "${SPL_BUILD_FILE}" ]; then 145 | if [ "${target_name}" == "imx8m-mini" ]; then 146 | cp spl/${SPL_BUILD_FILE} ${BUILD} 147 | else 148 | cp ${SPL_BUILD_FILE} ${BUILD} 149 | fi 150 | fi 151 | fi 152 | 153 | if [ "x${INSTALL_TYPE}" = "xNAND" ] || [ "x${INSTALL_TYPE}" = "xALL" -a "${MUBOOT_FILE}" != "${NUBOOT_FILE}" ] ; then 154 | make distclean 155 | make $UBOOT_NAND_DEFCONFIG CROSS_COMPILE="${UBOOT_COMPILER}" ARCH=arm 156 | make -j${NR_JOBS} ARCH=arm CROSS_COMPILE="${UBOOT_COMPILER}" ${UBOOT_EXTRA_ARGS} 157 | 158 | cp ${UBOOT_BUILD_FILE} ${BUILD}/${NUBOOT_FILE} 159 | if [ "${SPL_BUILD_FILE}" ] ; then 160 | if [ "${target_name}" == "imx8m-mini" ]; then 161 | cp spl/${SPL_BUILD_FILE} ${BUILD} 162 | else 163 | cp ${SPL_BUILD_FILE} ${BUILD} 164 | fi 165 | fi 166 | fi 167 | fi 168 | 169 | if [ ! "$BUILD_BIN_SCRIPT" == "" ]; then 170 | . $BUILD_SCRIPT/$BUILD_BIN_SCRIPT 171 | fi 172 | 173 | 174 | 175 | 176 | 177 | ret=$? 178 | 179 | return $ret 180 | } 181 | 182 | ## Build Linux 183 | build_linux() { 184 | 185 | if [ "$LINUX_GIT_BRANCH" == "" ] || [ "$LINUX_MMC_DTB" == "" ] || [ "$LINUX_NAND_DTB" == "" ]; then 186 | [ "$LINUX_GIT_BRANCH" == "" ] && error_msg "'LINUX_GIT_BRANCH' is empty!" 187 | [ "$LINUX_MMC_DTB" == "" ] && error_msg "'LINUX_DTB' is empty!" 188 | [ "$LINUX_NAND_DTB" == "" ] && error_msg "'LINUX_DTB' is empty!" 189 | return -1 190 | fi 191 | 192 | cd ${ROOT} 193 | if [ ! -d ${LINUX_DIR}/.git ]; then 194 | info_msg "Linux repository does not exist, clone linux repository('$LINUX_GIT_TAGS') from '$LINUX_SOURCE_URL'..." 195 | ## Clone linux from embedfire GitHub 196 | if [ "$LINUX_GIT_TAGS" == "" ]; then 197 | echo $LINUX_SOURCE_URL 198 | git clone $GIT_CLONE_OPTIONS $LINUX_SOURCE_URL -b $LINUX_GIT_BRANCH 199 | [ $? != 0 ] && error_msg "Failed to clone 'linux'" && return -1 200 | else 201 | git clone $GIT_CLONE_OPTIONS $UBOOT_SOURCE_URL -b $LINUX_GIT_TAGS 202 | [ $? != 0 ] && error_msg "Failed to clone 'linux'" && return -1 203 | fi 204 | fi 205 | 206 | cd ${LINUX_DIR} 207 | make ARCH=$ARCH distclean 208 | 209 | if [ "$LINUX_GIT_TAGS" == "" ]; then 210 | if ! git branch | grep "^* $LINUX_GIT_BRANCH$" > /dev/null; then 211 | if ! git branch | grep "^ $LINUX_GIT_BRANCH$" > /dev/null; then 212 | # New branch? Try to fetch it. 213 | info_msg "Fetching '$LINUX_GIT_BRANCH' from '$LINUX_SOURCE_URL'..." 214 | git fetch $GIT_CLONE_OPTIONS origin $LINUX_GIT_BRANCH:$LINUX_GIT_BRANCH 215 | fi 216 | 217 | info_msg "Linux: Switch to branch '$LINUX_GIT_BRANCH'" 218 | 219 | make ARCH=$ARCH distclean 220 | 221 | git checkout $LINUX_GIT_BRANCH 222 | [ $? != 0 ] && error_msg "Linux: Switch to branch '$LINUX_GIT_BRANCH' failed." && return -1 223 | else 224 | info_msg "Linux: Already on branch '$LINUX_GIT_BRANCH'" 225 | fi 226 | else 227 | if ! git tag | grep "^* $LINUX_GIT_TAGS$" > /dev/null; then 228 | if ! git tag | grep "^ $LINUX_GIT_TAGS$" > /dev/null; then 229 | # New branch? Try to fetch it. 230 | info_msg "Fetching '$LINUX_GIT_BRANCH' from '$LINUX_SOURCE_URL'..." 231 | git fetch $GIT_CLONE_OPTIONS origin tag $LINUX_GIT_TAGS 232 | fi 233 | 234 | info_msg "Linux: Switch to tag '$LINUX_GIT_TAGS'" 235 | 236 | make ARCH=$ARCH distclean 237 | 238 | git checkout $LINUX_GIT_TAGS 239 | [ $? != 0 ] && error_msg "Linux: Switch to branch '$LINUX_GIT_TAGS' failed." && return -1 240 | else 241 | info_msg "Linux: Already on tag '$LINUX_GIT_TAGS'" 242 | fi 243 | fi 244 | 245 | # Update linux 246 | if [ "$LINUX_GIT_TAGS" == "" ]; then 247 | update_git_repo "$PWD" "$LINUX_GIT_BRANCH" 248 | else 249 | git checkout $LINUX_GIT_TAGS 250 | fi 251 | 252 | # clean linux 253 | info_msg "clean linux..." 254 | make ARCH=$ARCH CROSS_COMPILE="${KERNEL_COMPILER}" distclean O=${BUILD_IMAGES} 255 | 256 | info_msg "Build linux..." 257 | 258 | make ARCH=$ARCH $LINUX_DEFCONFIG CROSS_COMPILE="${KERNEL_COMPILER}" O=${BUILD_IMAGES} 259 | make -j${NR_JOBS} ARCH=$ARCH CROSS_COMPILE="${KERNEL_COMPILER}" O=${BUILD_IMAGES} ${KERNEL_EXTRA_ARGS} 260 | } 261 | 262 | ## Build linux debs 263 | build_linux_debs() { 264 | 265 | # Build linux debs 266 | info_msg "Build linux debs..." 267 | 268 | cd $ROOT 269 | 270 | make -j${NR_JOBS} -C ${BUILD_IMAGES} bindeb-pkg ARCH=$ARCH CROSS_COMPILE="${KERNEL_COMPILER}" \ 271 | CONFIG_SHELL="bash" KDEB_PKGVERSION=${KDEB_VERSION} LOCALVERSION=${LOCAL_VERSION} 272 | 273 | mkdir -p $BUILD_DEBS 274 | mv $BUILD/*.deb $BUILD_DEBS 275 | if [ -f $BUILD/vmlinuz* ]; then 276 | mv $BUILD/vmlinuz* $BUILD_DEBS 277 | fi 278 | rm -rf $BUILD/*.buildinfo $BUILD/*.changes 279 | } 280 | -------------------------------------------------------------------------------- /configs/functions/common-functions: -------------------------------------------------------------------------------- 1 | # Functions: 2 | # error_msg 3 | # warning_msg 4 | # info_msg 5 | # time_cal 6 | # prepare_host 7 | # mount_chroot 8 | # umount_chroot 9 | # install_deb_chroot 10 | # do_umount 11 | # cleanup 12 | # check_loop_device 13 | # prepare_toolchains 14 | # prepare_packages 15 | # get_package_list_hash 16 | # create_sources_list 17 | # compress_image 18 | # check_make_params 19 | # get_available_make_params 20 | 21 | ## Print error message 22 | ## $1 - message 23 | error_msg() { 24 | local _FILE=${BASH_SOURCE[1]} 25 | local _LINE=${BASH_LINENO[0]} 26 | 27 | echo -e "$_FILE:$_LINE" $ERROR "$1" 28 | } 29 | 30 | ## Print warning message 31 | ## $1 - message 32 | warning_msg() { 33 | local _FILE=${BASH_SOURCE[1]} 34 | local _LINE=${BASH_LINENO[0]} 35 | 36 | echo -e "$_FILE:$_LINE" $WARNING "$1" 37 | } 38 | 39 | ## Print information message 40 | ## $1 - message 41 | info_msg() { 42 | echo -e $INFO "$1" 43 | } 44 | 45 | ## Calculate time 46 | ## $1 - time in seconds 47 | time_cal() { 48 | local minutes 49 | 50 | minutes=$(($1 / 60)) 51 | 52 | echo "Time elapsed: $minutes minute(s)." 53 | } 54 | 55 | ## Prepare host 56 | ## Install essential packages 57 | prepare_host() { 58 | 59 | if [[ $(dpkg --print-architecture) != "amd64" ]]; then 60 | error_msg "Your build host architecture is not supported,please use a 'x86-x64' build host." 61 | return -1 62 | fi 63 | 64 | local build_host=$(lsb_release -sc) 65 | info_msg "Build host: $build_host" 66 | 67 | if [[ -z "$build_host" || "bionic focal" != *"$build_host"* ]]; then 68 | error_msg "Your build host is not supported! Please use 'Ubuntu bionic(18.04)/focal(20.04)' as your build host or try to build in Docker." 69 | return -1 70 | fi 71 | 72 | case $DISTRIB_RELEASE in 73 | bionic) 74 | if [ "$build_host" != "focal" -a "$build_host" != "bionic" ]; then 75 | error_msg "Building Ubuntu Bionic(18.04) images requires a Ubuntu Bionic(18.04)/Focal(20.04) build host, please upgrade your build host or try to build in Docker." 76 | return -1 77 | fi 78 | ;; 79 | buster|focal) 80 | if [ "$build_host" != "bionic" ]; then 81 | error_msg "Building Debian Buster(10)/Ubuntu Focal(20.04) images requires a Ubuntu Focal(20.04) build host, please upgrade your build host or try to build in Docker." 82 | return -1 83 | fi 84 | ;; 85 | esac 86 | 87 | grep -q i386 <(dpkg --print-foreign-architectures) || (warning_msg "Requires root privileges, please enter your passowrd!" && sudo dpkg --add-architecture i386) 88 | if systemd-detect-virt -q -c; then 89 | info_msg "Running in container: $(systemd-detect-virt)" 90 | # disable apt-cacher unless NO_APT_CACHER=no is not specified explicitly 91 | if [[ $NO_APT_CACHER != no ]]; then 92 | info_msg "apt-cacher is disabled in containers." 93 | NO_APT_CACHER=yes 94 | fi 95 | CONTAINER_COMPAT="yes" 96 | export CONTAINER_COMPAT 97 | export NO_APT_CACHER 98 | 99 | if [ $(systemd-detect-virt) == docker ]; then 100 | if [ -d ~/toolchains -a ! -d ~/fenix/downloads ]; then 101 | info_msg "Copying preinstalled toolchains ..." 102 | mkdir -p ~/fenix/downloads 103 | cp -r ~/toolchains/* downloads/ 104 | fi 105 | # Walkaround for ccache permissions 106 | if [ -d ~/.ccache ]; then 107 | if [ "$(stat -c '%U %G' ~/.ccache/)" != "khadas khadas" ]; then 108 | sudo chown khadas:khadas -R ~/.ccache/ 109 | fi 110 | fi 111 | fi 112 | fi 113 | 114 | local hostdeps="wget ca-certificates device-tree-compiler pv bc lzop zip binfmt-support build-essential ccache debootstrap ntpdate \ 115 | gawk gcc-arm-linux-gnueabihf qemu-user-static u-boot-tools uuid-dev zlib1g-dev unzip libusb-1.0-0-dev fakeroot \ 116 | parted pkg-config libncurses5-dev whiptail debian-keyring debian-archive-keyring f2fs-tools libfile-fcntllock-perl rsync libssl-dev \ 117 | nfs-kernel-server btrfs-progs ncurses-term p7zip-full kmod dosfstools libc6-dev-armhf-cross \ 118 | curl patchutils liblz4-tool libpython2.7-dev linux-base swig aptly acl \ 119 | locales ncurses-base pixz dialog systemd-container udev lib32stdc++6 libc6-i386 lib32ncurses5 lib32tinfo5 \ 120 | bison libbison-dev flex libfl-dev lib32z1 libglib2.0-dev" 121 | 122 | 123 | if [[ -z $build_host || "focal" == "$build_host" ]]; then 124 | hostdeps="${hostdeps/lib32ncurses5 lib32tinfo5/lib32ncurses6 lib32tinfo6}" 125 | fi 126 | 127 | # Getting ready for Ubuntu 20.04 128 | if [[ "$build_host" == "focal" ]]; then 129 | hostdeps+=" python2 python3" 130 | sudo ln -fs /usr/bin/python2.7 /usr/bin/python2 131 | sudo ln -fs /usr/bin/python2.7 /usr/bin/python 132 | else 133 | hostdeps+=" python libpython-dev" 134 | fi 135 | 136 | # warning: apt-cacher-ng will fail if installed and used both on host and in container/chroot environment with shared network 137 | # set NO_APT_CACHER=yes to prevent installation errors in such case 138 | if [[ $NO_APT_CACHER != yes ]]; then hostdeps="$hostdeps apt-cacher-ng"; fi 139 | 140 | local deps=() 141 | local installed=$(dpkg-query -W -f '${db:Status-Abbrev}|${binary:Package}\n' '*' 2>/dev/null | grep '^ii' | awk -F '|' '{print $2}' | cut -d ':' -f 1) 142 | 143 | for packet in $hostdeps; do 144 | if ! grep -q -x -e "$packet" <<< "$installed"; then deps+=("$packet"); fi 145 | done 146 | 147 | if [[ ${#deps[@]} -gt 0 ]]; then 148 | info_msg "Installing build dependencies" 149 | info_msg "Requires root privileges, please enter your passowrd!" 150 | sudo apt update 151 | sudo apt -y --no-install-recommends install "${deps[@]}" 152 | sudo update-ccache-symlinks 153 | fi 154 | 155 | # enable arm binary format so that the cross-architecture chroot environment will work 156 | mountpoint -q /proc/sys/fs/binfmt_misc/ || sudo mount binfmt_misc -t binfmt_misc /proc/sys/fs/binfmt_misc || { 157 | if ! grep -q binfmt_misc <(lsmod); then 158 | info_msg "Module 'binfmt_misc' not installed, try to install it!" 159 | warning_msg "Requires root privileges, please enter your password!" 160 | sudo modprobe -q binfmt_misc || { 161 | # FIXME 'binfmt_misc' should be installed on host PC manually 162 | # https://github.com/khadas/fenix/issues/35#issuecomment-492326880 163 | if systemd-detect-virt -q -c; then 164 | error_msg "You are built in container: $(systemd-detect-virt), but the module 'binfmt_misc' is not installed, please exit the container to execute 'sudo modprobe binfmt_misc' on your host PC and try again!" 165 | fi 166 | 167 | exit -1 168 | } 169 | fi 170 | } 171 | 172 | test -e /proc/sys/fs/binfmt_misc/qemu-arm || sudo update-binfmts --enable qemu-arm 173 | test -e /proc/sys/fs/binfmt_misc/qemu-aarch64 || sudo update-binfmts --enable qemu-aarch64 174 | } 175 | 176 | ## Mount chroot 177 | mount_chroot() { 178 | local target=$1 179 | if [ -z "$target" ]; then 180 | echo "Usage: mount_chroot " 181 | return -1 182 | fi 183 | mount -t proc chproc $target/proc 184 | mount -t sysfs chsys $target/sys 185 | mount -t devtmpfs chdev $target/dev || mount --bind /dev $target/dev 186 | mount -t devpts chpts $target/dev/pts 187 | } 188 | 189 | ## Umount chroot 190 | umount_chroot() { 191 | local target=$1 192 | if [ -z "$target" ]; then 193 | echo "Usage: umount_chroot " 194 | return -1 195 | fi 196 | 197 | if mount | grep "$target/dev/pts" > /dev/null; then 198 | umount -l $target/dev/pts 199 | fi 200 | 201 | if mount | grep "$target/dev" > /dev/null; then 202 | umount -l $target/dev 203 | fi 204 | 205 | if mount | grep "$target/proc" > /dev/null; then 206 | umount -l $target/proc 207 | fi 208 | 209 | if mount | grep "$target/sys/kernel/security" > /dev/null; then 210 | umount $target/sys/kernel/security 211 | fi 212 | 213 | if mount | grep "$target/sys" > /dev/null; then 214 | umount -l $target/sys 215 | fi 216 | } 217 | 218 | ## Install debs in chroot 219 | install_deb_chroot() 220 | { 221 | local package=$1 222 | local name=$(basename $package) 223 | cp $package $ROOTFS_TEMP/root/$name 224 | info_msg "Installing $name in chroot..." 225 | mount_chroot "$ROOTFS_TEMP" 226 | chroot $ROOTFS_TEMP /bin/bash -c "dpkg -i /root/$name" 227 | umount_chroot "$ROOTFS_TEMP" 228 | rm -f $ROOTFS_TEMP/root/$name 229 | } 230 | 231 | ## Umount 232 | do_umount() { 233 | if mount | grep $1 > /dev/null; then 234 | umount $1 235 | fi 236 | } 237 | 238 | ## Cleanup 239 | cleanup() { 240 | cd $ROOT 241 | echo "Cleanup..." 242 | sync 243 | 244 | trap - INT TERM EXIT 245 | 246 | if mount | grep $ROOTFS_TEMP > /dev/null; then 247 | do_umount "$ROOTFS_TEMP/dev/pts" 248 | do_umount "$ROOTFS_TEMP/dev" 249 | do_umount "$ROOTFS_TEMP/proc" 250 | do_umount "$ROOTFS_TEMP/sys/kernel/security" 251 | do_umount "$ROOTFS_TEMP/sys" 252 | 253 | do_umount "$ROOTFS_TEMP" 254 | fi 255 | 256 | if mount | grep $ROOTFS > /dev/null; then 257 | if [ "$INSTALL_TYPE" == "SD-USB" ]; then 258 | if mount | grep "$ROOTFS/boot" > /dev/null; then 259 | do_umount "$ROOTFS/boot" 260 | # detach all used devices 261 | losetup -D 262 | fi 263 | fi 264 | 265 | do_umount "$ROOTFS" 266 | fi 267 | } 268 | 269 | # Check & Create loop device if not exist 270 | check_loop_device() 271 | { 272 | local device=$1 273 | 274 | PARTITIONS=$(lsblk --raw --output "MAJ:MIN" --noheadings ${device} | tail -n +2) 275 | COUNTER=1 276 | for i in $PARTITIONS; do 277 | MAJ=$(echo $i | cut -d: -f1) 278 | MIN=$(echo $i | cut -d: -f2) 279 | if [ ! -e "${device}p${COUNTER}" ]; then 280 | if [ "$CONTAINER_COMPAT" == "yes" ]; then 281 | warning_msg "Creating device node: ${device}p${COUNTER}" 282 | mknod ${device}p${COUNTER} b $MAJ $MIN 283 | else 284 | error_msg "Device node $device does not exist!" 285 | return -1 286 | fi 287 | fi 288 | COUNTER=$((COUNTER + 1)) 289 | done 290 | } 291 | 292 | 293 | ## create_sources_list 294 | ## 295 | ## : buster|bionic|focal 296 | ## : path to root directory 297 | create_sources_list() 298 | { 299 | local release=$1 300 | local basedir=$2 301 | [[ -z $basedir ]] && error_msg "No basedir passed to create_sources_list" && return -1 302 | 303 | case $release in 304 | buster) 305 | cat <<-EOF > $basedir/etc/apt/sources.list 306 | deb http://${DEBIAN_MIRROR} $release main contrib non-free 307 | #deb-src http://${DEBIAN_MIRROR} $release main contrib non-free 308 | 309 | deb http://${DEBIAN_MIRROR} ${release}-updates main contrib non-free 310 | #deb-src http://${DEBIAN_MIRROR} ${release}-updates main contrib non-free 311 | 312 | deb http://${DEBIAN_MIRROR} ${release}-backports main contrib non-free 313 | #deb-src http://${DEBIAN_MIRROR} ${release}-backports main contrib non-free 314 | 315 | deb http://security.debian.org/ ${release}/updates main contrib non-free 316 | #deb-src http://security.debian.org/ ${release}/updates main contrib non-free 317 | EOF 318 | ;; 319 | 320 | bionic|focal) 321 | cat <<-EOF > $basedir/etc/apt/sources.list 322 | deb http://${UBUNTU_MIRROR} $release main restricted universe multiverse 323 | #deb-src http://${UBUNTU_MIRROR} $release main restricted universe multiverse 324 | 325 | deb http://${UBUNTU_MIRROR} ${release}-security main restricted universe multiverse 326 | #deb-src http://${UBUNTU_MIRROR} ${release}-security main restricted universe multiverse 327 | 328 | deb http://${UBUNTU_MIRROR} ${release}-updates main restricted universe multiverse 329 | #deb-src http://${UBUNTU_MIRROR} ${release}-updates main restricted universe multiverse 330 | 331 | deb http://${UBUNTU_MIRROR} ${release}-backports main restricted universe multiverse 332 | #deb-src http://${UBUNTU_MIRROR} ${release}-backports main restricted universe multiverse 333 | EOF 334 | ;; 335 | esac 336 | } 337 | 338 | ## compress_image 339 | compress_image() { 340 | [[ $COMPRESS_IMAGE != yes ]] && return 341 | 342 | echo "" 343 | info_msg "Compressing image '$BUILD_IMAGES/$IMAGE_FILE_NAME' to '$BUILD_IMAGES/${IMAGE_FILE_NAME}.xz' ..." 344 | 345 | rm -rf $BUILD_IMAGES/${IMAGE_FILE_NAME}.xz 346 | 347 | if [ "$INSTALL_TYPE" == "SD-USB" -o "$INSTALL_TYPE_RAW" == "yes" ]; then 348 | if [ "$1" == "uboot-image" ]; then 349 | label="Uboot" 350 | desc="Uboot $VERSION minimal - fenix generated images https://github.com/khadas/fenix" 351 | else 352 | label="$DISTRIBUTION" 353 | desc="$DISTRIBUTION $VERSION $DISTRIB_TYPE $DISTRIB_RELEASE - fenix generated images https://github.com/khadas/fenix" 354 | fi 355 | "$ROOT"/scripts/xze "$BUILD_IMAGES/$IMAGE_FILE_NAME" \ 356 | --meta \ 357 | LABEL="$label" \ 358 | BOARD="$FIRE_BOARD" \ 359 | BUILDER="fenix" \ 360 | LINK="https://dl.khadas.com/Firmware/" \ 361 | DESC="$desc" \ 362 | > "$BUILD_IMAGES/$IMAGE_FILE_NAME.xz" 363 | else 364 | "$ROOT"/scripts/xze "$BUILD_IMAGES/$IMAGE_FILE_NAME" > "$BUILD_IMAGES/$IMAGE_FILE_NAME.xz" 365 | fi 366 | 367 | echo "" 368 | info_msg "COMPRESSED IMAGE: ${GREEN} $BUILD_IMAGES/$IMAGE_FILE_NAME.xz ${ENDCOLOR} is ready!" 369 | } 370 | 371 | ## check_make_params 372 | check_make_params() { 373 | echo "" 374 | for param in $MAKE_PARAMS 375 | do 376 | printf "${BOLDCYAN}%-25s:${ENDCOLOR}${BOLDGREEN}%10s${ENDCOLOR}\n" $param ${!param} 377 | done 378 | echo "" 379 | } 380 | 381 | ## get_available_make_params 382 | get_available_make_params() { 383 | echo "" 384 | printf "${BOLDYELLOW}%-20s${ENDCOLOR}${BOLDYELLOW}%15s${ENDCOLOR}\n" "Parameter" "Value" 385 | printf "===============================================\n" 386 | for param in $MAKE_PARAMS 387 | do 388 | key=$param 389 | value=${param}_VALUES 390 | printf "${BOLDCYAN}%-25s:${ENDCOLOR}${BOLDGREEN}%20s${ENDCOLOR}\n" "$key" "${!value}" 391 | done 392 | echo "" 393 | } 394 | -------------------------------------------------------------------------------- /configs/functions/functions: -------------------------------------------------------------------------------- 1 | ## Common functions 2 | source configs/functions/common-functions 3 | source configs/functions/git-repo 4 | source configs/functions/build 5 | -------------------------------------------------------------------------------- /configs/functions/git-repo: -------------------------------------------------------------------------------- 1 | # Functions: 2 | # check_modifications 3 | # update_git_repo 4 | 5 | check_modifications() { 6 | # Check modifications 7 | CHANGED_FILES=$(git diff --name-only) 8 | if [ -n "$CHANGED_FILES" ]; then 9 | echo -e "$WARNING: Repo[$(pwd)] You made some modifications to file(s): \n[ \e[0;32m\n${CHANGED_FILES}\x1B[0m \n]" 10 | return -1 11 | fi 12 | 13 | return 0 14 | } 15 | 16 | ## Update git repository 17 | ## $1 git repository path 18 | ## $2 git branch 19 | update_git_repo() { 20 | if [ ! -f $ROOT/.ignore-update ]; then 21 | if [ "$1" == "" ] || [ "$2" == "" ]; then 22 | echo "Usage: $0 " 23 | return -1 24 | fi 25 | 26 | cd $1 27 | if [ ! -d .git ]; then 28 | error_msg "No Git repository found!" 29 | cd - 30 | return -1 31 | fi 32 | 33 | if check_modifications; then 34 | HAVE_MODIFYCATIONS=0 35 | else 36 | HAVE_MODIFYCATIONS=1 37 | fi 38 | 39 | info_msg "Try to update `basename $1`:$2" 40 | 41 | if ! git branch | grep "^* $2$" > /dev/null; then 42 | if [ $HAVE_MODIFYCATIONS -ne 0 ]; then 43 | # Found modifications 44 | error_msg "$1: can't checkout to branch '$2', please commit your modifications and try again!" 45 | return -1 46 | fi 47 | 48 | git checkout $2 49 | fi 50 | 51 | git pull origin $2 52 | 53 | cd - 54 | fi 55 | } 56 | 57 | -------------------------------------------------------------------------------- /configs/user.conf: -------------------------------------------------------------------------------- 1 | ## [user setting] 2 | if [[ $FIRE_BOARD == ebf_imx_6ull_pro ]] || [[ $FIRE_BOARD == ebf_imx_6ull_mini ]]; then 3 | 4 | ## the system information of imx6ull 5 | if [[ $DISTRIBUTION == Debian ]]; then 6 | rfs_username="debian" 7 | rfs_fullname="lubancat" 8 | rfs_password="temppwd" 9 | rfs_hostname="npi" 10 | rfs_default_locale="en_US.UTF-8" 11 | rfs_etc_dogtag="embedfire.com Debian Image" 12 | rfs_console_banner="Support/FAQ: www.firebbs.cn/forum.php" 13 | rfs_console_user_pass="enable" 14 | rfs_ssh_banner="Support/FAQ: www.firebbs.cn/forum.php" 15 | rfs_ssh_user_pass="enable" 16 | else 17 | rfs_username="ubuntu" 18 | rfs_fullname="lubancat" 19 | rfs_password="temppwd" 20 | rfs_hostname="npi" 21 | rfs_default_locale="en_US.UTF-8" 22 | rfs_etc_dogtag="embedfire.com Debian Image" 23 | rfs_console_banner="Support/FAQ: www.firebbs.cn/forum.php" 24 | rfs_console_user_pass="enable" 25 | rfs_ssh_banner="Support/FAQ: www.firebbs.cn/forum.php" 26 | rfs_ssh_user_pass="enable" 27 | fi 28 | else 29 | if [[ $DISTRIBUTION == Debian ]]; then 30 | rfs_username="debian" 31 | rfs_fullname="lubancat" 32 | rfs_password="temppwd" 33 | rfs_hostname="lubancat" 34 | rfs_default_locale="en_US.UTF-8" 35 | rfs_etc_dogtag="embedfire.com Debian Image" 36 | rfs_console_banner="Support/FAQ: www.firebbs.cn/forum.php" 37 | rfs_console_user_pass="enable" 38 | rfs_ssh_banner="Support/FAQ: www.firebbs.cn/forum.php" 39 | rfs_ssh_user_pass="enable" 40 | else 41 | rfs_username="ubuntu" 42 | rfs_fullname="lubancat" 43 | rfs_password="temppwd" 44 | rfs_hostname="lubancat" 45 | rfs_default_locale="en_US.UTF-8" 46 | rfs_etc_dogtag="embedfire.com Debian Image" 47 | rfs_console_banner="Support/FAQ: www.firebbs.cn/forum.php" 48 | rfs_console_user_pass="enable" 49 | rfs_ssh_banner="Support/FAQ: www.firebbs.cn/forum.php" 50 | rfs_ssh_user_pass="enable" 51 | fi 52 | fi 53 | 54 | -------------------------------------------------------------------------------- /doc/image-builder_2.0 构建镜像过程.md: -------------------------------------------------------------------------------- 1 | ## image-builder_2.0 构建镜像过程 2 | 3 | [TOC] 4 | 5 | ### 设置板级配置文件 6 | 7 | ##### env/setenv.sh 8 | 9 | ``` 10 | #选择flash类型 11 | INSTALL_TYPE_ARRAY=("ALL" "NAND" "eMMC/SD") 12 | choose_install_type 13 | #选择开发板型号 14 | choose_fire_board 15 | #选择uboot版本(板级配置文件 SUPPORTED_UBOOT=("2020.10")) 16 | choose_uboot_version 17 | #选择uboot tag 18 | choose_uboot_tag 19 | choose_linux_version 20 | choose_linux_tag 21 | #选择发行版系统 22 | choose_distribution 23 | choose_distribution_release 24 | choose_distribution_type 25 | ``` 26 | 27 | ##### env/ci_imx6.sh 28 | 29 | ``` 30 | #自动构建用,替代手动配置 31 | FIRE_BOARD=ebf_imx_6ull_pro 32 | LINUX=4.19.35 33 | UBOOT=2020.10 34 | DISTRIBUTION=Debian 35 | DISTRIB_RELEASE=buster 36 | DISTRIB_TYPE=console 37 | INSTALL_TYPE=ALL 38 | ``` 39 | 40 | #### 板级配置文件 41 | 42 | configs/boards/ebf_imx_6ull_pro.conf 43 | 44 | ``` 45 | uboot\kernel 46 | 架构\sd镜像信息 47 | 镜像偏移信息 48 | 设备树插件 49 | ``` 50 | 51 | 52 | 53 | ### 编译uboot、kernel、kernel-deb 54 | 55 | ##### 主makefile 56 | 57 | ``` 58 | #全部构建 59 | all: 60 | ifeq ($(and $(DISTRIBUTION),$(DISTRIB_RELEASE),$(DISTRIB_TYPE),$(DISTRIB_ARCH),$(FIRE_BOARD),$(LINUX),$(UBOOT),$(INSTALL_TYPE)),) 61 | $(call help_message) 62 | else 63 | @./scripts/create_image.sh 64 | endif 65 | 66 | #构建内核 67 | kernel: 68 | ... 69 | @./scripts/build.sh linux 70 | 71 | 72 | #构建uboot 73 | uboot: 74 | ... 75 | @./scripts/build.sh u-boot 76 | 77 | #构建内核deb包 78 | kernel-deb: 79 | @./scripts/build.sh linux-deb 80 | 81 | ``` 82 | 83 | #### create_image.sh 84 | 85 | ###### 构建全部固件 86 | 87 | ``` 88 | ./scripts/build.sh u-boot 89 | ./scripts/build.sh linux 90 | ./scripts/build.sh linux-deb 91 | ``` 92 | 93 | ###### 构建根文件系统需要密码 94 | 95 | ``` 96 | read PASSWORD 97 | echo "$PASSWORD" | sudo -E -S $ROOT/publish/fire-imx-stable.sh 98 | ``` 99 | 100 | ###### 记录编译时长 101 | 102 | ``` 103 | start_time=`date +%s` 104 | end_time=`date +%s` 105 | time_cal $(($end_time - $start_time)) 106 | ``` 107 | 108 | #### build.sh 109 | 110 | ###### 导入板级配置和全局配置 111 | 112 | ``` 113 | source configs/common.conf 114 | 115 | source ${BOARD_CONFIG}/${FIRE_BOARD}.conf 116 | 117 | ``` 118 | 119 | ###### 编译uboot、kernel、kernel-deb的具体函数 120 | 121 | ``` 122 | case "$TARGET" in 123 | u-boot) 124 | build_uboot 125 | ;; 126 | linux) 127 | build_linux 128 | ;; 129 | linux-deb) 130 | build_linux_debs 131 | ;; 132 | esac 133 | ``` 134 | 135 | ###### 编译过程 136 | 137 | ``` 138 | git clone/fetch 拉取分支 139 | git checkout 切换分支 140 | make distclean 清楚编译文件 141 | make xxx_config 142 | make 143 | 144 | #uboot需要单独备份到文件系统以供sd卡烧录 145 | cp ${UBOOT_BUILD_FILE} ${BUILD}/${MUBOOT_FILE} 146 | ``` 147 | 148 | 149 | 150 | ### 抽取debian官方根文件系统 151 | 152 | ##### publish/fire-imx-stable.sh 153 | 154 | ###### 后台运行监控信息 155 | 156 | ``` 157 | keep_net_alive () { 158 | while : ; do 159 | sleep 15 160 | info_msg "[Running: ${this_name}]" 161 | done 162 | } 163 | ``` 164 | 165 | ##### build_fire_image 166 | 167 | ###### 抽取debian根文件系统 168 | 169 | ``` 170 | if [ -n "${FULL_REBUILD}" -o ! -e "deploy/${image_name}.tar" ]; then 171 | . ${BUILD_SCRIPT}/RootStock-NG.sh -c ${BOARD_CONFIG}/${FIRE_BOARD}.conf 172 | fi 173 | 174 | sudo -E ./${chroot_custom_setup_sdcard} ${options} 175 | ``` 176 | 177 | ##### RootStock-NG.sh 178 | 179 | ###### 创建临时文件夹\设置image名字 180 | 181 | ``` 182 | tempdir=$(mktemp -d -p ${DIR}/ignore) 183 | time=$(date +%Y-%m-%d) 184 | export_filename="${deb_distribution}-${release}-${DISTRIB_TYPE}-${deb_arch}-${time}" 185 | ``` 186 | 187 | ##### install_dependencies.sh 188 | 189 | ###### 安装qemu、git、kpartx、debootstrap等镜像构建工具 190 | 191 | ##### debootstrap.sh 192 | 193 | ###### 根据common.com全局配置文件的信息,抽取debian文件系统,存放于临时文件夹 194 | 195 | ``` 196 | target=tempdir 197 | 198 | sudo debootstrap --no-merged-usr ${options} ${suite} "${target}" ${mirror} 199 | ``` 200 | 201 | ##### chroot.sh 202 | 203 | ###### 复制qumu到临时文件夹,启动debian,加入定制内容 204 | 205 | ``` 206 | 207 | sudo cp $(which qemu-arm-static) "${tempdir}/usr/bin/" 208 | 209 | sudo chroot "${tempdir}" debootstrap/debootstrap --second-stage 210 | 211 | #设置镜像源、用户密码、开机启动服务等等 212 | ... 213 | 214 | #安装内核deb包和自定义deb包 215 | sudo chroot "${tempdir}" /bin/bash -e chroot_script.sh 216 | 217 | install_pkgs () 218 | dpkg -i /tmp/*.deb 219 | ``` 220 | 221 | ###### 根据临时文件夹大小估算镜像大小 222 | 223 | ``` 224 | sys_size="$(du -sh ${DIR}/deploy/${export_filename} 2>/dev/null | awk '{print $1}')" 225 | 226 | image_size=$(bc -l <<< "scale=0; ((($value * 1.2) / 1 + 0) / 4 + 1) * 4") 227 | 228 | mkfifo -m 777 /tmp/npipe 229 | echo "$image_size" > /tmp/npipe & 230 | ``` 231 | 232 | ###### 打包根文件系统 233 | 234 | ``` 235 | cd "${DIR}/deploy/" || true 236 | sudo tar cvf ${export_filename}.tar ./${export_filename} 237 | sudo chown -R ${USER}:${USER} "${export_filename}.tar" 238 | ``` 239 | 240 | 241 | 242 | ### 构建空白镜像,填充uboot,根文件系统 243 | 244 | ##### tools/imxv7_setup_sdcard.sh 245 | 246 | ###### dd构建镜像 247 | 248 | ``` 249 | --img|--img-[12468]gb) 250 | read msize < /tmp/npipe 251 | imagename=${name%.img}.img 252 | media="${DIR}/${imagename}" 253 | dd if=/dev/zero of="${media}" bs=1024 count=0 seek=$((1024 * msize)) 254 | ``` 255 | 256 | ###### dd填充uboot 257 | 258 | ``` 259 | 选择uboot 260 | 261 | local_bootloader 262 | if [ "${boot_name}" ] ; then 263 | cp ${LOCAL_BOOT_PATH}/${NUBOOT_FILE} ${TEMPDIR}/dl/ 264 | cp ${LOCAL_BOOT_PATH}/${MUBOOT_FILE} ${TEMPDIR}/dl/ 265 | U_BOOT=${MUBOOT_FILE} 266 | echo "U_BOOT Bootloader: ${U_BOOT}" 267 | fi 268 | 269 | cp -v ${TEMPDIR}/dl/${NUBOOT_FILE} ${TEMPDIR}/disk/opt/backup/uboot/${NUBOOT_FILE} 270 | 271 | 填充uboot并将镜像分区 272 | create_partitions 273 | dd_uboot_boot 274 | 1、dd if=${TEMPDIR}/dl/${uboot_blob} of=${media} ${dd_uboot} 275 | 2、 276 | losetup ${media_loop} "${media}" 277 | kpartx -av ${media_loop} 278 | sleep 1 279 | sync 280 | test_loop=$(echo ${media_loop} | awk -F'/' '{print $3}') 281 | if [ -e /dev/mapper/${test_loop}p${media_boot_partition} ] && [ -e /dev/mapper/${test_loop}p${media_rootfs_partition} ] ; then 282 | media_prefix="/dev/mapper/${test_loop}p" 283 | else 284 | ls -lh /dev/mapper/ 285 | echo "Error: not sure what to do (new feature)." 286 | exit 287 | fi 288 | 289 | 挂载uboot分区、rootf分区并填充根文件系统 290 | populate_rootfs 291 | 1、mount -t ${ROOTFS_TYPE} ${media_prefix}${media_rootfs_partition} ${TEMPDIR}/disk 292 | 2、mount -t ${mount_partition_format} ${media_prefix}${media_boot_partition} ${TEMPDIR}/disk/boot 293 | 3、sudo tar --numeric-owner --preserve-permissions -xf "${DIR}/${ROOTFS}" -C ${TEMPDIR}/disk/ 294 | 4、调整uEnv.txt等 295 | wfile="${TEMPDIR}/disk/boot/uEnv.txt" 296 | ... 297 | ``` 298 | 299 | 300 | 301 | -------------------------------------------------------------------------------- /doc/image-builder_2.0编译过程.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Embedfire/ebf-image-builder/a747d99aa87ad9feeb9f3ba6f6e3127d56ea7f16/doc/image-builder_2.0编译过程.png -------------------------------------------------------------------------------- /doc/setting.md: -------------------------------------------------------------------------------- 1 | # ebf-image-builder 2 | 3 | 配置信息存放于三个不同文件,可用于深度配置系统镜像特性: 4 | - configs/common.conf:开发板公共配置,用于配置文件系统、生成文件路径等 5 | - configs/boards/xxx.conf:开发板特殊配置,用于配置uboot、kernel、设备树插件等 6 | 7 | - configs/user.conf:用户信息配置,用于系统配置登录欢迎语、用户名、密码等 -------------------------------------------------------------------------------- /env/ci.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e -o pipefail 4 | 5 | 6 | IMAGE_BUILDER_DIR=/opt/ebf-image-builder 7 | TARGET_DIR=/mnt/share 8 | 9 | GIT_CLONE_OPTIONS="--depth=1" 10 | IMAGE_BUILDER_GIT_TAGS=master 11 | IMAGE_BUILDER_SOURCE_URL="git@gitlab.embedfire.local:i.mx6/ebf-image-builder.git" 12 | 13 | build_cpu=$1 14 | 15 | source configs/functions/functions 16 | 17 | 18 | start_time=`date +%s` 19 | 20 | 21 | 22 | export FIRE_BOARD= 23 | export LINUX= 24 | export UBOOT= 25 | export DISTRIBUTION= 26 | export DISTRIB_RELEASE= 27 | export DISTRIB_TYPE= 28 | export INSTALL_TYPE= 29 | export SUPPORTED_TFA= 30 | export TFA= 31 | 32 | imx6ull_build_img(){ 33 | 34 | rebuild=$1 35 | 36 | #编译镜像 debian console 37 | FIRE_BOARD=ebf_imx_6ull_pro 38 | LINUX=4.19.35 39 | UBOOT=2020.10 40 | DISTRIBUTION=Debian 41 | DISTRIB_RELEASE=buster 42 | DISTRIB_TYPE=console 43 | INSTALL_TYPE=ALL 44 | make DOWNLOAD_MIRROR=china FORCE_UPDATE=$rebuild 45 | 46 | #编译镜像 debian qt 47 | FIRE_BOARD=ebf_imx_6ull_pro 48 | LINUX=4.19.35 49 | UBOOT=2020.10 50 | DISTRIBUTION=Debian 51 | DISTRIB_RELEASE=buster 52 | DISTRIB_TYPE=qt 53 | INSTALL_TYPE=ALL 54 | make DOWNLOAD_MIRROR=china 55 | 56 | #ubuntu18.04 console 57 | FIRE_BOARD=ebf_imx_6ull_pro 58 | LINUX=4.19.35 59 | UBOOT=2020.10 60 | DISTRIBUTION=Ubuntu 61 | DISTRIB_RELEASE=bionic 62 | DISTRIB_TYPE=console 63 | INSTALL_TYPE=ALL 64 | make DOWNLOAD_MIRROR=china 65 | 66 | #ubuntu20.04 console 67 | FIRE_BOARD=ebf_imx_6ull_pro 68 | LINUX=4.19.35 69 | UBOOT=2020.10 70 | DISTRIBUTION=Ubuntu 71 | DISTRIB_RELEASE=focal 72 | DISTRIB_TYPE=console 73 | INSTALL_TYPE=ALL 74 | make DOWNLOAD_MIRROR=china 75 | 76 | } 77 | 78 | stm32mp157_build_img(){ 79 | 80 | #编译镜像 debian console 81 | rebuild=$1 82 | 83 | FIRE_BOARD=ebf_stm_mp157_star 84 | TFA=v2.0 85 | LINUX=4.19.94 86 | UBOOT=2018.11 87 | DISTRIBUTION=Debian 88 | DISTRIB_RELEASE=buster 89 | DISTRIB_TYPE=console 90 | INSTALL_TYPE=ALL 91 | make DOWNLOAD_MIRROR=china FORCE_UPDATE=$rebuild 92 | 93 | #编译镜像 debian qt 94 | FIRE_BOARD=ebf_stm_mp157_star 95 | TFA=v2.0 96 | LINUX=4.19.94 97 | UBOOT=2018.11 98 | DISTRIBUTION=Debian 99 | DISTRIB_RELEASE=buster 100 | DISTRIB_TYPE=qt 101 | INSTALL_TYPE=ALL 102 | make DOWNLOAD_MIRROR=china 103 | 104 | 105 | #ubuntu18.04 console 106 | FIRE_BOARD=ebf_stm_mp157_star 107 | TFA=v2.0 108 | LINUX=4.19.94 109 | UBOOT=2018.11 110 | DISTRIBUTION=Ubuntu 111 | DISTRIB_RELEASE=bionic 112 | DISTRIB_TYPE=console 113 | INSTALL_TYPE=ALL 114 | make DOWNLOAD_MIRROR=china 115 | 116 | #ubuntu20.04 console 117 | FIRE_BOARD=ebf_stm_mp157_star 118 | TFA=v2.0 119 | LINUX=4.19.94 120 | UBOOT=2018.11 121 | DISTRIBUTION=Ubuntu 122 | DISTRIB_RELEASE=focal 123 | DISTRIB_TYPE=console 124 | INSTALL_TYPE=ALL 125 | make DOWNLOAD_MIRROR=china 126 | 127 | } 128 | 129 | rk3328_build_img(){ 130 | 131 | rebuild=$1 132 | 133 | #编译镜像 debian console 134 | FIRE_BOARD=ebf_rockchip_3328 135 | LINUX=5.10.25 136 | UBOOT=2017.09 137 | DISTRIBUTION=Debian 138 | DISTRIB_RELEASE=buster 139 | DISTRIB_TYPE=console 140 | INSTALL_TYPE=ALL 141 | make DOWNLOAD_MIRROR=china FORCE_UPDATE=$rebuild 142 | 143 | :< ${rootfs_dir}/etc/fstab 86 | sudo echo "#" >> ${rootfs_dir}/etc/fstab 87 | sudo echo "/dev/mmcblk1p2 /boot auto defaults 0 0" >> ${rootfs_dir}/etc/fstab 88 | sudo echo "/dev/mmcblk1p4 / ext4 noatime,errors=remount-ro 0 1" >> ${rootfs_dir}/etc/fstab 89 | sudo echo "debugfs /sys/kernel/debug debugfs defaults 0 0" >> ${rootfs_dir}/etc/fstab 90 | 91 | sudo rm -rf ${rootfs_dir}/home/${rfs_username}/.resizerootfs 92 | sudo mkdir ${rootfs_dir}/home/${rfs_username}/.resizerootfs 93 | sudo umount ${rootfs_dir} 94 | 95 | sudo dd if=/dev/zero of=bootfs.img bs=1024 count=102400 96 | sudo mkfs.vfat bootfs.img 97 | bootfs_dir=$(mktemp -d tmp.XXXXXXXXXX) 98 | 99 | sudo mount bootfs.img ${bootfs_dir} 100 | img_file=$(cd ${ROOT}/deploy/${image_name}/ && ls *-armhf-*.img) 101 | 102 | media_loop=$(sudo losetup -f || true) 103 | sudo losetup ${media_loop} ${img_file} 104 | sudo kpartx -av ${media_loop} 105 | test_loop=$(echo ${media_loop} | awk -F'/' '{print $3}') 106 | sudo mount /dev/mapper/${test_loop}p4 ${rootfs_dir} 107 | 108 | sudo rsync -aAxv ${rootfs_dir}/* ${bootfs_dir} 109 | sudo umount ${bootfs_dir} 110 | sudo umount ${rootfs_dir} 111 | sync 112 | kpartx -d ${media_loop} || true 113 | losetup -d ${media_loop} || true 114 | 115 | sudo rm -rdf ${tmp_dir} 116 | sudo rm -rdf ${bootfs_dir} 117 | sudo rm -rdf ${rootfs_dir} 118 | fi 119 | 120 | exit 0 121 | } 122 | 123 | keep_net_alive & KEEP_NET_ALIVE_PID=$! 124 | echo "pid: [${KEEP_NET_ALIVE_PID}]" 125 | 126 | build_fire_image 127 | 128 | kill_net_alive 129 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # ebf-image-builder 2 | 3 | ## Ubuntu/Debian镜像构建工具 4 | 5 | - 适用对象:野火linux系列开发板 6 | - 运行环境:Ubuntu 18.04 LTS 7 | 8 | 你可以使用ebf-image-builder脚本来编译Ubuntu/Debian固件。 9 | 10 | ## 如何使用 11 | 12 | ### 1.安装基本软件包 13 | 14 | ``` 15 | $ sudo apt-get update 16 | $ sudo apt install make gcc-arm-linux-gnueabihf gcc bison flex libssl-dev dpkg-dev lzop 17 | 18 | ``` 19 | ### 2.克隆ebf-image-builder仓库 20 | 21 | ``` 22 | $ mkdir -p ~/project/embedfire 23 | $ cd ~/project/embedfire 24 | $ git clone --depth 1 xxx 25 | $ cd ebf-image-builder 26 | ``` 27 | 28 | 29 | ### 3.设置编译环境 30 | 31 | ``` 32 | $ source env/setenv.sh 33 | ``` 34 | 35 | 你需要先设置ebf-image-builder编译环境,如:选择安装方式、linux开发板型号、u-boot版本、linux版本、文件系统类型等等。 36 | 37 | **注意**:每个选项的后面通过类似"[x]"的标志来表明默认选中第x项。 38 | 具体说明如下: 39 | 40 | #### 选择安装方式 41 | 42 | ``` 43 | $ Choose install type: 44 | 1.xxx 45 | ``` 46 | 针对不同flash介质,需要使用不同版本uboot: 47 | - eMMC/SD:uboot从eMMC/SD加载并启动linux系统 48 | - nandflsh:uboot从nandflsh加载并启动linux系统 49 | - ALL:编译所有版本的uboot,以实现一个镜像适用所有介质 50 | 51 | **编译系统镜像时,请选择安装介质类型为"ALL"。** 52 | 53 | 单独编译uboot则可以选择其他安装介质类型 54 | 55 | #### 选择开发板型号 56 | 57 | ``` 58 | $ Choose fire board: 59 | 1.xxx 60 | ... 61 | ``` 62 | 野火将提供多款不同linux开发版,请根据自己的开发板类型进行选择。 63 | 64 | #### 选择uboot版本 65 | 66 | ``` 67 | $ Choose uboot version: 68 | 1.xxx 69 | ... 70 | ``` 71 | 野火维护多种不同版本uboot,如无特殊需求,请使用默认选项。 72 | 73 | #### 选择linux版本 74 | 75 | ``` 76 | $ Choose linux version: 77 | 1.xxx 78 | ... 79 | ``` 80 | 野火维护多种不同版本linux内核,如无特殊需求,请使用默认选项。 81 | 82 | #### 选择发行版系统 83 | 84 | ``` 85 | $ Choose distribution: 86 | 1.xxx 87 | ... 88 | ``` 89 | 主要支持debian/ubuntu文件系统,请根据实际需求选择。 90 | 91 | #### 选择系统版本 92 | 93 | ``` 94 | $ Choose xxx release: 95 | 1.xxx 96 | ... 97 | ``` 98 | 发行版系统有多种版本,请根据实际需求选择。 99 | 100 | #### 选择镜像版本 101 | 102 | ``` 103 | $ Choose xxx type: 104 | 1.xxx 105 | ... 106 | ``` 107 | 生成镜像有多种版本: 108 | - console:纯净版镜像,没有带桌面环境和野火的QT App。 109 | 110 | - full-qt-app:具有完整QT App功能的镜像,系统启动后会进入QT App的界面。但是该固件体积超过了Nandflash 512M的容量,因此不能烧录到Nandflash中,只可烧录于eMMC。 111 | 112 | - part-qt-app:移除了音视频播放功能的QT App,系统启动后会进入QT App的界面。该固件体积小于Nandflash 512M的容量,可以分别烧录到Nandflash和eMMC中。 113 | 114 | - desktop:带有桌面环境的镜像,系统启动后会进入桌面环境。 115 | 116 | 请根据实际需求选择不同版本镜像。 117 | 118 | [更多配置信息](doc/setting.md) 119 | 120 | ### 4.开始编译完整固件 121 | 122 | ``` 123 | $ make 124 | ``` 125 | **编译选项**: 126 | - DOWNLOAD_MIRROR:如果是国内用户,可加入**DOWNLOAD_MIRROR=china**选项,以提高文件下载速度。 127 | - FORCE_UPDATE:当重复多次编译镜像时,uboot、内核并不会反复编译。如果需要重新编译uboot、内核,可加入**FORCE_UPDATE=enable**选项。 128 | 129 | 在设置好环境执行make就会开始编译,如果编译过程会用到root权限,将提示你要输入密码才能继续编译。 130 | 131 | ``` 132 | $ Building rootfs stage requires root privileges, please enter your passowrd: 133 | ``` 134 | 135 | **编译成功后,image镜像位于deploy/xxx目录下**。 136 | 137 | 138 | 139 | ## 单独编译 140 | 141 | **当然,你也可以选择单独编译u-boot和内核。** 142 | 143 | ### 编译U-boot 144 | 145 | ``` 146 | $ make uboot 147 | ``` 148 | 149 | ### 编译内核 150 | 151 | ``` 152 | $ make kernel 153 | ``` 154 | **编译成功后,生成文件位于build/images目录下**。 155 | 156 | ### 编译内核安装包 157 | 158 | ``` 159 | $ make kernel-deb 160 | ``` 161 | **编译成功后,生成deb包位于build/debs目录下**。 162 | 163 | **提示**:在镜像的第一次编译过程中,所需时间会比较久,因为脚本会检测你的电脑的编译环境,安装编译需要的一些软件包,同时还会从野火官方仓库下载一些构建镜像所需的内容。 164 | 165 | ### 参考资料: 166 | #### BeagleBone 167 | 168 | Checkout this [documents](https://github.com/beagleboard/image-builder/blob/master/readme.md) 169 | 170 | #### fenix 171 | Checkout this [documents](https://github.com/khadas/fenix/README.md) 172 | 173 | -------------------------------------------------------------------------------- /scripts/RootStock-NG.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | # 3 | # Copyright (c) 2013 Robert Nelson 4 | # 5 | # Permission is hereby granted, free of charge, to any person obtaining a copy 6 | # of this software and associated documentation files (the "Software"), to deal 7 | # in the Software without restriction, including without limitation the rights 8 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | # copies of the Software, and to permit persons to whom the Software is 10 | # furnished to do so, subject to the following conditions: 11 | # 12 | # The above copyright notice and this permission notice shall be included in 13 | # all copies or substantial portions of the Software. 14 | # 15 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | # THE SOFTWARE. 22 | 23 | system=$(uname -n) 24 | HOST_ARCH=$(uname -m) 25 | TIME=$(date +%Y-%m-%d) 26 | 27 | DIR="$PWD" 28 | 29 | usage () { 30 | echo "usage: ./RootStock-NG.sh -c XXX" 31 | } 32 | 33 | checkparm () { 34 | if [ "$(echo $1|grep ^'\-')" ] ; then 35 | echo "E: Need an argument" 36 | usage 37 | fi 38 | } 39 | 40 | check_project_config () { 41 | 42 | if [ ! -d ${DIR}/ignore ] ; then 43 | mkdir -p ${DIR}/ignore 44 | fi 45 | tempdir=$(mktemp -d -p ${DIR}/ignore) 46 | 47 | time=$(date +%Y-%m-%d) 48 | 49 | #/configs/boards/${project_config}.conf 50 | unset leading_slash 51 | leading_slash=$(echo ${project_config} | grep "/" || unset leading_slash) 52 | if [ "${leading_slash}" ] ; then 53 | project_config=$(echo "${leading_slash##*/}") 54 | fi 55 | 56 | #${project_config}.conf 57 | project_config=$(echo ${project_config} | awk -F ".conf" '{print $1}') 58 | if [ -f ${DIR}/configs/boards/${project_config}.conf ] ; then 59 | . <(m4 -P ${DIR}/configs/boards/${project_config}.conf) 60 | export_filename="${deb_distribution}-${release}-${DISTRIB_TYPE}-${deb_arch}-${time}" 61 | 62 | # for automation 63 | echo "${export_filename}" > ${DIR}/latest_version 64 | 65 | echo "tempdir=\"${tempdir}\"" > ${DIR}/.project 66 | echo "time=\"${time}\"" >> ${DIR}/.project 67 | echo "export_filename=\"${export_filename}\"" >> ${DIR}/.project 68 | echo "#" >> ${DIR}/.project 69 | m4 -P ${DIR}/configs/common.conf >> ${DIR}/.project 70 | echo "" >> ${DIR}/.project 71 | m4 -P ${DIR}/configs/user.conf >> ${DIR}/.project 72 | echo "" >> ${DIR}/.project 73 | m4 -P ${DIR}/configs/boards/${project_config}.conf >> ${DIR}/.project 74 | else 75 | echo "Invalid *.conf" 76 | exit 77 | fi 78 | } 79 | 80 | check_saved_config () { 81 | 82 | if [ ! -d ${DIR}/ignore ] ; then 83 | mkdir -p ${DIR}/ignore 84 | fi 85 | tempdir=$(mktemp -d -p ${DIR}/ignore) 86 | 87 | if [ ! -f ${DIR}/.project ] ; then 88 | echo "Couldn't find .project" 89 | exit 90 | fi 91 | } 92 | 93 | if [ -f ${DIR}/.project ] ; then 94 | . ${DIR}/.project 95 | fi 96 | 97 | unset need_to_compress_rootfs 98 | # parse commandline options 99 | while [ ! -z "$1" ] ; do 100 | case $1 in 101 | -h|--help) 102 | usage 103 | exit 104 | ;; 105 | -c|-C|--config) 106 | checkparm $2 107 | project_config="$2" 108 | check_project_config 109 | ;; 110 | --saved-config) 111 | check_saved_config 112 | ;; 113 | esac 114 | shift 115 | done 116 | 117 | mkdir -p ${DIR}/ignore 118 | 119 | generic_git () { 120 | if [ ! -f ${DIR}/git/${git_project_name}/.git/config ] ; then 121 | git clone ${git_clone_address} ${DIR}/git/${git_project_name} --depth=1 122 | fi 123 | } 124 | 125 | update_git () { 126 | if [ -f ${DIR}/git/${git_project_name}/.git/config ] ; then 127 | cd ${DIR}/git/${git_project_name}/ 128 | git pull --rebase || true 129 | cd - 130 | fi 131 | } 132 | 133 | git_trees () { 134 | if [ ! -d ${DIR}/git/ ] ; then 135 | mkdir -p ${DIR}/git/ 136 | fi 137 | 138 | git_project_name="linux-firmware" 139 | git_clone_address="https://gitee.com/Embedfire/linux-firmware.git" 140 | generic_git 141 | update_git 142 | } 143 | 144 | run_roostock_ng () { 145 | if [ ! -f ${DIR}/.project ] ; then 146 | echo "error: [.project] file not defined" 147 | exit 1 148 | else 149 | echo "Debug: .project" 150 | echo "-----------------------------" 151 | cat ${DIR}/.project 152 | echo "-----------------------------" 153 | fi 154 | 155 | if [ ! "${tempdir}" ] ; then 156 | tempdir=$(mktemp -d -p ${DIR}/ignore) 157 | echo "tempdir=\"${tempdir}\"" >> ${DIR}/.project 158 | fi 159 | 160 | /bin/bash -e "${BUILD_SCRIPT}/install_dependencies.sh" || { exit 1 ; } 161 | 162 | if [ -f "${DIR}/history/tempdir/$(date +%Y-%m)/${DISTRIBUTION}/${DISTRIB_RELEASE}/${ARCH}/basefs.tar" ] ;then 163 | cd $tempdir 164 | sudo tar -xvf "${DIR}/history/tempdir/$(date +%Y-%m)/${DISTRIBUTION}/${DISTRIB_RELEASE}/${ARCH}/basefs.tar" 165 | cd $DIR 166 | else 167 | /bin/bash -e "${BUILD_SCRIPT}/debootstrap.sh" || { exit 1 ; } #创建基本根文件系统 168 | fi 169 | 170 | /bin/bash -e "${BUILD_SCRIPT}/chroot.sh" || { exit $? ; } 171 | #sudo rm -rf ${tempdir}/ || true 172 | } 173 | 174 | git_trees 175 | 176 | cd ${DIR}/ 177 | 178 | run_roostock_ng 179 | 180 | # 181 | -------------------------------------------------------------------------------- /scripts/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e -o pipefail 4 | 5 | ## Parameters 6 | source configs/common.conf 7 | 8 | ## Board configuraions 9 | source ${BOARD_CONFIG}/${FIRE_BOARD}.conf 10 | 11 | ## Functions 12 | source configs/functions/functions 13 | 14 | ###################################################################################### 15 | TARGET="$1" 16 | 17 | mkdir -p ${BUILD} 18 | 19 | case "$TARGET" in 20 | u-boot) 21 | build_uboot 22 | ;; 23 | linux) 24 | build_linux 25 | ;; 26 | linux-deb) 27 | build_linux_debs 28 | ;; 29 | tfa) 30 | build_tfa 31 | ;; 32 | esac 33 | 34 | echo -e "\nDone." 35 | echo -e "\n`date`" 36 | -------------------------------------------------------------------------------- /scripts/common.sh: -------------------------------------------------------------------------------- 1 | generate_soc () { 2 | echo "#!/bin/sh" > ${wfile} 3 | echo "format=1.0" >> ${wfile} 4 | echo "" >> ${wfile} 5 | if [ ! "x${conf_bootloader_in_flash}" = "xenable" ] ; then 6 | echo "board=${board}" >> ${wfile} 7 | echo "" >> ${wfile} 8 | echo "bootloader_location=${bootloader_location}" >> ${wfile} 9 | echo "bootrom_gpt=${bootrom_gpt}" >> ${wfile} 10 | echo "" >> ${wfile} 11 | echo "dd_spl_uboot_count=${dd_spl_uboot_count}" >> ${wfile} 12 | echo "dd_spl_uboot_seek=${dd_spl_uboot_seek}" >> ${wfile} 13 | if [ "x${build_img_file}" = "xenable" ] ; then 14 | echo "dd_spl_uboot_conf=notrunc" >> ${wfile} 15 | else 16 | echo "dd_spl_uboot_conf=${dd_spl_uboot_conf}" >> ${wfile} 17 | fi 18 | echo "dd_spl_uboot_bs=${dd_spl_uboot_bs}" >> ${wfile} 19 | if [ ! "x${spl_uboot_name}" = "x" ] ; then 20 | echo "dd_spl_uboot_backup=/opt/backup/uboot/${spl_uboot_name}" >> ${wfile} 21 | else 22 | echo "dd_spl_uboot_backup=" >> ${wfile} 23 | fi 24 | echo "" >> ${wfile} 25 | echo "dd_uboot_count=${dd_uboot_count}" >> ${wfile} 26 | echo "dd_uboot_seek=${dd_uboot_seek}" >> ${wfile} 27 | if [ "x${build_img_file}" = "xenable" ] ; then 28 | echo "dd_uboot_conf=notrunc" >> ${wfile} 29 | else 30 | echo "dd_uboot_conf=${dd_uboot_conf}" >> ${wfile} 31 | fi 32 | echo "dd_uboot_bs=${dd_uboot_bs}" >> ${wfile} 33 | echo "dd_uboot_emmc_backup=/opt/backup/uboot/${MUBOOT_FILE}" >> ${wfile} 34 | echo "dd_uboot_nand_backup=/opt/backup/uboot/${NUBOOT_FILE}" >> ${wfile} 35 | else 36 | echo "uboot_CONFIG_CMD_BOOTZ=${uboot_CONFIG_CMD_BOOTZ}" >> ${wfile} 37 | echo "uboot_CONFIG_SUPPORT_RAW_INITRD=${uboot_CONFIG_SUPPORT_RAW_INITRD}" >> ${wfile} 38 | echo "uboot_CONFIG_CMD_FS_GENERIC=${uboot_CONFIG_CMD_FS_GENERIC}" >> ${wfile} 39 | echo "zreladdr=${conf_zreladdr}" >> ${wfile} 40 | fi 41 | echo "" >> ${wfile} 42 | echo "boot_fstype=${conf_boot_fstype}" >> ${wfile} 43 | echo "conf_boot_startmb=${conf_boot_startmb}" >> ${wfile} 44 | echo "conf_boot_endmb=${conf_boot_endmb}" >> ${wfile} 45 | echo "sfdisk_fstype=${sfdisk_fstype}" >> ${wfile} 46 | echo "" >> ${wfile} 47 | echo "conf_root_device=${conf_root_device:-/dev/mmcblk0}" >> ${wfile} 48 | echo "" >> ${wfile} 49 | if [ "x${uboot_efi_mode}" = "xenable" ] ; then 50 | echo "uboot_efi_mode=${uboot_efi_mode}" >> ${wfile} 51 | echo "" >> ${wfile} 52 | fi 53 | 54 | echo "boot_label=${BOOT_LABEL}" >> ${wfile} 55 | echo "rootfs_label=${ROOTFS_LABEL}" >> ${wfile} 56 | echo "" >> ${wfile} 57 | echo "#Kernel" >> ${wfile} 58 | echo "dtb=${dtb}" >> ${wfile} 59 | echo "serial_tty=${SERIAL}" >> ${wfile} 60 | echo "usbnet_mem=${usbnet_mem}" >> ${wfile} 61 | echo "" >> ${wfile} 62 | echo "#Advanced options" >> ${wfile} 63 | echo "#disable_ssh_regeneration=true" >> ${wfile} 64 | echo "${FlashLayout_NAND}" >> ${wfile} 65 | 66 | echo "" >> ${wfile} 67 | 68 | echo "${FlashLayout_EMMC}" >> ${wfile} 69 | 70 | echo "" >> ${wfile} 71 | } -------------------------------------------------------------------------------- /scripts/create_image.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e -o pipefail 4 | 5 | time=$(date +%Y-%m-%d) 6 | 7 | ## Parameters 8 | source configs/common.conf 9 | 10 | ## Board configuraions 11 | source ${BOARD_CONFIG}/${FIRE_BOARD}.conf 12 | source configs/user.conf 13 | 14 | 15 | ##common functions 16 | source configs/functions/functions 17 | ###################################################################################### 18 | ## Try to update Fenix 19 | check_update() { 20 | cd $ROOT 21 | 22 | update_git_repo "$PWD" ${FENIX_BRANCH:- master} 23 | } 24 | 25 | #if [ "x${INSTALL_TYPE}" != "xALL" ] ; then 26 | # error_msg "UBOOT INSTALL TYPE must be ALL!" 27 | # exit 0 28 | #fi 29 | 30 | start_time=`date +%s` 31 | 32 | ## 历史编译目录 33 | mkdir -p history/${target_name}/${DISTRIBUTION}/${time}/image 34 | mkdir -p history/${target_name}/${DISTRIBUTION}/${time}/uboot 35 | mkdir -p history/${target_name}/${DISTRIBUTION}/${time}/kernel_deb 36 | mkdir -p history/${target_name}/${DISTRIBUTION}/${time}/rootfs/${DISTRIB_TYPE} 37 | mkdir -p history/tempdir/$(date +%Y-%m)/${DISTRIBUTION}/${DISTRIB_RELEASE} 38 | 39 | if [ "$USER" != 'root' ]; then 40 | echo "Building rootfs stage requires root privileges, please enter your passowrd:" 41 | read PASSWORD 42 | else 43 | PASSWORD= 44 | fi 45 | 46 | 47 | #build tfa 48 | if [ ! -f ${BUILD}/${TFA_BUILD_FILE} -o ! -f ${BUILD}/${TFA_BUILD_FILE} -o "x${FORCE_UPDATE}" = "xenable" ]; then 49 | if [ ! -z ${TFA_BUILD_FILE} ]; then 50 | ./scripts/build.sh tfa 51 | fi 52 | fi 53 | 54 | #build uboot 55 | if [ ! -f ${BUILD}/${MUBOOT_FILE} -a ! -f ${BUILD}/${NUBOOT_FILE} -o "x${FORCE_UPDATE}" = "xenable" ]; then 56 | ./scripts/build.sh u-boot 57 | fi 58 | 59 | #build kernel 60 | if [ ! -f ${BUILD_DEBS}/${KERNEL_DEB} -o "x${FORCE_UPDATE}" = "xenable" ]; then 61 | ./scripts/build.sh linux 62 | ./scripts/build.sh linux-deb 63 | fi 64 | 65 | ## Rootfs stage requires root privileges 66 | echo "$PASSWORD" | sudo -E -S $ROOT/publish/fire-imx-stable.sh 67 | 68 | 69 | 70 | #编译输出 71 | cp ${BUILD}/${NUBOOT_FILE} ${ROOT}/history/${target_name}/${DISTRIBUTION}/${time}/uboot 72 | cp ${BUILD}/${MUBOOT_FILE} ${ROOT}/history/${target_name}/${DISTRIBUTION}/${time}/uboot 73 | cp ${BUILD_DEBS}/${KERNEL_DEB} ${ROOT}/history/${target_name}/${DISTRIBUTION}/${time}/kernel_deb 74 | cp deploy/${deb_distribution}-${release}-${DISTRIB_TYPE}-${deb_arch}-${time}/${target_name}*.img \ 75 | ${ROOT}/history/${target_name}/${DISTRIBUTION}/${time}/image 76 | 77 | cp deploy/${deb_distribution}-${release}-${DISTRIB_TYPE}-${deb_arch}-${time}/*rootfs* \ 78 | ${ROOT}/history/${target_name}/${DISTRIBUTION}/${time}/rootfs/${DISTRIB_TYPE} 79 | 80 | if [ "${target_name}" == "stm32mp157" ]; then 81 | cp deploy/${deb_distribution}-${release}-${DISTRIB_TYPE}-${deb_arch}-${time}/bootfs.img \ 82 | ${ROOT}/history/${target_name}/${DISTRIBUTION}/${time}/rootfs/${DISTRIB_TYPE} 83 | else 84 | 85 | cp deploy/${deb_distribution}-${release}-${DISTRIB_TYPE}-${deb_arch}-${time}/boot.tar \ 86 | ${ROOT}/history/${target_name}/${DISTRIBUTION}/${time}/rootfs/${DISTRIB_TYPE} 87 | 88 | if [ -f deploy/${deb_distribution}-${release}-${DISTRIB_TYPE}-${deb_arch}-${time}/fatboot.img ]; then 89 | cp deploy/${deb_distribution}-${release}-${DISTRIB_TYPE}-${deb_arch}-${time}/fatboot.img \ 90 | ${ROOT}/history/${target_name}/${DISTRIBUTION}/${time}/rootfs/${DISTRIB_TYPE} 91 | fi 92 | fi 93 | 94 | 95 | 96 | #echo "$(date +%Y-%m-%d-%H:%M:%S) ${deb_distribution}-${release}-${DISTRIB_TYPE}-${deb_arch}-${time}" >> ${ROOT}/history/history_version 97 | 98 | 99 | echo "镜像使用说明文档:" > ${ROOT}/history/${target_name}/${DISTRIBUTION}/${time}/镜像日志.txt 100 | echo "https://doc.embedfire.com/lubancat/os_release_note/zh/latest/index.html" >> ${ROOT}/history/${target_name}/${DISTRIBUTION}/${time}/镜像日志.txt 101 | echo " " >> ${ROOT}/history/${target_name}/${DISTRIBUTION}/${time}/镜像日志.txt 102 | 103 | echo "主机名:$rfs_hostname" >> ${ROOT}/history/${target_name}/${DISTRIBUTION}/${time}/镜像日志.txt 104 | echo "用户名:$rfs_username" >> ${ROOT}/history/${target_name}/${DISTRIBUTION}/${time}/镜像日志.txt 105 | echo "密码: $rfs_password" >> ${ROOT}/history/${target_name}/${DISTRIBUTION}/${time}/镜像日志.txt 106 | echo " " >> ${ROOT}/history/${target_name}/${DISTRIBUTION}/${time}/镜像日志.txt 107 | 108 | cd $UBOOT_DIR 109 | echo "uboot仓库:$UBOOT_SOURCE_URL " >> ${ROOT}/history/${target_name}/${DISTRIBUTION}/${time}/镜像日志.txt 110 | echo "uboot分支:$UBOOT_GIT_BRANCH " >> ${ROOT}/history/${target_name}/${DISTRIBUTION}/${time}/镜像日志.txt 111 | echo "uboot提交ID $(git log | grep commit | head -n 1 | awk '{print $2}')" >> ${ROOT}/history/${target_name}/${DISTRIBUTION}/${time}/镜像日志.txt 112 | echo " " >> ${ROOT}/history/${target_name}/${DISTRIBUTION}/${time}/镜像日志.txt 113 | 114 | cd $LINUX_DIR 115 | echo "内核仓库:$LINUX_SOURCE_URL " >> ${ROOT}/history/${target_name}/${DISTRIBUTION}/${time}/镜像日志.txt 116 | echo "内核分支:$LINUX_GIT_BRANCH " >> ${ROOT}/history/${target_name}/${DISTRIBUTION}/${time}/镜像日志.txt 117 | echo "内核提交ID $(git log | grep commit | head -n 1 | awk '{print $2}')" >> ${ROOT}/history/${target_name}/${DISTRIBUTION}/${time}/镜像日志.txt 118 | echo " " >> ${ROOT}/history/${target_name}/${DISTRIBUTION}/${time}/镜像日志.txt 119 | 120 | cd $ROOT 121 | echo "image-builder仓库:https://gitee.com/Embedfire/ebf-image-builder" >> ${ROOT}/history/${target_name}/${DISTRIBUTION}/${time}/镜像日志.txt 122 | echo "image-builder分支:image-builder_2.0" >> ${ROOT}/history/${target_name}/${DISTRIBUTION}/${time}/镜像日志.txt 123 | echo "image-builder提交ID: $(git log | grep commit | head -n 1 | awk '{print $2}')" >> ${ROOT}/history/${target_name}/${DISTRIBUTION}/${time}/镜像日志.txt 124 | echo " " >> ${ROOT}/history/${target_name}/${DISTRIBUTION}/${time}/镜像日志.txt 125 | 126 | 127 | #压缩 128 | xz -zf ${ROOT}/history/${target_name}/${DISTRIBUTION}/${time}/image/${target_name}*.img 129 | 130 | # Generate sha256sum 131 | cd ${ROOT}/history/${target_name}/${DISTRIBUTION}/${time}/image/ 132 | sha256sum ${target_name}*.xz > SHA256SUMS.txt 133 | cd - 134 | 135 | #target_name 136 | 137 | echo -e "\nDone." 138 | echo -e "\n`date`" 139 | 140 | end_time=`date +%s` 141 | time_cal $(($end_time - $start_time)) 142 | 143 | -------------------------------------------------------------------------------- /scripts/create_imx8mm_uboot_bin.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | if [ ! "$SCRIPT_URL" == "" ]; then 4 | if [ ! -d ${SCRIPT_DIR}/.git ]; then 5 | info_msg "U-boot script repository does not exist, clone u-boot script repository from '$SCRIPT_DIR'..." 6 | git clone $SCRIPT_URL 7 | fi 8 | fi 9 | cp -v ${BUILD}/${MUBOOT_FILE} ebf-imx-mkimage/iMX8M 10 | cp -v spl/${SPL_BUILD_FILE} ebf-imx-mkimage/iMX8M 11 | cp -v arch/arm/dts/${UBOOT_DTB} ebf-imx-mkimage/iMX8M/imx8mm-ddr4-evk.dtb 12 | 13 | cd ebf-imx-mkimage 14 | 15 | make SOC=iMX8MM clean 16 | 17 | #make SOC=iMX8MM flash_spl_uboot 18 | make SOC=iMX8MM flash_ddr4_evk_no_hdmi 19 | cp iMX8M/flash.bin ${BUILD}/${MUBOOT_FILE} 20 | -------------------------------------------------------------------------------- /scripts/create_rk3328_uboot_bin.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | 4 | if [ ! "$SCRIPT_URL" == "" ]; then 5 | if [ ! -d $ROOT/${SCRIPT_DIR}/.git ]; then 6 | info_msg "U-boot script repository does not exist, clone u-boot script repository from '$SCRIPT_DIR'..." 7 | cd $ROOT 8 | git clone $SCRIPT_URL 9 | cd $UBOOT_DIR 10 | fi 11 | fi 12 | 13 | if [ ! "$BUILD_SCRIPT_OF_UBOOT" == "" ]; then 14 | mkdir -p ${BUILD} 15 | . $BUILD_SCRIPT_OF_UBOOT evb-rk3328 16 | fi 17 | 18 | tools/mkimage -n rk3328 -T rksd -d ../rkbin/bin/rk33/rk3328_ddr_333MHz_v1.17.bin idbloader.img 19 | cat ../rkbin/bin/rk33/rk322xh_miniloader_v2.50.bin >> idbloader.img 20 | 21 | dd if=idbloader.img of=$MUBOOT_FILE seek=64 22 | dd if=uboot.img of=$MUBOOT_FILE seek=16384 23 | dd if=trust.img of=$MUBOOT_FILE seek=24576 24 | 25 | cp $MUBOOT_FILE ${BUILD}/${MUBOOT_FILE} -------------------------------------------------------------------------------- /scripts/create_rk3399_uboot_bin.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | 4 | if [ ! "$SCRIPT_URL" == "" ]; then 5 | if [ ! -d $ROOT/${SCRIPT_DIR}/.git ]; then 6 | info_msg "U-boot script repository does not exist, clone u-boot script repository from '$SCRIPT_DIR'..." 7 | cd $ROOT 8 | git clone $SCRIPT_URL 9 | cd $UBOOT_DIR 10 | fi 11 | fi 12 | 13 | if [ ! "$BUILD_SCRIPT_OF_UBOOT" == "" ]; then 14 | mkdir -p ${BUILD} 15 | . $BUILD_SCRIPT_OF_UBOOT evb-rk3399 16 | fi 17 | 18 | tools/mkimage -n rk3399 -T rksd -d ../rkbin/bin/rk33/rk3399_ddr_800MHz_v1.25.bin idbloader.img 19 | cat ../rkbin/bin/rk33/rk3399_miniloader_v1.26.bin >> idbloader.img 20 | 21 | dd if=idbloader.img of=$MUBOOT_FILE seek=64 22 | dd if=uboot.img of=$MUBOOT_FILE seek=16384 23 | dd if=trust.img of=$MUBOOT_FILE seek=24576 24 | 25 | cp $MUBOOT_FILE ${BUILD}/${MUBOOT_FILE} 26 | -------------------------------------------------------------------------------- /scripts/create_rk3399_uboot_bin_common.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | 4 | if [ ! "$SCRIPT_URL" == "" ]; then 5 | if [ ! -d $ROOT/${SCRIPT_DIR}/.git ]; then 6 | info_msg "U-boot script repository does not exist, clone u-boot script repository from '$SCRIPT_DIR'..." 7 | cd $ROOT 8 | git clone $SCRIPT_URL 9 | cd $UBOOT_DIR 10 | fi 11 | fi 12 | 13 | if [ ! "$BUILD_SCRIPT_OF_UBOOT" == "" ]; then 14 | mkdir -p ${BUILD} 15 | echo "job is "${NR_JOBS} 16 | ${BUILD_SCRIPT_OF_UBOOT} -j${NR_JOBS} ${UBOOT_CONFIG} 17 | ${BUILD_SCRIPT_OF_UBOOT} -j${NR_JOBS} CROSS_COMPILE=${UBOOT_COMPILER} BL31=${ROOT}/rkbin/bin/rk33/rk3399_bl31_v1.35.elf 18 | fi 19 | 20 | 21 | dd if=idbloader.img of=$MUBOOT_FILE seek=64 conv=notrunc 22 | dd if=u-boot.itb of=$MUBOOT_FILE seek=16384 conv=notrunc 23 | cp $MUBOOT_FILE ${BUILD}/${MUBOOT_FILE} -------------------------------------------------------------------------------- /scripts/debootstrap.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | # 3 | # Copyright (c) 2012-2016 Robert Nelson 4 | # 5 | # Permission is hereby granted, free of charge, to any person obtaining a copy 6 | # of this software and associated documentation files (the "Software"), to deal 7 | # in the Software without restriction, including without limitation the rights 8 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | # copies of the Software, and to permit persons to whom the Software is 10 | # furnished to do so, subject to the following conditions: 11 | # 12 | # The above copyright notice and this permission notice shall be included in 13 | # all copies or substantial portions of the Software. 14 | # 15 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | # THE SOFTWARE. 22 | 23 | DIR=$PWD 24 | 25 | . "${DIR}/.project" 26 | 27 | check_defines () { 28 | #http://linux.die.net/man/8/debootstrap 29 | 30 | unset options 31 | if [ ! "${deb_arch}" ] ; then 32 | echo "scripts/deboostrap_first_stage.sh: Error: deb_arch undefined" 33 | exit 1 34 | else 35 | options="--arch=${deb_arch}" 36 | fi 37 | 38 | if [ "${deb_include}" ] ; then 39 | include=$(echo ${deb_include} | sed 's/ /,/g' | sed 's/\t/,/g') 40 | #board_include=$(echo ${board_deb_include} | sed 's/ /,/g' | sed 's/\t/,/g') 41 | options="${options} --include=${include},${board_include}" 42 | fi 43 | 44 | if [ "${deb_exclude}" ] ; then 45 | exclude=$(echo ${deb_exclude} | sed 's/ /,/g' | sed 's/\t/,/g') 46 | options="${options} --exclude=${exclude}" 47 | fi 48 | 49 | if [ "${deb_components}" ] ; then 50 | components=$(echo ${deb_components} | sed 's/ /,/g' | sed 's/\t/,/g') 51 | options="${options} --components=${components}" 52 | fi 53 | 54 | #http://linux.die.net/man/8/debootstrap 55 | if [ "${deb_variant}" ] ; then 56 | #--variant=minbase|buildd|fakechroot|scratchbox 57 | options="${options} --variant=${deb_variant}" 58 | fi 59 | 60 | if [ ! "${deb_distribution}" ] ; then 61 | echo "scripts/deboostrap_first_stage.sh: Error: deb_distribution undefined" 62 | exit 1 63 | fi 64 | 65 | unset suite 66 | if [ ! "${deb_codename}" ] ; then 67 | echo "scripts/deboostrap_first_stage.sh: Error: deb_codename undefined" 68 | exit 1 69 | else 70 | suite="${deb_codename}" 71 | fi 72 | 73 | case "${deb_distribution}" in 74 | debian) 75 | if [ ! -f /usr/share/debootstrap/scripts/${suite} ] ; then 76 | sudo ln -s /usr/share/debootstrap/scripts/sid /usr/share/debootstrap/scripts/${suite} 77 | fi 78 | if [ ! -f /usr/share/keyrings/debian-archive-keyring.gpg ] ; then 79 | options="${options} --no-check-gpg" 80 | fi 81 | ;; 82 | ubuntu) 83 | if [ ! -f /usr/share/debootstrap/scripts/${suite} ] ; then 84 | sudo ln -s /usr/share/debootstrap/scripts/gutsy /usr/share/debootstrap/scripts/${suite} 85 | fi 86 | if [ ! -f /usr/share/keyrings/ubuntu-archive-keyring.gpg ] ; then 87 | options="${options} --no-check-gpg" 88 | fi 89 | ;; 90 | esac 91 | options="${options} --foreign" 92 | 93 | unset target 94 | if [ ! "${tempdir}" ] ; then 95 | echo "scripts/deboostrap_first_stage.sh: Error: tempdir undefined" 96 | exit 1 97 | else 98 | target="${tempdir}" 99 | fi 100 | 101 | unset mirror 102 | if [ ! "${apt_proxy}" ] ; then 103 | apt_proxy="" 104 | fi 105 | if [ ! "${deb_mirror}" ] ; then 106 | case "${deb_distribution}" in 107 | debian) 108 | deb_mirror="deb.debian.org/debian" 109 | ;; 110 | ubuntu) 111 | deb_mirror="ports.ubuntu.com/" 112 | ;; 113 | esac 114 | fi 115 | mirror="http://${apt_proxy}${deb_mirror}" 116 | } 117 | 118 | report_size () { 119 | echo "Log: Size of: [${tempdir}]: $(du -sh ${tempdir} 2>/dev/null | awk '{print $1}')" 120 | } 121 | 122 | check_defines 123 | 124 | echo "Log: Creating: [${deb_distribution}] [${deb_codename}] image for: [${deb_arch}]" 125 | 126 | if [ "${apt_proxy}" ] ; then 127 | echo "Log: using apt proxy: [${apt_proxy}]" 128 | fi 129 | 130 | echo "Log: Running: debootstrap in [${tempdir}]" 131 | ###FIXME: --no-merged-usr eventually we will support, but as of 1.0.101+ it's back, so default to pre... 132 | echo "Log: [sudo debootstrap --no-merged-usr ${options} ${suite} ${target} ${mirror}]" 133 | sudo debootstrap --no-merged-usr ${options} ${suite} "${target}" ${mirror} 134 | report_size 135 | # 136 | -------------------------------------------------------------------------------- /scripts/install_dependencies.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | # 3 | # Copyright (c) 2012-2018 Robert Nelson 4 | # 5 | # Permission is hereby granted, free of charge, to any person obtaining a copy 6 | # of this software and associated documentation files (the "Software"), to deal 7 | # in the Software without restriction, including without limitation the rights 8 | # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | # copies of the Software, and to permit persons to whom the Software is 10 | # furnished to do so, subject to the following conditions: 11 | # 12 | # The above copyright notice and this permission notice shall be included in 13 | # all copies or substantial portions of the Software. 14 | # 15 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | # THE SOFTWARE. 22 | 23 | #http://ftp.us.debian.org/debian/pool/main/d/debootstrap/ 24 | #1.0.${minimal_debootstrap} 25 | minimal_debootstrap="115" 26 | host_arch="$(uname -m)" 27 | 28 | debootstrap_is_installed () { 29 | unset deb_pkgs 30 | dpkg -l | grep debootstrap >/dev/null || deb_pkgs="${deb_pkgs}debootstrap " 31 | 32 | if [ "x${host_arch}" != "xarmv7l" ] ; then 33 | if [ "x${host_arch}" != "xaarch64" ] ; then 34 | #FIXME:... 35 | #echo "QEMU is un-reliable, thus no longer supported... Spend some Money and buy a real ARMHF device to run this script." 36 | #FIXME: comment out the next line to use QEMU 37 | #exit 2 38 | dpkg -l | grep qemu-user-static >/dev/null || deb_pkgs="${deb_pkgs}qemu-user-static " 39 | dpkg -l | grep $(dpkg --print-architecture) | grep -v "qemu-" | grep qemu >/dev/null || deb_pkgs="${deb_pkgs}qemu " 40 | dpkg -l | grep git >/dev/null || deb_pkgs="${deb_pkgs}git " 41 | dpkg -l | grep dosfstools >/dev/null || deb_pkgs="${deb_pkgs}dosfstools " 42 | dpkg -l | grep kpartx >/dev/null || deb_pkgs="${deb_pkgs}kpartx " 43 | dpkg -l | grep wget >/dev/null || deb_pkgs="${deb_pkgs}wget " 44 | dpkg -l | grep parted >/dev/null || deb_pkgs="${deb_pkgs}parted " 45 | dpkg -l | grep m4 >/dev/null || deb_pkgs="${deb_pkgs}m4 " 46 | fi 47 | fi 48 | 49 | 50 | 51 | if [ "${deb_pkgs}" ] ; then 52 | echo "Installing: ${deb_pkgs}" 53 | sudo apt-get update 54 | sudo apt-get -y install ${deb_pkgs} 55 | fi 56 | } 57 | 58 | debootstrap_what_version () { 59 | test_debootstrap=$(/usr/sbin/debootstrap --version | cut -f3 -d. | grep -o '^[0-9.]\+') 60 | echo "Log: debootstrap version: 1.0.$test_debootstrap" 61 | } 62 | 63 | debootstrap_is_installed 64 | debootstrap_what_version 65 | 66 | #if [[ "$test_debootstrap" < "$minimal_debootstrap" ]] ; then 67 | #if [ "$test_debootstrap" -lt "$minimal_debootstrap" ] ; then 68 | if [ ! "x$test_debootstrap" = "x$minimal_debootstrap" ] ; then 69 | echo "Log: Installing minimal debootstrap version: 1.0.${minimal_debootstrap}..." 70 | wget https://rcn-ee.com/mirror/debootstrap/debootstrap_1.0.${minimal_debootstrap}_all.deb 71 | sudo dpkg -i debootstrap_1.0.${minimal_debootstrap}_all.deb 72 | rm -rf debootstrap_1.0.${minimal_debootstrap}_all.deb || true 73 | fi 74 | 75 | -------------------------------------------------------------------------------- /target/boot/autorun.inf: -------------------------------------------------------------------------------- 1 | [autorun] 2 | ICON=/boot/fire.ico,0 -------------------------------------------------------------------------------- /target/boot/fire.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Embedfire/ebf-image-builder/a747d99aa87ad9feeb9f3ba6f6e3127d56ea7f16/target/boot/fire.ico -------------------------------------------------------------------------------- /target/init_scripts/actlogo.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Terminate Psplash Act Screen 3 | After=bootlogo.service 4 | 5 | [Service] 6 | Type=forking 7 | ExecStart=/bin/bash /opt/scripts/boot/psplash_quit.sh 8 | 9 | [Install] 10 | WantedBy=multi-user.target -------------------------------------------------------------------------------- /target/init_scripts/autowifi.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description==booting wifi ... 3 | After=wpa_supplicant.service network.target local-fs.target udhcpd.service 4 | Before=sshd.service 5 | 6 | [Service] 7 | Type=forking 8 | ExecStart=/bin/bash /opt/scripts/boot/autowifi.sh 9 | 10 | [Install] 11 | WantedBy=multi-user.target -------------------------------------------------------------------------------- /target/init_scripts/bootlogo.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Starts Psplash Boot logo 3 | DefaultDependencies=no 4 | After=systemd-udev-trigger.service systemd-udevd.service 5 | 6 | [Service] 7 | ExecStart=/bin/bash /opt/scripts/boot/psplash.sh 8 | 9 | [Install] 10 | WantedBy=sysinit.target 11 | -------------------------------------------------------------------------------- /target/init_scripts/systemd-generic-board-startup.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Generic Board Startup 3 | After=local-fs.target 4 | Before=serial-getty@.service 5 | [Service] 6 | Type=oneshot 7 | RemainAfterExit=yes 8 | ExecStart=/bin/sh /opt/scripts/boot/generic-startup.sh 9 | ExecStop=/sbin/modprobe -r g_multi 10 | [Install] 11 | WantedBy=multi-user.target 12 | -------------------------------------------------------------------------------- /target/keyring/deb.dovetail-automata.com-keyring.asc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Embedfire/ebf-image-builder/a747d99aa87ad9feeb9f3ba6f6e3127d56ea7f16/target/keyring/deb.dovetail-automata.com-keyring.asc -------------------------------------------------------------------------------- /target/keyring/deb.machinekit.io.pubkey.asc: -------------------------------------------------------------------------------- 1 | -----BEGIN PGP PUBLIC KEY BLOCK----- 2 | Version: GnuPG v1 3 | 4 | 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 120 | rRiKLJFuT/0iWoeKobfrHN8BV04VKTaxUUaQCg== 121 | =wyGl 122 | -----END PGP PUBLIC KEY BLOCK----- 123 | -------------------------------------------------------------------------------- /target/keyring/keyfile: -------------------------------------------------------------------------------- 1 | -----BEGIN PGP PUBLIC KEY BLOCK----- 2 | 3 | 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 39 | lHXZMwIxeVEJ34kuQwOc 40 | =vGMH 41 | -----END PGP PUBLIC KEY BLOCK----- 42 | -------------------------------------------------------------------------------- /target/keyring/nodesource.gpg.key: -------------------------------------------------------------------------------- 1 | -----BEGIN PGP PUBLIC KEY BLOCK----- 2 | Version: GnuPG v1 3 | Comment: GPGTools - https://gpgtools.org 4 | 5 | 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 51 | =CLGF 52 | -----END PGP PUBLIC KEY BLOCK----- 53 | -------------------------------------------------------------------------------- /target/keyring/packages.namniart.com-archive-keyring.asc: -------------------------------------------------------------------------------- 1 | -----BEGIN PGP PUBLIC KEY BLOCK----- 2 | Version: GnuPG v1.4.11 (GNU/Linux) 3 | 4 | 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 53 | xIXcdOmgMM7UWCDH2g== 54 | =DBsm 55 | -----END PGP PUBLIC KEY BLOCK----- 56 | -------------------------------------------------------------------------------- /target/keyring/repos.azulsystems.com.pubkey.asc: -------------------------------------------------------------------------------- 1 | -----BEGIN PGP PUBLIC KEY BLOCK----- 2 | Version: SKS 1.1.6 3 | Comment: Hostname: keyserver.ubuntu.com 4 | 5 | mQINBFNgFa8BEADTL/REB10M+TfiZOtFHqL5LHKkzTMn/O2r5iIqXGhi6iwZazFs9S5g1eU7 6 | WMen5Xp9AREs+OvaHx91onPZ7ZiP7VpZ6ZdwWrnVk1Y/HfI59tWxmNYWDmKYBGMj4EUpFPSE 7 | 9EnFj7dm1WdlCvpognCwZQl9D3BseGqN7OLHfwqqmOlbYN9hHYkT+CaqOoWDIGMB3UkBlMr0 8 | GuujEP8N1gxg7EOcSCsZH5aKtXubdUlVSphfAAwDz4MviB39J22sPBnKmaOT3TUTO5vGeKtC 9 | 9BAvtgA82jY2TtCEjetnfK/qtzj/6j2NxVUbHQydwNQVRU92A7334YvCbn3xUUNI0WOscdmf 10 | pgCU0Z9Gb2IqDb9cMjgUi8F6MG/QY9/CZjX62XrHRPm3aXsCJOVh/PO1sl2A/rvv8AkpJKYy 11 | hm6T8OBFptCsA3V4Oic7ZyYhqV0u2r4NON+1MoUeuuoeY2tIrbRxe3ffVOxPzrESzSbc8LC2 12 | tYaP+wGdW0f57/CoDkUzlvpReCUI1Bv5zP4/jhC63Rh6lffvSf2tQLwOsf5ivPhUtwUfOQjg 13 | v9P8Wc8K7XZpSOMnDZuDe9wuvB/DiH/P5yiTs2RGsbDdRh5iPfwbtf2+IX6h2lNZXiDKt9Gc 14 | 26uzeJRx/c7+sLunxq6DLIYvrsEipVI9frHIHV6fFTmqMJY6SwARAQABtEdBenVsIFN5c3Rl 15 | bXMsIEluYy4gKFBhY2thZ2Ugc2lnbmluZyBrZXkuKSA8cGtpLXNpZ25pbmdAYXp1bHN5c3Rl 16 | bXMuY29tPokCOAQTAQIAIgUCU2AVrwIbAwYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AACgkQ 17 | sZmDYSGb2cnJ8xAAz1V1PJnfOyaRIP2NHo2uRwGdPsA4eFMXb4Z08eGjDMD3b9WW3D0XnCLb 18 | JpaZ6klz0W0s2tcYSneTBaSsRAqxgJgBZ5ZMXtrrHld/5qFoBbStLZLefmcPhnfvamwHDCTL 19 | Uex8NIAI1u3e9Rhb5fbH+gpuYpwHX7hz0FOfpn1sxR03UyxU+ey4AdKe9LG3TJVnB0Wcgxpo 20 | bpbqweLHyzcEQCNoFV3r1rlE13Y0aE31/9apoEwiYvqAzEmE38TukDLl/Qg8rkR1t0/lok2P 21 | G6pWqdN7pmoUovBTvDi5YOthcjZcdOTXXn2Yw4RZVF9uhRsVfku1Eg25SnOje3uYsmtQLME4 22 | eESbePdjyV/okCIle66uHZse+7gNyNmWpf01hM+VmAySIAyKa0Ku8AXZMydEcJTebrNfW9uM 23 | LsBx3Ts7z/CBfRng6F8louJGlZtlSwddTkZVcb26T20xeo0aZvdFXM2djTi/a5nbBoZQL85A 24 | EeV7HaphFLdPrgmMtS8sSZUEVvdaxp7WJsVuF9cONxsvx40OYTvfco0W41Lm8/sEuQ7YueEV 25 | pZxiv5kX56GTU9vXaOOi+8Z7Ee2w6Adz4hrGZkzztggs4tM9geNYnd0XCdZ/ICAskKJABg7b 26 | iDD1PhEBrqCIqSE3U497vibQMpkkl/Zpp0BirhGWNyTg8K4JrsQ= 27 | =d320 28 | -----END PGP PUBLIC KEY BLOCK----- 29 | -------------------------------------------------------------------------------- /target/keyring/repos.rcn-ee.net-archive-keyring.asc: -------------------------------------------------------------------------------- 1 | -----BEGIN PGP PUBLIC KEY BLOCK----- 2 | Version: GnuPG v1 3 | 4 | mQINBFTJS18BEADgFu5c55HkKUtuis1TzQX5z3Ub7l0GDUwvAnD2tCNnhbzLhYex 5 | TyALd834veIqbtl16K0igAYQ6FAONmP3eEGVV9sjPL1muf3rhZdG6fKVEAvGXFrL 6 | Nk5uloFJ0lQ0jWtPreJCQWXOC6wuc+P68wKn8wY0o6UNjd54ruvBQtWtVHME7jNB 7 | KLFZNcwv2XTN1JcXe5bXv0/klC1QUHlgukKo5W4o13oOqHdD4hS+Cn8QThnUrETU 8 | NEV70aWK8935VfQ7u3DfetSm1Jx8ZQyzLHITIUvvFhyEB0VvNHyuxn2gqW/LsJ6o 9 | 4o5e2fsasLhOL9W2sB5evjReGAQjNzXoc/Vi5gyZKB9s6iUF+HGseatWTOI+OoDz 10 | d4qVdLVK+Bo5x9uw9B7hDlWy6EaLYlo8jUnv+7GMUkY5LzL8DPZFpNd/PFxguFrh 11 | N/0b0jRdRsW3N5zC5Ar7g7hHcFX0YDNgeIYbNEixJfPXY1zPqmYZks08pHi5ez0L 12 | Ho5F844dRSubY2xd2W6CAHM2c8w4pcCvN2lSPEdD32SYiybv5pNtmkjihY2pakx3 13 | ZpvgYSTegDYdSd/dttjeiUCJfmRU/RrSqMfrQubvCFwsDizijBQw246OE5aiJJeX 14 | AxwmkZuT9UZfRJsepPBtx9ehH2k5AvtvbiEeM2V6WPbUe0lrSN4Ez1z9rwARAQAB 15 | tD5yZXBvcy5yY24tZWUubmV0IFBhY2thZ2UgU2lnbmluZyBLZXkgPHJvYmVydGNu 16 | ZWxzb25AZ21haWwuY29tPokCOAQTAQIAIgUCVMlLXwIbAwYLCQgHAwIGFQgCCQoL 17 | BBYCAwECHgECF4AACgkQ0oTmCKTEZAL21hAA3ZAiAgz9u6EbUeQVKIAaMhQy1wtE 18 | cCwYqPJVaEXHVPbRSg4APuz0XEafaiCIb6leAB3ldkoKLhs2x81BPyWKxmP5SP3Z 19 | /dBiPmAR4AwnJXMEhgxH4xv5MjzV+p8Eudd7HhfQfiMXbWs7S3HRyOy8LssKDogh 20 | b68hT4FiJ1UXQmVF9Wo+JPv0Dt3N3rOBkD5PQSNbQUFtg+3moGelUme6wdCQtXdH 21 | Ler7BB31akFjHbBQiCh8qrhHvdr1U1UT47M4I2R3ZFiSEhngDlCLclMah0GJJK7f 22 | 0mUVHg0i3h8fb0tHRmGs7HU2cItAJWQaWSuL9kTI/jlStUcfsn+CGFUNhBrzwElE 23 | hovECTrLg34o6AvoPFaEnqTpYgYvYJtv4YONBQolWMpID3lKA4BImURNMYrbo/5n 24 | fuxpHI8tl3YaygfkJDSMhTFjJCfnZIgk37/eBSNzCHweTCorYsOSkElhPvaT7EvB 25 | Scx2Kbchyry4e8DdfnWF+LE7J4BFC/EnESdRKlysCGXyCkYDXnxikyd/wEICOVt4 26 | 9tgOBqXS46+LlGNrwCABdOznveQABsSL3PPyHmg+UiwyQG+R+VsiztQox8zIpbS/ 27 | 7aDWtTt3QBsJZBJevdzLPdSzyGyo83/FFpZLIxL/p+h4K35dek+eAheZ1qQAj4sP 28 | dIKjixhSjeuF4HA= 29 | =Z4E0 30 | -----END PGP PUBLIC KEY BLOCK----- 31 | -------------------------------------------------------------------------------- /target/keyring/repos.seeed-archive-keyring.asc: -------------------------------------------------------------------------------- 1 | -----BEGIN PGP PUBLIC KEY BLOCK----- 2 | 3 | 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 83 | =7qph 84 | -----END PGP PUBLIC KEY BLOCK----- 85 | -------------------------------------------------------------------------------- /target/keyring/ros-archive-keyring.asc: -------------------------------------------------------------------------------- 1 | -----BEGIN PGP PUBLIC KEY BLOCK----- 2 | Version: SKS 1.1.6 3 | Comment: Hostname: pgp.mit.edu 4 | 5 | mQGiBEsy5KkRBADJbDSISoamRM5AA20bfAeBuhhaI+VaiCVcxw90sq9AI5lIc42FWzM2acm8 6 | yplqWiehAqOLKd+iIrqNGZ+VavZEPTx7o06UZUMRoPBiTFaCwrQ5avKzlt7ij8PRMVWNrJ7A 7 | 2lDYXfFQVV1o3Xo06qVnv0KLLUmiur0LBu4H/oTH3wCgt+/ID3LUKaMJsc77KwFBTjHB0EsD 8 | /26Z2Ud12f3urSNyN6VMWnP3rz6xsmtY4QsmkbnrJuduxCQBZv6bX1Cr2ulXkv0fFOr+s5Oy 9 | Uv7zyCPbxiJFh3Br7fJGb0b5/M208KPegiITY9hMh/aUbKjXCPoOXPxSL6SWOWV8taR6903E 10 | FyLBN0qno/kXIBKnVqBZobgnjIEPA/0fTnxtZtE7EpirGQMF2caJfv7/LCgXmRs9xAhgbE0/ 11 | caoa1tnc79uaHmLZFtbGFoAO31YNYM/IUHtmabbGdvZ4oYUwDhjBevVvC7aI+XhuNGK5mU8q 12 | CLLSEUOlCUr6BJq/0iFmjwjmwk9idZEYhqSNy2OoYJbq45rbHfbdKLEVrbQeUk9TIEJ1aWxk 13 | ZXIgPHJvc2J1aWxkQHJvcy5vcmc+iGAEExECACAFAksy5KkCGwMGCwkIBwMCBBUCCAMEFgID 14 | AQIeAQIXgAAKCRBVI7rusB+hFmk7AJ0XsLp05KA8l3YzAumZfjSN04MZjQCfQHfp4aQUXdOC 15 | UtetVo0QZUX3IuO5Ag0ESzLkrhAIAOCuSC83VXYWf8gOMSzdxwpsH/uLV9Wze2LGnajsJLjE 16 | Ohcsz2BHfxqNXhYaE9aQaodPCpbUAkPq8tLbpXy0SWRCx0F5RcplXx5vIWbP6TlfPbRpK70w 17 | 7IWd6vsNrjwEHjlhOLcNcj42sp5pgx4bdceK06k5Ml2hYovPnD9o2TYgjOqg5FHZ2g1J0103 18 | n/66bN/hZnpLaZJYQiPWCyq6K0565i1k2Y7hgWB/OXqwaqCehqmLTvpyQGzE1UJvKLuYU+T+ 19 | 4hBnSPbT3KIi5fCzlIwvxijOMcfbkLhzYQXcU0Rd1VItcd5nmPL4z97jBxzuhkgxXpGR4WGK 20 | hvsA2Z9YUtsAAwYH/3Bf44bTpD9bVADUdab3e7zm8iHfh9K/a83mIgDB7mHV6WuemQVTf/1d 21 | eu4mI5WtpbOCoucybGfjGIIAcSxwIx6VfC7HSp4J51bOpHhbdDffUEk6QVsZjwoFyn3W9W3Z 22 | VeTI+ch/Qoo5a98SnmdjN8eXI/qCuiXOHc6rXDXc2R0iox/1EAS8xGVdcYZe7IWBO2CjCkny 23 | hLrWxZHoy+i1GCZ9KvPF/Ef2dmLhCydT73ZlumsY8N5vm76Qul1G7f8LNbnMgXQafRkPffrA 24 | XSVhGY3Z2IiBwFNgxcKTq479l7yedYRGeU1A+SYIYmRFWHXt3rTkMlQSpxCsB0fAYfrwEqqI 25 | SQQYEQIACQUCSzLkrgIbDAAKCRBVI7rusB+hFpryAJ4puo6cMZxa6wITHFAM/k84+aRijwCe 26 | ItuWpUngP25xDuDGMsKarcNiqYGISQQYEQIACQUCSzLkrgIbDAAKCRBVI7rusB+hFpryAJ9q 27 | Nz3h3ijt9TkAV0CHufsPT6Cl4gCglfg7tJn2lsSF3HTpoDDO1Fggx9o= 28 | =Ggee 29 | -----END PGP PUBLIC KEY BLOCK----- 30 | -------------------------------------------------------------------------------- /target/other/zz-uenv_txt: -------------------------------------------------------------------------------- 1 | #!/bin/sh -e 2 | 3 | version="$1" 4 | 5 | # passing the kernel version is required 6 | if [ -z "${version}" ] ; then 7 | echo >&2 "W: zz-uenv_txt: ${DPKG_MAINTSCRIPT_PACKAGE:-kernel package} did not pass a version number" 8 | exit 2 9 | fi 10 | 11 | if [ -f /boot/uEnv.txt ] ; then 12 | unset older_kernel 13 | older_kernel=$(cat /boot/uEnv.txt | sed 's/ /\n/g' | grep -v '#' | grep 'uname_r=' | awk -F"=" '{print $2}' || true) 14 | 15 | if [ ! "x${older_kernel}" = "x" ] ; then 16 | if [ ! "x${older_kernel}" = "x${version}" ] ; then 17 | echo "zz-uenv_txt: Updating /boot/uEnv.txt [uname_r=${version}]" 18 | sed -i -e "s:uname_r=$older_kernel:uname_r=$version:g" /boot/uEnv.txt 19 | sed -i -e "s:$older_kernel:$version:g" /boot/uEnv.txt 20 | fi 21 | else 22 | echo "uname_r=${version}" >> /boot/uEnv.txt 23 | fi 24 | fi 25 | 26 | udir="/boot/uboot/boot" 27 | if [ -f ${udir}/uEnv.txt ] ; then 28 | unset older_kernel 29 | older_kernel=$(cat ${udir}/uEnv.txt | sed 's/ /\n/g' | grep -v '#' | grep 'uname_r=' | awk -F"=" '{print $2}' || true) 30 | unset zreladdr 31 | zreladdr=$(cat ${udir}/uEnv.txt | sed 's/ /\n/g' | grep -v '#' | grep 'zreladdr=' | awk -F"=" '{print $2}' || true) 32 | 33 | if [ "x${older_kernel}" = "xcurrent" ] ; then 34 | 35 | if [ -f ${udir}/vmlinuz-current ] ; then 36 | rm -f ${udir}/vmlinuz-current || true 37 | cp /boot/vmlinuz-${version} ${udir}/vmlinuz-current 38 | fi 39 | 40 | if [ "${zreladdr}" ] ; then 41 | if [ -f ${udir}/uImage ] ; then 42 | rm -rf ${udir}/uImage || true 43 | mkimage -A arm -O linux -T kernel -C none -a ${zreladdr} -e ${zreladdr} -n ${version} -d ${udir}/vmlinuz-current ${udir}/uImage 44 | fi 45 | fi 46 | 47 | if [ -f ${udir}/initrd.img-current ] ; then 48 | rm -f ${udir}/initrd.img-current || true 49 | cp /boot/initrd.img-${version} ${udir}/initrd.img-current 50 | fi 51 | 52 | if [ -f ${udir}/uInitrd ] ; then 53 | rm -rf ${udir}/uInitrd || true 54 | mkimage -A arm -O linux -T ramdisk -C none -a 0 -e 0 -n initramfs -d ${udir}/initrd.img-current ${udir}/uInitrd 55 | fi 56 | 57 | if [ -d ${udir}/dtbs/current/ ] ; then 58 | rm -rf ${udir}/dtbs/current/ || true 59 | mkdir -p ${udir}/dtbs/current/ 60 | 61 | if [ -d /boot/dtbs/${version}/ ] ; then 62 | cp /boot/dtbs/${version}/*.dtb ${udir}/dtbs/current/ 63 | else 64 | if [ -d /usr/lib/linux-image-${version}/ ] ; then 65 | cp /usr/lib/linux-image-${version}/*.dtb ${udir}/dtbs/current/ 66 | else 67 | if [ -d /lib/firmware/${version}/device-tree/ ] ; then 68 | cp /lib/firmware/${version}/device-tree/*.dtb ${udir}/dtbs/current/ 69 | fi 70 | fi 71 | fi 72 | fi 73 | echo "zz-uenv_txt: Updating boot drive for: [${version}]" 74 | fi 75 | fi 76 | 77 | 78 | mkdir -p /boot/kernel 79 | 80 | mv /boot/*${version}* /boot/kernel 81 | 82 | mv /boot/dtbs/${version}/*.dtb /boot/dtbs/ 2>/dev/null || true 83 | 84 | rm -rf /boot/dtbs/${version} 2>/dev/null || true 85 | -------------------------------------------------------------------------------- /tools/create_sdcard_from_flashlayout.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash - 2 | #=============================================================================== 3 | # 4 | # FILE: create_sdcard_from_flashlayout.sh 5 | # 6 | # USAGE: ./create_sdcard_from_flashlayout.sh 7 | # 8 | # DESCRIPTION: generate raw image with information from flash layout 9 | # 10 | # SPDX-License-Identifier: MIT 11 | # AUTHOR: Christophe Priouzeau (christophe.priouzeau@st.com), 12 | # ORGANIZATION: STMicroelectronics 13 | # COPYRIGHT: Copyright (C) 2017, STMicroelectronics - All Rights Reserved 14 | # CREATED: 11/22/2017 15:03 15 | # REVISION: v1.0 16 | # 17 | # DESCRIPTION: adapt to call from setup_sdcard.sh 18 | # AUTHOR: Peter Yang (turmary@126.com) 19 | # ORGANIZATION: Seeed Studio Co.,Ltd. 20 | # REVISION: v1.1 21 | #=============================================================================== 22 | #TODO: Pre-requisite tools 23 | # sgdisk 24 | # du 25 | # dd 26 | 27 | unset FLASHLAYOUT_data 28 | unset FLASHLAYOUT_filename 29 | unset FLASHLAYOUT_rawname 30 | unset FLASHLAYOUT_filename_path 31 | unset FLASHLAYOUT_prefix_image_path 32 | unset FLASHLAYOUT_number_of_line 33 | 34 | declare -A FLASHLAYOUT_data 35 | 36 | SDCARD_TOKEN=mmc0 37 | 38 | # Size of 2GB 39 | #DEFAULT_RAW_SIZE=2048 40 | # Size of 1.5GB 41 | DEFAULT_RAW_SIZE=1536 42 | 43 | # size of 768MB 44 | #DEFAULT_ROOTFS_PARTITION_SIZE=768432 45 | # size of 1024MB 46 | DEFAULT_ROOTFS_PARTITION_SIZE=1232896 47 | 48 | 49 | # 32 MB of Padding on B 50 | DEFAULT_PADDING_SIZE=33554432 51 | 52 | # Columns name on FLASHLAYOUT_data 53 | COL_SELECTED_OPT=0 54 | COL_PARTID=1 55 | COL_PARTNAME=2 56 | COL_PARTYPE=3 57 | COL_IP=4 58 | COL_OFFSET=5 59 | COL_BIN2FLASH=6 60 | COL_BIN2BOOT=7 61 | 62 | # SELECTED/OPT variable meaning: 63 | # - : boot stage 64 | # P: programme 65 | # E: erase 66 | # D: delete 67 | 68 | WARNING_TEXT="" 69 | 70 | usage() { 71 | echo "Usage: $0 " 72 | exit 0 73 | } 74 | 75 | debug() { 76 | if [ $DEBUG ]; 77 | then 78 | echo "" 79 | echo "[DEBUG]: $@" 80 | fi 81 | } 82 | 83 | function exec_print() { 84 | if [ $DEBUG ]; 85 | then 86 | echo "" 87 | echo "[DEBUG]: $@" 88 | $@ 89 | else 90 | $@ 2> /dev/null > /dev/null 91 | fi 92 | } 93 | 94 | # Read Flash Layout file and put information on array: FLASHLAYOUT_data 95 | function read_flash_layout() { 96 | local i=0 97 | declare -a flashlayout_data # Create an indexed array (necessary for the read command). 98 | FLASHLAYOUT_number_of_line=$(wc -l "$FLASHLAYOUT_filename" | cut -sf 1 -d ' ') 99 | debug "Number of line: $FLASHLAYOUT_number_of_line" 100 | while read -ra flashlayout_data; do 101 | selected=${flashlayout_data[0]} 102 | if [ "$selected" == "P" ] || [ "$selected" == "E" ]; 103 | then 104 | # Selected= 105 | FLASHLAYOUT_data[$i,$COL_SELECTED_OPT]=${flashlayout_data[0]} 106 | # PartId 107 | FLASHLAYOUT_data[$i,$COL_PARTID]=${flashlayout_data[1]} 108 | #PartName 109 | FLASHLAYOUT_data[$i,$COL_PARTNAME]=${flashlayout_data[2]} 110 | #PartType 111 | FLASHLAYOUT_data[$i,$COL_PARTYPE]=${flashlayout_data[3]} 112 | #IP 113 | FLASHLAYOUT_data[$i,$COL_IP]=${flashlayout_data[4]} 114 | #Offset 115 | FLASHLAYOUT_data[$i,$COL_OFFSET]=${flashlayout_data[5]} 116 | #Bin2flash 117 | FLASHLAYOUT_data[$i,$COL_BIN2FLASH]=${flashlayout_data[6]} 118 | #Bin2boot 119 | FLASHLAYOUT_data[$i,$COL_BIN2BOOT]=${flashlayout_data[7]} 120 | 121 | i=$(($i+1)) 122 | 123 | debug "READ: ${flashlayout_data[0]} ${flashlayout_data[1]} ${flashlayout_data[2]} ${flashlayout_data[3]} ..." 124 | fi 125 | done < "$FLASHLAYOUT_filename" 126 | 127 | FLASHLAYOUT_number_of_line=$i 128 | } 129 | 130 | function debug_dump_flashlayout_data_array() { 131 | columns=8 132 | for ((i=0;i 205 | function move_partition_offset() { 206 | ind=$1 207 | new_offset=$2 208 | offset_hexa=$(printf "%x\n" $new_offset) 209 | 210 | for ((k=$ind;k> $FLASHLAYOUT_infoname 505 | fi 506 | fi 507 | done 508 | echo "${fmt:0:1}" >> $FLASHLAYOUT_infoname 509 | return 510 | } 511 | 512 | function print_shema_on_infofile() { 513 | local j=1 514 | local i=1 515 | 516 | # print schema of partition 517 | _print_shema_lines "=============" 518 | 519 | #empty line 520 | _print_shema_lines "| " 521 | 522 | # part name 523 | for ((i=0;i> $FLASHLAYOUT_infoname 530 | fi 531 | fi 532 | done 533 | echo "|" >> $FLASHLAYOUT_infoname 534 | 535 | #empty 536 | _print_shema_lines "| " 537 | 538 | # partition number 539 | for ((i=0;i> $FLASHLAYOUT_infoname 546 | : $(( j++ )) 547 | fi 548 | fi 549 | done 550 | echo "|" >> $FLASHLAYOUT_infoname 551 | j=1 552 | for ((i=0;i> $FLASHLAYOUT_infoname 559 | : $(( j++ )) 560 | fi 561 | fi 562 | done 563 | echo "|" >> $FLASHLAYOUT_infoname 564 | 565 | #empty 566 | _print_shema_lines "| " 567 | _print_shema_lines "=============" 568 | 569 | # print legend of partition 570 | j=1 571 | for ((i=0;i> $FLASHLAYOUT_infoname 582 | echo " Device: /dev/mmcblk0p$j" >> $FLASHLAYOUT_infoname 583 | echo " Label: $partName" >> $FLASHLAYOUT_infoname 584 | if [ -n "$bin2flash" ]; 585 | then 586 | echo " Image: $bin2flash" >> $FLASHLAYOUT_infoname 587 | else 588 | echo " Image:" >> $FLASHLAYOUT_infoname 589 | fi 590 | : $(( j++ )) 591 | fi 592 | fi 593 | done 594 | } 595 | 596 | function print_populate_on_infofile() { 597 | local j=1 598 | for ((i=0;i> $FLASHLAYOUT_infoname 609 | echo " dd if=$bin2flash of=/dev/mmcblk0p$j bs=1M conv=fdatasync status=progress" >> $FLASHLAYOUT_infoname 610 | echo "" >> $FLASHLAYOUT_infoname 611 | : $(( j++ )) 612 | fi 613 | if [ "$selected" == "E" ]; 614 | then 615 | echo "- Populate partition $partName (/dev/mmcblk0p$j)" >> $FLASHLAYOUT_infoname 616 | if [ -n "$bin2flash" ]; 617 | then 618 | echo " dd if=$bin2flash of=/dev/mmcblk0p$j bs=1M conv=fdatasync status=progress" >> $FLASHLAYOUT_infoname 619 | else 620 | echo " dd if= of=/dev/mmcblk0p$j bs=1M conv=fdatasync status=progress" >> $FLASHLAYOUT_infoname 621 | fi 622 | echo "" >> $FLASHLAYOUT_infoname 623 | : $(( j++ )) 624 | fi 625 | fi 626 | done 627 | } 628 | 629 | function create_info() { 630 | 631 | cat > $FLASHLAYOUT_infoname << EOF 632 | This file describe How to update manually the partition of SDCARD: 633 | 1. SDCARD schema of partition 634 | 2. How to populate each partition 635 | 3. How to update the kernel/devicetree 636 | 637 | 1. SDCARD schema of partition: 638 | ------------------------------ 639 | 640 | EOF 641 | print_shema_on_infofile 642 | 643 | cat >> $FLASHLAYOUT_infoname << EOF 644 | 645 | 2. How to populate each partition 646 | --------------------------------- 647 | EOF 648 | 649 | print_populate_on_infofile 650 | 651 | cat >> $FLASHLAYOUT_infoname << EOF 652 | 653 | 3. How to update the kernel/devicetree 654 | -------------------------------------- 655 | The kernel and devicetree are present on "bootfs" partition. 656 | To change kernel and devicetree, you can copy the file on this partitions: 657 | - plug SDCARD on your PC 658 | - copy kernel uImage on SDCARD 659 | sudo cp uImage /media/\$USER/bootfs/ 660 | - copy devicetree uImage on SDCARD 661 | sudo cp stm32mp1*.dtb /media/\$USER/bootfs/ 662 | - umount partitions of SDCARD 663 | sudo umount /media/\$USER/bootfs/ 664 | (dont't forget to umount the other partitions of SDCARD: 665 | sudo umount \`lsblk --list | grep mmcblk0 | grep part | gawk '{ print \$7 }' | tr '\\n' ' '\` 666 | ) 667 | 668 | EOF 669 | 670 | } 671 | # ---------------------------------------- 672 | # ---------------------------------------- 673 | 674 | function print_info() { 675 | echo "" 676 | echo "###########################################################################" 677 | echo "###########################################################################" 678 | echo "" 679 | echo "RAW IMAGE generated: $FLASHLAYOUT_rawname" 680 | echo "" 681 | echo "WARNING: before to use the command dd, please umount all the partitions" 682 | echo " associated to SDCARD." 683 | echo " sudo umount \`lsblk --list | grep mmcblk0 | grep part | gawk '{ print \$7 }' | tr '\\n' ' '\`" 684 | echo "" 685 | echo "To put this raw image on sdcard:" 686 | echo " sudo dd if=$FLASHLAYOUT_rawname of=/dev/mmcblk0 bs=8M conv=fdatasync status=progress" 687 | echo "" 688 | echo "(mmcblk0 can be replaced by:" 689 | echo " sdX if it's a device dedicated to receive the raw image " 690 | echo " (where X can be a, b, c, d, e)" 691 | echo "" 692 | echo "###########################################################################" 693 | echo "###########################################################################" 694 | } 695 | 696 | function print_warning() { 697 | if [ -n "$WARNING_TEXT" ]; 698 | then 699 | echo "" 700 | echo "???????????????????????????????????????????????????????????????????????????" 701 | echo "???????????????????????????????????????????????????????????????????????????" 702 | for t in "`echo $WARNING_TEXT | tr '#' '\n'`"; 703 | do 704 | echo "$t" 705 | done 706 | echo "[WARNING]: IT'S POSSIBLE, THE BOARD DOES NOT BOOT CORRECTLY DUE TO " 707 | echo " FILE(s) NOT PRESENT." 708 | echo "???????????????????????????????????????????????????????????????????????????" 709 | echo "???????????????????????????????????????????????????????????????????????????" 710 | fi 711 | } 712 | 713 | : <<-\EOF 714 | function usage() { 715 | echo "" 716 | echo "Help:" 717 | echo " $0 " 718 | echo "" 719 | exit 1 720 | } 721 | 722 | # ------------------ 723 | # Main 724 | # ------------------ 725 | # check opt args 726 | if [ $# -ne 1 ]; 727 | then 728 | echo "[ERROR]: bad number of parameters" 729 | echo "" 730 | usage 731 | else 732 | FLASHLAYOUT_filename=$1 733 | FLASHLAYOUT_filename_path=$(dirname $FLASHLAYOUT_filename) 734 | _layout_dirname=$(basename $FLASHLAYOUT_filename_path) 735 | 736 | _extension="${FLASHLAYOUT_filename##*.}" 737 | if [ ! "$_extension" == "tsv" ]; 738 | then 739 | echo "" 740 | echo "[ERROR]: bad extension of Flashlayout file." 741 | echo "[ERROR]: the flashlayout must have a tsv extension." 742 | usage 743 | fi 744 | # File have a correct extension 745 | # 746 | if echo $_layout_dirname | grep -q flashlayout 747 | then 748 | _layout_basename=$(basename $FLASHLAYOUT_filename) 749 | # add directory name as prefix for raw image 750 | new_filename=$(echo "$_layout_dirname/$_layout_basename" | sed -e "s|/|_|g") 751 | filename_for_raw_to_use="$FLASHLAYOUT_filename_path/$new_filename" 752 | else 753 | filename_for_raw_to_use=$FLASHLAYOUT_filename 754 | fi 755 | FLASHLAYOUT_rawname=$(basename $filename_for_raw_to_use | sed -e "s/tsv/raw/") 756 | FLASHLAYOUT_infoname=$(basename $filename_for_raw_to_use | sed -e "s/tsv/how_to_update.txt/") 757 | 758 | # check if flashlayout have sdcard name 759 | if [ $(grep -i $SDCARD_TOKEN $FLASHLAYOUT_filename| wc -l) -eq 0 ]; 760 | then 761 | echo "" 762 | echo "[WARNING]: THE FLASHLAYOUT NAME DOES NOT CONTAINS SDCARD REFERENCE." 763 | echo "[WARNING]: SDCARD TYPE = $SDCARD_TOKEN" 764 | echo "[WARNING]: FILE=$FLASHLAYOUT_filename" 765 | echo "Terminated without generated raw file." 766 | exit 0 767 | fi 768 | 769 | read_flash_layout 770 | #debug_dump_flashlayout_data_array 771 | get_last_image_path 772 | 773 | #put the raw image generate near the binaries images 774 | FLASHLAYOUT_rawname=$FLASHLAYOUT_prefix_image_path/$FLASHLAYOUT_rawname 775 | FLASHLAYOUT_infoname=$FLASHLAYOUT_prefix_image_path/$FLASHLAYOUT_infoname 776 | 777 | # erase previous raw image 778 | if [ -f $FLASHLAYOUT_rawname ]; 779 | then 780 | echo "" 781 | echo "[WARNING]: A previous raw image are present on this directory" 782 | echo "[WARNING]: $FLASHLAYOUT_rawname" 783 | echo "[WARNING]: would you like to erase it: [Y/n]" 784 | read answer 785 | if [[ "$answer" =~ ^[Yy]+[ESes]* ]]; then 786 | rm -f $FLASHLAYOUT_rawname $FLASHLAYOUT_infoname 787 | fi 788 | fi 789 | 790 | debug "DUMP FlashLayout name: $FLASHLAYOUT_filename" 791 | debug "DUMP FlashLayout dir path: $FLASHLAYOUT_filename_path" 792 | debug "DUMP images dir path: $FLASHLAYOUT_prefix_image_path" 793 | debug "DUMP RAW SDCARD image name: $FLASHLAYOUT_rawname" 794 | fi 795 | 796 | generate_empty_raw_image 797 | generate_gpt_partition_table_from_flash_layout 798 | populate_gpt_partition_table_from_flash_layout 799 | 800 | create_info 801 | print_info 802 | print_warning 803 | EOF 804 | 805 | function usage() { 806 | echo "" 807 | echo "Help:" 808 | echo " $0 [image-path-prefix]" 809 | echo "" 810 | return 1 811 | } 812 | 813 | function flashlayout_and_bootloader() { 814 | FLASHLAYOUT_rawname="$1" 815 | FLASHLAYOUT_filename="$2" 816 | FLASHLAYOUT_prefix_image_path="${3:-.}" 817 | 818 | if [ -z "$FLASHLAYOUT_rawname" -o -z "$FLASHLAYOUT_filename" ]; then 819 | usage 820 | return $? 821 | fi 822 | 823 | FLASHLAYOUT_filename_path=$(dirname $FLASHLAYOUT_filename) 824 | 825 | read_flash_layout 826 | get_last_image_path 827 | debug "DUMP FlashLayout name: $FLASHLAYOUT_filename" 828 | debug "DUMP FlashLayout dir path: $FLASHLAYOUT_filename_path" 829 | debug "DUMP images dir path: $FLASHLAYOUT_prefix_image_path" 830 | debug "DUMP RAW SDCARD image name: $FLASHLAYOUT_rawname" 831 | 832 | generate_gpt_partition_table_from_flash_layout 833 | populate_gpt_partition_table_from_flash_layout 834 | return 0 835 | } 836 | 837 | -------------------------------------------------------------------------------- /tools/hwpack/FlashLayout_sdcard_stm32mp157c-dk2-basic.tsv: -------------------------------------------------------------------------------- 1 | #Opt Id Name Type IP Offset Binary 2 | - 0x01 fsbl1-boot Binary none 0x0 tf-a-stm32mp157c-dk2-trusted.stm32 3 | - 0x03 ssbl-boot Binary none 0x0 u-boot-stm32mp157c-dk2-trusted.stm32 4 | P 0x04 fsbl1 Binary mmc0 0x00004400 tf-a-stm32mp157a-star-trusted.stm32 5 | P 0x05 fsbl2 Binary mmc0 0x00044400 tf-a-stm32mp157a-star-trusted.stm32 6 | P 0x06 ssbl Binary mmc0 0x00084400 u-boot.stm32 7 | P 0x21 bootfs System mmc0 0x00284400 st-image-bootfs-openstlinux-weston-stm32mp1.ext4 8 | P 0x22 vendorfs FileSystem mmc0 0x06684400 st-image-vendorfs-openstlinux-weston-stm32mp1.ext4 9 | P 0x23 rootfs FileSystem mmc0 0x0668C400 st-image-weston-openstlinux-weston-stm32mp1.ext4 10 | -------------------------------------------------------------------------------- /tools/hwpack/boot.scr.cmd: -------------------------------------------------------------------------------- 1 | # Generate boot.scr.uimg: 2 | # ./tools/mkimage -C none -A arm -T script -d boot.scr.cmd boot.scr.uimg 3 | # 4 | ######################################################################### 5 | # SAMPLE BOOT SCRIPT: PLEASE DON'T USE this SCRIPT in REAL PRODUCT 6 | ######################################################################### 7 | # this script is only a OpenSTLinux helper to manage multiple target with the 8 | # same bootfs, for real product with only one supported configuration change the 9 | # bootcmd in U-boot or use the normal path for extlinux.conf to use DISTRO 10 | # boocmd (generic distibution); U-Boot searches with boot_prefixes="/ /boot/": 11 | # - /extlinux/extlinux.conf 12 | # - /boot/extlinux/extlinux.conf 13 | ######################################################################### 14 | 15 | echo "Executing SCRIPT on target=${target}" 16 | 17 | # M4 Firmware load 18 | env set m4fw_name "rproc-m4-fw.elf" 19 | env set m4fw_addr ${kernel_addr_r} 20 | env set boot_m4fw 'rproc init; rproc load 0 ${m4fw_addr} ${filesize}; rproc start 0' 21 | 22 | # boot M4 Firmware when available 23 | env set scan_m4fw 'if test -e ${devtype} ${devnum}:${distro_bootpart} ${m4fw_name};then echo Found M4 FW $m4fw_name; if load ${devtype} ${devnum}:${distro_bootpart} ${m4fw_addr} ${m4fw_name}; then run boot_m4fw; fi; fi;' 24 | 25 | # Update the DISTRO command to search in sub-directory and load M4 firmware 26 | env set boot_prefixes "/${boot_device}${boot_instance}_" 27 | env set boot_extlinux "run scan_m4fw;${boot_extlinux}" 28 | 29 | # save the boot config for the 2nd boot 30 | env set boot_targets ${target} 31 | 32 | # when {boot_device} = nor, use ${target} = the location of U-Boot 33 | # script boot.scr.img found in DISTRO script 34 | # value can be "mmc0" (SD Card), "mmc1" (eMMC) or "ubifs0" (NAND) 35 | 36 | if test ${target} = mmc0; then 37 | if test -d ${devtype} ${devnum}:${distro_bootpart} /mmc0_extlinux; then 38 | env set boot_prefixes "/mmc0_" 39 | fi 40 | elif test ${target} = mmc1; then 41 | if test -d ${devtype} ${devnum}:${distro_bootpart} /mmc1_extlinux; then 42 | env set boot_prefixes "/mmc1_" 43 | fi 44 | elif test ${target} = ubifs0; then 45 | if test -d ${devtype} ${devnum}:${distro_bootpart} /nand0_extlinux; then 46 | env set boot_prefixes "/nand0_" 47 | fi 48 | fi 49 | 50 | if test -e ${devtype} ${devnum}:${distro_bootpart} ${boot_prefixes}extlinux/${board_name}_extlinux.conf; then 51 | echo FOUND ${boot_prefixes}extlinux/${board_name}_extlinux.conf 52 | env set boot_syslinux_conf "extlinux/${board_name}_extlinux.conf" 53 | fi 54 | 55 | # don't save the updated content of bootfile variable to avoid conflict 56 | env delete bootfile 57 | 58 | # save the boot config the 2nd boot (boot_prefixes/boot_extlinux) 59 | #env save 60 | 61 | # 62 | echo Checking for: /uEnv.txt ...; 63 | if test -e ${devtype} ${devnum}:${distro_bootpart} /uEnv.txt;then 64 | if load ${devtype} ${devnum}:${distro_bootpart} ${kernel_addr_r} /uEnv.txt; then 65 | echo Loaded environment from /uEnv.txt; 66 | echo Importing environment from ${devtype} ...; 67 | env import -t ${kernel_addr_r} ${filesize} 68 | env set size 0x${filesize} 69 | fi 70 | fi 71 | echo Checking if flash_firmware is set; 72 | if test -n ${flash_firmware}; then 73 | echo setting flash firmware...; 74 | setenv cmdline ${storage_media}; 75 | fi; 76 | 77 | #load base fdt 78 | echo Checking for: /dtbs/stm32mp157a-basic.dtb ...; 79 | if test -e ${devtype} ${devnum}:${distro_bootpart} /dtbs/stm32mp157a-basic.dtb;then 80 | echo Loading base fdt...; 81 | load ${devtype} ${devnum}:${distro_bootpart} ${fdt_addr_r} /dtbs/stm32mp157a-basic.dtb 82 | fi; 83 | 84 | if test -n ${enable_uboot_overlays}; then 85 | setenv fdt_buffer 0x60000; 86 | if test -n ${uboot_fdt_buffer}; then 87 | setenv fdt_buffer ${uboot_fdt_buffer}; 88 | fi; 89 | if test ${target} = ubifs0; then 90 | #mount rootfs 91 | ubifsmount ubi0:rootfs 92 | fi; 93 | echo uboot_overlays: [fdt_buffer=${fdt_buffer}] ... ; 94 | dtfile ${fdt_addr_r} ${splashimage} /boot/uEnv.txt ${kernel_addr_r}; 95 | else 96 | echo uboot_overlays: add [enable_uboot_overlays=1] to /boot/uEnv.txt to enable...; 97 | fi; 98 | 99 | env set fdt_addr ${fdt_addr_r} 100 | 101 | # start the correct exlinux.conf 102 | run bootcmd_${target} 103 | 104 | echo SCRIPT FAILED... ${boot_prefixes}${boot_syslinux_conf} not found ! 105 | 106 | # restore environment to default value when failed 107 | env default boot_targets 108 | env default boot_prefixes 109 | env default boot_extlinux 110 | env default boot_syslinux_conf 111 | env save 112 | --------------------------------------------------------------------------------