Установка системы с Unified Kernel Images (UKI) используя загрузчик sd-stub (systemd) через Archboot

Вопросы и советы по установке Arch Linux
Ответить
beisic
Сообщения: 35
Зарегистрирован: 16.09.2022

#

Коротко опишу установку системы с Unified Kernel Images (UKI) на реальное "железо", может кому пригодится. Описания установки нигде не нашёл - или "плохо" искал.
"Железо" - мамка гигабайт с чипсетом B 250, видюха с 2013 года SAPPHIRE HD-7850, NVMe kingspec 250 Gb, CPU Pentium G4600, оперативка 2 плашки по 8 Гб.
С сайта archboot скачал 3 исо : archboot-x86_64.efi , archboot-latest-x86_64.efi и archboot-local-x86_64.efi. Последнюю можно устанавливать без интернета, вторую с пунктами "подсказок", выбрал самую "маленькую" - первую. Устанавливать можно на автомате. Загрузчик выбираешь или grub или sd-stub. Кроме X86_64 образов есть и для маков и распбери PI (AARCH64 и RISCV64).
При установке, также можно выбрать графическую среду рабочего стола плазму, гном, мате (выбрал XFCE). Она загружается в "контейнер" на ОЗУ, но со всеми "прибамбахами" - простеньким браузером, gparted и т.д. Далее есть возможность выбрать устанавливать или с помощью "табло установщика", или традиционно - через терминал (возврат к "окну" - набрать setup)
Archboot-x86_64.efi установился "голым" - только root - нет пакетов sudo, syslinux, linux-headers и без графического окружения и т.д. То есть остальное (создание юзера и т.д.) через терминал. По за

Вот что "структурно" установлено:
                   -`                    beisic@pc 
                  .o+`                   --------- 
                 `ooo/                   OS: Arch Linux x86_64 
                `+oooo:                  Host: B250M-D3H 
               `+oooooo:                 Kernel: 6.6.7-arch1-1 
               -+oooooo+:                Uptime: 3 hours, 18 mins 
             `/:-:++oooo+:               Packages: 733 (pacman), 10 (flatpak) 
            `/++++/+++++++:              Shell: bash 5.2.21 
           `/++++++++++++++:             Resolution: 2560x1080 
          `/+++ooooooooooooo/`           DE: Xfce 4.18 
         ./ooosssso++osssssso+`          WM: Xfwm4 
        .oossssso-````/ossssss+`         WM Theme: Default 
       -osssssso.      :ssssssso.        Theme: Adwaita [GTK2/3] 
      :osssssss/        osssso+++.       Icons: elementary [GTK2], Adwaita [GTK3] 
     /ossssssss/        +ssssooo/-       Terminal: xfce4-terminal 
   `/ossssso+/:-        -:/+osssso+-     Terminal Font: Monospace 12 
  `+sso+:-`                 `.-/+oso:    CPU: Intel Pentium G4600 (4) @ 3.600GHz 
 `++:.                           `-/+/   GPU: AMD ATI Radeon HD 7850 / R7 265 / R9 270 1024SP 
 .`                                 `/   Memory: 1761MiB / 15955MiB 


beisic ~ $ tree /boot
/boot
├── initramfs-linux.img
├── intel-ucode.img
├── lost+found  [error opening dir]
└── vmlinuz-linux

2 directories, 3 files

beisic ~ $ tree /efi
/efi
├── EFI
│   ├── BOOT
│   │   └── BOOTX64.EFI
│   └── Linux
│       └── archlinux-linux.efi
└── loader
    └── random-seed
5 directories, 3 files

beisic ~ $ cat /etc/ukify.conf
[UKI]
Linux=/boot/vmlinuz-linux
Initrd=/boot/intel-ucode.img /boot/initramfs-linux.img
Cmdline=@/etc/kernel/cmdline
OSRelease=@/etc/os-release
Splash=/usr/share/systemd/bootctl/splash-arch.bmp

beisic ~ $ cat /etc/kernel/cmdline
root=/dev/nvme0n1p5 rootfstype=ext4 rw rootflags=rw,noatime 

beisic ~ $ cat /etc/mkinitcpio.d/linux.preset
# mkinitcpio preset file for the 'linux' package

#ALL_config="/etc/mkinitcpio.conf"
ALL_kver="/boot/vmlinuz-linux"
ALL_microcode=(/boot/*-ucode.img)

PRESETS=('default')

#default_config="/etc/mkinitcpio.conf"
default_image="/boot/initramfs-linux.img"
#default_uki="/efi/EFI/Linux/arch-linux.efi"
#default_options="--splash /usr/share/systemd/bootctl/splash-arch.bmp"

#fallback_config="/etc/mkinitcpio.conf"
fallback_image="/boot/initramfs-linux-fallback.img"
#fallback_uki="/efi/EFI/Linux/arch-linux-fallback.efi"
fallback_options="-S autodetect"
То есть папки /boot и /efi монтируются к корню / независимо друг от друга - параллельно. В файле /etc/mkinitcpio.d/linux.preset "обновляется" микрокод , initramfs и ядро с "передачей" в /boot. Файл /etc/ukify.conf
"получает данные" из /boot, "командной строки" ядра /etc/kernel/cmdline, информацию об ОС и заставку логотипа arch.bmp.
в /efi "находятся" /efi/EFI/BOOT/BOOTX64.EFI, /efi/EFI/Linux/archlinux-linux.efi и /efi/loader/random-seed
Впечатления или ощущения. Система работает очень "шустро". Монитор подключен через HDMI - такой "четкости" и "настройки" экрана не ожидал. Раньше верхом было подключение через DispleyPort (jон занят сейчас другим компом).
Не сказать что перезагрузка впечатляет, но это cpu pentium :
 beisic ~ $ systemd-analyze 
Startup finished in 9.968s (firmware) + 160ms (loader) + 9.946s (kernel) + 2.353s (userspace) = 22.429s 
graphical.target reached after 2.352s in userspace. 
Для тех у кого NVMe (установлено автоматически ) в /etc/mkinitcpio.conf :
MODULES=(amdgpu nvme-common nvme-core nvme xhci-pci-renesas xhci-pci ext2 ext4 btrfs vfat crc32c)
Последний раз редактировалось beisic 22.12.2023 19:02, всего редактировалось 2 раза.
Nebulosa
Аватара пользователя
Сообщения: 29
Зарегистрирован: 10.08.2022

#

Немного не понял, в чём уникальность установки, есть же статья. Опять же я не понял, зачем эта возня, если в итоге стоит стандартное ядро и грузится оно, если я правильно понял по логам.

Если цель получить минимальное ядро, которое быстро залетает в оперативку при загрузке, то я бы рекомендовал скомпилировать своё linux-ck ядро с предварительно настроенной базой необходимых модулей через modprobed-db и тогда даже на одном ядре, будут получаться вот такие цифры:
Startup finished in 2.014s (kernel) + 6.158s (userspace) = 8.173s 
graphical.target reached after 5.478s in userspace.
Стандартный пакет ядра весит (со всеми модулями) 136мб, когда "оптимизированный" весит 13-15мб.
beisic
Сообщения: 35
Зарегистрирован: 16.09.2022

#

Вы правы. Только у меня совсем другая задача. Не "уникальность", а универсальность. Нужно, чтобы система грузилась из прошивки УЕФИ самой системной платы. Данный NVME собираюсь поставить на материнскую плату с сокетом 2011 , т.е. загрузится прямо из прошивки платы - установив туда диск. По поводу статьи ; пробовал по ней "работать", но "что-то пошло не так", короче проще воспользоваться готовым решением. И, каюсь, что здесь написал - проще найти, чем копаться в записях на компе или "бумажках", да и "эти" записи кому-то тоже могут пригодится. За совет скомпилировать своё ядро спасибо. Есть куда дальше двигаться и что-то по изучать. Но запустится ли система с таким ядром на другом компе?
RusWolf
Аватара пользователя
Сообщения: 170
Зарегистрирован: 16.08.2022

#

beisic: т.е. загрузится прямо из прошивки платы - установив туда диск.
Загрузится прямо из прошивки, ничего не мешает на любом линуксе в EFI режиме, тем более в стандартном арче, без огорода костылей.
Это называется EFISTUB.
А если поставить grub c флагом --removable, то с этого диска можно грузится, на любом компе, хоть в EFI режиме загрузки, хоть в BIOS режиме загрузки.

Arch Linux x86-64 на BTRFS

beisic
Сообщения: 35
Зарегистрирован: 16.09.2022

#

RusWolf:без огорода костылей.
Почему же "костыли". Есть официальная документация: https://man.archlinux.org/man/sd-stub.7.en , ( A simple UEFI kernel boot stub ), где и предусмотрена загрузка унифицированного образа ядра (UKI) средствами systemd.
RusWolf
Аватара пользователя
Сообщения: 170
Зарегистрирован: 16.08.2022

#

beisic:Почему же "костыли".
Костыли, они и в Африке костыли, для любителей всего костыльного.

Arch Linux x86-64 на BTRFS

beisic
Сообщения: 35
Зарегистрирован: 16.09.2022

#

Если у Вас установлен systemd 255.1.1 от 17.12.2023 то и в Вашей системе этот файл есть :
/usr/lib/systemd/boot/efi/linuxx64.efi.stub
Nebulosa
Аватара пользователя
Сообщения: 29
Зарегистрирован: 10.08.2022

#

beisic:Но запустится ли система с таким ядром на другом компе?
Запустится, но т.к. теперь не все модули есть в пакете - какая-то периферия не будет работать. Суть "кастомного" ядра - сборка ядра под конкретное железо с целью ускорения его загрузки и работы на нём.
okean
Сообщения: 8
Зарегистрирован: 17.01.2024

#

здраствуйте!
почитал, несмог ничего понять, и тем более второй пост ссылка как это делается.
Да там такого наротило, что ни начала ни конца и даже середины трудно понять с чего все начинается.
Например; "
1) Подготовка единого образа ядра , ?? чаво??
ладно почитаем ещё...
2) Примечание. Вам необходимо выполнить только один из подразделов.
Командная строка ядра
mkinitcpio поддерживает чтение параметров ядра из файлов командной строки в /etc/cmdline.dкаталоге.
гоподин Nebulosa? Вы о чем? где то место с чего начинать.
"
Вы предлогаете почитать весь роман "ВОЙНА и Мир " или его часть как юзеру который этого никогда не делал и ничего не знает. Он представления не имеет с чего начать?
Nebulosa
Аватара пользователя
Сообщения: 29
Зарегистрирован: 10.08.2022

#

Уважаемый okean! Не нужно пытаться понять сообщения в форуме, а нужно начать читать статьи в wiki, т.к. на форуме мы оперируем понятиями, основанными на информации из wiki.

Юзеру, который никогда не делал и не знает ничего, для получения оптимизаций ядра достаточно установить linux-zen пакет и переключиться на него. Это просто и безопасно для всей системы, поскольку данные улучшения формируются разработчиками дистрибутива.

Начать можно со статей: https://wiki.archlinux.org/title/Kernel и https://wiki.archlinux.org/title/Improv ... _(Русский)
beisic
Сообщения: 35
Зарегистрирован: 16.09.2022

#

Nebulosa: на форуме мы оперируем понятиями, основанными на информации из wiki.
Отлично сказано! При общении это основа. И когда дают ссылку на страницу в WIKI - это не какое-то "желание оскорбить" - действительно, не цитировать-же здесь целую страницу инструкции - проше дать ссылку для прочтения. И не всё в вики понятно - и это указал : По поводу статьи ; пробовал по ней "работать", но "что-то пошло не так"
На что-то вообще ёще страницы в вики пока нет Например на загрузчик sd-stub.
Есть только man- страница. Поэтому и использовал Archboot - найдите в интернете.
Есть желание попробовать и https://wiki.archlinux.org/title/Systemd-firstboot - пробуйте - будете первым и если, что-то будет непонятно - опишите проблему - спросите и постараются помочь.
И уверен многие здесь на форуме начинали с самостоятельного изучения дистрибутива archlinux - и продолжают изучать - всё быстро развивается. Так, желаю удачи в освоении системы arch.
Ответить