====== Arch Linux initrd ====== *[[wpru>Initrd]] *[[https://wiki.archlinux.org/index.php/Mkinitcpio_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)|mkinitcpio]] *[[https://aur.archlinux.org/packages/?O=0&K=mkinitcpio|AUR]] ====== Параметры загрузки ядра ====== [[http://man7.org/linux/man-pages/man7/bootparam.7.html|Общие параметры загрузки ядра]] Наиболее важные: ===== 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 [[http://forum.puppyrus.org/index.php?topic=22936.msg171187#msg171187|Определять 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 : [[https://wiki.archlinux.org/index.php/Network_configuration#Device_names|net.ifnames=0]] biosdevname=0 ===== break= ; disablehooks= ; earlymodules= ===== https://wiki.archlinux.org/index.php/Mkinitcpio#init_from_base_hook ====== Сборка initrd ====== *[[https://wiki.archlinux.org/index.php/Mkinitcpio_%28%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9%29|Управляется через /etc/mkinitcpio.conf]] *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 раздел будет примонтирован только на чтение , без возможности перемонтировать (если не используется [[https://forum.puppyrus.org/index.php?topic=23512.msg178582#msg178582|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 - не самая простая задача. Можно [[http://forum.puppyrus.org/index.php?topic=20164.msg152176#msg152176|собрать]] только initrd с нужными модулями ядра (стандартным для Вашего линукса способом) для Вашего ядра *Ядро должно быть с AUFS (для UIRD , rootaufs2, lf-aufs, manjaro-iso). Узнать что AUFS есть в ядре: cd /lib/modules/версия_ядра && grep aufs modules.builtin modules.dep *Или с overlayfs (для lf-overlayfs, arch-iso) *[[http://file.puppyrus.org/users/pra64/kernel/|Грузить]] : initrd /путь/initrd_с_модулями_ядра /путь/uird1811.xz ======Hooks - модули Arch Linux initrd====== ===== mkinitcpio-rootaufs2 ===== *[[soft/arch-initrd-rootaufs2|Документация]] *Создает корневую aufs файловую систему из каталогов и(или) модулей.pfs (squashfs). Т.е. модульный [[setups/full-vs-frugal|frugal и full]] c сохраненкой в раздел, каталог или файл *Аналог [[soft/porteus-initrd|porteus-initrd]] *[[wpru>Live_CD]] *Работает только с [[setups/aufs|aufs]] ядрами. ===== mkinitcpio-rootofs ===== *Аналогично mkinitcpio-rootaufs2, только вместо AUFS используется OverlayFS *Вместо dir= используется diro= *Вместо changes используется changeso ===== archiso ===== *https://github.com/djgera/archiso/blob/master/docs/README.bootparams *https://wiki.archlinux.org/index.php/Archiso *[[wpru>Live_CD]] *Можно использовать ядра без AUFS ===== mkinitcpio-loop-subdir ===== *https://aur.archlinux.org/packages/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 ===== https://aur.archlinux.org/packages/mkinitcpio-dir Аналогично mkinitcpio-loop-subdir, но без aufs и overlayfs фич ===== mkinitcpio-overlayfs , mkinitcpio-lf-overlayfs , mkinitcpio-lf-aufs===== "Заморозка" состояния системы. Все изменения в tmpfs или в отдельном каталоге на диске (если их скопировать в корень - получим новое состояние системы). *https://github.com/felixsinger/mkinitcpio-overlayfs - посредством [[https://wiki.archlinux.org/index.php/Overlay_filesystem_%28%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9%29|overlayfs]] добавляет верхний [[https://wiki.archlinux.org/index.php/Tmpfs_%28%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9%29|tmpfs]] слой к любому корню системы *Корень системы может находиться в корне раздела root= *или в каталоге (несколько дистрибутивов на одном разделе) rootdir= , который находится на разделе root= *[[ftp://ftp.yandex.ru/puppyrus/2a-aarch64/pkg-repo/2a-any/mkinitcpio-lf-overlayfs-2018.12-15-any.pkg.tar.xz|mkinitcpio-lf-overlayfs]] *Подключает tmpfs пустым параметром **ofs** *ofs=dirname - только вместе с хуком **rootdir=**. Подключает директорию rootdir-dirname. Файловые системы NTFS, FAT использовать нельзя *ofs=/dev/sda1:dirname - Подключает директорию dirname на разделе sda1. Файловые системы NTFS, FAT использовать нельзя *[[ftp://ftp.yandex.ru/puppyrus/2a-aarch64/pkg-repo/2a-any/mkinitcpio-lf-aufs-2018.12-15-any.pkg.tar.xz]mkinitcpio-lf-aufs-2018.12-15-any.pkg.tar.xz|mkinitcpio-lf-aufs]] - аналогично mkinitcpio-lf-overlayfs, но средствами [[setups/start#aufs|AUFS]] и с параметром **aufs** *C aufs возможно горячее подключение-отключение модулей.pfs *C ofs - нет. Зато он, в отличие от AUFS, присутствует во всех ядрах Удобно использовать для *Монолитного frugal вместе с хуком **squashfs=** **squashfs2=** *full c хуком **rootdir=** *Для всех этих хуков не забываем указать **root=** ===== liveroot ; rootmp-hook - overlayfs [+zram] поверх корня системы===== *[[https://bbs.archlinux.org/viewtopic.php?id=193461|liveroot]] *[[https://archlinux.org.ru/forum/topic/17726/?page=3#post-193798|rootmp-hook]] ===== mkinitcpio-squashfs , mkinitcpio-squashfs2 ===== *https://aur.archlinux.org/packages/mkinitcpio-squashfs-git/ *Загрузка одного модуля по сети (вместе с хуком **net**) или локально и монтирование его в качестве корня *Т.к. корень получается RO сверху необходимо подключить mkinitcpio-overlayfs или mkinitcpio-lf-overlayfs или mkinitcpio-lf-aufs В [[http://ftp.yandex.ru/puppyrus/2a-aarch64/pkg-repo/2a-any/mkinitcpio-squashfs2-0.2.r1.1faca52-1-any.pkg.tar.xz|mkinitcpio-squashfs2]] вместо wget и find - busybox ===== mkinitcpio-lf-shutdown===== *[[ftp://ftp.yandex.ru/puppyrus/2a-aarch64/pkg-repo/2a-any/mkinitcpio-lf-shutdown-2018.12-15-any.pkg.tar.xz| mkinitcpio-lf-shutdown]] *При старте системы копирует содержимое initrd в /run/initramfs *При выключение [[https://www.freedesktop.org/wiki/Software/systemd/InitrdInterface/|делается chroot]] в этот каталог и запускаеся /run/initramfs/shutdown , который корректно отмонтирует все примонтированное ==== break=down ==== Отладочная остановка в процессе выключения системы для проверки, что все корректно отмонтировалось