9343
Comment: clean bad dup
|
9474
Resurrect and clarify hilite erronously dropped with rev106.
|
Deletions are marked like this. | Additions are marked like this. |
Line 92: | Line 92: |
||'''Dealing with errors'''||Drops into a shell to let you fix stuff.||Fails to build image if uncertain it will work. No repair possibility on boot.|| | ||'''Dealing with errors at image build time'''||Creates a larger more generic image if uncertain it will work.||Refuses to build image if uncertain it will work.|| ||'''Dealing with errors at boot time'''||Drops into a shell to let you fix stuff.||No repair possibility on boot.|| |
The switch from initrd to initramfs for newer Debian kernels
?TableOfContents()
Debian kernels require an initial ramdisk to work
Debian has for some time distributed and installed modular kernels by default, depending on the helper package initrd-tools to add the needed modules in a cramfs initrd-image.
2.6 has a newer format, initramfs, which is an cpio gzipped archive. The handoff to early userspace is much earlier. Initramfs allows a cleaner interface. The initrd hacks for nfs root and such are scheduled to be removed for 2.7.
Initrd-tools relies on devfs and on removed or deprecated /proc interfaces. It has no maintainer. It's ?CodingStyle is weird. There is no support for sata thus responsible for many sarge install failures nor scsi for kernels >= 2.6.10. Its use with recent 2.6 linux kernels is discouraged.
Several tools produce initramfs images, each with some spiffy features and annoying limitations...
Comparison of the various replacements for initrd-tools
Architectures |
["initramfs-tools"] |
["Yaird"] |
amd64 |
Works (MarcoAmadori, fs) |
Works (MarcoAmadori) |
arm |
Needs Test |
Needs Test |
alpha |
Works (nobse) |
Fails to exec /sbin/init (invalid interpreter, iirc) (DannFrazier) |
hppa |
Works (kyle) |
Needs Test |
i386 |
Works (Jeff Bailey) |
Works, but no upgrade path from Sarge (JonasSmedegaard) |
ia64 |
Works (lamont) |
Needs Testing |
m68k |
no klibc (not yet ported) |
Needs Test |
mips |
no klibc (linux-header missing) |
Needs Test |
mipsel |
no klibc (linux-header missing) |
Needs Test |
powerpc |
Works (DannFrazier?) |
Works (?SvenLuther) |
s390 |
dasd might need better integration (see [http://bugs.debian.org/340508 #340508]) |
Might work with manual editing config (see [http://bugs.debian.org/340344 #340344]) |
sh |
no klibc (unstested?) |
Needs Test |
sparc |
Works (?JeffBailey) |
Works (JurijSmakov) |
Root Devices |
initramfs-tools |
yaird |
fstab label and UUID |
Works?FootNote(No need to parse fstab as bootloader cmdline sets root. No hardcoding of the root partition.) |
only ext2 and reiser (see [http://bugs.debian.org/337065 #337065] for workaround)?FootNote(Fstab labels and UUID on yaird works but yuckilly: Needs to be rewritten to blkid, there are good ideas in http://bootutils.sourceforge.net/) (ErikKonijnenburg) |
md (fs directly) |
Works (maximilianattems) |
Works (JonasSmedegaard) |
["LVM"] |
Works (maximilianattems) |
Works (MarcoAmadori) |
LVM-over-md |
Works (?DanJacobowitz) |
Works (MarcoAmadori) |
["EVMS"] (fs directly) |
Works (Sesse) |
Works in 0.12 (MarcoAmadori) |
LVM-over-EVMS |
Works (Sesse) |
Works in 0.12 (MarcoAmadori) |
md-over-EVMS |
Works (Sesse) |
Works in 0.12 (MarcoAmadori) |
LVM-over-md-over-EVMS |
Works (Sesse) |
Works in 0.12 (MarcoAmadori) |
Cryptsetup |
No hooks yet in cryptsetup (see [http://bugs.debian.org/338405 #338405]) |
Works (?ManojSrivasta) not for all (see [http://bugs.debian.org/336599 #336599]) |
Cryptsetup-luks?FootNote(cryptsetup-luks is not packaged officially for Debian) |
Needs test |
Tested round 0.0.8 (ErikKonijnenburg) |
loopaes |
Needs Test |
No |
["NFS"] |
Requires manual editing config file (?JeffBailey) |
Requires manual editing config file (JonasSmedegaard) |
["SCSI"] |
Works (?JeffBailey) |
Needs test |
["SATA"] |
Works (?JeffBailey) |
Works (MarcoAmadori) |
USB-stick |
Needs Test |
Needs Test |
IEEE1394 |
Needs Test |
No |
Compaq Smart Arrays |
Unknown |
added in 0.0.11-11, see [http://bugs.debian.org/335601 #335601] |
dmraid |
Needs test, hooks can be found [https://wiki.ubuntu.com/FakeRaidHowto#head-2316ce782c999621d013c90ad3d4cc61349b46db here] |
In progress, patch see [http://bugs.debian.org/337724 #337724] |
Other features |
initramfs-tools |
yaird |
cramfs initrd |
No. |
Removed in 0.0.12, any reason to put it back? (ErikKonijnenburg) |
USB keyboard |
Works (?TommiVainikainen) |
Works (ErikKonijnenburg) |
swsusp |
Works (DavidHärdeman) |
No |
swsusp2 ?FootNote(swsusp2 is not in mainline kernel) |
Needs test |
requires manual editing config files, and needs improvements (see [http://bugs.debian.org/329319 #329319]) |
External hooks |
Yes |
Requires manual editing config file |
Package requirements (risk of delays on some archs) |
initramfs-tools |
yaird |
klibc |
Yes |
No |
busybox |
Yes |
No |
["udev"] |
Yes |
No |
perl |
No |
Yes |
HTML::Template |
No |
Yes |
Parse::?RecDescent |
No |
Yes |
Arch: any |
No |
Yes (includes a few tiny C-based helper tools) |
Runtime requirements |
initramfs-tools |
yaird |
sysfs?FootNote(sysfs required at runtime means to depend on a mounted /sys tree. This limits to installing only '''from''' 2.6.8 and newer - specifically making upgrades directly from Linux 2.4.x to Linux 2.6.x impossible (Debian Sarge installed 2.4.x kernel by default on many arches!)) |
Only sometimes?FootNote(sysfs is required for initramfs-tools at runtime in "dep" mode, but not in "most" mode (the default mode in Debian). Images created in "most" mode might be too big for some arches or bootloaders.) |
Yes |
Boot-time requirements |
initramfs-tools |
yaird |
udev?FootNote(udev required at boot-time limits to installing only Linux 2.6.12 and newer) |
Yes |
No |
Legend |
|
|
Great |
|
Not great |
|
Bad |
|
Unknown, needs to be tested |
Only some kernel versions work
Recent Linux kernels query the ramdisk tool prior to use if it is expected to succeed. Currently the following simplified queries try to handle all of the above contraints (see ?FlexibleKernelHandling for a future more finegrained approach):
kernel-package query |
initramfs-tools |
yaird |
Supported host version |
any |
>=2.6.8 |
Supported target version |
>=2.6.12 |
>=2.6.8 |
Comparable hilites beyond simply working
The main goal of all initrd tools is off course to generate an initial ramdisk to help boot a kernel properly. But beyond that, the tools have fundamental differences in their approach:
Hilite |
initramfs-tools |
yaird |
howto compose images |
Builds generic image with plenty of included modules, and probes at boot time what to load |
Builds specific image probing/resolving with sysfs at build time the modules to include and load at boot time |
Ramdisk size |
Relatively large by default- option of relatively small (with larger risk of failing) |
quite small |
Dealing with MD (lvm, md, evms) |
Activates all md, evms devices and all logical volumes of the root volume group. |
Activates only md and/or LVM volume needed for mounting rootfs |
Dealing with errors at image build time |
Creates a larger more generic image if uncertain it will work. |
Refuses to build image if uncertain it will work. |
Dealing with errors at boot time |
Drops into a shell to let you fix stuff. |
No repair possibility on boot. |
Copying root |
Works out of the box. Noticed on boot by the new root bootparam. |
Needs a newly regenerated initramfs. |
libc used |
Both klibc and (externally pulled in) glibc |
glibc (can be compiled against klibc if needed) |
Hilites not directly comparable
initramfs-tools
- Written in shell - has backward compatible initrd-tools invocations and an "update-initramfs" for endusers
- Used by default on Ubuntu releases Breezy, Dapper
Debian package is maintained by ?JeffBailey, maximilianattems
Upstream Adam Conrad, Scott James Remnant https://wiki.ubuntu.com/Initramfs
Among the hooks support is "usblash", a funky userspace bootsplash utility https://wiki.ubuntu.com/UsplashInitramfs
yaird
- Written in perl - introduces a potentially new big dependency onto the system (you might prefer to skip that on a firewall)
- Tries hard to spot problems in the image build proces and fails _before_ reboot in such cases.
- Upstream software is developed for both Debian-based and Redhat-based systems. The build process is expressed in a single config file, making it easy to do extreme customizations (support for initrd format is possible too, just unmaintained upstream).
Debian package is maintained publicly at [http://alioth.debian.org/projects/yaird/ Alioth] by the [http://alioth.debian.org/project/memberlist.php?group_id=30832 Yaird Team] (starring the upstream maintainer).
Homepage (with details on (un)supported features and limitations): http://yaird.alioth.debian.org/