mirror of
git://git.yoctoproject.org/meta-rockchip.git
synced 2025-07-05 05:04:47 +02:00
use uuid instead of hard-coding root device
Recent upstream kernel changes have made the mmc probing order unpredictable. Therefore, boards with both an emmc and sdmmc interface aren't guaranteed to boot with a hard-coded root device selected. For example, on the rock64, with linux-yocto 5.10.y, using the uSD card (i.e. the sdmmc interface) about 50% of the time the boot would succeed, and roughly 50% of the time it wouldn't: ... [ 0.612233] Waiting for root device /dev/mmcblk1p7... [ 0.634551] mmc_host mmc1: Bus speed (slot 0) = 300000Hz (slot req 300000Hz, actual 300000HZ div = 0) [ 0.639064] mmc_host mmc0: Bus speed (slot 0) = 50000000Hz (slot req 50000000Hz, actual 50000000HZ di) [ 0.640007] mmc0: new high speed SDXC card at address 5048 [ 0.641176] mmcblk0: mmc0:5048 SD64G 58.0 GiB [ 0.647610] random: fast init done [ 0.648279] GPT:Primary header thinks Alt. header is not at the end of the disk. [ 0.648941] GPT:376479 != 121634815 [ 0.649252] GPT:Alternate GPT header not at the end of the disk. [ 0.649796] GPT:376479 != 121634815 [ 0.650106] GPT: Use GNU Parted to correct GPT errors. [ 0.650598] mmcblk0: p1 p2 p3 p4 p5 p6 p7 NOTE the discrepancy between the kernel waiting for device /dev/mmcblk1p7, which comes from the hard-coded kernel cmdline, and the kernel probing putting the sdmmc on mmcblk0. With linux-yocto 5.13.y on the rock64 using the uSD card the board would never boot, the sdmmc always appears on mmcblk0. Instead of simply changing the hard-coded root device (i.e. from mmcblk0 to mmcblk1) switch to using partition UUIDs instead. Hard-coding the boot device would work with 5.13.y but would fail 50% of the time with 5.10.y; who knows what other kernels will do? In any case, switching to UUIDs works regardless of board, kernel, or available mmc interfaces. Boot tested on: - rock64 - nanopi-m4-2gb - tinker-board - rock-pi-e - rock-pi-4b Signed-off-by: Trevor Woerner <twoerner@gmail.com>
This commit is contained in:
parent
9f572e704e
commit
0aa5e60054
|
@ -7,5 +7,3 @@ MACHINE_FEATURES += "usbhost serial"
|
|||
|
||||
KMACHINE = "nanopi-m4"
|
||||
KERNEL_DEVICETREE = "rockchip/rk3399-nanopi-m4.dtb"
|
||||
|
||||
RK_BOOT_DEVICE = "mmcblk1"
|
||||
|
|
|
@ -3,6 +3,4 @@ MACHINEOVERRIDES =. "rock-pi-4:"
|
|||
|
||||
require conf/machine/include/rk3399.inc
|
||||
|
||||
RK_BOOT_DEVICE = "mmcblk1"
|
||||
|
||||
MACHINE_EXTRA_RRECOMMENDS += "kernel-modules"
|
||||
|
|
|
@ -20,11 +20,7 @@ IMAGE_BOOT_FILES = " \
|
|||
RK_CONSOLE_BAUD ?= "${@d.getVar('SERIAL_CONSOLES').split(';')[0]}"
|
||||
RK_CONSOLE_DEVICE ?= "${@d.getVar('SERIAL_CONSOLES').split(';')[1].split()[0]}"
|
||||
|
||||
# boot device (sd-card/emmc)
|
||||
RK_BOOT_DEVICE ??= "mmcblk0"
|
||||
|
||||
WICVARS:append = " \
|
||||
RK_BOOT_DEVICE \
|
||||
RK_CONSOLE_BAUD \
|
||||
RK_CONSOLE_DEVICE \
|
||||
SPL_BINARY \
|
||||
|
|
|
@ -12,7 +12,4 @@ MACHINE_FEATURES += "usbhost serial"
|
|||
UBOOT_MACHINE = "rock64-rk3328_defconfig"
|
||||
KERNEL_DEVICETREE = "rockchip/rk3328-rock64.dtb"
|
||||
|
||||
# set to mmcblk0 for booting from optional eMMC
|
||||
RK_BOOT_DEVICE ?= "mmcblk1"
|
||||
|
||||
KBUILD_DEFCONFIG = "defconfig"
|
||||
|
|
|
@ -9,5 +9,3 @@ require conf/machine/include/tinker.inc
|
|||
|
||||
KERNEL_DEVICETREE = "rk3288-tinker-s.dtb"
|
||||
UBOOT_MACHINE = "tinker-s-rk3288_defconfig"
|
||||
|
||||
RK_BOOT_DEVICE ?= "mmcblk1"
|
||||
|
|
|
@ -13,5 +13,3 @@ KERNEL_DEVICETREE = "rk3288-vyasa.dtb"
|
|||
KERNEL_EXTRA_ARGS += "LOADADDR=0x02000000"
|
||||
|
||||
UBOOT_MACHINE = "vyasa-rk3288_defconfig"
|
||||
|
||||
RK_BOOT_DEVICE = "mmcblk2"
|
||||
|
|
|
@ -15,12 +15,12 @@
|
|||
# boot 32768 229376
|
||||
# root 262144 - (suggested)
|
||||
|
||||
part loader1 --offset 32 --fixed-size 4000K --ondisk ${RK_BOOT_DEVICE} --source rawcopy --sourceparams="file=${SPL_BINARY}"
|
||||
part reserved1 --offset 4032 --fixed-size 64K --ondisk ${RK_BOOT_DEVICE}
|
||||
part reserved2 --offset 4096 --fixed-size 4096K --ondisk ${RK_BOOT_DEVICE}
|
||||
part loader2 --offset 8192 --fixed-size 4096K --ondisk ${RK_BOOT_DEVICE} --source rawcopy --sourceparams="file=u-boot.${UBOOT_SUFFIX}"
|
||||
part atf --offset 12288 --fixed-size 4096K --ondisk ${RK_BOOT_DEVICE}
|
||||
part /boot --offset 16384 --size 114688K --active --ondisk ${RK_BOOT_DEVICE} --source bootimg-partition --fstype=vfat --label boot --sourceparams="loader=u-boot"
|
||||
part / --ondisk ${RK_BOOT_DEVICE} --source rootfs --fstype=ext4 --label root
|
||||
part loader1 --offset 32 --fixed-size 4000K --source rawcopy --sourceparams="file=${SPL_BINARY}"
|
||||
part reserved1 --offset 4032 --fixed-size 64K
|
||||
part reserved2 --offset 4096 --fixed-size 4096K
|
||||
part loader2 --offset 8192 --fixed-size 4096K --source rawcopy --sourceparams="file=u-boot.${UBOOT_SUFFIX}"
|
||||
part atf --offset 12288 --fixed-size 4096K
|
||||
part /boot --offset 16384 --size 114688K --active --source bootimg-partition --fstype=vfat --label boot --sourceparams="loader=u-boot"
|
||||
part / --source rootfs --fstype=ext4 --label root --use-uuid
|
||||
|
||||
bootloader --ptable gpt --append="console=tty1 console=${RK_CONSOLE_DEVICE},${RK_CONSOLE_BAUD}n8 rw root=/dev/${RK_BOOT_DEVICE}p7 rootfstype=ext4 init=/sbin/init"
|
||||
bootloader --ptable gpt --append="console=tty1 console=${RK_CONSOLE_DEVICE},${RK_CONSOLE_BAUD}n8 rw rootfstype=ext4 init=/sbin/init"
|
||||
|
|
Loading…
Reference in New Issue
Block a user