![Debian Wheezy の initramfs の /etc にファイルを追加する](https://rvso.com/image/50601/Debian%20Wheezy%20%E3%81%AE%20initramfs%20%E3%81%AE%20%2Fetc%20%E3%81%AB%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E8%BF%BD%E5%8A%A0%E3%81%99%E3%82%8B.png)
initramfs 環境の /etc で使用できるようにファイルを追加しました/etc/initramfs-tools/etc/motd
。しかし、表示されません。これは、ファイルに使用可能なすべての権限を与えた 2 回目の試みです (600 も使用しました)。
root@cow:~# ls -l /etc/initramfs-tools/etc/
total 8
drwx------ 2 root root 4096 Sep 19 00:57 dropbear
-rwxrwxrwx 1 root root 117 Sep 29 15:32 motd
その後sudo update-initramfs -u
、initramfs 環境で起動し、Dropbear 経由で SSH でログインしましたが、ファイルはまだ存在しません。
~ # ls -l /etc
total 20
-rw------- 1 root 0 4077 Sep 29 13:44 boottime.kmap.gz
drwx------ 2 root 0 0 Sep 29 13:44 dropbear
-rw-r--r-- 1 root 0 1991 Sep 29 13:44 ld.so.cache
-rw-r--r-- 1 root 0 34 Sep 18 17:24 ld.so.conf
drwxr-xr-x 2 root 0 0 Sep 18 17:25 ld.so.conf.d
drwx------ 2 root 0 0 Sep 29 13:44 lvm
drwx------ 2 root 0 0 Sep 29 13:44 mdadm
drwx------ 2 root 0 0 Sep 29 13:44 modprobe.d
-rw------- 1 root 0 15 Sep 29 13:44 nsswitch.conf
-rw------- 1 root 0 30 Sep 29 13:44 passwd
drwx------ 2 root 0 0 Sep 29 13:44 udev
どのように追加すればよいですか? 上記の方法が機能しないのはなぜですか?
答え1
マスター ファイルを間違った場所に配置しています。initramfs フックを使用する必要があります。
下を見れば/usr/share/initramfs-tools/hooks
例が分かりますが、簡単に言うと次のようなことをしたいのです:
#!/bin/sh
PREREQ=""
prereqs()
{
echo "$PREREQ"
}
case $1 in
# get pre-requisites
prereqs)
prereqs
exit 0
;;
esac
. /usr/share/initramfs-tools/hook-functions
mkdir -p ${DESTDIR}/etc/motd || true
cp -pnL /etc/motd ${DESTDIR}/etc/motd
chmod 644 ${DESTDIR}/etc/motd
お役に立てれば幸いです。
フック スクリプトは実行可能である必要があることに注意してください。
アップデート: また、システムが起動すると、initramfs 環境がルートファイルシステムに置き換えられる可能性があることにも留意してください。cpio
ただし、etc を介して initramfs イメージに何が含まれているかを確認できるはずです。