Это старая версия документа.
Содержание
Arch Linux initrd
Параметры загрузки ядра
Наиболее важные:
root=
Обязательно указать : root=раздел_c_файлами_системы . Примеры:
root=/dev/sda1 # /dev node root=LABEL=CorsairF80 # label root=UUID=ea1c4959-406c-45d0-a144-912f4e86b207 # UUID root=PARTUUID=14420948-2cea-4de7-b042-40f67c618660 # GPT partition UUID
Определять uuid загрузочного раздела по файлу дистрибутива на нем
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
MODULES="iso9660"
Загрузка с ntfs
Актуально только для FRUGAL с сохранением в модуль или файл
MODULES="fuse" BINARIES="ntfs-3g"
Без этого корневой ntfs раздел будет примонтирован только на чтение , без возможности перемонтировать
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 с нужными модулями ядра (стандартным для Вашего линукса способом) для Вашего ядра
- Ядро должно быть с AUFS (для UIRD , rootaufs2, lf-aufs, manjaro-iso). Узнать что AUFS есть в ядре:
cd /lib/modules/версия_ядра && grep aufs modules.builtin modules.dep
- Или с overlayfs (для lf-overlayfs, arch-iso)
- Грузить :
initrd /путь/initrd_с_модулями_ядра /путь/uird1811.xz
Hooks - модули Arch Linux initrd
mkinitcpio-rootaufs2
- Создает корневую aufs файловую систему из каталогов и(или) модулей.pfs (squashfs). Т.е. модульный frugal и full c сохраненкой в раздел, каталог или файл
- Аналог porteus-initrd
- Работает только с aufs ядрами.
archiso
- Можно использовать ядра без AUFS
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-overlayfs , mkinitcpio-lf-overlayfs , mkinitcpio-lf-aufs
- https://github.com/felixsinger/mkinitcpio-overlayfs - посредством overlayfs добавляет верхний tmpfs слой к любому корню системы
- Корень системы может находиться в корне раздела root=
- или в каталоге (несколько дистрибутивов на одном разделе) rootdir= , который находится на разделе root=
-
- Подключает tmpfs пустым параметром ofs
- ofs=dirname - только вместе с хуком rootdir=. Подключает директорию rootdir-dirname. Файловые системы NTFS, FAT использовать нельзя
- ofs=/dev/sda1:dirname - Подключает директорию dirname на разделе sda1. Файловые системы NTFS, FAT использовать нельзя
- mkinitcpio-lf-aufs - аналогично mkinitcpio-lf-overlayfs, но средствами AUFS и с параметром aufs
- C aufs возможно горячее подключение-отключение модулей.pfs
- C ofs - нет. Зато он, в отличие от AUFS, присутствует во всех ядрах
Удобно использовать для
- Монолитного frugal вместе с хуком squashfs= squashfs2=
- full c хуком rootdir=
- Для всех этих хуков не забываем указать root=
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
- При старте системы копирует содержимое initrd в /run/initramfs
- При выключение делается chroot в этот каталог и запускаеся /run/initramfs/shutdown , который корректно отмонтирует все примонтированное
break=down
Отладочная остановка в процессе выключения системы для проверки, что все корректно отмонтировалось