Bug 40554 - slinux 9.1: сломана загрузка по cifs
Summary: slinux 9.1: сломана загрузка по cifs
Status: CLOSED FIXED
Alias: None
Product: Simply Linux
Classification: Distributions
Component: installer (show other bugs)
Version: 9.1
Hardware: x86_64 Linux
: P5 blocker
Assignee: Mikhail Efremov
QA Contact: Andrey Cherepanov
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2021-07-21 13:35 MSK by Alexey Sheplyakov
Modified: 2022-04-13 14:54 MSK (History)
8 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Alexey Sheplyakov 2021-07-21 13:35:39 MSK
Порядок действий.

1. Скачиваем и записываем ISO на флешку, например так:

cd /srv/export/dist/altlinux
wget -N https://mirror.yandex.ru/altlinux/images/p9/simply/x86_64/slinux-9.1-x86_64.iso
echo 'f0dc82436b8a65f17d11bb93f550e97c4ed27dea8b00b72758232122372da1a5  slinux-9.1-x86_64.iso' | sha256sum -c
sudo wipefs -a /dev/disk/by-id/usb-Generic-_Multi-Card_20120501030900000-0\:0
sudo chown `whoami`  /dev/disk/by-id/usb-Generic-_Multi-Card_20120501030900000-0\:0
dd if=slinux-9.1-x86_64.iso of=/dev/disk/by-id/usb-Generic-_Multi-Card_20120501030900000-0\:0 bs=4M oflag=direct conv=fsync status=progress

2. Раздаём директорию с ISO по smb, как-то так:

sudo apt-get install -y samba
cat > smb.conf <<-EOF
[global]
	workgroup = ASHEPLYAKOV
	security = user
	guest account = nobody
	map to guest = bad user
	client min protocol = NT1
	server min protocol = NT1
	server string = ALT Linux network boot
	interfaces = lo eth0 eth1
	log file = /var/log/samba/samba.log
	max log size = 1024
	load printers = no

[altinstall]
	path = /srv/export/dist/altlinux
	read only = yes
	guest ok = yes
EOF
sudo systemctl enable --now smb
sudo systemctl restart smb

3. Грузим (другой) компьютер с ISO. В меню GRUB выбираем 'LiveCD (no hard disk needed)', редактируем так:

linuxefi /EFI/BOOT/vmlinuz changedisk fastboot live automatic=method:cifs,network:dhcp,server:10.42.0.32,directory:/altinstall/slinux-9.1-x86_64.iso stagename=live showopts ramdisk_size=1686496
initrdefi /EFI/BOOT/full.cz

4. Продолжаем загрузку


Ожидаемый результат: загружается live система

Наблюдаемый результат:

Cообщение "Error: I can't mount the directory from the Samba server".
В логе ядра ругань от cifs.ko:

$ dmesg |tail
CIFS: Attempting to mount //10.42.0.32/altinstall/slinux-9.1-x86_64.iso
CIFS: No dialect specified on mount. Default has been changed to a more secure dialect, SMB2.1 or later (e.g. SMB3.1.1), from CIFS (SMB1). To use less secure SMB1 dialect to access old servers which do not support SMB3.1.1 (or even SMB3 or SMB2.1) specify vers=1.0 on mount
CIFS: VFS: Could not allocate crypto cmac(aes)
CIFS: VFS: Could not allocate crypto cmac(aes)
CIFS: VFS: Could not allocate crypto cmac(aes)
CIFS: VFS: Could not allocate crypto cmac(aes)
CIFS: VFS: Could not allocate crypto cmac(aes)
CIFS: VFS: Could not allocate crypto cmac(aes)
CIFS: VFS: \\10.42.0.32 generate_key: crypto alloc failed
CIFS: VFS: \\10.42.0.32 Send error in SessSetup = -2
CIFS: VFS: cifs_mount failed w/return code = -2


Монтирование вручную работает:

mount -t cifs -o vers=1.0,guest,ro //10.42.0.32/altinstall /mnt
sha256sum /mnt/slinux-9.1-x86_64.iso
f0dc82436b8a65f17d11bb93f550e97c4ed27dea8b00b72758232122372da1a5 /mnt/slinux-9.1-x86_64.iso



Варианты исправления:

1) Добавить в initramfs (full.cz) модуль cmac.ko (lib/modules/$kernel_version/kernel/crypto/cmac.ko)
2) Объяснить propagator, что cifs надо попытаться смонтировать с vers=1.0
Comment 1 Evgeny Sinelnikov 2021-07-21 22:04:04 MSK
(Ответ для Alexey Sheplyakov на комментарий #0)
[...]
> Варианты исправления:
> 
> 1) Добавить в initramfs (full.cz) модуль cmac.ko
> (lib/modules/$kernel_version/kernel/crypto/cmac.ko)
> 2) Объяснить propagator, что cifs надо попытаться смонтировать с vers=1.0

Я уже об этом неоднократно сообщал и меня уверяли, что всё исправлено. Предлагаю добавить модуль.
Comment 2 Evgeny Sinelnikov 2021-07-21 22:06:57 MSK
Вообще, это относится не только к Simply Linux, но и к другим проджуктам. И к другим продуктам гораздо больше. А вот что делать с уже выпущенными образами? Ну, отсаётся только пересобирать, если хочется их ставить по сети через cifs.
Comment 3 Антон Мидюков 2021-07-22 03:36:41 MSK
commit eb34af1318969cea668fb90ef0b75b5669e2cc40 вошёл в релиз mkimage-profiles 1.4.9-alt1
http://git.altlinux.org/gears/m/mkimage-profiles.git?p=mkimage-profiles.git;a=commitdiff;h=eb34af1318969cea668fb90ef0b75b5669e2cc40

В ветке alt-p9-v2 у sem@ действительно отсутствует.
Comment 4 Mikhail Efremov 2021-07-22 12:41:40 MSK
Спасибо, заберу.
Comment 5 Leonid Krivoshein 2021-07-30 04:54:17 MSK
Спасибо, я искал как раз эту информацию. Однако замечу, что очевидно ошибка очень специфична для настроек серверной части. Поскольку стендировал не добавляя специально ни модуля, ни опции vers=1.0, хотя такая возможность была. С этим кодом:

http://git.altlinux.org/people/klark/packages/?p=make-initrd-bootchain.git;a=blob;f=bootchain-cifs/data/lib/bootchain/cifs;h=d1062cc72d5ec84bacbb289c482506f9b7c947e6;hb=a76395e644060c2cbf509dbcca9dfe65dc0016ba#l84

Получался примерно такой лог загрузки:

http://git.altlinux.org/people/klark/packages/?p=make-initrd-bootchain.git;a=blob;f=boot-logs/network/live%2Bcifs%2Bnormal.log;h=5859822ee469145653e4b523272b22f3e6f85191;hb=a76395e644060c2cbf509dbcca9dfe65dc0016ba#l282

Как я понял, фичу cifs лучше сделать зависимой от этого модуля ядра.
Comment 6 Evgeny Sinelnikov 2021-07-30 09:09:51 MSK
В рамках фич поддерживаемых инсталлятором, предлагаю рассмотреть ещё и вот такую, которая появится только к осени - "Support for Offline Domain Join (ODJ)":
- https://wiki.samba.org/index.php/Release_Planning_for_Samba_4.15
- https://gitlab.com/samba-team/samba/-/commit/68bd2229bd4528505ab9695bbcbde59fc0fe2a33

Суть в том, что для аутентификации иногда требуются учётные данные, а вбивать везде один и тот же пароль администратора домена - идея не очень. Вообще, учётку с правами на редактирование домена шарить - так себе затея.

Если же сгененировать специальный файл, то с его помощью можно вводить в домен машину по заранее сформированным данным. А далее, это позволяет использовать эти данным и для:
- авторизованного доступа к шарам, в принципе;
- для доступа к специфичным данным от имени компьютера;
- возможности применения групповых политик на этапе установки операционной системы.
Comment 7 AEN 2021-07-30 09:13:22 MSK
(Ответ для Evgeny Sinelnikov на комментарий #6)
> В рамках фич поддерживаемых инсталлятором, предлагаю рассмотреть ещё и вот
> такую, которая появится только к осени - "Support for Offline Domain Join
> (ODJ)":
> - https://wiki.samba.org/index.php/Release_Planning_for_Samba_4.15
> -
> https://gitlab.com/samba-team/samba/-/commit/
> 68bd2229bd4528505ab9695bbcbde59fc0fe2a33
> 
> Суть в том, что для аутентификации иногда требуются учётные данные, а
> вбивать везде один и тот же пароль администратора домена - идея не очень.
> Вообще, учётку с правами на редактирование домена шарить - так себе затея.
> 
> Если же сгененировать специальный файл, то с его помощью можно вводить в
> домен машину по заранее сформированным данным. А далее, это позволяет
> использовать эти данным и для:
> - авторизованного доступа к шарам, в принципе;
> - для доступа к специфичным данным от имени компьютера;
> - возможности применения групповых политик на этапе установки операционной
> системы.

"К осени" это когда?
Comment 8 Leonid Krivoshein 2021-07-30 15:43:36 MSK
(In reply to Evgeny Sinelnikov from comment #6)
> В рамках фич поддерживаемых инсталлятором, предлагаю рассмотреть ещё и вот
> такую, которая появится только к осени - "Support for Offline Domain Join
> (ODJ)":
Для инсталлятора это очень правильная идея, если речь о галочке "ввести сразу в домен" или о каком-то очень кастомном инсталляторе. Но для загрузки с сервера SAMBA доменная админская учётка не требуется. Как админ, я бы предпочёл отдельную учётку с доступом только на чтение к ресурсу, типа altinstall в примере выше, для возможности загрузки с сервера. Плюс дефолтный вариант с доступом только на чтение для гостя.
Comment 9 Alexey Sheplyakov 2021-08-13 14:07:14 MSK
(In reply to Leonid Krivoshein from comment #5)
> Спасибо, я искал как раз эту информацию. Однако замечу, что очевидно ошибка
> очень специфична для настроек серверной части. Поскольку стендировал не
> добавляя специально ни модуля, ни опции vers=1.0, хотя такая возможность
> была.

Не вполне верно. В данном случае ошибка вызвана настройками *клиента*, т.е. ядерного модулся cifs. А именно, cifs.ko по умолчанию использует протокол SMB версии 3.1.1, для чего нужно договориться с сервером о шифровании. А для этого нужен cmac.ko, которого нет в initramfs (либо либо CONFIG_CRYPTO_CMAC=y).

В свою очередь, версия протокола SMB, которую использует "ядреный" клиент (cifs.ko) зависит от версии ядра.
Comment 10 Sergey Ivanov 2022-04-13 10:54:02 MSK
Проверил данную ошибку на образе:
http://ftp.altlinux.org/pub/people/zerg/p10/
d3b2f924deb4e13a7fcd86341b79c130 alt-kworkstation-10.0-RC3_20220404-install-x86_64.iso

Расшарил папку по протоколу smb (Сервер с расшареной папкой развернул на: alt-workstation-10.0-x86_64 обновленный до p10)
Для запуска установки/загрузки по smb использовал образ: alt-kworkstation-10.0-RC3_20220404-install-x86_64.iso

В результате сетевая установка/загрузка по samba успешно выполняется.
Comment 11 Mikhail Efremov 2022-04-13 12:26:20 MSK
В SL-10.0 тоже должно работать. Хотя хорошо бы проверить, конечно.
Comment 12 Sergey Ivanov 2022-04-13 14:44:40 MSK
Проверил на образе http://ftp.altlinux.org/pub/distributions/ALTLinux/p10/images/simply/x86_64/slinux-10.0-x86_64.iso

На нем сетевая установка/загрузка по samba так же успешно выполняется.
Comment 13 Mikhail Efremov 2022-04-13 14:54:59 MSK
Спасибо! Значит уже исправлено в SL-10.0.