diff --git a/.gitignore b/.gitignore
index b0d6818b63c5b1e97e0f66b64ff004b0e4c4d3d6..9afae1b9f0983816e2f2e858f93658f8ef81bace 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,4 @@
 ignore/
 deploy/
+.05_generate_boot.sh
+.06_generate_root.sh
diff --git a/02_build_opensbi.sh b/02_build_opensbi.sh
index e52ffab975584306bc28ca6b00d4d1a5eaf640e0..f7fb90a6ae60b889c262e9f8566e1708425cdac0 100755
--- a/02_build_opensbi.sh
+++ b/02_build_opensbi.sh
@@ -9,3 +9,5 @@ echo "make -C opensbi -j${CORES} ARCH=riscv CROSS_COMPILE=${wdir}/riscv-toolchai
 make -C opensbi -j${CORES} ARCH=riscv CROSS_COMPILE=${wdir}/riscv-toolchain/riscv-toolchain/bin/riscv64-linux- PLATFORM=generic
 
 cp -v ./opensbi/build/platform/generic/firmware/fw_dynamic.bin ./deploy/
+
+touch ./.05_generate_boot.sh
diff --git a/03_build_uboot.sh b/03_build_uboot.sh
index 2434bd3258642b31fbcfb651f00aa422c73093d7..556b49c4f00a680e129601bb0554cb484496ab55 100755
--- a/03_build_uboot.sh
+++ b/03_build_uboot.sh
@@ -29,3 +29,4 @@ rm -f board/thead/light-c910/version_rollback.c || true
 git reset HEAD --hard
 cd ../
 
+touch ./.05_generate_boot.sh
diff --git a/04_build_linux.sh b/04_build_linux.sh
index 805fdfa52da992b4f3e3fc04a67ef4af44cfc218..94505750af2a233e794fa424805c652d80b5511d 100755
--- a/04_build_linux.sh
+++ b/04_build_linux.sh
@@ -40,3 +40,5 @@ cp -v ./arch/riscv/boot/dts/thead/light-beagle.dtb ../deploy/
 
 cd ../
 
+touch ./.05_generate_boot.sh
+touch ./.06_generate_root.sh
diff --git a/05_generate_boot.sh b/05_generate_boot.sh
index d50b8305195612fce75aa0939a702e47474ddf32..7899c1342a6b64961e602b6863522911a152ea39 100755
--- a/05_generate_boot.sh
+++ b/05_generate_boot.sh
@@ -15,3 +15,7 @@ cp -v ./deploy/light-beagle.dtb ./ignore/.boot
 
 dd if=/dev/zero of=./deploy/boot.ext4 count=10000 bs=4096
 mkfs.ext4 -F ./deploy/boot.ext4 -d ./ignore/.boot
+
+if [ -f ./.05_generate_boot.sh ] ; then
+	rm -f ./.05_generate_boot.sh || true
+fi
diff --git a/06_generate_root.sh b/06_generate_root.sh
index b515640223067bc114a311d88fd5a9e9e05bfde6..370b25bb647f7792134dd1eb94331f3bcb3574af 100755
--- a/06_generate_root.sh
+++ b/06_generate_root.sh
@@ -48,3 +48,7 @@ dd if=/dev/zero of=./deploy/root.ext4 bs=1 count=0 seek=1500M
 mkfs.ext4 -F ./deploy/root.ext4 -d ./ignore/.root
 
 cd ../
+
+if [ -f ./.06_generate_root.sh ] ; then
+	rm -f ./.06_generate_root.sh || true
+fi
diff --git a/07_fastboot_emmc.sh b/07_fastboot_emmc.sh
index f408d7326798ce795c6e15a5acd6127a6659f5b2..429e5d92ecfac0c7bf2564f013d12cea941dd401 100755
--- a/07_fastboot_emmc.sh
+++ b/07_fastboot_emmc.sh
@@ -6,10 +6,18 @@ if ! id | grep -q root; then
 	exit
 fi
 
-fastboot flash ram ./deploy/u-boot-with-spl.bin
-fastboot reboot
-sleep 10
-fastboot flash uboot ./deploy/u-boot-with-spl.bin
-fastboot flash boot ./deploy/boot.ext4
-fastboot flash root ./deploy/root.ext4
-fastboot reboot
+if [ -f ./.05_generate_boot.sh ] ; then
+	echo "ERROR: run: [sudo ./05_generate_boot.sh] first"
+else
+	if [ -f ./.06_generate_root.sh ] ; then
+		echo "ERROR: run: [sudo ./06_generate_root.sh] first"
+	else
+		fastboot flash ram ./deploy/u-boot-with-spl.bin
+		fastboot reboot
+		sleep 10
+		fastboot flash uboot ./deploy/u-boot-with-spl.bin
+		fastboot flash boot ./deploy/boot.ext4
+		fastboot flash root ./deploy/root.ext4
+		fastboot reboot
+	fi
+fi
diff --git a/build_linux_dtbs.sh b/build_linux_dtbs.sh
index 613c19cd172cba04c0e4c2918ff4bb62265e54ba..4911bfe1dad9abcfa0a2b70e6e4b59cd98fe7c34 100755
--- a/build_linux_dtbs.sh
+++ b/build_linux_dtbs.sh
@@ -21,3 +21,5 @@ cp -v ./arch/riscv/boot/dts/thead/light-beagle.dtb ../deploy/
 
 cd ../
 
+touch ./.05_generate_boot.sh
+touch ./.06_generate_root.sh
diff --git a/build_linux_image.sh b/build_linux_image.sh
index 3ef79c92666d33e6e068ade6e674be2d6c5b9cd4..97a89a5d4b38d6be9c8678e8c374e4a3adcf3012 100755
--- a/build_linux_image.sh
+++ b/build_linux_image.sh
@@ -16,3 +16,5 @@ cp -v ./arch/riscv/boot/Image ../deploy/
 
 cd ../
 
+touch ./.05_generate_boot.sh
+touch ./.06_generate_root.sh
diff --git a/build_linux_menuconfig.sh b/build_linux_menuconfig.sh
index 4f9a1dca0201dd49eedeb1bf9eda56121b8c256d..e16f2ac29706cf8b55bd9326842ffb1aff967b23 100755
--- a/build_linux_menuconfig.sh
+++ b/build_linux_menuconfig.sh
@@ -41,3 +41,5 @@ cp -v ./arch/riscv/boot/dts/thead/light-beagle.dtb ../deploy/
 
 cd ../
 
+touch ./.05_generate_boot.sh
+touch ./.06_generate_root.sh
diff --git a/build_linux_noclean.sh b/build_linux_noclean.sh
index c02dd6a1907303f6725b8e32546189ddeece103f..9b2de0e477d8fb440380b48b2e0ee5839efec11f 100755
--- a/build_linux_noclean.sh
+++ b/build_linux_noclean.sh
@@ -39,3 +39,5 @@ cp -v ./arch/riscv/boot/dts/thead/light-beagle.dtb ../deploy/
 
 cd ../
 
+touch ./.05_generate_boot.sh
+touch ./.06_generate_root.sh
diff --git a/fastboot_boot_partition.sh b/fastboot_boot_partition.sh
index f296878933b68b10dc04a0d556504ed0b4314da0..5995b82d916d5120872e4c6989632bea2ed5330d 100755
--- a/fastboot_boot_partition.sh
+++ b/fastboot_boot_partition.sh
@@ -6,9 +6,13 @@ if ! id | grep -q root; then
 	exit
 fi
 
-fastboot flash ram ./deploy/u-boot-with-spl.bin
-fastboot reboot
-sleep 10
-fastboot flash uboot ./deploy/u-boot-with-spl.bin
-fastboot flash boot ./deploy/boot.ext4
-fastboot reboot
+if [ -f ./.05_generate_boot.sh ] ; then
+	echo "ERROR: run: [sudo ./05_generate_boot.sh] first"
+else
+	fastboot flash ram ./deploy/u-boot-with-spl.bin
+	fastboot reboot
+	sleep 10
+	fastboot flash uboot ./deploy/u-boot-with-spl.bin
+	fastboot flash boot ./deploy/boot.ext4
+	fastboot reboot
+fi