配置 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 的上下文中執行此操作?如果是這樣,事情就會複雜得多。

相關內容