Как сделать установку нового диска в десктоп незабываемой от полного непонимания, что вообще творится и на каком свете находишься? Надо всего лишь просочетать несколько факторов:
1. Если диск не упомянут в пункте "Hard drive BBS priorities" в настройке BIOS, то та его не отдаёт в I/O через int 13h. В результате GRUB не может его увидеть.
1б. Первым в списке стоял тот диск, с которого не загружаются ;(
2. Простых надёжных способов собрать grub.cfg под новые условия (смена корневого раздела) нет, а замена UUID редактором не позволяет подсказать, что надо было ещё добавить "insmod part_gpt" (на старом такого не было).
3. На диске с GPT но без "BIOS boot partition" GRUB ставит свой core.img урезанным и неверно работающим. Но чтобы понять, что не так, его родной документации не хватает, там связь замолчана.
4. Если GRUB не нашёл по указанным UUID и пути типа (hd1,msdos5) раздела со своими модулями и конфигами, он хватает первый попавшийся, который нашёл.
4б. При этом он ещё перезаписывает UUID в параметрах загрузки, чтобы совсем уже никто не догадался.
5. Спросить, по какому пути GRUB прошёл и прочитал свои конфиги, откуда грузил модули - невозможно.
6. На то, загрузит ли BIOS внешнюю флэшку, если она была вставлена до перезагрузки, влияет погода на Марсе. Если нет - пункт в boot menu есть, но молча игнорируется.
Таки взлетел. Выдыхаю:)
1. Если диск не упомянут в пункте "Hard drive BBS priorities" в настройке BIOS, то та его не отдаёт в I/O через int 13h. В результате GRUB не может его увидеть.
1б. Первым в списке стоял тот диск, с которого не загружаются ;(
2. Простых надёжных способов собрать grub.cfg под новые условия (смена корневого раздела) нет, а замена UUID редактором не позволяет подсказать, что надо было ещё добавить "insmod part_gpt" (на старом такого не было).
3. На диске с GPT но без "BIOS boot partition" GRUB ставит свой core.img урезанным и неверно работающим. Но чтобы понять, что не так, его родной документации не хватает, там связь замолчана.
4. Если GRUB не нашёл по указанным UUID и пути типа (hd1,msdos5) раздела со своими модулями и конфигами, он хватает первый попавшийся, который нашёл.
4б. При этом он ещё перезаписывает UUID в параметрах загрузки, чтобы совсем уже никто не догадался.
5. Спросить, по какому пути GRUB прошёл и прочитал свои конфиги, откуда грузил модули - невозможно.
6. На то, загрузит ли BIOS внешнюю флэшку, если она была вставлена до перезагрузки, влияет погода на Марсе. Если нет - пункт в boot menu есть, но молча игнорируется.
Таки взлетел. Выдыхаю:)
no subject
Date: 2022-01-09 04:07 pm (UTC)И снова ты говоришь только про две конкретные FS. Другие FS ты тут не вспоминаешь в принципе. Вот ровно про это я и говорил.
Я не против, если это будет разумным умолчанием для большинства случаев, но сейчас это - жёсткое ограничение.
no subject
Date: 2022-01-10 06:41 am (UTC)no subject
Date: 2022-01-10 08:48 am (UTC)Но в отличие от UFS и ZFS в других FS может просто не быть возможности разместить этот код на фиксированном смещении от начала FS (или в другом легко находимом месте).
В этом смысле подход GRUB с, если требуется, отдельной FS понятного типа (хоть FAT) удобен - FS сидит на конкретном месте и модули понятно где и как. Да, это дополнительный этап раскрутки, но общий на всех. И к этому GRUB умеет правильно грузить ядро FreeBSD. Возможно, на него и полагаются сейчас во всех внешних операциях (несмотря на лицензию).
Но мне подход с вынесением загрузочной функциональности в loader ещё и сомнителен из-за более жёсткой среды, отдельного языка (Lua) и т.д.
no subject
Date: 2022-01-10 09:49 am (UTC)Это всё модульное, не монолитное. Для загрузки с другой файловой системы всё, что нужно - модуль ядру, само ядро при этом может читаться с UFS или ZFS, кажется я читал, что с FAT тоже, но сам не проверял, может чтение с FAT давно сломали. Вообще в loader реализации файловых систем read-only, так что код для чтения с FAT не должен быть большим.