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 changed files with 20 additions and 14 deletions
|
@ -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
|
||||||
# set some defaults
|
# set some defaults
|
||||||
|
@ -9,7 +9,7 @@ setenv bootargs console=${console},${baudrate}
|
||||||
setenv loadaddr 10800000
|
setenv loadaddr 10800000
|
||||||
setenv fdt_addr 18000000
|
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)
|
# has mounted (in order of preference: usb/mmc/sata)
|
||||||
#
|
#
|
||||||
# This assumes the bootloader has already started the respective subsystem
|
# This assumes the bootloader has already started the respective subsystem
|
||||||
|
@ -31,18 +31,9 @@ else
|
||||||
fi
|
fi
|
||||||
echo "detected dtype:$dtype"
|
echo "detected dtype:$dtype"
|
||||||
fi
|
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
|
if itest.s "x${dtype}" == "xnand" ; then
|
||||||
echo "Booting from NAND..."
|
|
||||||
# fix partition name
|
# fix partition name
|
||||||
# OpenWrt kernel bug prevents partition name of 'rootfs' from booting
|
# OpenWrt kernel bug prevents partition name of 'rootfs' from booting
|
||||||
# instead name the partition ubi which is what is looked for by
|
# 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 fsload ubifsload
|
||||||
setenv root "ubi0:ubi ubi.mtd=2 rootfstype=squashfs,ubifs"
|
setenv root "ubi0:ubi ubi.mtd=2 rootfstype=squashfs,ubifs"
|
||||||
else
|
else
|
||||||
echo "Booting from block device ${bootdev}..."
|
|
||||||
setenv fsload "${fs}load ${dtype} ${disk}:1"
|
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
|
fi
|
||||||
|
|
||||||
setenv bootargs "${bootargs}" "${root}" "${video}" "${extra}"
|
setenv bootargs "${bootargs}" "${root}" "${video}" "${extra}"
|
||||||
|
|
Loading…
Reference in a new issue