Привет! Я обновил master и исправил ряд багов, которые мы обсуждали в личке. Я мог что-нибудь забыть. * Исправил валидацию panic=0 и его обработку; * Исправил непопадание в образ модулей, если в текущей директории есть файл/директория с таким же именем; * Добавил возможность вызвать скрипт до и после старта сервиса; * Увеличил приоритет nameserver= и теперь они будет попадать в resolv.conf первыми; * У значения nameserver удаляются квадратные скобки с начала и конца; * dhcp не запускается на loopback интерфейсах; * также на loopback не настраивается маршрутизация; * Я добавил параметр ifname=<iface>:<macaddr> (как в dracut) для переименования интерфейсов; * Изменил обработку macaddr в ip. Теперь MAC меняется у интерфейса, а не переименовывает интерфейс. Это совпадает с поведением в fedora; * Должно быть исправлена route= и некоторые параметры из dhcp. Я потерял ключевое слово при создании некоторых конфигов; * В dhcp broadcast выставляется только для IPv4; * Добавил параметр rd-depmod=y, который приводит к выполнению depmod в образе. -- Rgrds, legion
23.04.2019 17:26, Alexey Gladkov пишет:
> Привет!
>
> Я обновил master и исправил ряд багов, которые мы обсуждали в личке. Я мог
> что-нибудь забыть.
>
> * Исправил валидацию panic=0 и его обработку;
> * Исправил непопадание в образ модулей, если в текущей директории есть
> файл/директория с таким же именем;
> * Добавил возможность вызвать скрипт до и после старта сервиса;
> * Увеличил приоритет nameserver= и теперь они будет попадать в resolv.conf
> первыми;
> * У значения nameserver удаляются квадратные скобки с начала и конца;
> * dhcp не запускается на loopback интерфейсах;
> * также на loopback не настраивается маршрутизация;
> * Я добавил параметр ifname=<iface>:<macaddr> (как в dracut) для
> переименования интерфейсов;
> * Изменил обработку macaddr в ip. Теперь MAC меняется у интерфейса, а не
> переименовывает интерфейс. Это совпадает с поведением в fedora;
> * Должно быть исправлена route= и некоторые параметры из dhcp. Я потерял
> ключевое слово при создании некоторых конфигов;
> * В dhcp broadcast выставляется только для IPv4;
> * Добавил параметр rd-depmod=y, который приводит к выполнению depmod в
> образе.
Отлично! Вечером соберу задание и продолжу завтра. Выяснилось, что на
8СП у нас "из коробки" сетевая загрузка с NFS почему-то не работает,
скорее всего, из-за IPv6, буду разбираться. Пока развернул NFS-сервер на
отдельной машине с обычным Альт сервером 8, обычная сетевая загрузка
взлетела, завтра попытаюсь заставить взлететь make-initrd с nfsroot. Ещё
выяснилось, что серверную часть под dual-стек (DHCP-сервер уж точно),
если и можно сделать, то только руками, альтератор заточен под один из
(либо/либо). Будем и это исправлять...
--
Best regards,
Leonid Krivoshein.
On 04/23/2019 04:26 PM, Alexey Gladkov wrote: > Я обновил master и исправил ряд багов, которые мы обсуждали в личке. Great! - модуль ipv6 теперь добавляется; > * Исправил непопадание в образ модулей, если в текущей директории есть > файл/директория с таким же именем; yes > * У значения nameserver удаляются квадратные скобки с начала и конца;yes > * dhcp не запускается на loopback интерфейсах; yes > * Должно быть исправлена route= и некоторые параметры из dhcp. Я потерял > ключевое слово при создании некоторых конфигов; route= по прежнему не работает... в логах пусто. > * В dhcp broadcast выставляется только для IPv4; ipv6 от dhcp6 теперь назначается, но с маской /128 Я невеликий знаток v6, но мне кажется, что так неправильно и должна быть /64 при дуальностечном dhcp в /etc/resolv.conf у меня попадает только ipv6 адрес (при dhcp4 - попадает v4, тут ок) > * Добавил параметр rd-depmod=y, который приводит к выполнению depmod в > образе. yes, спасибо!
24.04.2019 01:48, Michael A. Kangin пишет: > On 04/23/2019 04:26 PM, Alexey Gladkov wrote: > >> Я обновил master и исправил ряд багов, которые мы обсуждали в личке. > > Great! > > > - модуль ipv6 теперь добавляется; > Во-во, даже disable_ipv6 не помогает! :-) В смысле он не просто добавляется, v6 таки назначается на интерфейсах. > >> * Исправил непопадание в образ модулей, если в текущей директории есть >> файл/директория с таким же именем; > yes > >> * У значения nameserver удаляются квадратные скобки с начала и конца;yes > >> * dhcp не запускается на loopback интерфейсах; > yes > >> * Должно быть исправлена route= и некоторые параметры из dhcp. Я потерял >> ключевое слово при создании некоторых конфигов; > route= по прежнему не работает... в логах пусто. > >> * В dhcp broadcast выставляется только для IPv4; > > ipv6 от dhcp6 теперь назначается, но с маской /128 > Я невеликий знаток v6, но мне кажется, что так неправильно и должна > быть /64 > > при дуальностечном dhcp в /etc/resolv.conf у меня попадает только ipv6 > адрес (при dhcp4 - попадает v4, тут ок) > > >> * Добавил параметр rd-depmod=y, который приводит к выполнению depmod в >> образе. > yes, спасибо! -- Best regards, Leonid Krivoshein.
24.04.2019 02:02, Leonid Krivoshein пишет:
>
> 24.04.2019 01:57, Leonid Krivoshein пишет:
>>
>> 24.04.2019 01:48, Michael A. Kangin пишет:
>>> On 04/23/2019 04:26 PM, Alexey Gladkov wrote:
>>>
>>>> Я обновил master и исправил ряд багов, которые мы обсуждали в личке.
>>>
>>> Great!
>>>
>>>
>>> - модуль ipv6 теперь добавляется;
>>>
>>
>> Во-во, даже disable_ipv6 не помогает! :-)
>> В смысле он не просто добавляется, v6 таки назначается на интерфейсах.
>>
>
> У-пс. Это я про предыдущую версию. Новую ещё не проверял...
>
В новой disable_ipv6 тоже неправильно сейчас обрабатывается. При
disable_ipv6 адреса v6 на интерфейсах вообще не должны назначаться. И не
уверен, что в этом случае должен грузиться модуль ipv6. К слову, он тоже
знает об этом параметре ядра. Что-то тут не так. В код пока не залезал...
qemu-kvm \
-no-user-config -nodefaults -cpu host -m 2048 \
-balloon virtio -vga none -display none \
-serial stdio -device virtio-rng \
-netdev user,id=net0,restrict=no \
-device virtio-net,netdev=net0,id=eth0 \
-usb -kernel vmlinuz -initrd initrd.img \
-append 'console=ttyS0,115200 RDSHELL STOP=,mountsrc, ip=dhcp4
disable_ipv6'
[ 0.000000] Linux version 5.0.8-un-def-alt1
(builder@localhost.localdomain) (gcc version 8.3.1 20190311 (ALT
Sisyphus 8.3.1-alt2) (GCC)) #1 SMP PREEMPT Wed Apr 17 08:51:44 UTC 2019
[ 0.000000] Command line: console=ttyS0,115200 RDSHELL
STOP=,mountsrc, ip=dhcp4 disable_ipv6
...
(initramfs)$ ls /var/log/udhcp*
/var/log/udhcpc4.eth0.log
(initramfs)$ cat /var/log/udhcpc4.eth0.log
udhcpc: started, v1.28.1
udhcpc: executing /lib/network/udhcpc4.script deconfig
udhcpc: entering listen mode: raw
udhcpc: created raw socket
udhcpc: sending discover
udhcpc: waiting 5 seconds
udhcpc: received a packet
udhcpc: sending select for 10.0.2.15
udhcpc: waiting 5 seconds
udhcpc: received a packet
udhcpc: lease of 10.0.2.15 obtained, lease time 86400
udhcpc: executing /lib/network/udhcpc4.script bound
udhcpc: entering listen mode: none
(initramfs)$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast
qlen 1000
link/ether 52:54:00:12:34:56 brd ff:ff:ff:ff:ff:ff
inet 10.0.2.15/24 brd 10.0.2.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fec0::5054:ff:fe12:3456/64 scope site dynamic
valid_lft 86368sec preferred_lft 14368sec
inet6 fe80::5054:ff:fe12:3456/64 scope link
valid_lft forever preferred_lft forever
(initramfs)$ lsmod
Module Size Used by
hid_generic 16384 0
hid 135168 1 hid_generic
ipv6 524288 10
crc_ccitt 16384 1 ipv6
ata_generic 16384 0
pata_acpi 16384 0
ata_piix 36864 0
libata 274432 3 ata_piix,pata_acpi,ata_generic
ide_pci_generic 16384 0
virtio_balloon 20480 0
virtio_net 57344 0
virtio_rng 16384 0
rng_core 16384 1 virtio_rng
net_failover 20480 1 virtio_net
failover 16384 1 net_failover
joydev 24576 0
uhci_hcd 32768 0
ehci_hcd 61440 0
crct10dif_pclmul 16384 1
crc32_pclmul 16384 0
crc32c_intel 24576 0
piix 16384 0
sha256_ssse3 32768 0
xts 16384 0
ghash_clmulni_intel 16384 0
i2c_piix4 24576 0
psmouse 147456 0
evdev 20480 0
input_leds 16384 0
i2c_core 81920 2 psmouse,i2c_piix4
ide_core 139264 2 piix,ide_pci_generic
pcspkr 16384 0
serio_raw 16384 0
usbcore 253952 2 ehci_hcd,uhci_hcd
virtio_pci 28672 0
virtio_ring 28672 4
virtio_rng,virtio_balloon,virtio_pci,virtio_net
virtio 16384 4
virtio_rng,virtio_balloon,virtio_pci,virtio_net
usb_common 16384 1 usbcore
intel_agp 24576 0
intel_gtt 24576 1 intel_agp
aesni_intel 372736 0
crypto_simd 16384 1 aesni_intel
cryptd 28672 3 crypto_simd,ghash_clmulni_intel,aesni_intel
glue_helper 16384 1 aesni_intel
floppy 90112 0
qemu_fw_cfg 16384 0
aes_x86_64 20480 1 aesni_intel
button 16384 0
dm_crypt 40960 0
nfs 286720 0
lockd 98304 1 nfs
grace 16384 1 lockd
sunrpc 380928 2 lockd,nfs
fscache 409600 1 nfs
af_packet 49152 0
dm_multipath 32768 0
dm_mod 151552 2 dm_crypt,dm_multipath
scsi_dh_rdac 16384 0
scsi_dh_emc 16384 0
scsi_dh_alua 20480 0
scsi_mod 249856 5
scsi_dh_emc,dm_multipath,scsi_dh_alua,libata,scsi_dh_rdac
--
Best regards,
Leonid Krivoshein.
23.04.2019 17:26, Alexey Gladkov пишет: > Я обновил master и исправил ряд багов, которые мы обсуждали в личке. Я мог > что-нибудь забыть. Ещё нашёл. При генерации с конфигом, содержащим: FEATURES += multipath make-initrd вываливается с ошибкой про недоступность модуля scsi_dh (такого действительно нет в ядре 5.x). > * Добавил возможность вызвать скрипт до и после старта сервиса; До -- это STOP=,модуль, => OK. А после как? -- Best regards, Leonid Krivoshein.
On Wed, Apr 24, 2019 at 04:01:13AM +0300, Leonid Krivoshein wrote: > > 23.04.2019 17:26, Alexey Gladkov пишет: > > Я обновил master и исправил ряд багов, которые мы обсуждали в личке. Я мог > > что-нибудь забыть. > > Ещё нашёл. При генерации с конфигом, содержащим: > > FEATURES += multipath > > make-initrd вываливается с ошибкой про недоступность модуля scsi_dh > (такого действительно нет в ядре 5.x). Да, нужно поправить. В идеале нужно переходить на MODULES_PATTERN_SETS. > > * Добавил возможность вызвать скрипт до и после старта сервиса; > > До -- это STOP=,модуль, => OK. А после как? Не понял вопроса. -- Rgrds, legion
24.04.2019 13:09, Alexey Gladkov пишет:
> On Wed, Apr 24, 2019 at 04:01:13AM +0300, Leonid Krivoshein wrote:
>
>>> * Добавил возможность вызвать скрипт до и после старта сервиса;
>> До -- это STOP=,модуль, => OK. А после как?
> Не понял вопроса.
Как вызывать скрипт после старта сервиса (после стадии, шага
инициализации, типа udevd)?
Может имелась ввиду возможность делать остановку в интерактивном режиме
после шага?
--
Best regards,
Leonid Krivoshein.
On 04/23/2019 04:26 PM, Alexey Gladkov wrote: > * Добавил возможность вызвать скрипт до и после старта сервиса; yes > * Увеличил приоритет nameserver= и теперь они будет попадать в resolv.conf > первыми; yes > * Я добавил параметр ifname=<iface>:<macaddr> (как в dracut) для > переименования интерфейсов; yes > * Изменил обработку macaddr в ip. Теперь MAC меняется у интерфейса, а не > переименовывает интерфейс. Это совпадает с поведением в fedora; В конфиги попадает, к интерфейсу не применяется. Наверное, та же фигня что и с MTU ~:# cat /etc/network/ifaces/eth1/iplink set address 01:02:01:02:01:ff set mtu 9000 ~:# ip li sh dev eth1 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000 link/ether 52:54:00:a7:29:23 brd ff:ff:ff:ff:ff:ff И еще пару мыслей о DHCP В формате ip=dhcp действительно ли ему стоит пытаться поднимать все интерфейсы, или было бы лучше пробовать по одному? И если уж все, то лучше одновременно. Сейчас, когда дело дойдёт до тестирования в железе, какой-нибудь сервер о шести 10G сетевушках будет делать ip link up для каждой из них секунд по 20. не хотелось бы получить необоснованных задержек при загрузке системы :) Кроме того, если скажем сетевушки подключены к одной сети и получают один и тот же NS, то /etc/resolv.conf может получиться такой вот кучерявый с дублирующимися серверами: ~:# cat /etc/resolv.conf nameserver 98.158.110.2 nameserver 98.158.111.2 # eth0: DHCP4 start nameserver 192.168.222.1 # eth0: DHCP4 end # eth1: DHCP6 start nameserver fd00:eeee:0012:0000:0000:0000:0000:0001 # eth1: DHCP6 end # eth2: DHCP4 start nameserver 192.168.222.1 # eth2: DHCP4 end ~:# cat /proc/cmdline ip=dhcp nameserver="98.158.110.2 98.158.111.2" debug rdshell И что именно в него попадает при dualstack для каждого интерфейса, v4 или v6 адрес - дело случая, и разнится от загрузки к загрузке, бывает и по три 192.168.222.1. Но попадает что-нибудь одно.
On Wed, Apr 24, 2019 at 06:43:00PM +0200, Michael A. Kangin wrote: > On 04/23/2019 04:26 PM, Alexey Gladkov wrote: > > > * Добавил возможность вызвать скрипт до и после старта сервиса; > yes > > > * Увеличил приоритет nameserver= и теперь они будет попадать в resolv.conf > > первыми; > yes > > > * Я добавил параметр ifname=<iface>:<macaddr> (как в dracut) для > > переименования интерфейсов; > yes > > > * Изменил обработку macaddr в ip. Теперь MAC меняется у интерфейса, а не > > переименовывает интерфейс. Это совпадает с поведением в fedora; > > В конфиги попадает, к интерфейсу не применяется. Наверное, та же фигня > что и с MTU > ~:# cat /etc/network/ifaces/eth1/iplink > set address 01:02:01:02:01:ff > set mtu 9000 > ~:# ip li sh dev eth1 > 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast > qlen 1000 > link/ether 52:54:00:a7:29:23 brd ff:ff:ff:ff:ff:ff Работаю над этим. > И еще пару мыслей о DHCP > В формате ip=dhcp действительно ли ему стоит пытаться поднимать все > интерфейсы, или было бы лучше пробовать по одному? > И если уж все, то лучше одновременно. Так dhcp-клиент вызывается хоть и последовательно, но работают параллельно. Потом опять синхронизируются. > Сейчас, когда дело дойдёт до тестирования в железе, какой-нибудь сервер > о шести 10G сетевушках будет делать ip link up для каждой из них секунд > по 20. > не хотелось бы получить необоснованных задержек при загрузке системы :) В таком случае нельзя говорить ip=dhcp. В этом случае нужно указывать какой интерфейс нужно настраивать. > Кроме того, если скажем сетевушки подключены к одной сети и получают > один и тот же NS, то /etc/resolv.conf может получиться такой вот > кучерявый с дублирующимися серверами: > ~:# cat /etc/resolv.conf > > nameserver 98.158.110.2 > nameserver 98.158.111.2 > # eth0: DHCP4 start > nameserver 192.168.222.1 > # eth0: DHCP4 end > > # eth1: DHCP6 start > nameserver fd00:eeee:0012:0000:0000:0000:0000:0001 > # eth1: DHCP6 end > > # eth2: DHCP4 start > nameserver 192.168.222.1 > # eth2: DHCP4 end > > ~:# cat /proc/cmdline > ip=dhcp nameserver="98.158.110.2 98.158.111.2" debug rdshell > > > И что именно в него попадает при dualstack для каждого интерфейса, v4 > или v6 адрес - дело случая, и разнится от загрузки к загрузке, бывает и > по три 192.168.222.1. Но попадает что-нибудь одно. Как раз сейчас нарвался на такое с resolv.conf. Я это попробую исправить. -- Rgrds, legion
On Wed, Apr 24, 2019 at 01:57:58AM +0300, Leonid Krivoshein wrote:
> Во-во, даже disable_ipv6 не помогает! :-)
> В смысле он не просто добавляется, v6 таки назначается на интерфейсах.
Так, я добрался до IPv6. Вы оба неправы. Эти параметры работают.
Нужно писать ipv6.disable=1 или ipv6.disable_ipv6=1
--
Rgrds, legion
26.04.2019 13:05, Alexey Gladkov пишет:
> On Wed, Apr 24, 2019 at 01:57:58AM +0300, Leonid Krivoshein wrote:
>> Во-во, даже disable_ipv6 не помогает! :-)
>> В смысле он не просто добавляется, v6 таки назначается на интерфейсах.
> Так, я добрался до IPv6. Вы оба неправы. Эти параметры работают.
> Нужно писать ipv6.disable=1 или ipv6.disable_ipv6=1
Я видел эти параметры для модуля ipv6 в документации и просто
disable_ipv6 он должен поддерживать. Возможно, документация не
соответствует новой ситуации. Но во всех текущих дистрибутивах просто
disable_ipv6 надёжно работает.
--
Best regards,
Leonid Krivoshein.
On Fri, Apr 26, 2019 at 01:55:18PM +0300, Leonid Krivoshein wrote: > >> Во-во, даже disable_ipv6 не помогает! :-) > >> В смысле он не просто добавляется, v6 таки назначается на интерфейсах. > > Так, я добрался до IPv6. Вы оба неправы. Эти параметры работают. > > Нужно писать ipv6.disable=1 или ipv6.disable_ipv6=1 > Я видел эти параметры для модуля ipv6 в документации и просто > disable_ipv6 он должен поддерживать. Возможно, документация не > соответствует новой ситуации. Но во всех текущих дистрибутивах > просто disable_ipv6 надёжно работает. FYI, installer-feature-disable-ipv6 делает ipv6.disable=1 -- ---- WBR, Michael Shigorin / http://altlinux.org ------ http://opennet.ru / http://anna-news.info
On Wed, Apr 24, 2019 at 02:13:48PM +0300, Leonid Krivoshein wrote: > > 24.04.2019 13:09, Alexey Gladkov пишет: > > On Wed, Apr 24, 2019 at 04:01:13AM +0300, Leonid Krivoshein wrote: > > > >>> * Добавил возможность вызвать скрипт до и после старта сервиса; Переделал вызов скриптов. Теперь он похож на то, что было в самых первых версиях. > >> До -- это STOP=,модуль, => OK. А после как? > > Не понял вопроса. > > Как вызывать скрипт после старта сервиса (после стадии, шага > инициализации, типа udevd)? Скрипты из директории /lib/initrd/all вызываются перед и после каждого сервиса. Скрипты из директории /lib/initrd/pre/<сервис> вызываются перед сервисом. Скрипты из директории /lib/initrd/post/<сервис> вызываются после сервиса. Все скрипты вызываются с аргументами {start|stop} <servicename> [retcode] > Может имелась ввиду возможность делать остановку в интерактивном режиме > после шага? Нет. Имелось в виду вызов скриптов. -- Rgrds, legion
On Fri, Apr 26, 2019 at 01:55:18PM +0300, Leonid Krivoshein wrote:
>
> 26.04.2019 13:05, Alexey Gladkov пишет:
> > On Wed, Apr 24, 2019 at 01:57:58AM +0300, Leonid Krivoshein wrote:
> >> Во-во, даже disable_ipv6 не помогает! :-)
> >> В смысле он не просто добавляется, v6 таки назначается на интерфейсах.
> > Так, я добрался до IPv6. Вы оба неправы. Эти параметры работают.
> > Нужно писать ipv6.disable=1 или ipv6.disable_ipv6=1
>
> Я видел эти параметры для модуля ipv6 в документации и просто
> disable_ipv6 он должен поддерживать. Возможно, документация не
> соответствует новой ситуации. Но во всех текущих дистрибутивах просто
> disable_ipv6 надёжно работает.
Так будет работать, если модуль вкомпилен в ядро.
--
Rgrds, legion
On 04/26/2019 02:20 PM, Alexey Gladkov wrote:
> Скрипты из директории /lib/initrd/all вызываются перед и после каждого
> сервиса.
> Скрипты из директории /lib/initrd/pre/<сервис> вызываются перед сервисом.
> Скрипты из директории /lib/initrd/post/<сервис> вызываются после сервиса.
>
> Все скрипты вызываются с аргументами {start|stop} <servicename> [retcode]
т.е., чтобы выполнить скрипт перед shell, его нужно положить как
/lib/initrd/pre/shell
и он будет вызван как
/lib/initrd/pre/shell start shell
?
On Fri, Apr 26, 2019 at 02:32:26PM +0200, Michael A. Kangin wrote:
> On 04/26/2019 02:20 PM, Alexey Gladkov wrote:
>
> > Скрипты из директории /lib/initrd/all вызываются перед и после каждого
> > сервиса.
> > Скрипты из директории /lib/initrd/pre/<сервис> вызываются перед сервисом.
> > Скрипты из директории /lib/initrd/post/<сервис> вызываются после сервиса.
> >
> > Все скрипты вызываются с аргументами {start|stop} <servicename> [retcode]
>
> т.е., чтобы выполнить скрипт перед shell, его нужно положить как
> /lib/initrd/pre/shell
> и он будет вызван как
> /lib/initrd/pre/shell start shell
> ?
Нужно создать /lib/initrd/pre/shell/foo.sh и он будет вызван с start shell
при старте и stop shell при остановке (когда сервис вызывается с
аргументом stop).
--
Rgrds, legion
On Wed, Apr 24, 2019 at 04:01:13AM +0300, Leonid Krivoshein wrote: > > 23.04.2019 17:26, Alexey Gladkov пишет: > > Я обновил master и исправил ряд багов, которые мы обсуждали в личке. Я мог > > что-нибудь забыть. > > Ещё нашёл. При генерации с конфигом, содержащим: > > FEATURES += multipath > > make-initrd вываливается с ошибкой про недоступность модуля scsi_dh > (такого действительно нет в ядре 5.x). Модули я поправил, но нарвался на то, что правила для udev у нас в пакете multipath-tools написаны для федоры [1]. Мантейнеры этим пакетом не пользуются, иначе бы они заметили. Кроме того, правила содержат вызовы утилит systemd. Видимо, нужно сохранить в фиче вариант правил для "не-systemd". И кажется для меня новый челендж написать в initrd-cp копирование утилит из правил udev'а. [1] https://bugzilla.altlinux.org/show_bug.cgi?id=36685 -- Rgrds, legion
26.04.2019 20:43, Alexey Gladkov пишет: > On Wed, Apr 24, 2019 at 04:01:13AM +0300, Leonid Krivoshein wrote: >> 23.04.2019 17:26, Alexey Gladkov пишет: >>> Я обновил master и исправил ряд багов, которые мы обсуждали в личке. Я мог >>> что-нибудь забыть. >> Ещё нашёл. При генерации с конфигом, содержащим: >> >> FEATURES += multipath >> >> make-initrd вываливается с ошибкой про недоступность модуля scsi_dh >> (такого действительно нет в ядре 5.x). > Модули я поправил, но нарвался на то, что правила для udev у нас > в пакете multipath-tools написаны для федоры [1]. Мантейнеры этим пакетом > не пользуются, иначе бы они заметили. Да, очень забавный баг! > Кроме того, правила содержат вызовы утилит systemd. Видимо, нужно > сохранить в фиче вариант правил для "не-systemd". > > И кажется для меня новый челендж написать в initrd-cp копирование утилит > из правил udev'а. Определением таких зависимостей занимается именно initrd-cp? Надо же, не знал. Может, тогда уж сразу и в shell-скриптах имеет смысл искать ссылки на вызываемые программы? По крайней мере, тут уже готовый код функциклирует в сборочнице. Если конечно это не будет оверхедом. > [1] https://bugzilla.altlinux.org/show_bug.cgi?id=36685 А я извиняюсь за обещанный NFS. Всё железо и образы подготовил, но меня завалило срочными задачами аж до вторника. Если получится, попробую на виртуалках в выходные или в праздники посмотреть, тогда уже сразу с новой версией. Кстати, кто/что посоветует: NFS-корень ведь read-only? Может, там немного /etc/fstab поменять достаточно? Или ссылкой в меня киньте... -- Best regards, Leonid Krivoshein.
On Fri, Apr 26, 2019 at 08:59:25PM +0300, Leonid Krivoshein wrote: > Кстати, кто/что посоветует: NFS-корень ведь read-only? Может, > там немного /etc/fstab поменять достаточно? Или ссылкой в меня > киньте... Как вариант, глянь генерилку в пакете ltsp из 4.0/branch (ltsp-build-client или около) -- там это всё в боевом виде применялось. -- ---- WBR, Michael Shigorin / http://altlinux.org ------ http://opennet.ru / http://anna-news.info
26.04.2019 21:23, Michael Shigorin пишет: > On Fri, Apr 26, 2019 at 08:59:25PM +0300, Leonid Krivoshein wrote: >> Кстати, кто/что посоветует: NFS-корень ведь read-only? Может, >> там немного /etc/fstab поменять достаточно? Или ссылкой в меня >> киньте... > Как вариант, глянь генерилку в пакете ltsp из 4.0/branch > (ltsp-build-client или около) -- там это всё в боевом виде > применялось. > Спасибо! Похоже на это: http://git.altlinux.org/gears/l/ltsp.git?p=ltsp.git;a=blob;f=ltsp/client/initramfs/scripts/ltsp_nbd;h=7237435d96600b19be0b7d094c4994748bc65878;hb=581a8709631c048f2897c0ec2df5dc2f5735c2da ? -- Best regards, Leonid Krivoshein.
On Fri, Apr 26, 2019 at 08:59:25PM +0300, Leonid Krivoshein wrote: > > 26.04.2019 20:43, Alexey Gladkov пишет: > > On Wed, Apr 24, 2019 at 04:01:13AM +0300, Leonid Krivoshein wrote: > >> 23.04.2019 17:26, Alexey Gladkov пишет: > >>> Я обновил master и исправил ряд багов, которые мы обсуждали в личке. Я мог > >>> что-нибудь забыть. > >> Ещё нашёл. При генерации с конфигом, содержащим: > >> > >> FEATURES += multipath > >> > >> make-initrd вываливается с ошибкой про недоступность модуля scsi_dh > >> (такого действительно нет в ядре 5.x). > > Модули я поправил, но нарвался на то, что правила для udev у нас > > в пакете multipath-tools написаны для федоры [1]. Мантейнеры этим пакетом > > не пользуются, иначе бы они заметили. > Да, очень забавный баг! > > > > Кроме того, правила содержат вызовы утилит systemd. Видимо, нужно > > сохранить в фиче вариант правил для "не-systemd". > > > > И кажется для меня новый челендж написать в initrd-cp копирование утилит > > из правил udev'а. > Определением таких зависимостей занимается именно initrd-cp? initrd-cp копирует файлы с зависимостями. Для бинарных файлов это библиотеки, для шелл-скриптов сейчас это интерпретатор. > Надо же, не знал. Может, тогда уж сразу и в shell-скриптах имеет смысл > искать ссылки на вызываемые программы? По крайней мере, тут уже готовый > код функциклирует в сборочнице. Если конечно это не будет оверхедом. Получение списка команд вызываемых из шелл-скрипте у нас сделано через alt-specific фичу в bash. Есть проект [1], который пытается сделать парсер, который можно использовать для анализа скриптов без выполнения. [1] https://github.com/mvdan/sh > А я извиняюсь за обещанный NFS. Нельзя сказать "извиняюсь". Это значит, что вы сами себя извиняете )) Не извиняйся. Я пока тоже за NFS не взялся. Пока стараюсь стабилизировать настройку сети. Также двигаюсь довольно медленно по плану реализации method=. > Всё железо и образы подготовил, но меня > завалило срочными задачами аж до вторника. Если получится, попробую на > виртуалках в выходные или в праздники посмотреть, тогда уже сразу с > новой версией. Кстати, кто/что посоветует: NFS-корень ведь read-only? Не обязательно. > Может, там немного /etc/fstab поменять достаточно? Или ссылкой в меня > киньте... Не понял вопроса. -- Rgrds, legion
On Fri, Apr 26, 2019 at 09:40:47PM +0300, Leonid Krivoshein wrote: > >> Кстати, кто/что посоветует: NFS-корень ведь read-only? Может, > >> там немного /etc/fstab поменять достаточно? Или ссылкой в меня > >> киньте... > > Как вариант, глянь генерилку в пакете ltsp из 4.0/branch > > (ltsp-build-client или около) -- там это всё в боевом виде > > применялось. > Спасибо! Похоже на это: > http://git.altlinux.org/gears/l/ltsp.git?p=ltsp.git;a=blob;f=ltsp/client/initramfs/scripts/ltsp_nbd;h=7237435d96600b19be0b7d094c4994748bc65878;hb=581a8709631c048f2897c0ec2df5dc2f5735c2da > ? Это NBD root. :) Там есть и NFS root. -- ---- WBR, Michael Shigorin / http://altlinux.org ------ http://opennet.ru / http://anna-news.info
On Fri, Apr 26, 2019 at 09:40:47PM +0300, Leonid Krivoshein wrote:
>
> 26.04.2019 21:23, Michael Shigorin пишет:
> > On Fri, Apr 26, 2019 at 08:59:25PM +0300, Leonid Krivoshein wrote:
> >> Кстати, кто/что посоветует: NFS-корень ведь read-only? Может,
> >> там немного /etc/fstab поменять достаточно? Или ссылкой в меня
> >> киньте...
> > Как вариант, глянь генерилку в пакете ltsp из 4.0/branch
> > (ltsp-build-client или около) -- там это всё в боевом виде
> > применялось.
> >
>
> Спасибо! Похоже на это:
>
> http://git.altlinux.org/gears/l/ltsp.git?p=ltsp.git;a=blob;f=ltsp/client/initramfs/scripts/ltsp_nbd;h=7237435d96600b19be0b7d094c4994748bc65878;hb=581a8709631c048f2897c0ec2df5dc2f5735c2da
> ?
Это же Network Block Device, а не NFS.
--
Rgrds, legion
26.04.2019 21:43, Alexey Gladkov пишет: > > Также двигаюсь довольно медленно по плану реализации method=. Но мы вместе, по крайней мере, начали движение в сторону замены пропагатора, что уже хорошо! Хотя твои старания с предварительной подготовкой по возможностям формирования списков модулей тоже не остались незамеченными. >> Всё железо и образы подготовил, но меня >> завалило срочными задачами аж до вторника. Если получится, попробую на >> виртуалках в выходные или в праздники посмотреть, тогда уже сразу с >> новой версией. Кстати, кто/что посоветует: NFS-корень ведь read-only? > Не обязательно. Вопрос записи на NFS пока не рассматриваем. Это ведь неважно куда, проверку слоёв записи можно отложить и на вторую очередь. >> Может, там немного /etc/fstab поменять достаточно? Или ссылкой в меня >> киньте... > Не понял вопроса. Мне нужно подготовить rootfs для NFS в тестовых целях, но желательно read-only. Сделать R/W-слой поверх R/O-корня можно как в stage1, так и в stage2. Сейчас в альте это делается в stage1 через скрипт init-bootom. А твои скрипты в initramfs уже умеют то, что умеет init-bootom? Или я получу read-only NFS-корень при переходе в stage2? -- Best regards, Leonid Krivoshein.
26.04.2019 21:48, Michael Shigorin пишет: > On Fri, Apr 26, 2019 at 09:40:47PM +0300, Leonid Krivoshein wrote: >>>> Кстати, кто/что посоветует: NFS-корень ведь read-only? Может, >>>> там немного /etc/fstab поменять достаточно? Или ссылкой в меня >>>> киньте... >>> Как вариант, глянь генерилку в пакете ltsp из 4.0/branch >>> (ltsp-build-client или около) -- там это всё в боевом виде >>> применялось. >> Спасибо! Похоже на это: >> http://git.altlinux.org/gears/l/ltsp.git?p=ltsp.git;a=blob;f=ltsp/client/initramfs/scripts/ltsp_nbd;h=7237435d96600b19be0b7d094c4994748bc65878;hb=581a8709631c048f2897c0ec2df5dc2f5735c2da >> ? > Это NBD root. :) > Там есть и NFS root. Это понятно и неважно, как монтировать NFS-то всем понятно. К тому же, это не то, что я искал, а как раз другая часть, похожая на init-bottom. Видимо что-то вроде нужного вот: http://git.altlinux.org/gears/l/ltsp.git?p=ltsp.git;a=blob;f=ltsp/client/initscripts/ltsp-setup;h=6b58cd507741bbf3d4621d578acc9cee877b6efe;hb=581a8709631c048f2897c0ec2df5dc2f5735c2da -- вопрос в том, тот ли это проект, что ты имел ввиду? -- Best regards, Leonid Krivoshein.
On Fri, Apr 26, 2019 at 09:59:14PM +0300, Leonid Krivoshein wrote:
> Мне нужно подготовить rootfs для NFS в тестовых целях, но желательно
> read-only. Сделать R/W-слой поверх R/O-корня можно как в stage1, так и в
> stage2. Сейчас в альте это делается в stage1 через скрипт init-bootom. А
> твои скрипты в initramfs уже умеют то, что умеет init-bootom? Или я
> получу read-only NFS-корень при переходе в stage2?
Если считать, что утилита nfsroot работает, то используя фичу nfsroot ты
получишь просто корень по NFS.
То что понаписано в init-bottom сложно соотнести с фичами. Этот скрипт
похож на монолитный поток сознания. Я скажу, что скорее нет, не умеют.
Всё содержимое init-bottom нужно аккуратно разделать на части.
--
Rgrds, agladkov
On Fri, Apr 26, 2019 at 10:07:13PM +0300, Leonid Krivoshein wrote: > вопрос в том, тот ли это проект, что ты имел ввиду? Да. -- ---- WBR, Michael Shigorin / http://altlinux.org ------ http://opennet.ru / http://anna-news.info
Продолжаю тестировать пока предыдущий мастер (2.3.1). Развёрнут обычный Альт сервер 8.2 (сервер сетевой загрузки) pxe:/srv/public# exportfs -s /srv/public *(ro,wdelay,insecure,root_squash,no_subtree_check,fsid=1,sec=sys,ro,insecure,root_squash,no_all_squash) Руками всё монтируется без ошибок, NFS-ресурсы видит без проблем. В качестве rootfs на сервере распаковал sqaush образ rescue. Гружусь так: console=ttyS0,115200 STOP=,all, ip=dhcp4 ipv6.disable=1 nfsroot=10.4.129.194:/srv/public/rootfs root=/dev/nfs nfsopts=ro,soft,nolock ro Непонятно, что происходит и где посмотреть -- отваливается по таймауту: [ 14.867943] Run /init as init process [ 14.812350] INITRAMFS: version 2.3.1 [ 14.822271] INIT: Entering runlevel: 3 Start service shell (Y)es/(N)o/(C)ontinue/(S)hell? [Y] y [ 22.825134] Starting shell service: [ DONE ] Start service cmdline (Y)es/(N)o/(C)ontinue/(S)hell? [Y] y [ 29.303898] Parsing cmdline arguments: [ DONE ] [ 29.347144] Generating network configuration: [ DONE ] Start service fstab (Y)es/(N)o/(C)ontinue/(S)hell? [Y] y [ 37.984010] Creating /etc/fstab: [ DONE ] Start service mountfs (Y)es/(N)o/(C)ontinue/(S)hell? [Y] y [ 46.384877] Mounting filesystem [/dev]: [ DONE ] [ 46.405567] Mounting filesystem [/sys]: [ DONE ] [ 46.437681] Mounting filesystem [/run]: [ DONE ] Start service sysctl (Y)es/(N)o/(C)ontinue/(S)hell? [Y] y [ 48.976444] Setting kernel runtime parameters: [ DONE ] Start service uevent (Y)es/(N)o/(C)ontinue/(S)hell? [Y] y [ 51.610211] Starting ueventd service: [ DONE ] Start service lukskeys (Y)es/(N)o/(C)ontinue/(S)hell? [Y] y Start service modules (Y)es/(N)o/(C)ontinue/(S)hell? [Y] y [ 60.279482] Loading modules: [ DONE ] Start service udev (Y)es/(N)o/(C)ontinue/(S)hell? [Y] y [ 66.689783] Starting udevd service: [ DONE ] Start service mountsrc (Y)es/(N)o/(C)ontinue/(S)hell? [Y] y Start service plymouth (Y)es/(N)o/(C)ontinue/(S)hell? [Y] n -- Best regards, Leonid Krivoshein.