mirror of
https://github.com/archr-linux/Arch-R.git
synced 2026-07-12 18:19:42 -07:00
a3d131f0d5
Root cause of the persistent "Unable to find LABEL=ARCHR, powering off" after the issue #34 boot.ini LABEL= migration: busybox's built-in volume_id CANNOT read FAT32 labels. Proven under qemu-aarch64 against the real image partitions: util-linux blkid FAT32 -> LABEL="ARCHR" ext4 -> "ARCHR_ROOT" busybox blkid FAT32 -> TYPE="vfat" only ext4 -> "ARCHR_ROOT" So `busybox mount LABEL=` and `busybox findfs LABEL=` both fail for the FAT /flash partition (mounted first), while the ext4 root would have resolved. The previous fallback used util-linux blkid but only scanned a hardcoded /dev/mmcblk0p[1-3] /dev/mmcblk1p[1-3] list, so it broke whenever the boot SD enumerated outside mmcblk0/1 or the partition nodes weren't created yet. mount_common's LABEL=/UUID= branch now: - resolves exclusively through util-linux /usr/sbin/blkid (reads both FAT32 and ext4 labels), - walks every entry in /proc/partitions instead of a fixed device list, so it is independent of the mmcblkN enumeration order (exactly what issue #34's 2-SD reordering needs), - mknod's the /dev node from the /proc/partitions major:minor when mdev hasn't created it yet, removing the dependency on mdev timing and on udev (absent in the initramfs), - keeps busybox findfs (works for ext*) and /dev/disk/by-label as last-resort fallbacks. Verified: syntax (sh -n) clean, the parse+blkid logic resolves mmcblk1p1 in a simulated /proc/partitions run, and the rebuilt image's embedded initramfs carries the new resolver.