imx6: bootscript: use partition UUID for rootfs if possible
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>
This commit is contained in:
parent
4298339b23
commit
ff6b092121
@ -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}"
|
||||
|
Loading…
Reference in New Issue
Block a user