[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