Посмотрите iPXE, оно умеет и ядро с инитрд грузить по iSCSI. https://ipxe.org/sanuri Хотя, поддержку в initrd это конечно не отменяет. On 02/14/2019 02:46 PM, Москаленко Алексей Владимирович wrote: > Встала задача - загружать бездисковую машину с iSCSI. Нативной поддержки > загрузки с iSCSI у машины нет, поэтому видится вариант с загрузкой > ядра+initrd по PXE, далее монтирование корня с iSCSI. > > > Не пытался ли кто-нибудь реализовать такое в инфраструктуре Altlinux? С > загрузкой ядра и initrd вопросов нет, а как правильно корень с iSCSI > смонтировать? В make-initrd похоже поддержки корня на iSCSI нет (судя по > https://bugzilla.altlinux.org/show_bug.cgi?id=27354). Может, есть > какие-либо наработки в этой области?
Michael A. Kangin писал 14.02.2019 19:25: > Посмотрите iPXE, оно умеет и ядро с инитрд грузить по iSCSI. > https://ipxe.org/sanuri Это похоже поможет загрузиться без использования TFTP/HTTP (iPXE я как раз и использую для загрузки по сети много чего). Спасибо, посмотрю. > Хотя, поддержку в initrd это конечно не отменяет. А без этого корень не смонтировать в любом случае. Может есть какой-нибудь черновой вариант, типа фичи iscsi для make-initrd? Сеть поднимать он умеет, осталось научить загрузить модули ядра, запустить iscsid, залогиниться на таргет и смонтировать его как /... Попробую что-нибудь наваять сам, если никаких наработок нет... > > > On 02/14/2019 02:46 PM, Москаленко Алексей Владимирович wrote: > >> Встала задача - загружать бездисковую машину с iSCSI. Нативной >> поддержки загрузки с iSCSI у машины нет, поэтому видится вариант с >> загрузкой ядра+initrd по PXE, далее монтирование корня с iSCSI. >> >> >> Не пытался ли кто-нибудь реализовать такое в инфраструктуре Altlinux? >> С загрузкой ядра и initrd вопросов нет, а как правильно корень с iSCSI >> смонтировать? В make-initrd похоже поддержки корня на iSCSI нет (судя >> по https://bugzilla.altlinux.org/show_bug.cgi?id=27354). Может, есть >> какие-либо наработки в этой области?
пт, 15 февр. 2019 г. в 10:33, Москаленко Алексей Владимирович
<mav@elserv.msk.su>:
>
> Michael A. Kangin писал 14.02.2019 19:25:
> > Посмотрите iPXE, оно умеет и ядро с инитрд грузить по iSCSI.
> > https://ipxe.org/sanuri
> Это похоже поможет загрузиться без использования TFTP/HTTP (iPXE я как
> раз и использую для загрузки по сети много чего). Спасибо, посмотрю.
>
> > Хотя, поддержку в initrd это конечно не отменяет.
> А без этого корень не смонтировать в любом случае. Может есть
> какой-нибудь черновой вариант, типа фичи iscsi для make-initrd? Сеть
> поднимать он умеет, осталось научить загрузить модули ядра, запустить
> iscsid, залогиниться на таргет и смонтировать его как /...
>
> Попробую что-нибудь наваять сам, если никаких наработок нет...
>
Насколько я понимаю, основная доступная наработка - это сборка нового
образа с помощью mkimage-profiles. Хотя, если взять то же ядро, что и
в инсталяторе, то можно докидать cpio-файлов (он умеет распаковывать
цепочку пристыкаованных друг за другоом архивов) с необходимыми
файлами и сделать загрузку вручную, после этого можно добавить
необходимый функционал в профиль mkimage для генерации образов.
--
Sin (Sinelnikov Evgeny)
On 02/18/2019 12:44 AM, Evgeny Sinelnikov wrote:
> Насколько я понимаю, основная доступная наработка - это сборка нового
> образа с помощью mkimage-profiles.
В смысле - make-initrd?
Да, правильно было бы сделать тематическую фичу.
С документацией вот к сожалению не очень.
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'а...