Различия

Здесь показаны различия между выбранной ревизией и текущей версией данной страницы.

Ссылка на это сравнение

soft:arch-initrd [2017/08/18 15:34]
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 ====
 +
 +    Отладочная остановка в процессе выключения системы для проверки, что все корректно отмонтировалось
Печать/экспорт