[OpenWrt-Devel,2/2] imx6: bootscript: use partition UUID for rootfs if possible
diff mbox series

Message ID 1570054907-11762-1-git-send-email-tharvey@gateworks.com
State Under Review
Delegated to: Koen Vandeputte
Headers show
Series
  • [OpenWrt-Devel,1/2] imx6: bootscript: enable UBI fastmap support
Related show

Commit Message

Tim Harvey Oct. 2, 2019, 10:21 p.m. UTC
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@gateworks.com>
---
 target/linux/imx6/image/bootscript-ventana | 34 ++++++++++++++++++------------
 1 file changed, 20 insertions(+), 14 deletions(-)

Patch
diff mbox series

diff --git a/target/linux/imx6/image/bootscript-ventana b/target/linux/imx6/image/bootscript-ventana
index 8451caf..06e2015 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.02"
+echo "Gateworks Ventana OpenWrt Boot script v1.03"
 
 # 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
@@ -54,9 +45,24 @@  if itest.s "x${dtype}" == "xnand" ; then
 	# enable UBI fastmap support
 	setenv bootargs "${bootargs} ubi.fm_autoconvert=1"
 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}"