web-dev-qa-db-fra.com

initramfs: où puis-je déterminer ce qui va dans / sbin?

Où puis-je configurer quels fichiers binaires pdate-initramfs est copié dans le répertoire / sbin à l'intérieur de l'image initrd?

J'ai cherché dans/etc/initramfs-tools et/usr/lib/initramfs-tools mais je n'ai trouvé la liste des fichiers binaires nulle part.

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

Vous devez utiliser les entrées dans /usr/share/initramfs-tools/hooks. Ces fichiers sont exécutés lorsque vous tapez update-initramfs. Créez votre propre script de hook ou supprimez des scripts.

Un autre dossier est /etc/initramfs-tools/hook

De 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.

Remarque: les scripts de raccordement font partie des packages, par exemple. kmod. Le paquet crée le fichier kmod dans /usr/share/initramfs-tools/hooks.


exemple de script

#!/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

Comme vous pouvez le constater, le script de raccordement copie tous les fichiers de /lib/modprobe.d/ dans initramfs/lib/modprobe.d/

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

et modprobe dans initramfs/sbin

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

Votre propre initrd.img avec un fichier 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

Vérifiez le contenu de votre initrd.img

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

Et avec ls vous devriez voir un fichier

% ls
foo
3
A.B.