Bug 41263 - Не работает загрузка с livecd
Summary: Не работает загрузка с livecd
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:
 
Reported: 2021-11-01 23:24 MSK by Konstantin A Lepikhov (L.A. Kostis)
Modified: 2021-11-02 16:24 MSK (History)
3 users (show)

See Also:


Attachments
boot error (102.96 KB, image/jpeg)
2021-11-01 23:24 MSK, Konstantin A Lepikhov (L.A. Kostis)
no flags Details
squashfs step failed (144.47 KB, image/jpeg)
2021-11-02 00:42 MSK, Konstantin A Lepikhov (L.A. Kostis)
no flags Details
missing loop module (113.92 KB, image/jpeg)
2021-11-02 00:43 MSK, Konstantin A Lepikhov (L.A. Kostis)
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Konstantin A Lepikhov (L.A. Kostis) 2021-11-01 23:24:18 MSK
Created attachment 9898 [details]
boot error

Привет!

Попробовал собрать regular-gnome3 со своими дополнениями, livecd создается, но загрузка зависает, в tty3 есть только сообщения от bootchain (скриншот прикладываю).

Как это можно продебажить и что изменилось с точки зрения ядра/initrd, что теперь происходит ошибка?

Спасибо.
Comment 1 Konstantin A Lepikhov (L.A. Kostis) 2021-11-01 23:33:11 MSK
https://github.com/LAKostis/mkimage-profiles - ссылка на мои изменения, ветка master.
Comment 2 Антон Мидюков 2021-11-01 23:41:18 MSK
Образ при помощи dd записан на флешку?
Comment 3 Leonid Krivoshein 2021-11-02 00:10:21 MSK
Привет! Очень интересная ошибка! Какой-то необычный образ. Ранее altboot не сталкивался с отсутствием свободных loop-устройств, когда losetup -f ничего не выдаёт. Похожее было с /dev/ramN, но для них сделан fallback на tmpfs. Если тут задействован режим forensic, возможно спасёт какой-нибудь max_loop=...

Подебажить можно так: добавив параметр bc_debug, можно увидеть все детали происходящего в /var/log/chaind.log , можно добавить rdshell для получения shell в stage1. Если хитрое железо, можно перенаправить журнал сразу на консоль или в /dev/ttyprintk (на earlycon), для этого указываются rdlog=console console=ttyS0,... или rdlog=printk console=ttyS0,... earlycon=... igonre_loglevel.
Comment 4 Konstantin A Lepikhov (L.A. Kostis) 2021-11-02 00:17:55 MSK
(In reply to Антон Мидюков from comment #2)
> Образ при помощи dd записан на флешку?

да
Comment 5 Konstantin A Lepikhov (L.A. Kostis) 2021-11-02 00:41:26 MSK
Я предполагаю, что проблема в отсутствии обработки ситуации, когда поддержки loop нет в ядре и оно модулем (см. скриншоты).
Comment 6 Konstantin A Lepikhov (L.A. Kostis) 2021-11-02 00:42:22 MSK
Created attachment 9899 [details]
squashfs step failed
Comment 7 Konstantin A Lepikhov (L.A. Kostis) 2021-11-02 00:43:20 MSK
Created attachment 9900 [details]
missing loop module

После загрузки loop и передачи параметра callnum squashfs отработал без ошибок.
Comment 8 Leonid Krivoshein 2021-11-02 01:00:05 MSK
(Ответ для Konstantin A Lepikhov (L.A. Kostis) на комментарий #7)
> После загрузки loop и передачи параметра callnum squashfs отработал без
> ошибок.
Понятно. Первый раз вижу, чтобы loop загружался модулем, ибо даже в писании сказано, что м.б. только Y и N: https://github.com/torvalds/linux/blob/master/drivers/block/Kconfig#L156 . В такой необычной конфигурации воркэраундом может быть добавление в /etc/initrd.mk строки MODULES_PRELOAD += loop . Хм, а как вообще правильно? Ведь в большинстве конфигураций он не модулем собирается.
Comment 9 Leonid Krivoshein 2021-11-02 01:03:06 MSK
Нет, модулем тоже можно. Но всё равно такого не встречал. Тогда в будущей версии altboot стоит добавить что-то вроде: modprobe loop 2>/dev/null ||: или не стоит?
Comment 10 Konstantin A Lepikhov (L.A. Kostis) 2021-11-02 01:15:41 MSK
(In reply to Leonid Krivoshein from comment #9)
> Нет, модулем тоже можно. Но всё равно такого не встречал. Тогда в будущей
> версии altboot стоит добавить что-то вроде: modprobe loop 2>/dev/null ||:
> или не стоит?

ну я себе добавил ;)
Comment 11 Konstantin A Lepikhov (L.A. Kostis) 2021-11-02 01:17:58 MSK
(In reply to Leonid Krivoshein from comment #8)
> (Ответ для Konstantin A Lepikhov (L.A. Kostis) на комментарий #7)
> > После загрузки loop и передачи параметра callnum squashfs отработал без
> > ошибок.
> Понятно. Первый раз вижу, чтобы loop загружался модулем, ибо даже в писании
> сказано, что м.б. только Y и N:
> https://github.com/torvalds/linux/blob/master/drivers/block/Kconfig#L156 . В
> такой необычной конфигурации воркэраундом может быть добавление в
> /etc/initrd.mk строки MODULES_PRELOAD += loop . Хм, а как вообще правильно?
> Ведь в большинстве конфигураций он не модулем собирается.

Думаю это тяжелое наследие propagator, и когда то (в эпоху дискет :) этот модуль был обычным явлением.

В моих ядрах (wks) я эту конфигурацию точно не менял и она переехала еще с альтовых ядер имени vsu@
Comment 12 Leonid Krivoshein 2021-11-02 01:23:00 MSK
(Ответ для Konstantin A Lepikhov (L.A. Kostis) на комментарий #10)
> (In reply to Leonid Krivoshein from comment #9)
> > Тогда в будущей версии altboot стоит добавить что-то вроде:
> > modprobe loop 2>/dev/null ||: или не стоит?
> ну я себе добавил ;)
Интересно узнать, что чем это закончится. :-)

(Ответ для Konstantin A Lepikhov (L.A. Kostis) на комментарий #11)
> (In reply to Leonid Krivoshein from comment #8)
> > В такой необычной конфигурации воркэраундом может быть добавление в
> > /etc/initrd.mk строки MODULES_PRELOAD += loop . Хм, а как вообще правильно?
> > Ведь в большинстве конфигураций он не модулем собирается.
> Думаю это тяжелое наследие propagator, и когда то (в эпоху дискет :) этот
> модуль был обычным явлением.
Эти две стадии установщика жёстко связаны: http://git.altlinux.org/gears/i/installer.git?p=installer.git;a=blob;f=installer/preinstall.d/99-cdrom.sh;h=ffc9fd7b32405d130669b5eae6ac3859a01a1b04;hb=8d89471c308ae386e780da15a0e17ba95d19091c -- нельзя без loop, там подменяется backing device в процессе установки, так что не только от пропагатора зависит.
Comment 13 Антон Мидюков 2021-11-02 08:07:32 MSK
Так может достаточно просто добавить loop в initrd, а он сам подгрузится при обращении к losetup? Или модуль в initrd был, но не подгрузился?
Comment 14 Leonid Krivoshein 2021-11-02 13:20:58 MSK
(Ответ для Антон Мидюков на комментарий #13)
> Так может достаточно просто добавить loop в initrd, а он сам подгрузится при
> обращении к losetup? Или модуль в initrd был, но не подгрузился?
Модуль в initramfs был, но он не подгрузился. В следующем релизе исправлю. Однако есть нюанс -- как сделать опциональное дотаскивание модуля в initramfs? Достаточно ли будет добавить здесь: http://git.altlinux.org/gears/m/make-initrd-bootchain.git?p=make-initrd-bootchain.git;a=blob;f=bootchain-altboot/config.mk;h=4572f4cb72f24c84a2e8f52539905a52c5222c8d;hb=d9135c3936ee28b0153746d690724c6f650b5a07 чего-то вроде: BOOTCHAIN_ALTBOOT_MODULES = loop ? Не будет ли это ломать сборку, если модуль вкомпилирован в ядро?
Comment 15 Leonid Krivoshein 2021-11-02 14:08:53 MSK
Task #288727, надо проверять...
Comment 16 Leonid Krivoshein 2021-11-02 14:52:14 MSK
Проверил на rescue с включенным режимом forensic, вроде ничего не сломалось. Отправлю тогда в Сизиф...
Comment 17 Антон Мидюков 2021-11-02 14:53:28 MSK
(Ответ для Leonid Krivoshein на комментарий #16)
> Проверил на rescue с включенным режимом forensic, вроде ничего не сломалось.
> Отправлю тогда в Сизиф...

Ругани точно никакой? Типа Modules preload failed
Comment 18 Repository Robot 2021-11-02 14:55:26 MSK
make-initrd-bootchain-0.1.5-alt7 -> sisyphus:

 Tue Nov 02 2021 Leonid Krivoshein <klark@altlinux> 0.1.5-alt7
 - bootchain-altboot: try to load module 'loop' (ALT #41263).
Comment 19 Leonid Krivoshein 2021-11-02 16:24:13 MSK
(Ответ для Антон Мидюков на комментарий #17)
> Ругани точно никакой? Типа Modules preload failed
Не, всё хорошо. Модуль добавляется через MODULES_TRY_ADD += ..., загрузка выполняется единожды и с подавлением вывода об ошибках.