#!/sbin/openrc-run # B12Q: B1 from the LFS init - /dev/disk/by-partlabel links, modem FAT RO at /firmware, firmware_class path. Unchanged logic. description="Aurora modem firmware FAT (RO)" depend() { need aurora-ro; } start() { ebegin "Mounting modem FAT RO at /firmware" mkdir -p /dev/disk/by-partlabel /firmware for p in /sys/class/block/mmcblk0p*; do n=$(sed -n 's/^PARTNAME=//p' $p/uevent); [ -n "$n" ] && ln -sf /dev/$(basename $p) /dev/disk/by-partlabel/$n; done M=$(readlink /dev/disk/by-partlabel/modem) [ "$(blockdev --getro $M)" = 1 ] || { eend 1 "modem partition not RO"; return 1; } grep -q " /firmware " /proc/mounts || mount -t vfat -o ro,nosuid,nodev,noexec,shortname=lower $M /firmware || { eend 1 mount; return 1; } grep " /firmware " /proc/mounts | grep -q " ro," || { umount /firmware; eend 1 "not ro"; return 1; } echo -n /firmware/image > /sys/module/firmware_class/parameters/path eend 0 }