Bug 50888 - Не работает установка по HTTP с нераспакованного образа, если указан ramdisk_size=...
Summary: Не работает установка по HTTP с нераспакованного образа, если указан ramdisk_...
Status: CLOSED NOTABUG
Alias: None
Product: Sisyphus
Classification: Development
Component: make-initrd-bootchain (show other bugs)
Version: unstable
Hardware: all Linux
: P5 normal
Assignee: Leonid Krivoshein
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2024-07-12 14:30 MSK by obidinog@basealt.ru
Modified: 2024-07-15 12:10 MSK (History)
6 users (show)

See Also:


Attachments
screen1 (15.38 KB, image/png)
2024-07-12 14:30 MSK, obidinog@basealt.ru
no flags Details
screen2 (45.59 KB, image/png)
2024-07-12 14:31 MSK, obidinog@basealt.ru
no flags Details
screen3 (50.56 KB, image/png)
2024-07-12 17:26 MSK, obidinog@basealt.ru
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description obidinog@basealt.ru 2024-07-12 14:30:49 MSK
Created attachment 16411 [details]
screen1

Пакет:
installer 1.15.9-alt1

Шаги:
Настроить сервер http
1)Установить пакет веб-сервера Apache:
# apt-get install -y apache2

2)В файле /etc/httpd2/conf/sites-enabled/000-default.conf заменить содержимое:

# cat > /etc/httpd2/conf/sites-enabled/000-default.conf << '_EOF_'
    <VirtualHost *>
        ServerAdmin webmasterr@localhost
        DocumentRoot "/srv/public/netinst/mnt/"
        <Directory />
                Include conf/include/Directory_root_default.conf
        </Directory>
        ErrorLog /var/log/httpd2/error_log
        LogLevel warn
        <IfModule alias_module>
                Alias /share/ "/mnt/sharefolder/"
        </IfModule>
    </VirtualHost>
    _EOF_

3)В файле /etc/httpd2/conf/include/Directory_root_default.conf заменить строку:
# sed -i "s|Require all denied|Require all granted|g" /etc/httpd2/conf/include/Directory_root_default.conf

4)Перезапустить сервис Apache:
# systemctl restart httpd2
# systemctl enable httpd2

5)Создать папку для хранилища ISO-образов и поместить туда образ:
# mkdir -p /mnt/sharefolder

Клиент:
1) Клиент с загруженным образом Sisyphus

2) В меню установки выбрать Установить... и нажать клавишу E

3) В параметрах ядра добавить следующую опцию: 
ip=dhcp automatic=method:http,server:<ip-server>,direcroty:/share/<iso_name> stagename=altinst

4)Нажать F10

Результат: Образ не загружается, ошибка "Connection error or specified URL unavailable now!"
Но с сервером http проблем нет, работает корректно, образ загружается.

Ожидаемый результат: Успешная загрузка образа

Дополнительно:
В P10 ошибка не воспроизводится (с этим же сервером)
Прикладываю скрины ошибок
Comment 1 obidinog@basealt.ru 2024-07-12 14:31:13 MSK
Created attachment 16412 [details]
screen2
Comment 2 Антон Мидюков 2024-07-12 16:27:36 MSK
Компонент выбран неверно. Это make-initrd-bootchain-altboot отвечает за загрузку по сети.
Укзан неверный параметр загрузки. Чтобы загрузить iso целиком, нужно указать параметр type:iso так:
ip=dhcp automatic=method:http,server:<ip-server>,direcroty:/share/<iso_name>,type:iso stagename=altinst

Подробности в баге 42967.
Comment 3 obidinog@basealt.ru 2024-07-12 17:26:02 MSK
(Ответ для Антон Мидюков на комментарий #2)

> ip=dhcp
> automatic=method:http,server:<ip-server>,directory:/share/<iso_name>,type:
> iso stagename=altinst

Данное решение не помогло(см.скрин3)
Comment 4 obidinog@basealt.ru 2024-07-12 17:26:25 MSK
Created attachment 16417 [details]
screen3
Comment 5 Антон Мидюков 2024-07-12 17:42:39 MSK
(Ответ для obidinog@basealt.ru на комментарий #4)
> Создано вложение 16417 [details] [подробности]
> screen3

Неверный путь до образа. Перепроверьте.
Comment 6 Антон Мидюков 2024-07-12 17:53:53 MSK
Я правильно понимаю, что прописано directory:/share/1.iso/altinst ? Нужно directory:/share/1.iso
Comment 7 obidinog@basealt.ru 2024-07-12 17:57:40 MSK
Путь указан верно, «directory:/share/1.iso»
Полная команда:
ip=dhcp automatic=method:http,server:<ip-server>,direcroty:/share/<iso_name>,type:iso stagename=altinst
Comment 8 Антон Мидюков 2024-07-12 18:03:42 MSK
(Ответ для obidinog@basealt.ru на комментарий #7)
> Путь указан верно, «directory:/share/1.iso»
> Полная команда:
> ip=dhcp
> automatic=method:http,server:<ip-server>,direcroty:/share/<iso_name>,type:
> iso stagename=altinst

Опечатались.
Comment 9 obidinog@basealt.ru 2024-07-12 18:23:29 MSK
(Ответ для obidinog@basealt.ru на комментарий #7)
> Полная команда:
> ip=dhcp
> automatic=method:http,server:<ip-server>,direcroty:/share/<iso_name>,type:
> iso stagename=altinst

опечатка.
UPD:
Полная команда:
ip=dhcp automatic=method:http,server:<ip-server>,directory:/share/1.iso,type:iso stagename=altinst
Comment 10 Антон Мидюков 2024-07-12 18:30:52 MSK
(Ответ для obidinog@basealt.ru на комментарий #9)
> (Ответ для obidinog@basealt.ru на комментарий #7)
> > Полная команда:
> > ip=dhcp
> > automatic=method:http,server:<ip-server>,direcroty:/share/<iso_name>,type:
> > iso stagename=altinst
> 
> опечатка.
> UPD:
> Полная команда:
> ip=dhcp
> automatic=method:http,server:<ip-server>,directory:/share/1.iso,type:iso
> stagename=altinst

А можно совсем полную привести? Начиная с linux
Comment 11 Leonid Krivoshein 2024-07-14 15:50:22 MSK
Попробуйте убрать из параметров загрузки ramdisk_size=..., а также проверьте логи на сервере, куда стучится altboot, правильно ли указаны пути.

См. https://git.altlinux.org/gears/m/make-initrd-bootchain.git?p=make-initrd-bootchain.git;a=blob;f=bootchain-doc/testing/mksrvdata.sh#l287 и в этом же скрипте со строки 62 -- в этом файле все возможные варианты параметров altboot.
Comment 12 Leonid Krivoshein 2024-07-14 21:35:29 MSK
На всякий случай: на третьем скриншоте видно, что используется модуль download не в том режиме, независимо от type=iso, на это указывает to=RD. Полный ISO-образ не может быть загружен в RAM-disk. Поэтому шаг download воспринимает параметр directory как каталог на сервере, в котором должен лежать файл stagename, отсюда столь странный путь /share/1.iso/altinst. Т.е. достаточно убрать ramdisk_size=...
Comment 13 Антон Мидюков 2024-07-15 07:05:40 MSK
(Ответ для Leonid Krivoshein на комментарий #12)
> На всякий случай: на третьем скриншоте видно, что используется модуль
> download не в том режиме, независимо от type=iso, на это указывает to=RD.
> Полный ISO-образ не может быть загружен в RAM-disk. Поэтому шаг download
> воспринимает параметр directory как каталог на сервере, в котором должен
> лежать файл stagename, отсюда столь странный путь /share/1.iso/altinst. Т.е.
> достаточно убрать ramdisk_size=...

Из этого я делаю вывод, что ошибка есть. И состоит она в том, что при явном указании типа загружаемого образа эвристика не отключается. Это нужно исправить.
Comment 14 obidinog@basealt.ru 2024-07-15 09:35:35 MSK
Загрузка по http начинает работать при удалении ramdisk_size=... и добавлении
ip=dhcp automatic=method:http,server:<ip-server>,directory:/share/<iso>.iso,type:iso stagename=altinst
Comment 15 Leonid Krivoshein 2024-07-15 11:43:59 MSK
(In reply to Антон Мидюков from comment #13)
> Из этого я делаю вывод, что ошибка есть. И состоит она в том, что при явном
> указании типа загружаемого образа эвристика не отключается. Это нужно
> исправить.
Логика для методов ftp и http описана в #42967#c4, тут нет ошибки:

1. Если указан ramdisk_size=..., сквош сначала грузится в RAM-диск;
2. При наличии automatic=type:iso,..., ISO-образ грузится целиком в TMPFS;
3. Если ramdisk_size=... не указан, сквош грузится в TMPFS.

При этом параметр lowmem не имеет значения.

ramdisk_size -- параметр ядра, оно либо создаёт RAM-диски, либо не создаёт. Нужный размер RAM-диска под целый ISO определить заранее и записать на тот же ISO-образ невозможно. Раз параметр (ramdisk_size) прописан, значит это старый способ загрузки сквошаб эвристика тут уместна. По твоему настоянию в эту логику был добавлен п.3, т.е. по умолчанию мы теперь грузим сквош в TMPFS, а не в RAM-диск, достаточно просто убрать в m-p параметр ramdisk_size.
Comment 16 Антон Мидюков 2024-07-15 12:10:16 MSK
Так как:

(Ответ для Leonid Krivoshein на комментарий #15)
>ramdisk_size -- параметр ядра, оно либо создаёт RAM-диски, либо не создаёт. 

то действительно всё правильно сейчас работает. Исправлять нечего.