
Estou tentando aprender como funciona o initramfs e como ele pode ser configurado. Gostaria que o curl fosse adicionado aos pacotes disponíveis no initramfs e executasse um script que usasse o curl durante a inicialização (o que significa que a rede deve ser configurada antes).
Como devo fazer isso? (Eu também preciso que funcione ao atualizar meu kernel.)
Responder1
Você precisa editar seus ganchos do initramfs. Crie seu próprio arquivo assim:
$ 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
Reconstrua seu initramfs:
$ sudo update-initramfs -u
update-initramfs: Generating /boot/initrd.img-3.8.0-4-generic
Verifique se ele realmente pousou lá:
$ 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
Responder2
A primeira coisa que você quer saber é que o Ubuntu está usando um sistema chamado Upstart em vez do tradicional init. O ramdisk inicial ainda é usado, mas você reconfigurará o upstart em vez do init.
Segundo, você deseja fazer isso inteiramente no contexto de um initrd? Nesse caso, isso seria muito mais complicado.