Konfigurieren Sie initramfs-tools, um curl zu initramfs hinzuzufügen, und führen Sie curl in einem Skript beim Booten aus, während Sie sich im Intitrd in Ubuntu 10.04 Server befinden

Konfigurieren Sie initramfs-tools, um curl zu initramfs hinzuzufügen, und führen Sie curl in einem Skript beim Booten aus, während Sie sich im Intitrd in Ubuntu 10.04 Server befinden

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.

verwandte Informationen