Installer/OEM/Embedded

Материал из ALT Linux Wiki
< Installer‎ | OEM

Установка и настройка образа, не поддерживающего 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 /poc/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 kbd 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