Bug 51479

Summary: После загрузки live в режиме rw пропадает флаг boot с PMBR
Product: Sisyphus Reporter: Антон Мидюков <antohami>
Component: make-initrd-bootchain-liverwAssignee: Leonid Krivoshein <klark>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: normal    
Priority: P5 CC: antohami, asy, klark, zerg
Version: unstable   
Hardware: all   
OS: Linux   
See Also: https://bugzilla.altlinux.org/show_bug.cgi?id=51485

Description Антон Мидюков 2024-09-14 18:24:11 MSK
Имеем проблему у iso-образов с таблицей разделов GPT. После загрузки live в режиме rw пропадает флаг boot с PMBR. Из-за этого невозможно загрузиться на старых BIOS, так как они грузятся с тех MBR, на которых есть флаг boot.
Если смотреть fdisk'ом, то выглядит это так:
Команда (m для справки): M

Ввод метки наследственного/гибридного MBR.

Команда (m для справки): p
Диск /dev/sda: 29,76 GiB, 31954556416 байт, 62411243 секторов
Единицы: секторов по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер I/O (минимальный/оптимальный): 512 байт / 512 байт
Тип метки диска: dos
Идентификатор диска: 0x00000000

Устр-во    Загрузочный начало    Конец  Секторы Размер Идентификатор Тип
/dev/sda1                   1 62411242 62411242  29,8G            ee GPT
/dev/sda2  *                0        0        1   512B             0 Пустой

После загрузки в режиме rw (режим сохранения сеанса), запись /dev/sda2 из MBR пропадает.
Это не регрессия относительно propagator, там происходит ровно тоже.
Comment 1 Sergey Y. Afonin 2024-09-14 20:46:34 MSK
Когда-то, дежавю подсказывает, что во времена 4-го бранча примерно, такая проблема появилась в BIOS Intel. То есть без такого флага на любом разделе BIOS даже не пытаестя грузить MBR с hdd. На не Intel всё грузилось. Вроде бы даже баг был, но что-то не найду, а может и в раасылке обсуждали без бага.
Comment 2 Leonid Krivoshein 2024-09-15 16:40:01 MSK
(In reply to Антон Мидюков from comment #0)
> запись /dev/sda2 из MBR пропадает.
Из защитного MBR с гибридной GUID/GPT-разметкой. И это не влияет на загрузку в режиме Legacy и UEFI, я проверил на виртуалке. По стандарту и не должно влиять.

Но оказалось, что некоторые старые BIOS (до 2010 года) пытаются проанализировать загрузочный сектор и отказываются загружать его, если он не содержит загрузочного раздела MBR. Хотя это проблема BIOS, исправление понятно, как реализовать: https://wiki.archlinux.org/title/Partitioning#Tricking_old_BIOS_into_booting_from_GPT -- проверил, и это работает. Теперь нужно лишь определить, в каких случаях следует применять данный хак.
Comment 3 Антон Мидюков 2024-09-15 18:34:41 MSK
(Ответ для Leonid Krivoshein на комментарий #2)
> (In reply to Антон Мидюков from comment #0)
> > запись /dev/sda2 из MBR пропадает.
> Из защитного MBR с гибридной GUID/GPT-разметкой. И это не влияет на загрузку
> в режиме Legacy и UEFI, я проверил на виртуалке. По стандарту и не должно
> влиять.
> 
> Но оказалось, что некоторые старые BIOS (до 2010 года) пытаются
> проанализировать загрузочный сектор и отказываются загружать его, если он не
> содержит загрузочного раздела MBR. Хотя это проблема BIOS, исправление
> понятно, как реализовать:
> https://wiki.archlinux.org/title/
> Partitioning#Tricking_old_BIOS_into_booting_from_GPT -- проверил, и это
> работает. Теперь нужно лишь определить, в каких случаях следует применять
> данный хак.

После создания раздела создавать, если таблица разделов gpt.
Comment 4 Sergey Y. Afonin 2024-09-15 19:57:16 MSK
(In reply to Leonid Krivoshein from comment #2)

> Но оказалось, что некоторые старые BIOS (до 2010 года) пытаются
> проанализировать загрузочный сектор и отказываются загружать его, если он не
> содержит загрузочного раздела

Если бы некоторные, а то поголовно весь Intel. И я не уверен, что "до 2010". Это что касается hdd. С флешкой вот только сейчас нарвался, но очень похоже на то же самое.
Comment 5 Leonid Krivoshein 2024-09-15 20:39:33 MSK
(In reply to Антон Мидюков from comment #3)
> (Ответ для Leonid Krivoshein на комментарий #2)
> > нужно лишь определить, в каких случаях следует применять данный хак.
> После создания раздела создавать, если таблица разделов gpt.
Поскольку в данном случае затирается вторая запись таблицы MBR, очевидно, это не стоит делать во всех случаях. Видимо нужно дважды проверить. Первый раз -- до внесения изменений и второй раз -- после. И только если такая запись была и исчезла, тогда уже её создавать. Разумеется, при наличии сигнатуры GUID/GPT.
Comment 6 Leonid Krivoshein 2024-09-16 01:09:31 MSK
Собрал task #357588 с попыткой пофиксить. Одной проверки оказалось достаточно, т.к. если всё было правильно, понятно, что команды удалят второй раздел.
Comment 7 Антон Мидюков 2024-09-16 03:15:26 MSK
(Ответ для Leonid Krivoshein на комментарий #6)
> Собрал task #357588 с попыткой пофиксить. Одной проверки оказалось
> достаточно, т.к. если всё было правильно, понятно, что команды удалят второй
> раздел.

Работает. Проверял iso-шку.
Comment 8 Sergey Y. Afonin 2024-09-16 10:35:18 MSK
(In reply to Антон Мидюков from comment #7)

> > Собрал task #357588 с попыткой пофиксить. Одной проверки оказалось
> > достаточно, т.к. если всё было правильно, понятно, что команды удалят второй
> > раздел.
> 
> Работает. Проверял iso-шку.

На том компьютере, где раньше не грузилось? Если нет, то в https://nightly.altlinux.org/p11/beta/ можно положить?
Comment 9 Антон Мидюков 2024-09-16 11:15:23 MSK
(Ответ для Sergey Y. Afonin на комментарий #8)
> (In reply to Антон Мидюков from comment #7)
> 
> > > Собрал task #357588 с попыткой пофиксить. Одной проверки оказалось
> > > достаточно, т.к. если всё было правильно, понятно, что команды удалят второй
> > > раздел.
> > 
> > Работает. Проверял iso-шку.
> 
> На том компьютере, где раньше не грузилось? Если нет, то в
> https://nightly.altlinux.org/p11/beta/ можно положить?

https://nightly.altlinux.org/sisyphus/archive/regular-lxqt-20240916-x86_64.iso
Comment 10 Sergey Y. Afonin 2024-09-16 11:44:26 MSK
(In reply to Антон Мидюков from comment #9)

> > На том компьютере, где раньше не грузилось? Если нет, то в
> > https://nightly.altlinux.org/p11/beta/ можно положить?
> 
> https://nightly.altlinux.org/sisyphus/archive/regular-lxqt-20240916-x86_64.iso

Да, грузится теперь.
Comment 11 Repository Robot 2024-09-16 16:33:57 MSK
make-initrd-bootchain-0.1.5-alt25 -> sisyphus:

 Mon Sep 16 2024 Leonid Krivoshein <klark@altlinux> 0.1.5-alt25
 - tricking old BIOS into booting from GPT (ALT #51479)
Comment 12 Sergey Y. Afonin 2024-10-03 11:50:59 MSK
[cyber] I: p11/branch packages: +4 (19461)
Date: 03/10/24 04:16

make-initrd-bootchain - bootchain modules set for make-initrd
* Mon Sep 16 2024 Leonid Krivoshein <klark@altlinux> 0.1.5-alt25
- tricking old BIOS into booting from GPT (ALT #51479)
* Sun Sep 01 2024 Leonid Krivoshein <klark@altlinux> 0.1.5-alt24
- added asciidoc sources of the reference guide
* Thu Mar 07 2024 Leonid Krivoshein <klark@altlinux> 0.1.5-alt23

Может стартеркиты p11 пересоздать, не дожидаясь зимы?