Bug 42967 - Невозможно загрузить по методу http сквош, если не указан ramdisk_size
Summary: Невозможно загрузить по методу http сквош, если не указан ramdisk_size
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: make-initrd-bootchain (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P5 normal
Assignee: Leonid Krivoshein
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks: 33000
  Show dependency tree
 
Reported: 2022-06-09 20:35 MSK by Антон Мидюков
Modified: 2023-07-11 00:31 MSK (History)
2 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Антон Мидюков 2022-06-09 20:35:09 MSK
Невозможно загрузить по методу http сквош из каталога, если не указан ramdisk_size.
Ожидаемое поведение: сквош копируется в tmpfs и происходит загрузка.
Comment 1 Leonid Krivoshein 2023-07-07 23:11:32 MSK
(Ответ для Антон Мидюков на комментарий #0)
> Невозможно загрузить по методу http сквош из каталога, если не указан
> ramdisk_size.
Да, так было задумано. Посмотри внимательно:

https://git.altlinux.org/gears/m/make-initrd-bootchain.git?p=make-initrd-bootchain.git;a=blob;f=bootchain-altboot/data/lib/altboot/translate.d/100-download

и

https://git.altlinux.org/gears/m/make-initrd-bootchain.git?p=make-initrd-bootchain.git;a=blob;f=bootchain-altboot/data/lib/bootchain/download#l30

Сейчас наличие ramdisk_size фактически определяет один из двух вариантов загрузки образов по FTP и HTTP. Данное поведение было сначала добалвено в propagator Алексеем Шепляковым. На мой взгляд оно вполне логичное, я его воспроизвёл в altboot:

1) Старое поведение propagator -- наличие ramdisk_size предполагает, что в /dev/ramN грузится сквош, установщик ищет пакеты в /ALTLinux/RPMS.main, каким способом примонтирован диск -- неважно, но должен быть корректно указан размер RAM-диска для размещения сквоша.

2) Новое поведение propagator -- указывать ramdisk_size не требуется, RAM-диск не используется, весь ISO-образ целиком загружается на TMPFS. При создании такого ISO-образа мы и не можем заранее знать, какой нужен размер для RAM-диска. В altboot этот режим был добавлен прежде всего для поддержки netboot, т.е. мы используем крошечный стартер (ISO-образ с ядром и initrd), но в процессе выбираем и загружаемся с какого-то другого ISO-образа, расположенного в сети.

> Ожидаемое поведение: сквош копируется в tmpfs и происходит загрузка.
Есть предложения, как это разрулить, не отказываясь от идеи с netboot?
Comment 2 Leonid Krivoshein 2023-07-11 00:05:24 MSK
Антон предложил такой вариант, который и был реализован. С версии 0.1.5-alt17 в переменную automatic=... добавлен необязательный аргумент type:iso. Если он указан, подразумевается вариант netstart с загрузкой полного ISO-образа методами ftp или http, допускающий начальную загрузку ядра с initrd из одного источника, а продолжение загрузки из другого сетевого источника и даже другим методом.

До версии 0.1.5-alt17 такой способ загрузки методами ftp и http активизировался если не указать ramdisk_size=..., но теперь его отсутсвие подразумевает иное, см.: #42966. Полный ISO-образ всегда грузится только на TMPFS.

В дальнейшем можно будет использовать type для других типов образов, таких как squash, raw, ..., но пока в этом нет необходимости.
Comment 3 Repository Robot 2023-07-11 00:25:36 MSK
make-initrd-bootchain-0.1.5-alt17 -> sisyphus:

 Mon Jul 10 2023 Leonid Krivoshein <klark@altlinux> 0.1.5-alt17
 - altboot: use TMPFS when ramdisk_size not set (ALT #42966)
 - altboot: introduce new 'type:iso' sub-argument (ALT #42967)
 - doc: expand the test suite by cases without ramdisk_size=
 - core: pack optional config file /etc/sysconfig/bootchain
 - interactive: pack optional file /etc/dialogrc.error
Comment 4 Leonid Krivoshein 2023-07-11 00:31:44 MSK
Для методов ftp и http логика работы некоторых параметров теперь такая:

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

При этом параметр lowmem не имеет значения. Для других (монтируемых) методов:

1. Если указан lowmem, ничего никуда не грузится, монтируется сквош;
2. Если указан ramdisk_size=..., сквош сначала грузится в RAM-диск;
3. Если ramdisk_size=... не указан, сквош грузится в TMPFS.