Различия
Здесь показаны различия между выбранной ревизией и текущей версией данной страницы.
soft:arch-initrd [2017/08/18 15:27] |
soft:arch-initrd [2023/01/06 09:59] (текущий) sfs [mkinitcpio-rootofs] |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
+ | ====== 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 ==== | ||
+ | |||
+ | Отладочная остановка в процессе выключения системы для проверки, что все корректно отмонтировалось |