dracut-networkroot

Модуль initrd dracut-networkroot позволяет монтировать корневую файловую систему LiveCD по сети — по NFS или CIFS (SMB).
Роса устаналивается путем полного копирования готового образа ОС (через rsync), что делает установку быстрой и детерминированной (предсказуемой).
При установке по PXE образ ОС копируется в оперативную память, которой может оказаться недостаточно.
Данный модуль позволяет монтировать образ по сети, чтобы не было необходимости хранить его целиком в ОЗУ.

Как использовать dracut-networkroot?
Пусть есть установочный образ со встроенным пакетом dracut-networkroot - ROSA_2021.1_PLASMA5_x86_64_54259.iso.
Монтируем образ:
 mkdir -p /tmp/1 /tmp/2
 sudo mount ROSA_2021.1_PLASMA5_x86_64_54259.iso /tmp/1
 sudo mount /tmp/1/LiveOS/squashfs.img /tmp/2

Файл /tmp/2/LiveOS/rootfs.img нужно положить на сетевую шару NFS или CIFS (SMB).

Пример, как это сделать с NFS:
  sudo dnf install nfs-utils
 В конец файла /etc/exports добавить строку:
  /srv *(ro)
 Вместо каталога /srv можно использовать любой другой. Здесь и далее в качестве примера приводится /srv
 Выполнить:
  sudo systemctl restart nfs-server
  sudo cp -v /tmp/2/LiveOS/rootfs.img /srv
 Для проверки корректности работы сетевой шары можно примонтировать ее, например, так:
  sudo mount -t nfs 192.168.122.1:/srv /mnt
  ls /mnt
 Должен быть виден файл rootfs.img.

При запуске ОС для установки добавьте в cmdline ядра:
 networkroot=nfs://server/path/to:file.ext4
Например:
 networkroot=nfs://192.168.122.1/srv:rootfs.img

Полный шаблон возможных значений опции networkroot=:
CIFS: networkroot=cifs://server[:port]/path/to:file.ext4:[cache=none,nobrl][ro]
NFS:  networkroot=nfs://server[:port]/path/to:file.ext4:[noac][ro]
                  ^     ^       ^     ^       ^          ^     ^
              протокол  |       |     |       |          |     |
                        |       |     |       |          |     |
                  адрес сервера |     |       |          |     |
                                |     |       |          |     |
                   порт (опционально) |       |          |     |
                                      |       |          |     |
                       путь до папки с ROOTFS |          |     |
                                              |          |     |
                                         образ RootFS    |     |
                                                         |     |
                           опции монтрования шары (CIFS/NFS)   |
                                                               |
                                                       опции монтрования образа RootFS

Для того чтобы монтировать в initrd образ необходимо подключиться к локальной сети и получить IP-адрес. Для этого, в cmdline добавляем:
Пример с автоматической настройкой сети по DHPC:
 ip=dhcp
Пример, когда будет использован IP-адрес 192.168.122.50, шлюз 192.168.122.1, маска подсети 255.255.255.0, а DHCP будет отключен:
 ip=192.168.122.50::192.168.122.1:255.255.255.0:::off
Дополнительно можно указать DNS-сервер Яндекса:
 ip=192.168.122.50::192.168.122.1:255.255.255.0:::off:77.88.8.8
Подробнее см. в dracut.cmdline(7).

Пример того, что нужно добавить в cmdline ядра:
 ip=dhcp networkroot=nfs://192.168.122.1/srv:rootfs.img

Также может быть указан кикстарт-файл (inst.ks=... systemd.unit=anaconda.target) для полностью автоматизированной установки.
