Ticket #11233 (closed defect: fixed)
XO-1 usb and sd boot does not work in recent builds
|Reported by:||fanoush||Owned by:||Quozl|
|Component:||initramfs||Version:||Development build as of this date|
|Keywords:||Cc:||FGrose, sascha_silbe, mavrothal|
|Action Needed:||no action||Verified:||no|
|Deployments affected:||Blocked By:|
previous OS versions booted fine without any change when same build files were in internal jffs2 or on SD card or on USB stick. With 11.2.0 it look like this no longer works.
When I boot from USB or SD slot the initrd prints many lines of something similar to 'chdir to /lib/modules failed' and finally something like 'Root device not found, sleeping forever'.
When examining initrd files in /boot I found that there are actually two initial ramdisks, one initrd below 2MB size and one actrd having ~5MB. The 5MB one does have /lib/modules inside while the normal initrd does not.
When replacing initrd by actrd the chdir /lib/modules error message is gone, and I see usb modules inserted and I see mass storage module detecting the usb device but it printed another messages about "scsi_wait_scan module not found" and again root device not found.
I am using SD card with single ext3 partition with fs label "OLPCRoot" in usb card reader or directly in SD slot (just like it works with previous OS versions).
Then I extracted initrd with gzip and cpio, copied /lib/modules from actdrd, repacked and can confirm the original initrd code behaves exactly the same as actrd one.
Then I found file cmdline/20olpc-boot-cmdline.sh inside intrd that checks boot device from ofw and hardcodes root=/dev/sda2 with this code: if [ -z "$root" ]; then
# if no root device was specified, use OFW bootpath to find root
/pci/usb@*) root="/dev/sda2" ;; # external USB, assume partitioned
So I changed sda2 to sda1 but it still does not boot with same message - root device not found. Sorry that I don't have exact error messages but the device does not boot so I cannot copy them directly.