Yoda писал(а):
Пока не знаю. Система убилась, я её сегодня восстановлю, тогда проверю.
Возможно, ты именно этим ее и "убил". Пытался переписать папку /boot/grub (корневой ФС). Можно попробовать восстановить только загрузчик, не переустанавливая всю систему.
Цитата:
Хелпер нужен только для загрузки самого коре, его можно спокойно удалять. Стартап код я нашёл и в переменных, вроде бы, разобрался. В рамках всей второй версии ГРУБа они, к счастью, неизменны, хотя гарантии, конечно, никто не даст. В первом ГРУБе (GRUB legacy) они расположены по-другому. Я так понимаю, со всеми этими переменным работает grub-mkimage. Из них непонятны переменные для кода рида-соломона. Не ясно, к чему этот код относится и что с ним делать.
Насчет helper'а все верно. Кстати именно благодаря такому его местоположению и функциям я могу его заменить адаптационным кодом, оставляя все остальное на своем месте - база-то общая. Прикол в том, что я ее выбрал еще до того, как появился GRUB/я узнал о его существовании. База 8000h вообще очень удобная, поэтому, видимо, она так популярна. Что касается стартап-кода, то в рамках всей первой версии находящиеся в нем переменные не менялись, только в stage1_5 к символьному имени добавлялся элемент boot_device, о чем я писал в комментах к статье. Сегодня мельком глянул на исходники версий 1.98 и 2.00 - в оформлении вроде бы разница была, хотя на конечном результате это могло никак не отразиться. Нужно провести детальное сравнение. Я все это к тому, что можно попробовать написать полностью универсальный адаптационный код для GRUB/GRUB 2 - места ведь достаточно - только нужно выделить признаки, по которым этот код смог бы различать разные линейки GRUB'а. Не только grub-mkimage, но и grub-install/grub-setup тоже.
Цитата:
Но мне главное было найти структуру начала образа.
Я так и понял, поэтому сразу не стал писать про структуры, отвечающие за связывание.
Цитата:
Непонятен ещё такой момент, - насколько совместим между версиями груб со своими модулями? Т.е., если я беру коре от второй версии, а модули остались от предыдущей, должно ли оно работать? Я чуть позже проверю на принципиальный вопрос да/нет, но на пограничный вариант типа "может работать, но вероятны глюки" можно и не получить ответа, не будучи разработчиком ГРУБа. Я не знаю, как они там, стараются ли придерживаться стандартов на интерфейсы, размещение переменных, структуры файлов и пр.
Я бы не стал рисковать. Я вообще уже давно собираюсь попробовать собрать все в одном файле, чтобы в плане комплектации это было похоже на первый GRUB. Но этим, равно как и модификацией второй версии еще серьезно не занимался, т.к. до недавнего времени не было особой нужды. К размещению компактного варианта системы на NTFS-разделах меня подтолкнул твой первичный загрузчик - использовать для этого на постоянной основе GRUB 2 я не пытался. Вместо этого использовал позиционно независимый миниобраз расширенного раздела, который обычно дописывал в конец диска, если там было достаточно для него места. У меня установщик при установке вторичного загрузчика может выбрать из соответствующего этому загрузчику установочного каталога только файлы, но не вперемешку файлы и вложенные каталоги с другими файлами, поэтому нужно либо усовершенствовать установщик, либо размещать все модули и др. файлы GRUB'а 2 вместе с его модифицированным ядром в одном каталоге (что в принципе нормально), причем при установке этот же набор файлов будет записан в корневой каталог загрузочного диска (а вот это мне уже сильно не нравится)!