initramfs: где я могу определить, что входит в / sbin?

Где я могу настроить, какие двоичные файлы update-initramfs копирует в каталог / sbin внутри образа initrd?

Я искал в / etc / initramfs -tools и / usr / lib / initramfs-tools, но нигде не удалось найти список двоичных файлов

# grep -ri sbin /etc/initramfs-tools
# grep -ri sbin /usr/lib/initramfs-tools
#
4
задан 10 October 2015 в 19:17

1 ответ

Необходимо использовать записи в /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. Пакет создает файл kmod в /usr/share/initramfs-tools/hooks.


Демонстрационный сценарий

#!/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 с одним файлом 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 необходимо видеть один файл

% ls
foo
3
ответ дан 11 October 2015 в 05:17
  • 1
    Мое плохое, я действительно помещал свой код страны BD в то место прежде, чем применить его. Но поскольку я упомянул, никакое улучшение, к сожалению. Это могло быть что-то связывающее драйвер для чипсета? Я искал его, но не мог найти собственный драйвер для RT5370. – user1362452 31 December 2016 в 03:02

Другие вопросы по тегам:

Похожие вопросы: