Home_greyopenFATE - openSUSE feature tracking > #310491
Dashboard | Search | Sign up | Login

Please login or register to be able to edit or vote this feature.

Add dracut to openSUSE

Feature state

openSUSE Distribution
Done
openSUSE-11.4
Rejected

Description

Dracut is suppose to be a replacement for the old initrd tools like mkinitrd.

From the project description, dracut is an initramfs infrastructure. Unlike previous initramfs systems, Dracut aims to have as little as possible hard-coded into the initramfs.

It contains specific configuration files for init drivers and includes plymouth support. Dracut advantage seems to be a modern replacement to generate initrd and it's suppose to be easy to use/manage.

See http://sourceforge.net/apps/trac/dracut/wiki for details.

mkinitrd features (ie what each module do) :

  • acpi.sh : provides ACPI DSDT / load thermal processor fan on x86/x86-64/ia64
  • biosdevname.sh : copy biosdevname binary / udev rules to initrd
  • blockpartition.sh: list partitions
  • block.sh: resolve kernel modules needed for (SCSI) devices (potentially don't include all libata drivers), including PATA, cciss, io2, xen, DAC960, cpqarray, vxdmp, mmc, fio. Can potentially create "monster" initrd)
  • blogd.sh : start blogd
  • boot.sh: load selinux policies, mount /proc, /usr, move /dev, /run
  • busybox.sh: allow to use busybox in initrd
  • cifs.sh: allow to boot with root on cifs
  • clock.sh: copy zoneinfo and hwclock setup
  • createfb.sh: setup fb devices
  • dmraid.sh: support for dmraid devices
  • dm.sh: support for dm devices (including copying udev rules)
  • EC2.sh: force TERM to dumb for xen
  • fcoe.sh: FC over Ethernet support
  • firewire.sh: root on firewire support (nothing to do, actually)
  • ibft.sh: get network config from iSCSI Firmware Boot table
  • iscsi.sh: setup iSCSI (SCSI over IP), once network is up
  • kdump.sh: kdump support
  • kms.sh: setup and run kms modules (handle nomodeset option too)
  • kpartx.sh: setup kpartx support (including udev rules)
  • lldpad.sh: Link Layer Discovery Protocol support (for FCoE)
  • luks2.sh: LUKS support (english keyboard only) for rootfs (initrd in crypttab)
  • lvm2.sh: lvm support for rootfs
  • md.sh: md soft raid support (including resume)
  • modules.sh: kernel modules copy (including xen, scsi dependencies). Careful, "supported" kernel handling will break with SLE12 (ipv6 is no longer an module and isn't a "file system", despite what comment says there :)
  • mount.sh: mount / (possibly read-only)
  • mtab.sh: upgrade /etc/mtab to a symlink
  • multipath.sh: multipath support (dm-multipath dm-round-robin scsi-dh-emc scsi-dh-hp_sw scsi-dh-rdac scsi-dh-alua )
  • netconsole.sh: support netconsole
  • network.sh: setup network
  • nfs.sh: root over nfs (option : info from DHCP server)
  • resume.kernel.sh: resume (kernel)
  • resume.userspace.sh: resume (userspace)
  • rtc.sh: load rtc_cmos (why not do it with udev..)
  • shell.sh: emergency shell
  • splash.sh: copy bootsplash on x86/x86-64
  • splashy.sh: splashy support ?!?!
  • start.sh: autoload modules listed in /etc/sysconfig/kernel
  • storage.sh: (including journal on a separate device)
  • udev.sh: start udev
  • usb.sh: no nothing now
  • vendor.sh: deprecated

dracut features:

  • bootchart support
  • can use dash (if present)
  • fips : check initrd integrity
  • caps: allow to drop capabilities
  • busybox support
  • allow to configure font / keymaps for i18n
  • network support (write configuration using fedora ifcfg format)
  • boot splash support : plymouth, gentoo
  • add support for btrfs multi-devices (raid)
  • crypted root (luks)
  • dm support
  • dmraid support
  • dmsquash/squashfs support (live support)
  • allow to fetch live image from network and run it (http(s)/ftp only ATM)
  • mdadm support
  • multipath support
  • support for GPG (symmetrically) encrypted keys for crypt
  • dasd (s390) support
  • FC over ethernet support (including lldpad)
  • iSCSI support (including ibft support)
  • NBD (network block device) support
  • NFS support (including root path obtained from DHCP server)
  • resume support (both kernel and uswsusp)
  • zfcp / znet/ccwsupport (s390)
  • mount securityfs
  • biosdevname support
  • master key support for kernel
  • ecryptfs support
  • EVM support (needed for Integrity Measurement Architecture (IMA))
  • SELinux support
  • syslog support inside initrd, pushing to remote syslog server over ethernet
  • mount /usr
  • support fsck inside initrd

missing features in dracut :

  • dsdt support (skeleton in place)
  • blogd
  • cifs
  • rtc / zoneinfo
  • EC2 (but it is just a workaround)
  • kdump
  • mtab "migration"
  • "supported" option for kernel module
  • netconsole

features only present in dracut:

  • dash support (no hard requirement on bash)
  • bootchart support (less needed with systemd nowadays)
  • fips (initrd integrity check)
  • dropping capabilities
  • i18n support for font and keymap (needed when inputting a passphrase)
  • live image support (through squashfs / dmsquash)
  • support for GPG (symmetrical) keys for cryptsetup
  • dash / zfcp / znet / ccw support (for s390, we might have them too, I couldn't check)
  • NBD (network block device) support
  • ecryptfs support
  • EVM (need for Integrity Measurement Architecture) support
  • master key support for kernel
  • syslog support inside initrd, pushing to remote server over network

Another issue we currently have in our distribution is maintaining 3 different initrd implementations : mkinitd (for installed system), kiwi (for generated image) and installation initrd (for installer)

Requirements for kiwi :

  • boot of root overlay systems (clicfs, device-mapper snapshot, etc...)
  • boot of split systems (symlinked root)
  • boot of oem images which repartitions itself on first boot
  • boot of install images which asks the user for the deployment target
  • boot of pxe netboot systems (communications with bootp server)

Requirements for installation initrd:

- start a program ('linuxrc') that lets you select the install repo and do
the hardware setup in various ways (note that this includes lots of s390
idiosyncrasies)
- handle driver updates somehow ('linuxrc' does this atm)
- setup environment and pass options to yast
- maintain a list of modules to include
- it must be built for various kernel flavours (e.g. xen)

Discussion


icons/user_comment.png J. E. wrote: (3 years ago)

NEGATIVE. openSUSE has replaced its mkinitrd by a new implementation in 11.2 that is equally flexible, if not even better than dracut. It certainly is easier to jump into how it's supposed to work. With the dracut as shipped on F-13 I can't really say the same.

If you ever ran `mkinitrd -h` on SUSE... well just try finding the equivalents in dracut. You don't.

icons/user_comment.png A. J. wrote: (3 years ago)

From the discussions at the openSUSE conference, I see interest in doing this. Let's talk together and decide what's best. IMO working on a common solution has its benefits - and if there are usability problems, we should be able to improve dracut.

icons/user_comment.png L. M. wrote: (3 years ago)

I worked a few weeks ago on adding *SUSE support on dracut but looks like Harold finished the job for me. I guess having both on Factory doesn't hurt and on the release cycle we should decide what fits best for the job.

Now i think we should clean Harold spec and SR to Factory.

icons/user_comment.png N. M. wrote: (3 years ago)

If Plymouth will move in, most likely dracut would help since it supports plymouth and that can do a lot on soften plymouth introduction to many users.

just a random thought...

icons/user_comment.png J. E. wrote: (3 years ago)

It's not like smkinitrd would not be able to support plymouth.

icons/user_comment.png R. M. wrote: (3 years ago)

A similar entry has been opened here: 
https://features.opensuse.org/310784#

icons/user_comment.png A. J. wrote: (3 years ago)

I did not find this entry, so let me mark 310784 as duplicate now.

icons/user_comment.png H. R. wrote: (3 years ago)

Yes, I do agree, mkinitrd might be easier to use.

And the paragraph about plymouth is just pointless, as I'm not aware we're using plymouth anywhere in the distro.

However, I (as one of the main authors of mkinitrd) am in favour of this feature. The main problem with mkinitrd is that we (as in the openSUSE community) failed to get any public traction here. The number of external commits to mkinitrd are zero. Whereas dracut has an active mailinglist and numerous contributors. It might be inferior in some places, but that doesn't mean we cannot improve it. And the other big advantage here is that we will be picking up any new features automatically, without us having to re-implement it in mkinitrd.

icons/user_comment.png R. X. wrote: (3 years ago)

Since openSUSE 11.4 is already released, shouldn't we aim for openSUSE 11.5 now?

icons/user_comment.png P. J. wrote: (3 years ago)

If the main benefit is what Hannes describes, and assuming that dracut is not or will not be mkinitrd plug-compatible, it seems like significant effort for little gain. (I'm biased, I like mkintrd).

icons/user_comment.png C. R. wrote: (2 years ago)

What Hannes says is very important, it might not be for you as an user, but having more developers and people looking at the code is a HUGE pro in favor of dracut, from the distribution mainteniance point of view.

icons/user_comment.png J. R. wrote: (2 years ago)

I'm trying to bring this feature back as we are moving to systemd. Apparently there are some neat things systemd does that require dracut. While it might be late for 12.1, I think we should definitely consider it for 12.2

icons/user_comment.png M. M. wrote: (2 years ago)

AFAIK, Frederic is interested in adding Dracut. I never had time to do this.

icons/user_comment.png F. C. wrote: (19 months ago)

dracut is now in Factory.

not all features from mkinitrd has been implemented in dracut yet, not support for it in "mkinitrd" script.

icons/user_comment.png F. C. wrote: (2 years ago)

mkinitrd features (ie what each module do) :

  • acpi.sh : provides ACPI DSDT / load thermal processor fan on x86/x86-64/ia64
  • biosdevname.sh : copy biosdevname binary / udev rules to initrd
  • blockpartition.sh: list partitions
  • block.sh: resolve kernel modules needed for (SCSI) devices (potentially don't include all libata drivers), including PATA, cciss, io2, xen, DAC960, cpqarray, vxdmp, mmc, fio. Can potentially create "monster" initrd)
  • blogd.sh : start blogd
  • boot.sh: load selinux policies, mount /proc, /usr, move /dev, /run
  • busybox.sh: allow to use busybox in initrd
  • cifs.sh: allow to boot with root on cifs
  • clock.sh: copy zoneinfo and hwclock setup
  • createfb.sh: setup fb devices
  • dmraid.sh: support for dmraid devices
  • dm.sh: support for dm devices (including copying udev rules)
  • EC2.sh: force TERM to dumb for xen
  • fcoe.sh: FC over Ethernet support
  • firewire.sh: root on firewire support (nothing to do, actually)
  • ibft.sh: get network config from iSCSI Firmware Boot table
  • iscsi.sh: setup iSCSI (SCSI over IP), once network is up
  • kdump.sh: kdump support
  • kms.sh: setup and run kms modules (handle nomodeset option too)
  • kpartx.sh: setup kpartx support (including udev rules)
  • lldpad.sh: Link Layer Discovery Protocol support (for FCoE)
  • luks2.sh: LUKS support (english keyboard only) for rootfs (initrd in crypttab)
  • lvm2.sh: lvm support for rootfs
  • md.sh: md soft raid support (including resume)
  • modules.sh: kernel modules copy (including xen, scsi dependencies). Careful, "supported" kernel handling will break with SLE12 (ipv6 is no longer an module and isn't a "file system", despite what comment says there :)
  • mount.sh: mount / (possibly read-only)
  • mtab.sh: upgrade /etc/mtab to a symlink
  • multipath.sh: multipath support (dm-multipath dm-round-robin scsi-dh-emc scsi-dh-hp_sw scsi-dh-rdac scsi-dh-alua )
  • netconsole.sh: support netconsole
  • network.sh: setup network
  • nfs.sh: root over nfs (option : info from DHCP server)
  • resume.kernel.sh: resume (kernel)
  • resume.userspace.sh: resume (userspace)
  • rtc.sh: load rtc_cmos (why not do it with udev..)
  • shell.sh: emergency shell
  • splash.sh: copy bootsplash on x86/x86-64
  • splashy.sh: splashy support ?!?!
  • start.sh: autoload modules listed in /etc/sysconfig/kernel
  • storage.sh: (including journal on a separate device)
  • udev.sh: start udev
  • usb.sh: no nothing now
  • vendor.sh: deprecated

dracut features:

  • bootchart support
  • can use dash (if present)
  • fips : check initrd integrity
  • caps: allow to drop capabilities
  • busybox support
  • allow to configure font / keymaps for i18n
  • network support (write configuration using fedora ifcfg format)
  • boot splash support : plymouth, gentoo
  • add support for btrfs multi-devices (raid)
  • crypted root (luks)
  • dm support
  • dmraid support
  • dmsquash/squashfs support (live support)
  • allow to fetch live image from network and run it (http(s)/ftp only ATM)
  • mdadm support
  • multipath support
  • support for GPG (symmetrically) encrypted keys for crypt
  • dasd (s390) support
  • FC over ethernet support (including lldpad)
  • iSCSI support (including ibft support)
  • NBD (network block device) support
  • NFS support (including root path obtained from DHCP server)
  • resume support (both kernel and uswsusp)
  • zfcp / znet/ccwsupport (s390)
  • mount securityfs
  • biosdevname support
  • master key support for kernel
  • ecryptfs support
  • EVM support (needed for Integrity Measurement Architecture (IMA))
  • SELinux support
  • syslog support inside initrd, pushing to remote syslog server over ethernet
  • mount /usr
  • support fsck inside initrd

missing features in dracut :

  • dsdt support (skeleton in place)
  • blogd
  • cifs
  • rtc / zoneinfo
  • EC2 (but it is just a workaround)
  • kdump
  • mtab "migration"
  • "supported" option for kernel module
  • netconsole

features only present in dracut:

  • dash support (no hard requirement on bash)
  • bootchart support (less needed with systemd nowadays)
  • fips (initrd integrity check)
  • dropping capabilities
  • i18n support for font and keymap (needed when inputting a passphrase)
  • live image support (through squashfs / dmsquash)
  • support for GPG (symmetrical) keys for cryptsetup
  • dash / zfcp / znet / ccw support (for s390, we might have them too, I couldn't check)
  • NBD (network block device) support
  • ecryptfs support
  • EVM (need for Integrity Measurement Architecture) support
  • master key support for kernel
  • syslog support inside initrd, pushing to remote server over network

Another issue we currently have in our distribution is maintaining 3 different initrd implementations : mkinitd (for installed system), kiwi (for generated image) and installation initrd (for installer)

icons/user_comment.png C. R. wrote: (2 years ago)

"dsdt support (skeleton in place)"
It does not matter as that feature has been non working since the relevant kernel support was removed.
"blogd"
It does not currently work either.
"netconsole"
Does not work either, I sent a patch to fix it recently though.
""supported" option for kernel module"

probably only relevant to SLE..

icons/user_comment.png D. W. wrote: (9 months ago)

I'm missing the clock correction if BIOS/firmare clock is not running in UTC, compare with Bug #830061 for SLES12 and Bug #830060 for openSUSE

Last change: 7 months ago
Voting
Score: 19
  • Negative: 4
  • Neutral: 4
  • Positive: 23
Feature Export
Application-xmlXML   Text-x-logPlaintext   PrinterPrint