Gentoo Archives: gentoo-genkernel

From: Zachary Bedell <zac@××××××××××.org>
To: gentoo-genkernel@l.g.o
Subject: Re: [gentoo-genkernel] Genkernel / Dracut / ZFS, where to start?
Date: Sun, 03 Jul 2011 19:09:01
In Reply to: Re: [gentoo-genkernel] Genkernel / Dracut / ZFS, where to start? by "Amadeusz Żołnowski"
Hash: SHA1

I've managed to make a bit of progress with getting Genkernel/Dracut/ZFS to all play nicely together.  I'm running into some trouble with devices after the initramfs is actually done, and I'm not sure if I'm just hitting the current limitations of the Genkernel/Dracut branch or if there's something silly I might be doing.  My first suspicion is that Dracut's using udev while the rest of my system is setup for mdev is probably the source of my issues, but my knowledge of the various device manager packages is pretty limited at this point.

Here's what I've managed to do thus far:

I did git-fork most of what I'm working on, not for worries of lack of collaboration, but just because I like to always run everything through Portage so I know it all JustWorks(TM), and I haven't manually hacked something that I forgot to checkin later.  So forks all around, and a Layman overlay later, I'm in business.  I ended up using a public Github for everything just to avoid having to setup a local Git server.

Genkernel (dracut branch):
  Originally forked from the dracut branch on  So far, all I've had to change was the command line/conf file logic to add ZFS plus adding zfs to the list of modules in

Portage Overlay:
  Git-based ebuilds for ZFS and Genkernel.  There's one for SPL as well, but I'm using stock upstream of that now.

ZFS itself:
  Haven't changed the driver at all, but the Dracut module currently lives in there.

As for Dracut itself, I've just used the stock sys-kernel/dracut-010-r3 package from Portage without any forking necessary.

I've brought the Dracut module in ZFS up to date (committed to my branch) which took a bit of work.  The module does manage to detect the proper ZFS pool & root fs, mount it, pivot to it, and hand off to init successfully.  

Where things start going wrong is when the init scripts inside the real root try to load the first module which requires firmware (a cx88/xc5000 video encoder).  Boot hangs there for a minute before the module load fails, and dmesg shows errors about loading the firmware.  Past that, the attempt to start MD (for the RAID-1 boot partitions -- haven't got ZFS/Grub working natively yet...) also hangs for a moment and complains about /dev/md0 missing.  Once past that, the system is usable (sans video hardware of course).  /proc/mdstat shows that the MD is in fact loaded and sync'd, but the node for it is missing in /dev, so mounting it fails.

So as I speculated above, I'm guessing udev in the initramfs and mdev in the live system aren't a winning combination.  Is this something that's known for the Dracut branch at this point?  Is there any way to work around the problems to get the live system's module & firmware loading functioning?  

I do have a full capture of both boots (old genkernel versus dracut/genkernel).  They're video screen captures from remote KVM hardware, so I tossed them up on YouTube in case they're of any help.

Classic Genkernel:


I'm going to brush up a bit on the [mu]dev packages, but any pointers would be much appreciated.

Best regards,
Zac Bedell

On Jun 21, 2011, at 1:52 AM, Amadeusz Żołnowski wrote:
> > Excerpts from Zachary Bedell's message of Tue Jun 21 01:34:07 +0200 > 2011: >> Is there anything resembling an "official" repo for Dracut work at >> this point? Likewise, is there a good set of ebuilds that I should >> use as a starting point? > > You should work on official Dracut's repo [0]. I'm contributing to this > one and there's no need for a fork because of great collaboration with > upstream. When you're ready, module should be posted to > <initramfs@×××××××××××.org> as a git-formatted patch against HEAD. You > can do a fork as well and post pull-request on this mailing list. > > alexxy is working on bringing ZFS to Gentoo, but afaik he's lacking > someone interested in updating dracut module from repo [0] you've > forked. > > [0] > [1]
-----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.8 (Darwin) iEYEARECAAYFAk4QmccACgkQq+EtLVpY/F5DlwCg1w3weVvIDNE5uyhCjP/48ggg McoAn0uLPQWBk7/slcnK2mQjttQqSYHk =CqzA -----END PGP SIGNATURE-----


Subject Author
Re: [gentoo-genkernel] Genkernel / Dracut / ZFS, where to start? Zachary Bedell <zac@××××××××××.org>