
我正在嘗試了解 initramfs 的工作原理以及如何配置它。我希望將curl 添加到initramfs 中可用的套件中,並運行一個在啟動期間使用curl 的腳本(這意味著必須在啟動之前設定網路)。
我該怎麼做呢? (升級核心時我也需要它工作。)
答案1
您需要編輯 initramfs 掛鉤。像這樣創建你自己的文件:
$ 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
重建你的 initramfs:
$ sudo update-initramfs -u
update-initramfs: Generating /boot/initrd.img-3.8.0-4-generic
檢查它是否確實降落在那裡:
$ 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
答案2
首先你要知道的是 Ubuntu 使用的是一個名為 Upstart 的系統,而不是傳統的 init。仍使用初始 ramdisk,但您將重新設定 upstart 而不是 init。
其次,您是否想完全在 initrd 的上下文中執行此操作?如果是這樣,事情就會複雜得多。