From 6b8d889ecbca439d4628d3406faa68d535b6db56 Mon Sep 17 00:00:00 2001 From: chainsx Date: Thu, 9 Jan 2025 17:01:39 +0800 Subject: [PATCH] =?UTF-8?q?rockchip:=20=E5=88=86=E7=A6=BBfirmware=E6=93=8D?= =?UTF-8?q?=E4=BD=9C=E5=88=B0=E7=89=88=E5=9E=8B=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- documents/rockchip/顺序构建.md | 28 ++++-- .../rockchip/boards/firefly-itx-3588j.conf | 9 +- scripts/rockchip/boards/firefly-rk3399.conf | 22 ++++- .../boards/firefly-roc-rk3566-pc.conf | 11 ++- .../boards/firefly-roc-rk3568-pc-se.conf | 11 ++- .../boards/firefly-roc-rk3588s-pc.conf | 7 +- scripts/rockchip/boards/phytiumpi-4gb.conf | 13 ++- scripts/rockchip/boards/radxa-rock5b.conf | 7 +- scripts/rockchip/boards/radxa-rockpi-4a.conf | 7 +- scripts/rockchip/boards/sample.conf | 7 +- scripts/rockchip/build.sh | 4 +- scripts/rockchip/build_boot.sh | 14 ++- scripts/rockchip/build_rootfs.sh | 97 ++++++------------- 13 files changed, 147 insertions(+), 90 deletions(-) diff --git a/documents/rockchip/顺序构建.md b/documents/rockchip/顺序构建.md index 71496bb..a438d1d 100644 --- a/documents/rockchip/顺序构建.md +++ b/documents/rockchip/顺序构建.md @@ -66,13 +66,31 @@ 运行 rootfs 构建脚本需执行命令: -`sudo bash build_rootfs.sh -r REPO_INFO -b KERNEL_BRANCH -d DTB_NAME -s SPEC` +`sudo bash build_rootfs.sh --board BOARD -r REPO_INFO -b KERNEL_BRANCH -s SPEC` **说明: 基于 build_rootfs.sh 提供的默认参数,执行 sudo ./build_rootfs.sh 可生成 Firefly-RK3399 的 rootfs 分区镜像 rootfs.img。** 各个参数意义: -1. -r, --repo REPO_INFO +1. --board BOARD + + 适用的开发板的版型配置文件在 [boards](../../scripts/rockchip/boards) 文件夹中,示例文件 [sample.conf](../../scripts/rockchip/boards/sample.conf),默认为 `firefly-rk3399`。 + + 其包括的配置参数意义如下: + + - platform=PLATFORM + + 开发板所使用的平台,目前支持的平台有:rockchip、phytium,默认为 `rockchip`。 + + - device-tree=DTB_NAME + + 内核设备树中的设备名称,和开发板名称有一点区别,对应 [kernel/arch/arm64/boot/dts/rockchip](https://gitee.com/openeuler/kernel/tree/master/arch/arm64/boot/dts/rockchip) 下的 `DTB_NAME.dts` 文件,默认为 `rk3399-firefly`。 + + - ubootconfig=UBOOT_DEFCONFIG + + 开发板对应的 defconfig 的文件名称,对应 [u-boot/configs](https://github.com/u-boot/u-boot/tree/master/configs) 下 `UBOOT_DEFCONFIG` 文件,默认为 `firefly-rk3399_defconfig`;如需在 RK3588 开发板上使用预编译的 u-boot,可以将此项设置为 `none`。 + +2. -r, --repo REPO_INFO 开发源 repo 文件的 URL 或者路径,也可以是开发源中资源库的 baseurl 列表。注意,如果该参数为资源库的 baseurl 列表,该参数需要使用双引号,各个 baseurl 之间以空格隔开。 下面分别举例: @@ -84,7 +102,7 @@ - 资源库的 baseurl 列表,如 `http://repo.openeuler.org/openEuler-20.03-LTS-SP2/OS/aarch64/ http://repo.openeuler.org/openEuler-20.03-LTS-SP2/EPOL/aarch64/`。 -2. -b, --branch KERNEL_BRANCH +3. -b, --branch KERNEL_BRANCH 内核源码的对应分支,默认为 openEuler-20.03-LTS。根据 -k 参数有以下选择: @@ -94,10 +112,6 @@ - openEuler-21.03 - openEuler-21.09 -3. -d, --device-tree DTB_NAME - - 内核设备树名称,和开发板名称有一点区别,对应 [kernel/arch/arm64/boot/dts/rockchip](https://gitee.com/openeuler/kernel/tree/master/arch/arm64/boot/dts/rockchip) 下的 `DTB_NAME.dts` 文件,默认为 `rk3399_firefly` - 4. -s, --spec SPEC 构建的镜像版本: diff --git a/scripts/rockchip/boards/firefly-itx-3588j.conf b/scripts/rockchip/boards/firefly-itx-3588j.conf index 4a770a3..bae98c2 100644 --- a/scripts/rockchip/boards/firefly-itx-3588j.conf +++ b/scripts/rockchip/boards/firefly-itx-3588j.conf @@ -1,3 +1,10 @@ ubootconfig=none dtb_name=rk3588-firefly-itx-3588j -platform=rockchip \ No newline at end of file +platform=rockchip + +POST_BOARD_OVERLAY() { + echo "Put ${board} firmware into rootfs..." + + mkdir -p ${rootfs_dir}/etc/modules-load.d/ + echo "8821cu" >> ${rootfs_dir}/etc/modules-load.d/8821cu.conf +} \ No newline at end of file diff --git a/scripts/rockchip/boards/firefly-rk3399.conf b/scripts/rockchip/boards/firefly-rk3399.conf index 484ca1b..6dd8038 100644 --- a/scripts/rockchip/boards/firefly-rk3399.conf +++ b/scripts/rockchip/boards/firefly-rk3399.conf @@ -1,3 +1,23 @@ ubootconfig=firefly-rk3399_defconfig dtb_name=rk3399-firefly -platform=rockchip \ No newline at end of file +platform=rockchip + +POST_BOARD_OVERLAY() { + echo "Put ${board} firmware into rootfs..." + + if [ "x$branch" == "xopenEuler-20.03-LTS" ]; then + mkdir -p ${rootfs_dir}/system + mkdir -p ${rootfs_dir}/etc/profile.d/ + mkdir -p ${rootfs_dir}/usr/bin/ + cp -r ${nonfree_bin_dir}/wireless/system/* ${rootfs_dir}/system/ + cp ${nonfree_bin_dir}/wireless/rcS.sh ${rootfs_dir}/etc/profile.d/ + cp ${nonfree_bin_dir}/wireless/enable_bt ${rootfs_dir}/usr/bin/ + chmod +x ${rootfs_dir}/usr/bin/enable_bt ${rootfs_dir}/etc/profile.d/rcS.sh + ln -s ${rootfs_dir}/system/etc/firmware ${rootfs_dir}/etc/firmware + else + mkdir -p ${rootfs_dir}/usr/lib/firmware/brcm + cp ${nonfree_bin_dir}/linux-firmware/ap6356s/brcmfmac4356-sdio.bin ${rootfs_dir}/usr/lib/firmware/brcm + cp ${nonfree_bin_dir}/linux-firmware/ap6356s/brcmfmac4356-sdio.firefly,firefly-rk3399.txt ${rootfs_dir}/usr/lib/firmware/brcm + cp ${nonfree_bin_dir}/linux-firmware/ap6356s/BCM4356A2.hcd ${rootfs_dir}/usr/lib/firmware/brcm + fi +} \ No newline at end of file diff --git a/scripts/rockchip/boards/firefly-roc-rk3566-pc.conf b/scripts/rockchip/boards/firefly-roc-rk3566-pc.conf index df492a3..a26fbb2 100644 --- a/scripts/rockchip/boards/firefly-roc-rk3566-pc.conf +++ b/scripts/rockchip/boards/firefly-roc-rk3566-pc.conf @@ -1,3 +1,12 @@ ubootconfig=none dtb_name=rk3566-roc-pc -platform=rockchip \ No newline at end of file +platform=rockchip + +POST_BOARD_OVERLAY() { + echo "Put ${board} firmware into rootfs..." + + mkdir -p ${rootfs_dir}/usr/lib/firmware/brcm + cp ${nonfree_bin_dir}/linux-firmware/ap6255/brcmfmac43455-sdio.bin ${rootfs_dir}/usr/lib/firmware/brcm/brcmfmac43455-sdio.firefly,rk3566-roc-pc.bin + cp ${nonfree_bin_dir}/linux-firmware/ap6255/brcmfmac43455-sdio.txt ${rootfs_dir}/usr/lib/firmware/brcm/brcmfmac43455-sdio.firefly,rk3566-roc-pc.txt + cp ${nonfree_bin_dir}/linux-firmware/ap6255/BCM4345C0.hcd ${rootfs_dir}/usr/lib/firmware/brcm +} \ No newline at end of file diff --git a/scripts/rockchip/boards/firefly-roc-rk3568-pc-se.conf b/scripts/rockchip/boards/firefly-roc-rk3568-pc-se.conf index 3bbddcb..e8520a3 100644 --- a/scripts/rockchip/boards/firefly-roc-rk3568-pc-se.conf +++ b/scripts/rockchip/boards/firefly-roc-rk3568-pc-se.conf @@ -1,3 +1,12 @@ ubootconfig=none dtb_name=rk3568-roc-pc-se -platform=rockchip \ No newline at end of file +platform=rockchip + +POST_BOARD_OVERLAY() { + echo "Put ${board} firmware into rootfs..." + + mkdir -p ${rootfs_dir}/usr/lib/firmware/brcm + cp ${nonfree_bin_dir}/linux-firmware/ap6275s/brcmfmac43752-sdio.bin ${rootfs_dir}/usr/lib/firmware/brcm/brcmfmac43752-sdio.firefly,rk3568-roc-pc-se.bin + cp ${nonfree_bin_dir}/linux-firmware/ap6275s/brcmfmac43752-sdio.txt ${rootfs_dir}/usr/lib/firmware/brcm/brcmfmac43752-sdio.firefly,rk3568-roc-pc-se.txt + cp ${nonfree_bin_dir}/linux-firmware/ap6275s/BCM4362A2.hcd ${rootfs_dir}/usr/lib/firmware/brcm +} \ No newline at end of file diff --git a/scripts/rockchip/boards/firefly-roc-rk3588s-pc.conf b/scripts/rockchip/boards/firefly-roc-rk3588s-pc.conf index 7759a98..9df0220 100644 --- a/scripts/rockchip/boards/firefly-roc-rk3588s-pc.conf +++ b/scripts/rockchip/boards/firefly-roc-rk3588s-pc.conf @@ -1,3 +1,8 @@ ubootconfig=none dtb_name=rk3588s-roc-pc -platform=rockchip \ No newline at end of file +platform=rockchip + +POST_BOARD_OVERLAY() { + echo "Put ${board} firmware into rootfs..." + echo "Nothing to do..." +} \ No newline at end of file diff --git a/scripts/rockchip/boards/phytiumpi-4gb.conf b/scripts/rockchip/boards/phytiumpi-4gb.conf index 678f8b0..1f81432 100644 --- a/scripts/rockchip/boards/phytiumpi-4gb.conf +++ b/scripts/rockchip/boards/phytiumpi-4gb.conf @@ -1,3 +1,14 @@ ubootconfig=none dtb_name=phytiumpi_firefly -platform=rockchip \ No newline at end of file +platform=rockchip + +POST_BOARD_OVERLAY() { + echo "Put ${board} firmware into rootfs..." + + mkdir -p ${rootfs_dir}/lib/firmware/rtlbt/ + cp ${nonfree_bin_dir}/linux-firmware/rtl8821c/systemd-hciattach.service ${rootfs_dir}/etc/systemd/system/systemd-hciattach.service + cp ${nonfree_bin_dir}/linux-firmware/rtl8821c/rtk_hciattach ${rootfs_dir}/usr/bin/rtk_hciattach + cp ${nonfree_bin_dir}/linux-firmware/rtl8821c/rtl8821c_config ${rootfs_dir}/lib/firmware/rtlbt/rtl8821c_config + cp ${nonfree_bin_dir}/linux-firmware/rtl8821c/rtl8821c_fw ${rootfs_dir}/lib/firmware/rtlbt/rtl8821c_fw + chmod +x ${rootfs_dir}/usr/bin/rtk_hciattach +} \ No newline at end of file diff --git a/scripts/rockchip/boards/radxa-rock5b.conf b/scripts/rockchip/boards/radxa-rock5b.conf index db3b921..0bf5341 100644 --- a/scripts/rockchip/boards/radxa-rock5b.conf +++ b/scripts/rockchip/boards/radxa-rock5b.conf @@ -1,3 +1,8 @@ ubootconfig=none dtb_name=rk3588-rock-5b -platform=rockchip \ No newline at end of file +platform=rockchip + +POST_BOARD_OVERLAY() { + echo "Put ${board} firmware into rootfs..." + echo "Nothing to do..." +} \ No newline at end of file diff --git a/scripts/rockchip/boards/radxa-rockpi-4a.conf b/scripts/rockchip/boards/radxa-rockpi-4a.conf index 55a452c..18c74e1 100644 --- a/scripts/rockchip/boards/radxa-rockpi-4a.conf +++ b/scripts/rockchip/boards/radxa-rockpi-4a.conf @@ -1,3 +1,8 @@ ubootconfig=rock-pi-4-rk3399_defconfig dtb_name=rk3399-rock-pi-4a -platform=rockchip \ No newline at end of file +platform=rockchip + +POST_BOARD_OVERLAY() { + echo "Put ${board} firmware into rootfs..." + echo "Nothing to do..." +} \ No newline at end of file diff --git a/scripts/rockchip/boards/sample.conf b/scripts/rockchip/boards/sample.conf index 2e8d5e4..8cb1f9b 100644 --- a/scripts/rockchip/boards/sample.conf +++ b/scripts/rockchip/boards/sample.conf @@ -1,3 +1,8 @@ ubootconfig=firefly-rk3399_defconfig #Required! The name of defconfig file when compiling u-boot, which defaults to firefly-rk3399_defconfig. dtb_name=rk3399-firefly #Required! The device tree name of target board, which defaults to rk3399-firefly. -platform=rockchip #Required! The platform of target board, which defaults to rockchip. \ No newline at end of file +platform=rockchip #Required! The platform of target board, which defaults to rockchip. + +POST_BOARD_OVERLAY() { + echo "Put ${board} firmware into rootfs..." + echo "This is a sample..." +} \ No newline at end of file diff --git a/scripts/rockchip/build.sh b/scripts/rockchip/build.sh index ee28db6..86a59aa 100755 --- a/scripts/rockchip/build.sh +++ b/scripts/rockchip/build.sh @@ -56,7 +56,8 @@ save_param() { if [ -f $workdir/.param ]; then mv $workdir/.param $workdir/.param_last fi - echo "default_defconfig=$default_defconfig + echo "board=$board +default_defconfig=$default_defconfig ubootconfig=$ubootconfig dtb_name=$dtb_name platform=$platform @@ -142,6 +143,7 @@ cur_dir=$(cd $(dirname $0);pwd) source ${cur_dir}/boards/${board}.conf +LOG "Board config: ${board}." LOG "U-Boot config: ${ubootconfig}." LOG "DeviceTree name: ${dtb_name}." LOG "Target platform: ${platform}." diff --git a/scripts/rockchip/build_boot.sh b/scripts/rockchip/build_boot.sh index 75cf2cf..0cba318 100755 --- a/scripts/rockchip/build_boot.sh +++ b/scripts/rockchip/build_boot.sh @@ -39,7 +39,7 @@ local_param(){ branch=${branch:7} default_defconfig=$(cat $workdir/.param | grep default_defconfig) - default_defconfig=${branch:18} + default_defconfig=${default_defconfig:18} dtb_name=$(cat $workdir/.param | grep dtb_name) dtb_name=${dtb_name:9} @@ -248,8 +248,7 @@ mk_boot() { rm -rf ${boot_dir} } -kernel_defconfig="openeuler_rockchip_defconfig" -default_defconfig="" +kernel_defconfig="" default_param local_param @@ -259,14 +258,13 @@ set -e rockchip_bootargs="earlyprintk console=ttyS2,1500000 rw root=UUID=614e0000-0000-4b53-8000-1d28000054a9 rootfstype=ext4 init=/sbin/init rootwait" phytium_bootargs="console=ttyAMA1,115200 earlycon=pl011,0x2800d000 rw root=UUID=614e0000-0000-4b53-8000-1d28000054a9 rootfstype=ext4 rootwait cma=256m" -if [ "x$default_defconfig" == "x" ] ; then - default_defconfig=$kernel_defconfig +if [ ! -f $default_defconfig ] ; then + LOG "kernel defconfig is : ${default_defconfig}" + kernel_defconfig=$default_defconfig elif [ -f $default_defconfig ]; then + LOG "use local kernel defconfig..." cp $default_defconfig ${workdir}/ kernel_defconfig=${workdir}/${default_defconfig##*/} -else - echo `date` - ERROR, config file $default_defconfig can not be found. - exit 2 fi if [ ! -d $workdir ]; then diff --git a/scripts/rockchip/build_rootfs.sh b/scripts/rockchip/build_rootfs.sh index ad9ae6e..b617be7 100755 --- a/scripts/rockchip/build_rootfs.sh +++ b/scripts/rockchip/build_rootfs.sh @@ -2,14 +2,14 @@ __usage=" Usage: build_rootfs [OPTIONS] -Build Rockchip openEuler-root image. +Build openEuler rootfs image. Run in root user. The target rootfs.img will be generated in the build folder of the directory where the build_rootfs.sh script is located. Options: + --board, BOARD Required! The config of target board in the boards folder, which defaults to firefly-rk3399. -r, --repo REPO_INFO The URL/path of target repo file or list of repo's baseurls which should be a space separated list. -b, --branch KERNEL_BRANCH The branch name of kernel source's repository, which defaults to openEuler-20.03-LTS. - -d, --device-tree DTB_NAME The device tree name of target board, which defaults to rk3399-firefly. -s, --spec SPEC The image's specification: headless, xfce, ukui, dde or the file path of rpmlist. The default is headless. -h, --help Show command help. " @@ -21,10 +21,10 @@ help() } default_param() { + board=firefly-rk3399 repo_file="https://gitee.com/src-openeuler/openEuler-repos/raw/openEuler-20.03-LTS/generic.repo" tmp_dir=${workdir}/tmp workdir=$(pwd)/build - dtb_name=rk3399-firefly branch=openEuler-20.03-LTS nonfree_bin_dir=${workdir}/../bin rootfs_dir=${workdir}/rootfs @@ -33,15 +33,15 @@ default_param() { local_param(){ if [ -f $workdir/.param ]; then + board=$(cat $workdir/.param | grep board) + board=${board:6} + repo_file=$(cat $workdir/.param | grep repo_file) repo_file=${repo_file:10} branch=$(cat $workdir/.param | grep branch) branch=${branch:7} - dtb_name=$(cat $workdir/.param | grep dtb_name) - dtb_name=${dtb_name:9} - spec_param=$(cat $workdir/.param | grep spec_param) spec_param=${spec_param:11} fi @@ -59,6 +59,10 @@ parseargs() return 1 elif [ "x$1" == "x" ]; then shift + elif [ "x$1" == "x--board" ]; then + board=`echo $2` + shift + shift elif [ "x$1" == "x-r" -o "x$1" == "x--repo" ]; then repo_file=`echo $2` shift @@ -67,10 +71,6 @@ parseargs() branch=`echo $2` shift shift - elif [ "x$1" == "x-d" -o "x$1" == "x--device-tree" ]; then - dtb_name=`echo $2` - shift - shift elif [ "x$1" == "x-s" -o "x$1" == "x--spec" ]; then spec_param=`echo $2` shift @@ -289,49 +289,8 @@ EOF echo "LABEL=boot /boot vfat defaults,noatime 0 0" >> ${rootfs_dir}/etc/fstab LOG "Set fstab done." - if [ -f $workdir/.param ]; then - dtb_name=$(cat $workdir/.param | grep dtb_name) - dtb_name=${dtb_name:9} - if [ "x$dtb_name" == "xrk3399-firefly" ]; then - cd $workdir - if [ "x$branch" == "xopenEuler-20.03-LTS" ]; then - mkdir -p ${rootfs_dir}/system - mkdir -p ${rootfs_dir}/etc/profile.d/ - mkdir -p ${rootfs_dir}/usr/bin/ - cp -r $nonfree_bin_dir/wireless/system/* ${rootfs_dir}/system/ - cp $nonfree_bin_dir/wireless/rcS.sh ${rootfs_dir}/etc/profile.d/ - cp $nonfree_bin_dir/wireless/enable_bt ${rootfs_dir}/usr/bin/ - chmod +x ${rootfs_dir}/usr/bin/enable_bt ${rootfs_dir}/etc/profile.d/rcS.sh - LOG "install firefly-rk3399 wireless firmware done." - ln -s ${rootfs_dir}/system/etc/firmware ${rootfs_dir}/etc/firmware - fi - mkdir -p ${rootfs_dir}/usr/lib/firmware/brcm - cp $nonfree_bin_dir/linux-firmware/ap6356s/brcmfmac4356-sdio.bin ${rootfs_dir}/usr/lib/firmware/brcm - cp $nonfree_bin_dir/linux-firmware/ap6356s/brcmfmac4356-sdio.firefly,firefly-rk3399.txt ${rootfs_dir}/usr/lib/firmware/brcm - cp $nonfree_bin_dir/linux-firmware/ap6356s/BCM4356A2.hcd ${rootfs_dir}/usr/lib/firmware/brcm - elif [ "x$dtb_name" == "xrk3588-firefly-itx-3588j" ]; then - cd $workdir - mkdir -p ${rootfs_dir}/etc/modules-load.d/ - echo "8821cu" >> ${rootfs_dir}/etc/modules-load.d/8821cu.conf - elif [ "x$dtb_name" == "xrk3566-roc-pc" ];then - mkdir -p ${rootfs_dir}/usr/lib/firmware/brcm - cp $nonfree_bin_dir/linux-firmware/ap6255/brcmfmac43455-sdio.bin ${rootfs_dir}/usr/lib/firmware/brcm/brcmfmac43455-sdio.firefly,rk3566-roc-pc.bin - cp $nonfree_bin_dir/linux-firmware/ap6255/brcmfmac43455-sdio.txt ${rootfs_dir}/usr/lib/firmware/brcm/brcmfmac43455-sdio.firefly,rk3566-roc-pc.txt - cp $nonfree_bin_dir/linux-firmware/ap6255/BCM4345C0.hcd ${rootfs_dir}/usr/lib/firmware/brcm - elif [ "x$dtb_name" == "xrk3568-roc-pc-se" ];then - mkdir -p ${rootfs_dir}/usr/lib/firmware/brcm - cp $nonfree_bin_dir/linux-firmware/ap6275s/brcmfmac43752-sdio.bin ${rootfs_dir}/usr/lib/firmware/brcm/brcmfmac43752-sdio.firefly,rk3568-roc-pc-se.bin - cp $nonfree_bin_dir/linux-firmware/ap6275s/brcmfmac43752-sdio.txt ${rootfs_dir}/usr/lib/firmware/brcm/brcmfmac43752-sdio.firefly,rk3568-roc-pc-se.txt - cp $nonfree_bin_dir/linux-firmware/ap6275s/BCM4362A2.hcd ${rootfs_dir}/usr/lib/firmware/brcm - elif [[ "x$dtb_name" == "xphytiumpi_firefly" ]]; then - mkdir -p ${rootfs_dir}/lib/firmware/rtlbt/ - cp $nonfree_bin_dir/linux-firmware/rtl8821c/systemd-hciattach.service ${rootfs_dir}/etc/systemd/system/systemd-hciattach.service - cp $nonfree_bin_dir/linux-firmware/rtl8821c/rtk_hciattach ${rootfs_dir}/usr/bin/rtk_hciattach - cp $nonfree_bin_dir/linux-firmware/rtl8821c/rtl8821c_config ${rootfs_dir}/lib/firmware/rtlbt/rtl8821c_config - cp $nonfree_bin_dir/linux-firmware/rtl8821c/rtl8821c_fw ${rootfs_dir}/lib/firmware/rtlbt/rtl8821c_fw - chmod +x ${rootfs_dir}/usr/bin/rtk_hciattach - fi - fi + POST_BOARD_OVERLAY + UMOUNT_ALL } @@ -372,6 +331,12 @@ parseargs "$@" || help $? CONFIG_RPM_LIST=$workdir/../configs/rpmlist +POST_BOARD_OVERLAY() { + echo "Initial POST_BOARD_OVERLAY function" # It will be overwritten by board.conf. +} + +source $workdir/../boards/${board}.conf + if [ ! -d $workdir ]; then mkdir $workdir fi @@ -384,22 +349,24 @@ sed -i 's/rootfs//g' $workdir/.done LOG "build rootfs..." if [ -d rootfs ]; then if [[ -f $workdir/rootfs.img && $(cat $workdir/.done | grep rootfs) == "rootfs" ]];then - last_branch=$(cat $workdir/.param_last | grep branch) - last_branch=${last_branch:7} + if [ -f $workdir/.param_last ];then + last_branch=$(cat $workdir/.param_last | grep branch) + last_branch=${last_branch:7} - last_dtb_name=$(cat $workdir/.param_last | grep dtb_name) - last_dtb_name=${last_dtb_name:9} + last_board=$(cat $workdir/.param_last | grep board) + last_board=${last_board:6} - last_repo_file=$(cat $workdir/.param_last | grep repo_file) - last_repo_file=${last_repo_file:10} + last_repo_file=$(cat $workdir/.param_last | grep repo_file) + last_repo_file=${last_repo_file:10} - last_spec_param=$(cat $workdir/.param_last | grep spec_param) - last_spec_param=${last_spec_param:11} + last_spec_param=$(cat $workdir/.param_last | grep spec_param) + last_spec_param=${last_spec_param:11} - if [[ ${last_branch} != ${branch} || ${last_dtb_name} != ${dtb_name} || ${last_repo_file} != ${repo_file} || ${last_spec_param} != ${spec_param} ]]; then - rm -rf rootfs - build_rootfs - mk_rootfsimg + if [[ ${last_branch} != ${branch} || ${last_board} != ${board} || ${last_repo_file} != ${repo_file} || ${last_spec_param} != ${spec_param} ]]; then + rm -rf rootfs + build_rootfs + mk_rootfsimg + fi fi else rm -rf rootfs