[Sysadmins] Загрузка системы по PXE с корнем на iSCSI (make-initrd?)

Москаленко Алексей Владимирович mav на elserv.msk.su
Ср Фев 20 08:54:53 MSK 2019


Michael A. Kangin писал 19.02.2019 22:19:
> В смысле - make-initrd?
> Да, правильно было бы сделать тематическую фичу.
> 
> С документацией вот к сожалению не очень.
По мотивам фичи multipath была сделана фича iscsi, которая добавляет в 
initrd iscsid/iscsiadm/ip/grep, содержимое /etc/iscsi, модуль iscsi_tcp 
и модуль для сетевой карты. Также был написан скрипт 075-iscsi, 
поднимающий интерфейс и логинящийся на target. Скрипт такого вида:

#!/bin/sh

msg='Starting iscsi...'
run() {
	ifname="eth0"
	while ! ip li sh dev $ifname > /dev/null 2>&1; do echo "Waiting for 
interface $ifname to appears..."; sleep 5; done
	ip li set dev $ifname up
	ip a a dev $ifname 192.168.0.10/24
	ip r a default via 192.168.0.1
	while ! ip li sh dev $ifname | grep "UP,LOWER_UP" > /dev/null 2>&1; do 
echo "Waiting for link up..."; sleep 5; done
	iscsid
	iscsiadm -m node -l -T iqn.2014-12.local.iscsi.iscsihost:vm.target
}

Имя интерфейса, его настройки и имя target'а прибиты гвоздями.

Попутно обнаружилась проблема в tools/put-file - elfcheck неадекватно 
реагирует на симлинки на каталог, которые есть в /etc/iscsi. Пришлось 
добавить объезд:
[ -f "$workdir"/fn ] && elfcheck -f - < "$workdir"/fn > 
"$workdir"/fn.elf || true

Сама target сконфигурирована с опцией node.startup=onboot, в iscsid.conf 
выставлено iscsid.safe_logout=Yes, в опции соответствующего интерфейса в 
etcnet добавлено KEEP_UP=yes.

Система (UEFI) успешно загружается с target'а с помощью iPXE (sanboot 
--filename=EFI\altlinux\grubx64.efi ....), в initrd поднимает интерфейс 
и логинится на target, после чего штатным образом монтирует корень и 
загружается. При остановке/перезагрузке также все выключается штатно.

Окультурить бы теперь все это, особенно в части автодетекта модуля 
сетевой карты, передачи настроек интерфейса и имени target'а...


Подробная информация о списке рассылки Sysadmins