OSDev http://osdev.su/ |
|
GRUB2 http://osdev.su/viewtopic.php?f=12&t=647 |
Страница 2 из 5 |
Автор: | phantom-84 [ 14 ноя 2012, 16:33 ] |
Заголовок сообщения: | Re: GRUB2 |
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 вместе с его модифицированным ядром в одном каталоге (что в принципе нормально), причем при установке этот же набор файлов будет записан в корневой каталог загрузочного диска (а вот это мне уже сильно не нравится)!
|
Автор: | Yoda [ 15 ноя 2012, 12:30 ] |
Заголовок сообщения: | Re: GRUB2 |
phantom-84 писал(а): Возможно, ты именно этим ее и "убил". Скорей всего. phantom-84 писал(а): Можно попробовать восстановить только загрузчик, не переустанавливая всю систему. Можно. Но для этого нужно иметь другой, работающий линукс . Да ладно, нафиг, я уже перегенерил чистую настроенную систему. phantom-84 писал(а): Насчет helper'а все верно. Кстати именно благодаря такому его местоположению и функциям я могу его заменить адаптационным кодом, оставляя все остальное на своем месте - база-то общая. Сохранение оригинальной базы имеет смысл только в одном случае - если ты используешь оригинальный загрузчик от ГРУБа. Но в свете происходящих событий (использование другого начального загрузчика и добавление адаптационного кода) в этом нет ни малейшего смысла. Есть только одно ограничение - чем выше база, тем меньшего размера файл можно загрузить. Всё остальное не важно. phantom-84 писал(а): можно попробовать написать полностью универсальный адаптационный код для GRUB/GRUB 2 - места ведь достаточно - только нужно выделить признаки, по которым этот код смог бы различать разные линейки GRUB'а. Я надеюсь, для этого можно использовать первую инструкцию far jump в обход переменных по смещению 512 в файле. Она, как я вижу, одинаковая в рамках первого груба и в рамках второго груба, но отличается между ними, т.к. там область переменных разного размера. |
Автор: | phantom-84 [ 15 ноя 2012, 12:48 ] |
Заголовок сообщения: | Re: GRUB2 |
Yoda писал(а): Можно. Но для этого нужно иметь другой, работающий линукс . LiveCD, не? Типа "Try Ubuntu" и т.п. Вообще перед реконфигурацией GRUB'а всегда имеет смысл позаботиться заранее о спасательном варианте, т.к. периодически случается, что что-то забываешь учесть.Цитата: Сохранение оригинальной базы имеет смысл только в одном случае - если ты используешь оригинальный загрузчик от ГРУБа. Но в свете происходящих событий (использование другого начального загрузчика и добавление адаптационного кода) в этом нет ни малейшего смысла. Есть только одно ограничение - чем выше база, тем меньшего размера файл можно загрузить. Всё остальное не важно. Для GRUB'а возможность загрузки большего по размеру файла не актуальна, ведь его разработчики по-любому ориентируются на базу 8000h.Цитата: Я надеюсь, для этого можно использовать первую инструкцию far jump в обход переменных по смещению 512 в файле. Она, как я вижу, одинаковая в рамках первого груба и в рамках второго груба, но отличается между ними, т.к. там область переменных разного размера. Это вариант.
|
Автор: | Yoda [ 15 ноя 2012, 14:28 ] |
Заголовок сообщения: | Re: GRUB2 |
phantom-84 писал(а): LiveCD, не? Вполне возможно. Просто для оживления нужно, как всегда в линуксе, долго и мучительно курить мануалы. Мне проще было восстановить рабочий линух из бэкапа свежеустановленного и накатить на него отработанные скрипты. Благо, никаких критичных данных в нём не было. Вот если бы там были критичные данные, я бы, конечно, пошёл по пути реанимации трупа. phantom-84 писал(а): Вообще перед реконфигурацией GRUB'а всегда имеет смысл позаботиться заранее о спасательном варианте Безусловно. Я и писал о том, что перед экспериментами с загрузкой сделаю ещё одну резервную копию. Я просто даже не предполагал, что он настолько легко убивается. phantom-84 писал(а): Для GRUB'а возможность загрузки большего по размеру файла не актуальна Конечно. Но я ведь ориентируюсь не только на ГРУБ. И даже в первую очередь не на него. Он получился в качестве побочного продукта . |
Автор: | phantom-84 [ 15 ноя 2012, 18:36 ] |
Заголовок сообщения: | Re: GRUB2 |
В версиях 1.98, 1.99, 2.00 данные в стартап-коде различаются. |
Автор: | Yoda [ 16 ноя 2012, 15:38 ] |
Заголовок сообщения: | Re: GRUB2 |
Чёрт, действительно. Мало того, некоторые моменты лучше иметь перед глазами скомпилированными для проверки. В добавок к этому, на оф-сайте ГНУ исходники только двух версий - 1.99 и 2.0. Надо где-то доставать остальные, причём, желательно и GUB Legacy. Кроме того, нет никаких гарантий, что мантэйнеры не внесут собственных грубых правок в свои ГРУБы. Хотя, конечно это маловероятно. Как быть? ЗЫ В смысле, не только скомпилированными, но и собранный образ core.img, который получается только на этапе установки ГРУБа, в рот ему ноги. |
Автор: | phantom-84 [ 16 ноя 2012, 17:23 ] |
Заголовок сообщения: | Re: GRUB2 |
Yoda писал(а): Мало того, некоторые моменты лучше иметь перед глазами скомпилированными для проверки. Да, я обычно так и делаю.Цитата: В добавок к этому, на оф-сайте ГНУ исходники только двух версий - 1.99 и 2.0. Надо где-то доставать остальные, причём, желательно и GUB Legacy. Я обычно здесь беру.Цитата: Кроме того, нет никаких гарантий, что мантэйнеры не внесут собственных грубых правок в свои ГРУБы. Хотя, конечно это маловероятно. Предлагаю не распространять адаптационный код в виде исходников вообще. Кому надо, тот и так разберется - размер кода минимальный. Самим делать адаптацию по каждой версии отдельно и, если все-таки получится реализовать эти планы, сводить все результаты индивидуальной адаптации в универсальный адаптационный код. Как вариант, можно выбирать наиболее удачные/стабильные версии GRUB'а и модифицировать только их. Я пробовал модифицировать GRUB 2 только до версии 1.98 включительно (1.90-1.98) - там все было вроде бы одинаково в плане данных в стартап-коде. 1.99 и 2.00 нужно делать снова и по отдельности, ну или к примеру можно забить на 1.99, а если еще немного подождем, то может и на 2.00, если опять появятся изменения. Короче если надумаешь выполнять модификацию версий 1.99+, свистни. Или давай доведем до ума 1.98, т.к. я за раз просек, что там нужно сделать и больше никаких серьезных проверок и изменений в коде не делал.Как быть? Цитата: В смысле, не только скомпилированными, но и собранный образ core.img, который получается только на этапе установки ГРУБа, в рот ему ноги. Т.е. чтобы смотреть, какие изменения вносит установщик? Я это делал раньше, когда разбирался, как происходит установка. Но в принципе для версий с "нововведениями", возможно, имеет смысл вернуться к этой практике.
|
Автор: | Yoda [ 17 ноя 2012, 00:39 ] |
Заголовок сообщения: | Re: GRUB2 |
phantom-84 писал(а): Я обычно здесь беру. О! Пасиба! Кстати, интересная картина. Помимо версии 1.97 есть 1.97.1 и 1.97.2. При этом ещё лежит куча бет. А 1.98 только один. Надо полагать, это стабильный релиз после всех 1.97? С 1.99 вообще непонятная картина, лежит только два релиз-кандидата и больше ничего. phantom-84 писал(а): Предлагаю не распространять адаптационный код в виде исходников вообще. Кому надо, тот и так разберется - размер кода минимальный. Самим делать адаптацию по каждой версии отдельно и, если все-таки получится реализовать эти планы, сводить все результаты индивидуальной адаптации в универсальный адаптационный код. Пожалуй, да. Я так понимаю, сейчас большинство мантейнеров придерживаются версии 1.98, как наиболее стабильной. Тогда доделаю адаптацию этой версии ГРУБа и выложу архив. Потом можно будет разобраться и с остальными, если потребуется. phantom-84 писал(а): Т.е. чтобы смотреть, какие изменения вносит установщик? Да неее. Бог с ним, с установщиком. Я имел ввиду сам core.img. После компиляции ГРУБа его нет, только модули и объектники. Я так понял, что grub-mkimage формирует его самостоятельно при запуске из grub-install. |
Автор: | phantom-84 [ 17 ноя 2012, 02:37 ] |
Заголовок сообщения: | Re: GRUB2 |
Yoda писал(а): Кстати, интересная картина. Помимо версии 1.97 есть 1.97.1 и 1.97.2. При этом ещё лежит куча бет. А 1.98 только один. Надо полагать, это стабильный релиз после всех 1.97? С 1.99 вообще непонятная картина, лежит только два релиз-кандидата и больше ничего. Там выкладываются тестовые версии. Видимо, последний релиз-кандидат - это и есть релиз-версия. Скорее всего раньше они просто не использовали это название, а заменяли старого релиз-кандидата на нового, если таковые вообще были, или делали из последней беты релиз-кандидата. Я версии 1.99 и 2.00 брал на "оф-сайте". Ради интереса можно сравнить последних релиз-кандидатов по каждой версии с соотв. релиз-версиями.Цитата: Пожалуй, да. Я так понимаю, сейчас большинство мантейнеров придерживаются версии 1.98, как наиболее стабильной. Тогда доделаю адаптацию этой версии ГРУБа и выложу архив. Потом можно будет разобраться и с остальными, если потребуется. 1.99 уже достаточно давно в ходу. Я брал готовые бинарники из прошлогодней осенней убунту, хотя может даже они и в прошлогодней весенней уже были, можно глянуть. В других дистрах тоже можно посмотреть - у меня есть также несколько последних версий минта и мандривы.Цитата: Да неее. Бог с ним, с установщиком. Я имел ввиду сам core.img. После компиляции ГРУБа его нет, только модули и объектники. Я так понял, что grub-mkimage формирует его самостоятельно при запуске из grub-install. Я обычно делаю core.img самостоятельно (или прошу кого-нибудь это сделать ). Кстати когда я тебе говорил про то, как обрабатывается GRUB'ом kernel.img, я заглянул в этот файл и увидел, что там сразу после ELF-заголовка находится стартап-код. Конечно этот вариант в плане инициализации данных стартап-кода еще более сырой, чем в файле core.img, но представление о размещении этих данных он вполне может дать.
|
Автор: | Yoda [ 18 ноя 2012, 00:57 ] |
Заголовок сообщения: | Re: GRUB2 |
phantom-84 писал(а): Там выкладываются тестовые версии. Видимо, последний релиз-кандидат - это и есть релиз-версия. Скорее всего раньше они просто не использовали это название, а заменяли старого релиз-кандидата на нового, если таковые вообще были, или делали из последней беты релиз-кандидата. Я версии 1.99 и 2.00 брал на "оф-сайте". Ради интереса можно сравнить последних релиз-кандидатов по каждой версии с соотв. релиз-версиями. Я уже сравнил. Нет, разные. И 1.99 и 2.00. Причём достаточно сильно отличаются, и файлы внутри более свежие. Видимо, в этот архив сваливается всё, что ушло с оф. сайта.phantom-84 писал(а): Цитата: Я так понимаю, сейчас большинство мантейнеров придерживаются версии 1.98, как наиболее стабильной. 1.99 уже достаточно давно в ходу. |
Страница 2 из 5 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |