将文件添加到 Debian Wheezy 中 initramfs 的 /etc

将文件添加到 Debian Wheezy 中 initramfs 的 /etc

我已添加该文件/etc/initramfs-tools/etc/motd,以便它可以在 initramfs 环境的 /etc 中使用。然而,它并没有出现。这是我第二次尝试,我向文件授予了所有可用权限(我也使用了 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等方式验证 initramfs 映像包含的内容。

相关内容