
Ich versuche herauszufinden, wie das initramfs funktioniert und wie es konfiguriert werden kann. Ich möchte, dass curl zu den im initramfs verfügbaren Paketen hinzugefügt wird und dass beim Booten ein Skript ausgeführt wird, das curl verwendet (was bedeutet, dass das Netzwerk vorher eingerichtet werden muss).
Wie soll ich das machen? (Es muss auch beim Upgrade meines Kernels funktionieren.)
Antwort1
Sie müssen Ihre Initramfs-Hooks bearbeiten. Erstellen Sie Ihre eigene Datei wie folgt:
$ cat /usr/share/initramfs-tools/hooks/curl
#!/bin/sh -e
PREREQS=""
case $1 in
prereqs) echo "${PREREQS}"; exit 0;;
esac
. /usr/share/initramfs-tools/hook-functions
copy_exec /usr/bin/curl /bin
Erstellen Sie Ihr Initramfs neu:
$ sudo update-initramfs -u
update-initramfs: Generating /boot/initrd.img-3.8.0-4-generic
Prüfen Sie, ob es tatsächlich dort gelandet ist:
$ lsinitramfs -l /boot/initrd.img-3.8.0-4-generic | grep curl
-rw-r--r-- 1 root root 385704 Nov 28 18:32 usr/lib/x86_64-linux-gnu/libcurl.so.4
-rwxr-xr-x 1 root root 150344 Nov 28 18:32 bin/curl
Antwort2
Als erstes sollten Sie wissen, dass Ubuntu anstelle des herkömmlichen Init ein System namens Upstart verwendet. Die ursprüngliche Ramdisk wird weiterhin verwendet, aber Sie konfigurieren Upstart anstelle von Init neu.
Zweitens: Möchten Sie dies vollständig im Kontext eines initrd tun? Wenn ja, wäre dies viel komplizierter.