[OpenWrt-Devel] [PATCH] imx6: bootscript: use partition UUID for rootfs if possible
Tim Harvey
tharvey at gateworks.com
Wed Apr 1 13:23:12 EDT 2020
Specifying root filesystem by device is non-deterministic for several
reasons:
- USB device unmeration order is not garunteeed for USB storage devs
- MMC devs ordering is determined by the instance of the MMC host
controller including non-storage SDIO devices which can throw off
numbering depending on kernel versions.
It is recommended to use partition UUID
Signed-off-by: Tim Harvey <tharvey at gateworks.com>
---
target/linux/imx6/image/bootscript-ventana | 34 ++++++++++++++++++------------
1 file changed, 20 insertions(+), 14 deletions(-)
diff --git a/target/linux/imx6/image/bootscript-ventana b/target/linux/imx6/image/bootscript-ventana
index 941afb5..734f74a 100644
--- a/target/linux/imx6/image/bootscript-ventana
+++ b/target/linux/imx6/image/bootscript-ventana
@@ -1,4 +1,4 @@
-echo "Gateworks Ventana OpenWrt Boot script v1.01"
+echo "Gateworks Ventana OpenWrt Boot script v1.02"
# set some defaults
# set some defaults
@@ -9,7 +9,7 @@ setenv bootargs console=${console},${baudrate}
setenv loadaddr 10800000
setenv fdt_addr 18000000
-# detect dtype and bootdev by looking for kernel on media the bootloader
+# detect dtype by looking for kernel on media the bootloader
# has mounted (in order of preference: usb/mmc/sata)
#
# This assumes the bootloader has already started the respective subsystem
@@ -31,18 +31,9 @@ else
fi
echo "detected dtype:$dtype"
fi
-if test -n "$bootdev" ; then
- echo "Using bootdev from env: $bootdev"
-else
- if itest.s "x${dtype}" == "xmmc" ; then
- bootdev=mmcblk0p1
- else
- bootdev=sda1
- fi
-fi
+echo "Booting from ${dtype}..."
if itest.s "x${dtype}" == "xnand" ; then
- echo "Booting from NAND..."
# fix partition name
# OpenWrt kernel bug prevents partition name of 'rootfs' from booting
# instead name the partition ubi which is what is looked for by
@@ -52,9 +43,24 @@ if itest.s "x${dtype}" == "xnand" ; then
setenv fsload ubifsload
setenv root "ubi0:ubi ubi.mtd=2 rootfstype=squashfs,ubifs"
else
- echo "Booting from block device ${bootdev}..."
setenv fsload "${fs}load ${dtype} ${disk}:1"
- setenv root "root=/dev/${bootdev} rootfstype=${fs} rootwait rw"
+ part uuid ${dtype} ${disk}:1 uuid
+ if test -z "${uuid}"; then
+ # fallback to bootdev
+ if test -n "$bootdev" ; then
+ echo "Using bootdev from env: $bootdev"
+ else
+ if itest.s "x${dtype}" == "xmmc" ; then
+ bootdev=mmcblk0p1
+ else
+ bootdev=sda1
+ fi
+ fi
+ setenv root "root=/dev/${bootdev}"
+ else
+ setenv root "root=PARTUUID=${uuid}"
+ fi
+ setenv root "$root rootfstype=${fs} rootwait rw"
fi
setenv bootargs "${bootargs}" "${root}" "${video}" "${extra}"
--
2.7.4
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel
More information about the openwrt-devel
mailing list