OSDev http://osdev.su/ |
|
GRUB2 http://osdev.su/viewtopic.php?f=12&t=647 |
Страница 1 из 5 |
Автор: | Yoda [ 12 ноя 2012, 19:32 ] |
Заголовок сообщения: | GRUB2 |
Пытаюсь разобраться с установкой и работой второго ГРУБа. Вопрос 1. Хочу сделать флоппи-имидж. Сделал файл floppy.img. Подключил его: % losetup /dev/loop0 floppy.img Отформатировал на FAT12. % mount /dev/loop0 /mnt Успешно смонтировался. Затем пытаюсь установить ГРУБ в соответствии с его же документацией. % grub-install /dev/loop0 Получаю следующее (опять сил у переводчиков не хватило?) сообщение: /usr/sbin/grub-setup: warn: Попытка установить GRUB на диск без разделов. Лучше этого НЕ ДЕЛАТЬ.. /usr/sbin/grub-setup: error: embedding is not possible, but this is required for cross-disk install. Опция --force не помогает. На опцию --allow-floppy из документации ГРУБа дебиановский ГРУБ ругается, как на несуществующую. Каким образом можно сделать образ загрузочной дискеты ГРУБа? У кого есть опыт? Второй вопрос. В опциях grub-mkimage нету опции, позволяющей в образ груба добавить соответствующие модули. Каким образом их можно прилинковать к образу? В доках ГРУБа пишут, что для загрузки с других ФС он должен быть скомпилирован с вшитой в него поддержкой этих ФС, но его конфигуратор НИЧЕГО не спрашивает. Третий вопрос. Я скачал и скомпилировал исходники последней версии груба. Однако, ставить его в систему боюсь, прошлый раз я остался [z]с носом[/z] с негрузящейся системой, потому что "не смогла я установиться, ну не смогла..." (с) ГРУБ. Можно ли использовать его бинарники для генерации образов без установки и если можно, то как? Похоже, опять надо снимать посекторный образ диска прежде, чем лезть в серную кислоту. С четвёртым вопросом пока попытаюсь разобраться сам, но если есть добрый человек (например, phantom-84 ), который мог бы ткнуть носом в соответствующую доку, было бы здорово. Где описан формат загрузочного образа ГРУБ i386-pc? |
Автор: | Yoda [ 12 ноя 2012, 22:32 ] |
Заголовок сообщения: | Re: GRUB2 |
Ну ё-маё!!! Не успел я сделать образ диска, загрузка убилась неудачными попытками запуска % grub-install /dev/loop0 Ну как можно делать настолько глючные и легко убиваемый системы?!! |
Автор: | phantom-84 [ 13 ноя 2012, 09:21 ] |
Заголовок сообщения: | Re: GRUB2 |
Yoda писал(а): Вопрос 1. ... Каким образом можно сделать образ загрузочной дискеты ГРУБа? У кого есть опыт? Можно использовать мои исходники GrubOnFloppy-198, доступные достаточно давно (ссылки есть и здесь, и на буржуйском форуме). Если будешь брать за основу другие версии GRUB'а, то можешь нарваться на GRUB'ли, т.к. нек. загрузочные структуры вершн-специфичны (различия до версии 1.98 включительно я описывал в статье GRUB Internals; 1.99 и 2.00 не смотрел, т.к. понемногу начинаю отходить от использования GRUB'а, но в принципе это можно сделать очень быстро).Цитата: Второй вопрос. В опциях grub-mkimage нету опции, позволяющей в образ груба добавить соответствующие модули. Каким образом их можно прилинковать к образу? К образу ядра? Просто перечисляешь имена всех нужных модулей после имени ядра. Еще часть модулей линкуется динамически во время запуска по зависимостям или по командам (можно даже прописать автозапуск).Цитата: Третий вопрос. Я скачал и скомпилировал исходники последней версии груба. Однако, ставить его в систему боюсь, прошлый раз я остался [z]с носом[/z] с негрузящейся системой, потому что "не смогла я установиться, ну не смогла..." (с) ГРУБ. Можно ли использовать его бинарники для генерации образов без установки и если можно, то как? Я тебе уже несколько раз говорил, что можно (исходники GrubOnFloppy как раз это и демонстрируют). Я обычно так и делаю для FAT'ов, хотя сейчас, как ты знаешь, обычно использую более продвинутую технологию загрузки (своими/твоими загрузчиками) и динамического пропатчивания.Цитата: С четвёртым вопросом пока попытаюсь разобраться сам, но если есть добрый человек (например, phantom-84 ), который мог бы ткнуть носом в соответствующую доку, было бы здорово. Где описан формат загрузочного образа ГРУБ i386-pc? Кое-что описано в моей статье GRUB Internals + можно параллельно смотреть исходники актуальной для тебя версии. Также по исходникам можно исследовать структуру, расположенную по смещению 512+ (после jump'а).Edited. Страница со статьей была перемещена, так что вот актуальная ссылка: GRUB Internals. |
Автор: | Yoda [ 13 ноя 2012, 10:29 ] |
Заголовок сообщения: | Re: GRUB2 |
phantom-84 писал(а): Можно использовать мои исходники GrubOnFloppy-198, доступные достаточно давно (ссылки есть и здесь, и на буржуйском форуме). Твои дисковые образы для обоих ГРУБов у меня есть, я работал с ними. Я имел ввиду самостоятельную генерацию загрузочного диска ГРУБ из под Линукса. phantom-84 писал(а): Просто перечисляешь имена всех нужных модулей после имени ядра. Блин, так просто! Пасиб. phantom-84 писал(а): Я тебе уже несколько раз говорил, что можно (исходники GrubOnFloppy как раз это и демонстрируют). Да нет же, про GrubOnFloppy я помню и за них благодарен. Я имею ввиду полную сборку GRUB2 из исходников под линуксом с генерацией образа дискеты. phantom-84 писал(а): Кое-что описано в моей статье GRUB Internals ... вот актуальная ссылка: ... Уже читаю, вникаю, спасибо огромное! |
Автор: | phantom-84 [ 13 ноя 2012, 11:19 ] |
Заголовок сообщения: | Re: GRUB2 |
Yoda писал(а): Твои дисковые образы для обоих ГРУБов у меня есть, я работал с ними. Я имел ввиду самостоятельную генерацию загрузочного диска ГРУБ из под Линукса. Вообще сборка из исходников и генерация образа дискеты - это разные вещи. Как собрать GRUB, думаю, понятно. А сделать образ флоппика из моих исходников можно и под линухом. Кстати вот еще пример (твой загрузчик, мои mksys (new) и grubldr2 (с тем же оригинальным ядром 1.98 для флоппика в формате pk)): sys-GrubldrOnFloppy-198.zip (будет доступно в течение 3 дней). Можешь этот же состав файлов (содержимое папки content) и в ISO-образ "воткнуть" (в ядро включена поддержка CDFS), только добавь свой загрузчик iso9660.bin.
Да нет же, про GrubOnFloppy я помню и за них благодарен. Я имею ввиду полную сборку GRUB2 из исходников под линуксом с генерацией образа дискеты. |
Автор: | Yoda [ 13 ноя 2012, 14:04 ] |
Заголовок сообщения: | Re: GRUB2 |
phantom-84 писал(а): Вообще сборка из исходников и генерация образа дискеты - это разные вещи. Как собрать GRUB, думаю, понятно. Так я об этом же. Собрать ГРУБ, я собрал. Вроде бы. Хотя и не уверен в его абсолютной корректности, т.к. груб рекомендует наличие библиотеки libdevmapper 1.02.34 или старше, а в Дебиане эта библиотека старая. phantom-84 писал(а): А сделать образ флоппика из моих исходников можно и под линухом. Вот я и пытаюсь теперь отладить технологию генерации загрузочного диска, но только не из твоего пакета, а из оригинального ГРУБа. Перцу уже наглотался, а флопик так и не сгенерил. |
Автор: | phantom-84 [ 13 ноя 2012, 21:36 ] |
Заголовок сообщения: | Re: GRUB2 |
Посмотрел примеры... Ты не указываешь каталог назначения, что означает использовать каталог /boot, но это ведь не флоппик/образ флоппика, поэтому попробуй --boot-directory=/mnt/boot (каталог естественно нужно предварительно создать). |
Автор: | Yoda [ 14 ноя 2012, 13:18 ] |
Заголовок сообщения: | Re: GRUB2 |
Кажется, начинаю въезжать... я и про внутреннюю структуру core.img тоже. Продолжаю работать. Виден свет в конце тоннеля. |
Автор: | phantom-84 [ 14 ноя 2012, 14:25 ] |
Заголовок сообщения: | Re: GRUB2 |
Моя последняя подсказка помогла установить GRUB в образ флоппика? Yoda писал(а): Кажется, начинаю въезжать... я и про внутреннюю структуру core.img тоже. Про структуру core.img я уже говорил: сначала идет helper размером 512 байт (описание есть в моей статье; именно его я заменяю моим адаптационным кодом; обычно основан на исходнике diskboot.S), потом стартап-код с весьма полезными переменными вначале (именно эти переменные я динамически пропатчиваю моим адаптационным кодом; основан на исходнике startup(_raw).S). Как получается сырой бинарник из эльфа, я не смотрел, но понятно, что либо эльф обрезается, либо нет, после чего в начало доставляется стартовая часть. Какова структура элементов, отвечающих за связывание, я точно не знаю. Возможно, все это взято из эльфов, т.к. исходный вариант ядра (kernel.img) имеет ELF-формат, равно как и модули.
Продолжаю работать. Виден свет в конце тоннеля. |
Автор: | Yoda [ 14 ноя 2012, 15:19 ] |
Заголовок сообщения: | Re: GRUB2 |
phantom-84 писал(а): Моя последняя подсказка помогла установить GRUB в образ флоппика? Пока не знаю. Система убилась, я её сегодня восстановлю, тогда проверю. Как хорошо, что я наладил скрипт, относительно быстро настраивающий свежеустановленную систему и основные пользовательские настройки и сделал нужные архивы! phantom-84 писал(а): Про структуру core.img я уже говорил: сначала идет helper размером 512 байт (описание есть в моей статье; именно его я заменяю моим адаптационным кодом; обычно основан на исходнике diskboot.S), потом стартап-код с весьма полезными переменными вначале (именно эти переменные я динамически пропатчиваю моим адаптационным кодом; основан на исходнике startup(_raw).S). Хелпер нужен только для загрузки самого коре, его можно спокойно удалять. Стартап код я нашёл и в переменных, вроде бы, разобрался. В рамках всей второй версии ГРУБа они, к счастью, неизменны, хотя гарантии, конечно, никто не даст. В первом ГРУБе (GRUB legacy) они расположены по-другому. Я так понимаю, со всеми этими переменным работает grub-mkimage. Из них непонятны переменные для кода рида-соломона. Не ясно, к чему этот код относится и что с ним делать. phantom-84 писал(а): Как получается сырой бинарник из эльфа, я не смотрел, но понятно, что либо эльф обрезается, либо нет, после чего в начало доставляется стартовая часть. Этим вроде бы занимается grub-mkimage, у него в исходниках есть соответствующие функции. Но мне главное было найти структуру начала образа. Непонятен ещё такой момент, - насколько совместим между версиями груб со своими модулями? Т.е., если я беру коре от второй версии, а модули остались от предыдущей, должно ли оно работать? Я чуть позже проверю на принципиальный вопрос да/нет, но на пограничный вариант типа "может работать, но вероятны глюки" можно и не получить ответа, не будучи разработчиком ГРУБа. Я не знаю, как они там, стараются ли придерживаться стандартов на интерфейсы, размещение переменных, структуры файлов и пр. |
Страница 1 из 5 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |