Baikal-M/Network installation
Настройка установки по сети alt-server-10.0-aarch64
Общие замечания
В качестве сервера, с которого производится установка, выбран одноплатник RPi4. Это сделано из соображений его доступности и удобства. Предполагаю, что использование в качестве сервера для сетевой установки другого компьютера, в том числе с другой архитектурой, не имеет принципиальных отличий.
Целевая система для установки alt-server-10.0-aarch64 - TF307-MB-S-D c прошивкой из SDK-M 5.3. Предполагаю, что аналогичным образом можно загружать и другие aarch64 системы с UEFI.
После настройки на RPi4 сервера для установки по сети нужно соединить Ethernet порты RPi4 и TF307 напрямую патчкордом.
Настройка сервера для установки по сети
На RPi4 установлен образ:
Контрольная сумма MD5: dd9941c775eff9a1321069a0b16e9351
В качестве DHCP и TFTP сервера используется dnsmasq. Он присутствует в образе alt-workstation-10.0-rpi4-aarch64.img.xz
В качестве HTTP сервера используется nginx
В качестве загрузчика для ядра и initrd используется iPXE.
Нужный загрузчик содержится в пакете ipxe-bootimgs
apt-get update apt-get install ipxe-bootimgs nginx
Файлы, нужные для загрузки, будут находиться в /var/lib/tftpboot
Образ будет в подкаталоге aarch64.
ISO образ будет смонтирован в подкаталог alt-server-10.0-aarch64
Если каталога нет, нужно создать:
mkdir -p /var/lib/tftpboot/aarch64/alt-server-10.0-aarch64
Копирование iPXE:
cp /usr/share/ipxe/snponly-arm64.efi /var/lib/tftpboot
Нужно положить образ
контрольная сумма MD5: c2871c0271033461e981c7eb88887dc9
в каталог /var/lib/tftpboot/aarch64
Монтирование образа:
mount -t iso9660 -o loop,ro /var/lib/tftpboot/aarch64/alt-server-10.0-aarch64.iso /var/lib/tftpboot/aarch64/alt-server-10.0-aarch64/
Настрока статическиого IP на RPi4 с помощью etcnet
cd /etc/net/ifaces/eth0 mv options options_old
Новый файл options:
TYPE=eth DISABLED=no NM_CONTROLLED=no BOOTPROTO=static CONFIG_IPV4=YES
Новый файл ipv4address:
192.168.1.1/24
Для активации настроек:
service network restart
Настройка dnsmasq
Запрос по DHCP делает и UEFI и iPXE
При этих запросах должны быть переданы разные имена файлов для сетевой загрузки:
- при запросе от UEFI - исполняемый файл iPXE (snponly-arm64.efi)
- при запросе от iPXE - скрипт с описанием загрузки образа (config-aarch64.ipxe)
Файл /etc/dnsmasq.conf
interface=eth0 # serve requests from this interface port=0 # disable DNS service no-resolv no-hosts user=_dnsmasq group=_dnsmasq # don't run as root dhcp-range=192.168.1.100,192.168.1.200,255.255.255.0,1m enable-tftp tftp-root=/var/lib/tftpboot # config-aarch64.ipxe, snponly-aarch64.efi must be there dhcp-match=set:efi-aarch64,option:client-arch,11 # Distinguish between firmware downloading iPXE and iPXE downloading config # (iPXE sets user-class option to `iPXE...something`, UEFI firmwares use # a different user-class) dhcp-userclass=set:ipxe,iPXE tag-if=set:aarch64-ipxe,tag:efi-aarch64,tag:ipxe dhcp-boot=tag:efi-aarch64,snponly-arm64.efi # set correct path to arm64-efi iPXE binary dhcp-boot=tag:aarch64-ipxe,config-aarch64.ipxe # set correct path to aarch64 iPXE script
Настройка nginx
Файл /etc/nginx/sites-enabled.d/altinst.conf
server { location / { root /var/lib/tftpboot/aarch64; autoindex on; gzip off; } }
Настройка iPXE
Файл /var/lib/tftpboot/config-aarch64.ipxe
#!ipxe kernel aarch64/alt-server-10.0-aarch64/boot/vmlinuz initrd=full.cz root=bootchain bootchain=fg,altboot ip=dhcp4 changedisk fastboot live automatic=method:http,network:dhcp,server:192.168.1.1,directory:/alt-server-10.0-aarch64 stagename=altinst showopts lang=ru_RU initrd aarch64/alt-server-10.0-aarch64/boot/full.cz boot
Запуск сервисов
Запуск сервиса dnsmasq
mkdir -p /var/lib/dhcp/ systemctl enable dnsmasq.service --now
Запуск сервиса nginx
systemctl enable nginx.service --now
Cервера для установки по сети настроен.
Установка по сети
Для запуска установки по сети нужно сделать следующее:
При загрузке TF307 нажать F2. Будет выдано меню UEFI
Выбрать пункт "Boot Manager", затем выбрать пункт "UEFI PXEv4", соответствующий тому Ethernet интерфейсу, к которому подключена RPi4.
Если по ошибке выбрать отключенный Ethernet интерфейс ничего не произойдёт.