配置 initramfs-tools 以将 curl 添加到 initramfs,并在 Ubuntu 10.04 Server 中的 intitrd 中在启动时在脚本中运行 curl

配置 initramfs-tools 以将 curl 添加到 initramfs,并在 Ubuntu 10.04 Server 中的 intitrd 中在启动时在脚本中运行 curl

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

相关内容