diff --git a/projects/ArchR/devices/RK3326/packages/u-boot/config/clone_boot.ini b/projects/ArchR/devices/RK3326/packages/u-boot/config/clone_boot.ini index 4c646bb168..76af98872f 100644 --- a/projects/ArchR/devices/RK3326/packages/u-boot/config/clone_boot.ini +++ b/projects/ArchR/devices/RK3326/packages/u-boot/config/clone_boot.ini @@ -10,11 +10,18 @@ fi setenv thispart "${devtype} ${devnum}:${distro_bootpart}" setenv storagepart "${devtype} ${devnum}:${distro_storagepart}" -# Clone hardware: SD card is mmcblk0 (U-Boot devnum=1 doesn't match kernel) -setenv mmcdev ${devnum} -setenv partition_boot "/dev/mmcblk${mmcdev}p${distro_bootpart}" -setenv partition_root "/dev/mmcblk${mmcdev}p2" -setenv partition_storage "/dev/mmcblk${mmcdev}p3" +# Usar LABEL= em vez de /dev/mmcblk${devnum}p... porque a numeração do +# U-Boot (devnum=0/1/2 conforme o slot probado primeiro) não bate com +# a enumeração estável do kernel (mmc0=ff380000 TF2, mmc1=ff370000 +# TF1). Quando o usuário insere um SD em TF2, U-Boot pode escolher um +# devnum diferente do que o Linux apresenta como /dev/mmcblk1, e o +# /init falhava em montar `boot=/dev/mmcblk1p1` ("cannot find +# mmcblk1p1" + countdown to poweroff — issue #34). LABEL= é resolvido +# pelo /init busybox via findfs/blkid em qualquer mmcblk que tenha a +# partição com a label correta — sobrevive a reordenamento de slots. +setenv partition_boot "LABEL=@DISTRO_BOOTLABEL@" +setenv partition_root "LABEL=@DISTRO_ROOTLABEL@" +setenv partition_storage "LABEL=@DISTRO_DISKLABEL@" # Just in case this script is executed by (patched?) hardkernel u-boot, recover adc value from hwrev if test -n "${hwid_adc}"; then setenv adc ${hwid_adc}; echo "ADC ${hwid_adc}" # mainline u-boot, just use real value diff --git a/projects/ArchR/devices/RK3326/packages/u-boot/config/original_boot.ini b/projects/ArchR/devices/RK3326/packages/u-boot/config/original_boot.ini index 182dced0a1..ed65a7cb3c 100644 --- a/projects/ArchR/devices/RK3326/packages/u-boot/config/original_boot.ini +++ b/projects/ArchR/devices/RK3326/packages/u-boot/config/original_boot.ini @@ -16,12 +16,18 @@ fi setenv thispart "${devtype} ${devnum}:${distro_bootpart}" setenv storagepart "${devtype} ${devnum}:${distro_storagepart}" -# Use device paths based on U-Boot mmc device number -# mmc 1 in U-Boot = /dev/mmcblk1 in Linux (SD card on RK3326) -setenv mmcdev ${devnum} -setenv partition_boot "/dev/mmcblk${mmcdev}p${distro_bootpart}" -setenv partition_root "/dev/mmcblk${mmcdev}p2" -setenv partition_storage "/dev/mmcblk${mmcdev}p3" +# Usar LABEL= em vez de /dev/mmcblk${devnum}p... porque a numeração do +# U-Boot (devnum=0/1/2 conforme o slot probado primeiro) não bate com +# a enumeração estável do kernel (mmc0=ff380000 TF2, mmc1=ff370000 +# TF1). Quando o usuário insere um SD em TF2, U-Boot pode escolher um +# devnum diferente do que o Linux apresenta como /dev/mmcblk1, e o +# /init falhava em montar `boot=/dev/mmcblk1p1` ("cannot find +# mmcblk1p1" + countdown to poweroff — issue #34). LABEL= é resolvido +# pelo /init busybox via findfs/blkid em qualquer mmcblk que tenha a +# partição com a label correta — sobrevive a reordenamento de slots. +setenv partition_boot "LABEL=@DISTRO_BOOTLABEL@" +setenv partition_root "LABEL=@DISTRO_ROOTLABEL@" +setenv partition_storage "LABEL=@DISTRO_DISKLABEL@" # Just in case this script is executed by (patched?) hardkernel u-boot, recover adc value from hwrev if test -n "${hwid_adc}"; then setenv adc ${hwid_adc}; echo "ADC ${hwid_adc}" # mainline u-boot, just use real value