Bug 782238 - dracut: Warning: No root device found, but only with SD media
Summary: dracut: Warning: No root device found, but only with SD media
Keywords:
Status: CLOSED RAWHIDE
Alias: None
Product: Fedora
Classification: Fedora
Component: dracut
Version: 16
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
Assignee: dracut-maint
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2012-01-16 22:03 UTC by John Florian
Modified: 2013-01-06 16:01 UTC (History)
4 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2012-02-20 12:34:23 UTC
Type: ---


Attachments (Terms of Use)
lsmod output from F13 system which can boot from internal SD reader (2.33 KB, text/plain)
2012-01-18 13:52 UTC, John Florian
no flags Details

Description John Florian 2012-01-16 22:03:39 UTC
Description of problem:
I've transferred a custom F16 Live spin to both CF and SD memory cards.  While I can boot the CF images without problems, I cannot boot the SD images using the built-in SD card slot (on several different hardware models).  The SD images will boot fine however, if a an external, USB attached SD card reader is employed.  These same hardware models have been successfully booting similar images that had been based on F13.

Version-Release number of selected component (if applicable):
dracut-013-20.fc16.noarch

How reproducible:
always

Steps to Reproduce:
1. Transfer a Live F16 image to an SD card, using livecd-tools' livecd-iso-to-disk.
2. Attempt to boot from the SD card using a built-in SD reader device.  Observe failure that terminates with:
  dracut: Warning: No root device "live:/dev/disk/by-uuid/UUID" found
3. Attempt to boot using same SD card, but now with an external SD card reader attached via USB.
  
Additional info:
It seems that the dracut rd image is missing support for built-in SD reader support.  If I boot the device using the external USB reader and then insert/remove another imaged SD card at the built-in reader, I'll see kernel messages to the effect that a new device has been discovered/removed respectively.  However, if I try to boot from the built-in reader, which drops me to an rd shell and then repeat the insert/remove process (with the built-in reader's SD card), I see no such kernel messages.  Further, in the failed mode, I see no /dev/disk, neither the directory nor anything below it (of course).

These custom spins are freshly produced on a fully updated F16 system.

I do not see any problems with the same images transferred to CompactFlash cards using either built-in or external readers.

Comment 1 Harald Hoyer 2012-01-17 09:38:41 UTC
If you can pinpoint the kernel module responsible for your internal card reader, we can include that kernel module in the initramfs.

Comment 2 John Florian 2012-01-18 13:19:03 UTC
(In reply to comment #1)
> If you can pinpoint the kernel module responsible for your internal card
> reader, we can include that kernel module in the initramfs.

Okay, I'll see what I can find.  I'd hoped to include that info with the bug report but alas the rd shell didn't have lsmod.  What's the easiest way to get that info?  (It seems I have to go dredging around initramfs only often enough that I forget most of the tricks.)

Comment 3 John Florian 2012-01-18 13:52:51 UTC
Created attachment 556034 [details]
lsmod output from F13 system which can boot from internal SD reader

Maybe something here will jump out at you as likely responsible AND missing in the initramfs produced currently under F16.

My best hunch is eeepc_laptop.  It appears that this module causes /sys/devices/platform/eeepc/cardr to exist, which sure sounds promising.  I should note that this attachment was indeed generated on a Asus Eee Box (model B202).  However, not all of the internal SD readers I'm testing against are B202s.  They are all nettop type of devices though.

My 2nd best guess would be usb_storage as I see that here, but not on a F16 spin that booted from CF.  I thought both the internal SD and CF readers are typically USB based so I'm not sure how a CF system could boot without this module, unless the BIOS is <sarcasm>"helping"</sarcasm> with some sort of floppy-disk emulation for legacy reasons.

Comment 4 John Florian 2012-01-27 20:42:46 UTC
Provided my testing procedure is correct, I'm not seeing any difference in the kernel modules that would explain this problem.

Booted an older F13-based spin from SD and added 'rdbreak' to the kernel command-line.  Once in the dracut shell I did 'cat /proc/modules' where it listed the following modules:

drm
drm_kms_helper
i2c_algo_bit
i2c_core
i915
output
squashfs
usb_storage
video

I then booted a newer F16-based spin from SD and added 'rd.break' to the kernel command-line.  Once in the dracut shell I did 'cat /proc/modules' where it listed the following modules:

drm
drm_kms_helper
i2c_algo_bit
i2c_core
i915
output
usb_storage

Upon noticing that squashfs wasn't listed, I was quite sure I'd discovered the problem as a sping created using livecd-tools places the whole rootfs into a squashfs image.  Reviewing dracut.kernel(7) I then appended 'rd.driver.pre=squashfs' and ' rd.driver.pre=output' (just for good measure although it looked irrelevant) and crossed my fingers.

This did affect the output of 'cat /proc/modules' in the expected way, but alas the system still cannot boot as it fails with:

dracut: Warning: No root device "live:/dev/disk/by-uuid/bla-bla-bla" found


I'd blame livecd-tools instead, but this same SD card boots perfectly fine on the same computer provided that I use an external SD card reader instead of the built in one.

Comment 5 John Florian 2012-01-30 22:07:46 UTC
FOUND IT !!!

If I tell python-imgcreate to include 'ums_realtek' (Universal Mass Storage?) as an extra driver to be included by dracut in the initramfs these systems will once again boot from their internal SD reader.  I've confirmed before/after results on the following hardware:

 * Asus EeeBox B202
 * Foxconn NT-535
 * Zotac ZBox HD-ID11

While Googling for clues, I also found countless complaints in the Fedora forums about similar problems encountered by people trying to first install F16 using SD cards.  Most wound up with a work-around of using an external reader, much as I was doing to prove to myself there was nothing wrong with my SD images.  I suspect this missing driver is at the core of most all those complaints.

I should note that while investigating this, I noticed that Fedora 16 first shipped with another driver named 'uas' (USB Attached SCSI) but that one disappeared with one of the kernel updates and 'ums_realtek' later appeared.  I suspect the latter replaces the former, but can't say for certain.

So ... can we please get this driver included with dracut images by default?  Ideally we could also get an updated dracut for F16 -- it won't help installing the mainstream F16 images, but it would resolve problems for custom spins such as those made by livecd-tools.

Comment 6 Harald Hoyer 2012-02-20 12:34:23 UTC
It's in dracut in F17/rawhide

Comment 7 John Florian 2012-02-20 13:27:44 UTC
Thanks Harald.

I know it's almost pointless, but would it be too much to ask for an update to F16 as well?  It certainly wouldn't fix the F16 Release proper, but for those of us who make custom spins on a daily basis, it would be welcomed.  I know my employer would much prefer that our deployed custom spins be something that can be made out of the box without requiring temporary patches.

Comment 8 Harald Hoyer 2012-02-20 14:51:00 UTC
(In reply to comment #7)
> Thanks Harald.
> 
> I know it's almost pointless, but would it be too much to ask for an update to
> F16 as well?  It certainly wouldn't fix the F16 Release proper, but for those
> of us who make custom spins on a daily basis, it would be welcomed.  I know my
> employer would much prefer that our deployed custom spins be something that can
> be made out of the box without requiring temporary patches.

you could probably modify the kickstart for the livecd creation and add:

device ums_realtek

Comment 9 John Florian 2012-02-20 16:19:20 UTC
(In reply to comment #8)

> you could probably modify the kickstart for the livecd creation and add:
> 
> device ums_realtek

Clever!  I wasn't aware of that KS option.  I'll give it a try as soon as time permits.  Thanks so much for the pointer.

Comment 10 joe 2013-01-06 16:01:53 UTC
hi guys, I had this same error on a CentOS 6.2 copy I made on an SD card.

Upon further inspection I found that the SD card was being detected fine but the UUID was not being found due to it being case sensitive. The UUID in the /dev/disk/by-uuid folder was in lowercase, though the UUID in the syslinux/extlinux config was in uppercase. disktype & blkid also present UUID's in uppercase.

I hope that helps someone, though RFC4122 says UUID's should be in lower case. There could be a few places that need editing to enforce lower case UUIDs.


Note You need to log in before you can comment on or make changes to this bug.