OSDev

для всех
Текущее время: 28 мар 2024, 21:29

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 45 ]  На страницу Пред.  1, 2, 3, 4, 5  След.
Автор Сообщение
 Заголовок сообщения: Re: GRUB2
СообщениеДобавлено: 14 ноя 2012, 16:33 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1206
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 вместе с его модифицированным ядром в одном каталоге (что в принципе нормально), причем при установке этот же набор файлов будет записан в корневой каталог загрузочного диска (а вот это мне уже сильно не нравится)!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: GRUB2
СообщениеДобавлено: 15 ноя 2012, 12:30 
Аватара пользователя

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 970
Откуда: Дагоба
phantom-84 писал(а):
Возможно, ты именно этим ее и "убил".

Скорей всего.

phantom-84 писал(а):
Можно попробовать восстановить только загрузчик, не переустанавливая всю систему.

Можно. Но для этого нужно иметь другой, работающий линукс :). Да ладно, нафиг, я уже перегенерил чистую настроенную систему.

phantom-84 писал(а):
Насчет helper'а все верно. Кстати именно благодаря такому его местоположению и функциям я могу его заменить адаптационным кодом, оставляя все остальное на своем месте - база-то общая.

Сохранение оригинальной базы имеет смысл только в одном случае - если ты используешь оригинальный загрузчик от ГРУБа. Но в свете происходящих событий (использование другого начального загрузчика и добавление адаптационного кода) в этом нет ни малейшего смысла. Есть только одно ограничение - чем выше база, тем меньшего размера файл можно загрузить. Всё остальное не важно.

phantom-84 писал(а):
можно попробовать написать полностью универсальный адаптационный код для GRUB/GRUB 2 - места ведь достаточно - только нужно выделить признаки, по которым этот код смог бы различать разные линейки GRUB'а.

Я надеюсь, для этого можно использовать первую инструкцию far jump в обход переменных по смещению 512 в файле. Она, как я вижу, одинаковая в рамках первого груба и в рамках второго груба, но отличается между ними, т.к. там область переменных разного размера.

_________________
Yet Other Developer of Architecture.
The mistery of Yoda’s speech uncovered is:
Just an old Forth programmer Yoda was.

<<< OS Boot Tools. >>>


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: GRUB2
СообщениеДобавлено: 15 ноя 2012, 12:48 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1206
Yoda писал(а):
Можно. Но для этого нужно иметь другой, работающий линукс :).
LiveCD, не? Типа "Try Ubuntu" и т.п. Вообще перед реконфигурацией GRUB'а всегда имеет смысл позаботиться заранее о спасательном варианте, т.к. периодически случается, что что-то забываешь учесть.

Цитата:
Сохранение оригинальной базы имеет смысл только в одном случае - если ты используешь оригинальный загрузчик от ГРУБа. Но в свете происходящих событий (использование другого начального загрузчика и добавление адаптационного кода) в этом нет ни малейшего смысла. Есть только одно ограничение - чем выше база, тем меньшего размера файл можно загрузить. Всё остальное не важно.
Для GRUB'а возможность загрузки большего по размеру файла не актуальна, ведь его разработчики по-любому ориентируются на базу 8000h.

Цитата:
Я надеюсь, для этого можно использовать первую инструкцию far jump в обход переменных по смещению 512 в файле. Она, как я вижу, одинаковая в рамках первого груба и в рамках второго груба, но отличается между ними, т.к. там область переменных разного размера.
Это вариант.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: GRUB2
СообщениеДобавлено: 15 ноя 2012, 14:28 
Аватара пользователя

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 970
Откуда: Дагоба
phantom-84 писал(а):
LiveCD, не?

Вполне возможно. Просто для оживления нужно, как всегда в линуксе, долго и мучительно курить мануалы. Мне проще было восстановить рабочий линух из бэкапа свежеустановленного и накатить на него отработанные скрипты. Благо, никаких критичных данных в нём не было. Вот если бы там были критичные данные, я бы, конечно, пошёл по пути реанимации трупа.

phantom-84 писал(а):
Вообще перед реконфигурацией GRUB'а всегда имеет смысл позаботиться заранее о спасательном варианте

Безусловно. Я и писал о том, что перед экспериментами с загрузкой сделаю ещё одну резервную копию. Я просто даже не предполагал, что он настолько легко убивается.

phantom-84 писал(а):
Для GRUB'а возможность загрузки большего по размеру файла не актуальна

Конечно. Но я ведь ориентируюсь не только на ГРУБ. И даже в первую очередь не на него. Он получился в качестве побочного продукта :).

_________________
Yet Other Developer of Architecture.
The mistery of Yoda’s speech uncovered is:
Just an old Forth programmer Yoda was.

<<< OS Boot Tools. >>>


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: GRUB2
СообщениеДобавлено: 15 ноя 2012, 18:36 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1206
В версиях 1.98, 1.99, 2.00 данные в стартап-коде различаются.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: GRUB2
СообщениеДобавлено: 16 ноя 2012, 15:38 
Аватара пользователя

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 970
Откуда: Дагоба
Чёрт, действительно.
Мало того, некоторые моменты лучше иметь перед глазами скомпилированными для проверки.
В добавок к этому, на оф-сайте ГНУ исходники только двух версий - 1.99 и 2.0. Надо где-то доставать остальные, причём, желательно и GUB Legacy.
Кроме того, нет никаких гарантий, что мантэйнеры не внесут собственных грубых правок в свои ГРУБы. Хотя, конечно это маловероятно.
Как быть?

ЗЫ
В смысле, не только скомпилированными, но и собранный образ core.img, который получается только на этапе установки ГРУБа, в рот ему ноги.

_________________
Yet Other Developer of Architecture.
The mistery of Yoda’s speech uncovered is:
Just an old Forth programmer Yoda was.

<<< OS Boot Tools. >>>


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: GRUB2
СообщениеДобавлено: 16 ноя 2012, 17:23 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1206
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, который получается только на этапе установки ГРУБа, в рот ему ноги.
Т.е. чтобы смотреть, какие изменения вносит установщик? Я это делал раньше, когда разбирался, как происходит установка. Но в принципе для версий с "нововведениями", возможно, имеет смысл вернуться к этой практике.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: GRUB2
СообщениеДобавлено: 17 ноя 2012, 00:39 
Аватара пользователя

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 970
Откуда: Дагоба
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.

_________________
Yet Other Developer of Architecture.
The mistery of Yoda’s speech uncovered is:
Just an old Forth programmer Yoda was.

<<< OS Boot Tools. >>>


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: GRUB2
СообщениеДобавлено: 17 ноя 2012, 02:37 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1206
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 самостоятельно (или прошу кого-нибудь это сделать :D). Кстати когда я тебе говорил про то, как обрабатывается GRUB'ом kernel.img, я заглянул в этот файл и увидел, что там сразу после ELF-заголовка находится стартап-код. Конечно этот вариант в плане инициализации данных стартап-кода еще более сырой, чем в файле core.img, но представление о размещении этих данных он вполне может дать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: GRUB2
СообщениеДобавлено: 18 ноя 2012, 00:57 
Аватара пользователя

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 970
Откуда: Дагоба
phantom-84 писал(а):
Там выкладываются тестовые версии. Видимо, последний релиз-кандидат - это и есть релиз-версия. Скорее всего раньше они просто не использовали это название, а заменяли старого релиз-кандидата на нового, если таковые вообще были, или делали из последней беты релиз-кандидата. Я версии 1.99 и 2.00 брал на "оф-сайте". Ради интереса можно сравнить последних релиз-кандидатов по каждой версии с соотв. релиз-версиями.
Я уже сравнил. Нет, разные. И 1.99 и 2.00. Причём достаточно сильно отличаются, и файлы внутри более свежие. Видимо, в этот архив сваливается всё, что ушло с оф. сайта.

phantom-84 писал(а):
Цитата:
Я так понимаю, сейчас большинство мантейнеров придерживаются версии 1.98, как наиболее стабильной.
1.99 уже достаточно давно в ходу.
ОК, можно добавить 1.99 и 2.00.

_________________
Yet Other Developer of Architecture.
The mistery of Yoda’s speech uncovered is:
Just an old Forth programmer Yoda was.

<<< OS Boot Tools. >>>


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 45 ]  На страницу Пред.  1, 2, 3, 4, 5  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB