Как загрузиться с использованием образа squashfs в качестве rootfs

Linux? Если да посмотрите мишень (2) или старое разветвление на выходе.

Но я пошел бы для старого классика

for (dev in devs)
    send (dev, command)

4
10.10.2015, 10:30
1 ответ

Эти команды обычно сводятся к одному системному вызову ioctl () , который очищает (1-я команда) или устанавливает (2-я команда) флаг IF_UP в сетевом драйвере.

Что происходит после этого, зависит от водителя. Он может включать или не включать сетевую интерфейсную плату. Он, вероятно, не будет «останавливаться» (выгружаться?) и «запускаться» (загружаться?) сам (но что-то еще в системе может быть, в ответ на то, что драйвер делает, например, код hotplug).

Драйвер, вероятно, удалит маршрут к интерфейсу, который он установил, когда интерфейс был первоначально запущен, и, вероятно, будет создано какое-то событие в зависимости от ядра (например, hotplug или udev и т.д.).

В Debian, вероятно, лучше использовать ifdown wlan0 и ifup wlan0 .

-121--89181-

Amazon Linux, клон RHEL, использует RPM для определения разрешений на установленные файлы. Для определения владельца можно использовать команду rpm -qf/etc/shadow . Это показывает, что /etc/shadow является частью пакета setup . Затем можно использовать базу данных RPM для запроса разрешений на этот файл. Существует программа rpmls в пакете rpmdevtools, которая делает это, но вы можете сделать это с помощью простых RPM, если вы знаете правильный синтаксис:

$ rpm -q --qf='[%-11{filemodes:perms} %-8{fileusername} %-8{filegroupname} %{filenames}\n]' setup | grep /etc/shadow
----------  root     root     /etc/shadow

Это показывает, что ожидается, что/etc/shadow метод 0000. Ты не должен пытаться изменить его на что-то другое. Стек PAM прекрасно умеет считывать теневой файл. У тебя, наверное, есть другая проблема.

-121--150238-

На мой взгляд, вы все еще должны использовать initramfs. Почти все будут делать, но вам понадобится модуль ядра файловой системы squashfs (если он еще не скомпилирован в ядро) в вашем образе initramfs.

Большинство систем initramfs уважают fstab - и определенно Дракут это делает. Таким образом, можно настроить два файла /etc/fstab - один в образе .sfs и один в образе initramfs.

{   cd /tmp; cat >fstab
    mkdir -p sfs/sfs sfs/usb
    dracut  -i fstab /etc/fstab     \
            -i sfs sfs              \
            --add-drivers overlay   \
            --add-drivers squashfs  \
            initramfs.img 
}   <<"" #FSTAB
    UUID={USB-UUID}     /sfs/usb    $usbfs      defaults    0 0
    /sfs/usb/img.sfs    /sfs/sfs    squashfs    defaults    0 0

Честно говоря, я не совсем знаком с dracut initramfs build system, и поэтому для успешного выполнения этой команды может потребоваться нечто большее. Я работаю с общим знанием того, как настраивается большинство монтировок initramfs, и информации, которую я нахожу на странице man для dracut здесь . Возможно, потребуется дополнительная сборка, но это должно привести вас к довольно хорошим результатам.

После установки соответствующего /etc/fstab в initramfs вы сможете использовать следующие параметры, связанные с корневыми устройствами, для получения корней overlayfs:

root=overlay \
rootfstype=overlay \
rootflags=\
lowerdir=/sfs/sfs,\
upperdir=/sfs/usb/persist,\
workdir=/sfs/usb/tmp

Это предполагает, что у вас есть каталог на USB-накопителе с именем /persist и еще один пустой с именем /tmp , и что ваше изображение squashfs можно найти в корне вашей файловой системы USB как /img.sfs .

2
27.01.2020, 21:00

Теги

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