kostik87 пишет: какие же дыры вы видите в описании?
для начала мне показалось странным утверждение, что «первичный код grub-0.97, …, помещается целиком в 466 байт MBR», а второго груба он почему-то не помещается...
kostik87 пишет:а вот код grub2, …, даже в случае использование GPT
во-вторых, меня смутило тут «даже»
kostik87 пишет:вот поэтому в случае GPT нужно создавать отдельный раздел bios_grub
в-третьих, вывод этого рассуждения у меня в уме ни как не вязался с предыдущими утверждениями.
По зрелому размышлению, я конечно понял, что всё это был сумбурный бред дилетанта... Справедливости ради, стоит заметить, что мои рассуждения из первого поста не сильно лучше.
И так, как же всё происходит на самом деле...
Начальная загрузка grub2 от grub1 практически не отличается. (специально для комплектующих: ни что в размере кардинально не увеличивалось).
В первом grub'е порядок был таков:
1. Сначала bios загружает в память stage1 из mbr'а. В нём было прописано расположение stage1.5. Загрузить его первый сектор и передать ему управление это всё на что у stage1 хватало ресурсов
2. stage1.5 располагается в «специальной дисковой области» для mbr таковой являлось пространство между таблицей разделов и самим разделом оно всегда было (~>30к), т.к. первый раздел обязан начинаться на новом цилиндре <fixme>... а со временем разделы стали выравнивать по мегабайтам и места на диске размеченном по «современным канонам там попой кушай»... но с этим были проблемы некоторый нехороший проприетакрный софт пытался использовать эту область под свои нужды...
stage1.5 был размером пару десятков килобайт и уже мог полностью загрузить себя. и оперировать с файлами на уровне ФС. А его единственной задачей является найти на /boot разделе stage2
3. stage2 уже занимается тем что мы видим: отображает менюшечки, красивые картинки, и делает всякие мелочи вроде загрузки ядер...
Но! без stage1.5 можно обойтись: надо только в stage1 прямо прописать первый сектор stage2. Правда тут придётся молится, чтобы файл не сдвинулся в другую область диска на уровне ФС.
Единственное отличие grub2 в загрузке — это модульный «stage2». А «stage1.5» является точной копией «ядра загрузчика» core.img.
Теперь про GPT.
В GPT, вообще говоря, гепа перед первым разделом может не быть, хотя ИРЛ в 99% случаев там есть несколько !сотен! килобайт, помним выравнивание по мегабайтам. Поэтому, чтобы не обременять хомячков лишними знаниями, разработчики grub решили: «всё, теперь обязательно нужен отдельный раздел для stage1.5».
Хотя есть пара альтернативных вариантов:
1. Установка в не размеченную область перед первым разделом и после всей таблицы gpt. (Опасно, как и раньше или даже немного более)
2. установка в пустые записи GPT бред
3. как и раньше, обходится без stage1.5 (проблемы с модификацией на уровне ОС)
Вывод: обойтись без раздела, в принципе, можно, хотя это и не столь надёжно.... вопрос только как заставить груб записать загрузчик так, как нужно нам...
ЗЫ: малость подправил т.к. вчера писал всё это полусонный...
95% процентов проблем находятся между клавиатурой и стулом.