Installer/OEM/Embedded
Установка и настройка образа, не поддерживающего OEM-установку
1. Установка производится на виртуальную машину в режиме UEFI на виртуальный диск в формате raw, который соответствует размеру целевого накопителя Embedded устройства или меньше (но тогда нужно будет произвести резайц разделов и файловых систем). Файловая система корня должна быть обязательно ext4.
Для Embedded может быть предпочтительнее использовать таблицу разделов dos (MBR), тогда её придётся создать предварительно и не удалять её инсталлятором. Инсталлятор в режиме UEFI всегда создаёт GPT.
Если на образ будет записываться u-boot, то нужно сделать соответствующий отступ в начале (16 МиБ для Rockchip).
2. Создаём конфиг /boot/extlinux/extlinux.conf такого содержания:
menu title ALTLinux Boot Options default linux timeout 3 label linux kernel ../vmlinuz initrd ../initrd.img fdtdir ../dtb append root=UUID=<Такой-то> ro <параметры загрузки> console=ttyS2,1500000n8
Текущие параметры загрузки можно посмотреть так:
cat /proc/cmdline
Параметр console указан стандартный для Rockchip, для других целевых устройств будет другой.
3. В установленной системе формируется универсальный initrd.img (initramfs):
3.1 Создаём конфиг /etc/initrd.mk.oem для сборки универсального initrd:
# trying to detect modules and features to access to root volume AUTODETECT = all FEATURES += add-modules compress cleanup rdshell rootfs FEATURES += usb FEATURES += qemu MODULES_TRY_ADD += drivers/input/touchscreen MODULES_TRY_ADD += ext4 MODULES_TRY_ADD += ahci.ko MODULES_TRY_ADD += ahci_platform.ko MODULES_TRY_ADD += sd_mod.ko MODULES_TRY_ADD += drivers/hid MODULES_TRY_ADD += evdev.ko MODULES_TRY_ADD += drivers/pci MODULES_TRY_ADD += drivers/mmc MODULES_TRY_ADD += drivers/usb/host MODULES_TRY_ADD += drivers/usb/storage MODULES_TRY_ADD += drivers/nvmem MODULES_TRY_ADD += drivers/nvme MODULES_TRY_ADD += drivers/virtio MODULES_TRY_ADD += drm/virtio MODULES_TRY_ADD += virtio_scsi.ko MODULES_TRY_ADD += virtio_blk.ko MODULES_TRY_ADD += virtio-rng MODULES_TRY_ADD += virtio_net.ko MODULES_TRY_ADD += virtio-gpu.ko MODULES_TRY_ADD += virtio-mmio.ko MODULES_TRY_ADD += virtio_pci.ko MODULES_TRY_ADD += virtio_console.ko MODULES_TRY_ADD += virtio_input.ko MODULES_TRY_ADD += drivers/video/fbdev MODULES_TRY_ADD += crc32_generic.ko MODULES_TRY_ADD += drivers/dma MODULES_TRY_ADD += drivers/reset MODULES_TRY_ADD += drivers/usb/dwc2 MODULES_TRY_ADD += drivers/usb/dwc3 MODULES_TRY_ADD += drivers/phy MODULES_TRY_ADD += drivers/usb/phy MODULES_TRY_ADD += drivers/bus MODULES_TRY_ADD += drivers/soc MODULES_TRY_ADD += drivers/pwm MODULES_TRY_ADD += drivers/regulator MODULES_TRY_ADD += drivers/i2c MODULES_TRY_ADD += drivers/mfd MODULES_TRY_ADD += drivers/spi MODULES_TRY_ADD += drivers/clk MODULES_TRY_ADD += drivers/gpu/drm/bridge MODULES_TRY_ADD += drivers/gpu/drm/rockchip MODULES_TRY_ADD += drivers/gpu/drm/sun4i MODULES_TRY_ADD += tegra-drm.ko
3.2 Собираем универсальный initrd командой:
make-initrd -c /etc/initrd.mk.oem
4. Прописываем ядро в конфиг extlinux.conf и создаём симлинк /boot/dtb на каталог с devicetree текущего ядра:
# installkernel --keep-initrd -u `uname -r`
5. В зависимости от целевого u-boot могут потребоваться дополнительные действия
5.1 Для некоторых достаточно поставить флаг legacy_boot (если GPT) или флаг boot (для MBR) на корневом разделе, где находится /boot/extlinux/extlinux.conf
5.2 Для других придётся полностью удалить раздел ESP, соответственно нужно также убрать его из /etc/fstab. Дальнейшая загрузка в виртуальной машине с edk2 станет невозможна. Но всё ещё можно будет загрузиться на виртуалке с u-boot через extlinux.conf.
5.3 Если целевой u-boot грузится только через extlinux.conf, то ничего делать не должно быть нужно.
6. Записываем образ виртуального диска в формате raw на целевой накопитель.
7. Пробуем загрузиться.
Установка и настройка образа, поддерживающего OEM-установку
Установка такого iso отличается от обычного образа указанием параметров загрузки в пункте 1, чтобы получить OEM систему с универсальным initrd.img сразу после установки:
oem oem_initrd
Дополнительно смотреть статью:
https://www.altlinux.org/Installer/OEM
Если требуется на выходе не OEM-система, а обычная, но с универсальным initrd, то указываем только параметр oem_initrd.
Пункт 3 пропускается, так как при установке уже получается универсальный initrd.img