rockchip: 分离firmware操作到版型文件

This commit is contained in:
chainsx 2025-01-09 17:01:39 +08:00
parent d1fcac3fc0
commit 6b8d889ecb
13 changed files with 147 additions and 90 deletions

View File

@ -66,13 +66,31 @@
运行 rootfs 构建脚本需执行命令: 运行 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。** **说明: 基于 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 之间以空格隔开。 开发源 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/` - 资源库的 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 参数有以下选择: 内核源码的对应分支,默认为 openEuler-20.03-LTS。根据 -k 参数有以下选择:
@ -94,10 +112,6 @@
- openEuler-21.03 - openEuler-21.03
- openEuler-21.09 - 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 4. -s, --spec SPEC
构建的镜像版本: 构建的镜像版本:

View File

@ -1,3 +1,10 @@
ubootconfig=none ubootconfig=none
dtb_name=rk3588-firefly-itx-3588j dtb_name=rk3588-firefly-itx-3588j
platform=rockchip 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
}

View File

@ -1,3 +1,23 @@
ubootconfig=firefly-rk3399_defconfig ubootconfig=firefly-rk3399_defconfig
dtb_name=rk3399-firefly dtb_name=rk3399-firefly
platform=rockchip 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
}

View File

@ -1,3 +1,12 @@
ubootconfig=none ubootconfig=none
dtb_name=rk3566-roc-pc dtb_name=rk3566-roc-pc
platform=rockchip 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
}

View File

@ -1,3 +1,12 @@
ubootconfig=none ubootconfig=none
dtb_name=rk3568-roc-pc-se dtb_name=rk3568-roc-pc-se
platform=rockchip 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
}

View File

@ -1,3 +1,8 @@
ubootconfig=none ubootconfig=none
dtb_name=rk3588s-roc-pc dtb_name=rk3588s-roc-pc
platform=rockchip platform=rockchip
POST_BOARD_OVERLAY() {
echo "Put ${board} firmware into rootfs..."
echo "Nothing to do..."
}

View File

@ -1,3 +1,14 @@
ubootconfig=none ubootconfig=none
dtb_name=phytiumpi_firefly dtb_name=phytiumpi_firefly
platform=rockchip 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
}

View File

@ -1,3 +1,8 @@
ubootconfig=none ubootconfig=none
dtb_name=rk3588-rock-5b dtb_name=rk3588-rock-5b
platform=rockchip platform=rockchip
POST_BOARD_OVERLAY() {
echo "Put ${board} firmware into rootfs..."
echo "Nothing to do..."
}

View File

@ -1,3 +1,8 @@
ubootconfig=rock-pi-4-rk3399_defconfig ubootconfig=rock-pi-4-rk3399_defconfig
dtb_name=rk3399-rock-pi-4a dtb_name=rk3399-rock-pi-4a
platform=rockchip platform=rockchip
POST_BOARD_OVERLAY() {
echo "Put ${board} firmware into rootfs..."
echo "Nothing to do..."
}

View File

@ -1,3 +1,8 @@
ubootconfig=firefly-rk3399_defconfig #Required! The name of defconfig file when compiling u-boot, which defaults to firefly-rk3399_defconfig. 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. 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. 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..."
}

View File

@ -56,7 +56,8 @@ save_param() {
if [ -f $workdir/.param ]; then if [ -f $workdir/.param ]; then
mv $workdir/.param $workdir/.param_last mv $workdir/.param $workdir/.param_last
fi fi
echo "default_defconfig=$default_defconfig echo "board=$board
default_defconfig=$default_defconfig
ubootconfig=$ubootconfig ubootconfig=$ubootconfig
dtb_name=$dtb_name dtb_name=$dtb_name
platform=$platform platform=$platform
@ -142,6 +143,7 @@ cur_dir=$(cd $(dirname $0);pwd)
source ${cur_dir}/boards/${board}.conf source ${cur_dir}/boards/${board}.conf
LOG "Board config: ${board}."
LOG "U-Boot config: ${ubootconfig}." LOG "U-Boot config: ${ubootconfig}."
LOG "DeviceTree name: ${dtb_name}." LOG "DeviceTree name: ${dtb_name}."
LOG "Target platform: ${platform}." LOG "Target platform: ${platform}."

View File

@ -39,7 +39,7 @@ local_param(){
branch=${branch:7} branch=${branch:7}
default_defconfig=$(cat $workdir/.param | grep default_defconfig) 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=$(cat $workdir/.param | grep dtb_name)
dtb_name=${dtb_name:9} dtb_name=${dtb_name:9}
@ -248,8 +248,7 @@ mk_boot() {
rm -rf ${boot_dir} rm -rf ${boot_dir}
} }
kernel_defconfig="openeuler_rockchip_defconfig" kernel_defconfig=""
default_defconfig=""
default_param default_param
local_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" 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" 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 if [ ! -f $default_defconfig ] ; then
default_defconfig=$kernel_defconfig LOG "kernel defconfig is : ${default_defconfig}"
kernel_defconfig=$default_defconfig
elif [ -f $default_defconfig ]; then elif [ -f $default_defconfig ]; then
LOG "use local kernel defconfig..."
cp $default_defconfig ${workdir}/ cp $default_defconfig ${workdir}/
kernel_defconfig=${workdir}/${default_defconfig##*/} kernel_defconfig=${workdir}/${default_defconfig##*/}
else
echo `date` - ERROR, config file $default_defconfig can not be found.
exit 2
fi fi
if [ ! -d $workdir ]; then if [ ! -d $workdir ]; then

View File

@ -2,14 +2,14 @@
__usage=" __usage="
Usage: build_rootfs [OPTIONS] Usage: build_rootfs [OPTIONS]
Build Rockchip openEuler-root image. Build openEuler rootfs image.
Run in root user. 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. The target rootfs.img will be generated in the build folder of the directory where the build_rootfs.sh script is located.
Options: 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. -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. -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. -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. -h, --help Show command help.
" "
@ -21,10 +21,10 @@ help()
} }
default_param() { default_param() {
board=firefly-rk3399
repo_file="https://gitee.com/src-openeuler/openEuler-repos/raw/openEuler-20.03-LTS/generic.repo" repo_file="https://gitee.com/src-openeuler/openEuler-repos/raw/openEuler-20.03-LTS/generic.repo"
tmp_dir=${workdir}/tmp tmp_dir=${workdir}/tmp
workdir=$(pwd)/build workdir=$(pwd)/build
dtb_name=rk3399-firefly
branch=openEuler-20.03-LTS branch=openEuler-20.03-LTS
nonfree_bin_dir=${workdir}/../bin nonfree_bin_dir=${workdir}/../bin
rootfs_dir=${workdir}/rootfs rootfs_dir=${workdir}/rootfs
@ -33,15 +33,15 @@ default_param() {
local_param(){ local_param(){
if [ -f $workdir/.param ]; then if [ -f $workdir/.param ]; then
board=$(cat $workdir/.param | grep board)
board=${board:6}
repo_file=$(cat $workdir/.param | grep repo_file) repo_file=$(cat $workdir/.param | grep repo_file)
repo_file=${repo_file:10} repo_file=${repo_file:10}
branch=$(cat $workdir/.param | grep branch) branch=$(cat $workdir/.param | grep branch)
branch=${branch:7} 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=$(cat $workdir/.param | grep spec_param)
spec_param=${spec_param:11} spec_param=${spec_param:11}
fi fi
@ -59,6 +59,10 @@ parseargs()
return 1 return 1
elif [ "x$1" == "x" ]; then elif [ "x$1" == "x" ]; then
shift shift
elif [ "x$1" == "x--board" ]; then
board=`echo $2`
shift
shift
elif [ "x$1" == "x-r" -o "x$1" == "x--repo" ]; then elif [ "x$1" == "x-r" -o "x$1" == "x--repo" ]; then
repo_file=`echo $2` repo_file=`echo $2`
shift shift
@ -67,10 +71,6 @@ parseargs()
branch=`echo $2` branch=`echo $2`
shift shift
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 elif [ "x$1" == "x-s" -o "x$1" == "x--spec" ]; then
spec_param=`echo $2` spec_param=`echo $2`
shift shift
@ -289,49 +289,8 @@ EOF
echo "LABEL=boot /boot vfat defaults,noatime 0 0" >> ${rootfs_dir}/etc/fstab echo "LABEL=boot /boot vfat defaults,noatime 0 0" >> ${rootfs_dir}/etc/fstab
LOG "Set fstab done." LOG "Set fstab done."
if [ -f $workdir/.param ]; then POST_BOARD_OVERLAY
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
UMOUNT_ALL UMOUNT_ALL
} }
@ -372,6 +331,12 @@ parseargs "$@" || help $?
CONFIG_RPM_LIST=$workdir/../configs/rpmlist 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 if [ ! -d $workdir ]; then
mkdir $workdir mkdir $workdir
fi fi
@ -384,22 +349,24 @@ sed -i 's/rootfs//g' $workdir/.done
LOG "build rootfs..." LOG "build rootfs..."
if [ -d rootfs ]; then if [ -d rootfs ]; then
if [[ -f $workdir/rootfs.img && $(cat $workdir/.done | grep rootfs) == "rootfs" ]];then if [[ -f $workdir/rootfs.img && $(cat $workdir/.done | grep rootfs) == "rootfs" ]];then
last_branch=$(cat $workdir/.param_last | grep branch) if [ -f $workdir/.param_last ];then
last_branch=${last_branch:7} last_branch=$(cat $workdir/.param_last | grep branch)
last_branch=${last_branch:7}
last_dtb_name=$(cat $workdir/.param_last | grep dtb_name) last_board=$(cat $workdir/.param_last | grep board)
last_dtb_name=${last_dtb_name:9} last_board=${last_board:6}
last_repo_file=$(cat $workdir/.param_last | grep repo_file) last_repo_file=$(cat $workdir/.param_last | grep repo_file)
last_repo_file=${last_repo_file:10} last_repo_file=${last_repo_file:10}
last_spec_param=$(cat $workdir/.param_last | grep spec_param) last_spec_param=$(cat $workdir/.param_last | grep spec_param)
last_spec_param=${last_spec_param:11} 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 if [[ ${last_branch} != ${branch} || ${last_board} != ${board} || ${last_repo_file} != ${repo_file} || ${last_spec_param} != ${spec_param} ]]; then
rm -rf rootfs rm -rf rootfs
build_rootfs build_rootfs
mk_rootfsimg mk_rootfsimg
fi
fi fi
else else
rm -rf rootfs rm -rf rootfs