Arch Linux initrd
Параметры загрузки ядра
root=
ro ; rw
Тип монтирование корня файловой системы только чтение. Перемонтировать в rw:
sudo mount -w -n -o remount /
rootdelay=
Устанавливает задержку (в секундах) перед попыткой монтировать корневую файловую систему root=. Начинайте с rootdelay=5
Необходимо на старом железе при ошибке загрузки:
mount: /mnt/home: special device /dev/sdb1 does not exist
rootflag=
Параметры монтирования раздела, указанного в root=
Для fat используйте:
rootflags=umask=0,check=s,quiet,utf8=true
init=
init=/lib/systemd/systemd - прямое указание (если не находит или несколько)
quiet
net.ifnames=
Чтобы любой ethernet интерфейс имел имя eth0, а wifi - wlan0 : net.ifnames=0
biosdevname=0
break= ; disablehooks= ; earlymodules=
Сборка initrd
-
mkinitcpio -g /boot/linux.img - создаст /boot/linux.img для используемого ядра с конфигом /etc/mkinitcpio.conf
mkinitcpio -c /etc/mkinitcpio-custom.conf -g /boot/linux.img -k 3.3.0-ARCH - для ядра 3.3.0-ARCH с конфигом /etc/mkinitcpio-custom.conf
Загрузка с iso
Загрузка с ntfs
Актуально только для FRUGAL с сохранением в модуль или файл
MODULES="fuse"
BINARIES="ntfs-3g"
Без этого корневой ntfs раздел будет примонтирован только на чтение , без возможности перемонтировать (если не используется ntfs3)
autodetect - универсальный initrd или только под свое железо
HOOKS="autodetect block"
Уменьшает размер Вашего initrd, создавая список модулей по итогу сканирования sysfs. Т.е. на другом компьютере может не работать. Нужно загрузиться с initramfs-*fallback и пересобрать под этот компьютер
initramfs-*fallback отличается от initramfs отсутствием хука autodetect. Т.е. включены все модули ядра
Хуки, помещенные до «autodetect», будут установлены полностью. Например:
HOOKS="block autodetect"
Спец. ядро, как в PRA, porteus
С монолитно вкомпиленными модулями, необходимыми для загрузки
initrd получается универсальным (без модулей ядра). Ядра можно менять на аналогичные
MODULES=""
BINARIES="ntfs-3g"
HOOKS="base autodetect filesystems keyboard fsck rootaufs2 subdir2"
Упрощенный вариант сборки для любого линукса
Собрать LF-initrd (не в Arch) или UIRD - не самая простая задача. Можно собрать только initrd с нужными модулями ядра (стандартным для Вашего линукса способом) для Вашего ядра
cd /lib/modules/версия_ядра && grep aufs modules.builtin modules.dep
initrd /путь/initrd_с_модулями_ядра /путь/uird1811.xz
Hooks - модули Arch Linux initrd
mkinitcpio-rootaufs2
-
Создает корневую aufs файловую систему из каталогов и(или) модулей.pfs (squashfs). Т.е. модульный
frugal и full c сохраненкой в раздел, каталог или файл
-
-
Работает только с
aufs ядрами.
mkinitcpio-rootofs
Аналогично mkinitcpio-rootaufs2, только вместо AUFS используется OverlayFS
Вместо dir= используется diro=
Вместо changes используется changeso
archiso
mkinitcpio-loop-subdir
-
subdir - загрузка ситемы из каталога (т.е. можно иметь несколько систем на одном разделе)
loop - загрузка ситемы из файла. Файл может располагаться на fat ntfs. На Linux файловых системах удобнее subdir=
truncate -s 2G /test/ext2.img && losetup /dev/loop0 /test/ext2.img && mkfs.ext2 /test/ext2.img
mkinitcpio-dir
mkinitcpio-overlayfs , mkinitcpio-lf-overlayfs , mkinitcpio-lf-aufs
«Заморозка» состояния системы. Все изменения в tmpfs или в отдельном каталоге на диске (если их скопировать в корень - получим новое состояние системы).
-
Корень системы может находиться в корне раздела root=
или в каталоге (несколько дистрибутивов на одном разделе) rootdir= , который находится на разделе root=
-
Подключает tmpfs пустым параметром ofs
ofs=dirname - только вместе с хуком rootdir=. Подключает директорию rootdir-dirname. Файловые системы NTFS, FAT использовать нельзя
ofs=/dev/sda1:dirname - Подключает директорию dirname на разделе sda1. Файловые системы NTFS, FAT использовать нельзя
-
C aufs возможно горячее подключение-отключение модулей.pfs
C ofs - нет. Зато он, в отличие от AUFS, присутствует во всех ядрах
Удобно использовать для
liveroot ; rootmp-hook - overlayfs [+zram] поверх корня системы
mkinitcpio-squashfs , mkinitcpio-squashfs2
-
Загрузка одного модуля по сети (вместе с хуком net) или локально и монтирование его в качестве корня
Т.к. корень получается RO сверху необходимо подключить mkinitcpio-overlayfs или mkinitcpio-lf-overlayfs или mkinitcpio-lf-aufs
В mkinitcpio-squashfs2 вместо wget и find - busybox
mkinitcpio-lf-shutdown
break=down
Отладочная остановка в процессе выключения системы для проверки, что все корректно отмонтировалось