Как сделать установку нового диска в десктоп незабываемой от полного непонимания, что вообще творится и на каком свете находишься? Надо всего лишь просочетать несколько факторов:
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-10 11:33 am (UTC)> А если не хочется вообще морочиться с возможной несовместимостью этих вариантов загрузки?
Несовместимостью чего с чем? Сам loader тоже может быть не один, при желании - можно иметь несколько разных по разным путям и boot2 можно инструктировать, который загружать, либо интерактивно набрав путь (включающий другой диск или раздел), либо прописав этот путь в /boot/config или в /boot.config.
> Те же UUIDʼы, кстати, ценное средство для уникальной идентификации раздела. Для линукса норма - их использовать. Как мне их прочитать или записать через gpart? Ман молчит.
Это реализовано в отдельном классе GEOM_LABEL и про него отдельный ман glabel(8). Да, это дефект страницы gpart(8), отсутствие ссылки.
> Я могу их применить в fstab? Ман молчит.
The first field, (fs_spec), describes the special device or remote file system to be mounted.
После прочтения man glabel этого становится достаточно.
no subject
Date: 2022-01-10 12:56 pm (UTC)Можешь просто ссылку дать и уточнить, что ты считаешь, что там полный и достаточный ответ. А я скажу, что я там считаю недостаточным.
> Несовместимостью чего с чем?
Ну например синхронное изменение boot2 и loader, так что старый boot2 не работает с новым loader, и наоборот. Такое уже было. А loader соответственно лучше работает с ядром своей версии и хуже - с другой.
Разнос на принципиально разные разделы избавляет от вообще задумывания о проблемах совместимости в этом случае. А комбинирование ой чревато боком.
В этом плане я как раз доволен GRUBʼом, что он позволяет грузить boot2 (или вообще loader) напрямую, подсунув им достаточно данных, чтобы идентифицировать указанный загрузочный раздел. Именно что даже для фряхи (использовал его так однажды).
> Сам loader тоже может быть не один, при желании - можно иметь несколько разных по разным путям и boot2 можно инструктировать, который загружать, либо интерактивно набрав путь (включающий другой диск или раздел), либо прописав этот путь в /boot/config или в /boot.config.
Да, а boot2 у тебя один и тот же (см. выше).
> Это реализовано в отдельном классе GEOM_LABEL и про него отдельный ман glabel(8). Да, это дефект страницы gpart(8), отсутствие ссылки.
OK, рекомендую сделать PR :)
> The first field, (fs_spec), describes the special device or remote file system to be mounted.
OK, похоже. А от чего зависит, что при наличии /dev/gpt/метка, /dev/gptid/метка перестали пропадать из видимости физические разделы типа /dev/md0p1?
(Я не твёрдо уверен, что это было раньше именно с gptid, но было.)
И ещё - что значит `/dev/enc@n0123456789abcfed/type@0/slot@1/elmdesc@Slot_00/p3`?
no subject
Date: 2022-01-10 01:18 pm (UTC)Вообще это явным образом документировано, например, в UPDATING, что при мажорном апгрейде необходимо обновлять загрузчики.
no subject
Date: 2022-01-10 01:21 pm (UTC)Вот в своём комментарии, на которое я ответил недоумением, берешь мои цитаты - те из них, которые обрезанные предложения, и в конце предложения в оригинале и есть ответы. Для определенности, это тот пост, что получился от анонимуса, я не заметил, что меня разлогинило по таймауту за ночь.
https://netch80.dreamwidth.org/53057.html?thread=410433#cmt410433
no subject
Date: 2022-01-10 01:22 pm (UTC)Я об том и говорю всю дорогу - мультизагрузчик должен прочитать начальный загрузчик из бутсектора раздела и передать ему управление. Дальше он сам.
no subject
Date: 2022-01-10 01:27 pm (UTC)Я не большой специалист по потрохам GEOM, это лучше спрашивать у Мотина mav@freebsd.org
Альтернативные девайсы из devfs ядро убирает, когда объект GEOM открывается на запись по одной из альтернатив: например, монтируется в r/w, но можно просто запустить sleep 3600 <> /dev/md0p2
no subject
Date: 2022-01-17 07:03 am (UTC)> OK, рекомендую сделать PR :)
Я добавил ссылку на glabel.8 в gpart.8 во все четыре ветки, от stable/11 до head.