web-dev-qa-db-ja.com

initramfs:/ sbinの内容はどこで確認できますか?

どのバイナリpdate-initramfs initrdイメージ内の/ sbinディレクトリへのコピーを設定できますか?

/ etc/initramfs-toolsと/ usr/lib/initramfs-toolsの下を探していましたが、バイナリのリストがどこにも見つかりませんでした

# grep -ri sbin /etc/initramfs-tools
# grep -ri sbin /usr/lib/initramfs-tools
#
4
lara michaels

/usr/share/initramfs-tools/hooksのエントリを使用する必要があります。これらのファイルは、update-initramfsと入力すると実行されます。独自のフックスクリプトを作成するか、スクリプトを削除します。

別のフォルダは/etc/initramfs-tools/hookです

man initramfs-toolsから

   Hooks can be found in two places: /usr/share/initramfs-tools/hooks  and
   /etc/initramfs-tools/hooks.  They are executed during generation of the
   initramfs-image and are responsible for  including  all  the  necessary
   components  in the image itself. No guarantees are made as to the order
   in which the different scripts are  executed  unless  the  prereqs  are
   setup in the script.

フックスクリプトはパッケージの一部であることに注意してください。 kmod。パッケージは、/usr/share/initramfs-tools/hookskmodファイルを作成します。


サンプルスクリプト

#!/bin/sh -e
# Copy the compatibility symlinks until initramfs-tools will be converted
# to use the kmod program.

if [ "$1" = "prereqs" ]; then exit 0; fi

. /usr/share/initramfs-tools/hook-functions

copy_exec /bin/kmod
cp -a /sbin/modprobe /sbin/rmmod $DESTDIR/sbin/

mkdir -p $DESTDIR/lib/modprobe.d/
if [ "$(echo /lib/modprobe.d/*)" != "/lib/modprobe.d/*" ]; then
  cp -a /lib/modprobe.d/* $DESTDIR/lib/modprobe.d/
fi

ご覧のとおり、フックスクリプトは/lib/modprobe.d/のすべてのファイルをinitramfs/lib/modprobe.d/にコピーします

cp -a /lib/modprobe.d/* $DESTDIR/lib/modprobe.d/

およびmodprobeからinitramfs/sbin

cp -a /sbin/modprobe /sbin/rmmod $DESTDIR/sbin/

独自のinitrd.imgと1つのファイルfoo

cd 
mkdir initrd
cd initrd
touch foo   # an example file
find . | cpio -o -H newc > ../initrd.img
cd ..
gzip initrd.img
cp initrd.img.gz initrd.img

initrd.imgの内容を確認してください

cd
mkdir initrd_out
cd initrd_out
cpio -i < ../initrd.img

lsを使用すると、1つのファイルが表示されます

% ls
foo
3
A.B.