Linuxkernel: Warum cpio als initramfs?
-
Hallo,
weiß zufällig jemand, warum der Linux-Kernel standardmäßig ein gezipptes cpio-Archiv als initramfs benutzt?
Ich mein: Warum cpio?
Man könnte auch tar verwenden, dadurch hat mein keine wirklichen Nachteile, oder?
Ich hab gerade nachgeschaut, noch bis vor einigen Kernelversionen wurde als initramfs ein gezipptes ext2-image verwendet.
Warum cpio?
-
Weil cpio noch einen kleinen Tacken einfacher ist als tar.
-
Versteh ich nicht schrieb:
weiß zufällig jemand, warum der Linux-Kernel standardmäßig ein gezipptes cpio-Archiv als initramfs benutzt?
Vermutlich weils dazu geeignet ist.
Versteh ich nicht schrieb:
Ich mein: Warum cpio?
Man könnte auch tar verwenden, dadurch hat mein keine wirklichen Nachteile, oder?
http://www.gnu.org/software/tar/manual/html_section/cpio.html: "cpio handles special files; traditional tar doesn't." Vielleicht geht es mit tar durch Hacks, aber cpio ist einfacher.
Beachte ausserdem, dass es sich nicht um ein full-blown cpio handelt, sondern um cpio mit "-H newc". Ich kann mir vorstellen, dass das am kürzesten zu implementieren ist, was kritisch für die Performance ist, da dann weniger Programmcode in den Memory geladen werden muss.
Ich hab gerade nachgeschaut, noch bis vor einigen Kernelversionen wurde als initramfs ein gezipptes ext2-image verwendet.
Dann muss der ganze ext2-Driver von der Platte gelesen werden, bevor mit dem Boot gestartet werden kann.
-
SeppJ schrieb:
Weil cpio noch einen kleinen Tacken einfacher ist als tar.
Es gibt aber Formate, die noch einfacher sind, und geeignet wären, z.b. "ar", das wird sonst nur für static libs verwendet:
http://en.wikipedia.org/wiki/Ar_(Unix)#File_headerIst auch alles dabei, aber eben noch einfacher.
-
http://www.cs.helsinki.fi/linux/linux-kernel/2001-51/0038.html
vs
http://www.cs.helsinki.fi/linux/linux-kernel/2001-51/0085.html