我正在尝试了解 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 的上下文中执行此操作?如果是这样,这会复杂得多。