So… Going on with “debugging”…
Having a look Batocera’s initrd.gz
contents, I found this inside the init
(ash
)script:
while ! do_mount "${MOUNTARG}"
do
echo "Waiting for the root device"
sleep 1
done
^Here’s where the boot stage fails.
The do_mount
function tries mount
ing what’s declared inside "${1}"
variable:
mount -o ro "${1}" /boot_root
And "${1}"
is in turn declared by:
# read the parameters
read -r cmdline < /proc/cmdline
for param in ${cmdline} ; do
case ${param} in
dev=*) dev=${param#dev=};;
label=*) label=${param#label=};;
esac
done
# look for devices
mount -t devtmpfs none /dev
MOUNTARG=none
test -n "${dev}" && MOUNTARG=${dev}
test -n "${label}" && MOUNTARG=LABEL=${label}
So I tried on my actual machine doing this:
$ sudo mkdir /mnt/batotestmount
$ sudo mount /dev/sdz99 /mnt/batotestmount
And this actually leads into the same blockdev
error!!!
Here’s dmesg
ouput:
/dev/sdz99: Can't open blockdev
Now I’m on a dead-end… 🤕 🤔