OSDev

для всех
Текущее время: 18 ноя 2017, 18:35

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




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

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 938
Откуда: Дагоба
Работает!!! :D
Осталось вылизать, причесать, отладить, документировать и выложить :).

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

Да как бы лучше заняться всеми версиями сразу, чтобы потом путаницы избежать. Новые, конечно, тоже. Сейчас работаю над всеми версиями, начиная с 1.96. Более ранние не компилируются из-за внутреннего глюка определения свойств линкера.

phantom-84 писал(а):
Это точно, что инсталлятор записывает в переменные именно 0x000000FF (как я понимаю, речь естественно идет о цельном загрузочном устройстве)?

Не, я имел ввиду все байты FF, то есть два поля 0xFFFFFFFF.
Вот меня как раз инициализация и смущает. Я не понимаю, какое значение имеет эта (-1). Хорошо, предположим, что имеется ввиду носитель без раздела. Но я ведь устанавливаю ГРУБ на диск, разбитый на разделы с одним разделом. Это во-первых. Во-вторых, почему инсталляторы разных версий пишут совершенно разные значения?
1.96 вписала 0
1.97-1.98 вписали 0xFFFFFFFF (-1)
1.99 вписала 0xFFFFFFFE (-2) и в номер раздела, и в номер BSD-раздела.
2.0 вписала в номер раздела байт 0xFF
Больше всего меня в данной ситуации смущает версия 1.99.
Не может такого быть, что -1 означает автодетект? Или просто дурят инсталляторы и не смогли вписать правильный номер? Насколько я понимаю, правильные значения в данной ситуации должны быть: раздел 0, подраздел -1.

_________________
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
СообщениеДобавлено: 04 дек 2012, 13:35 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1195
Yoda писал(а):
Работает!!! :D
Помню, тоже радовался, когда заработало :) Как просто, оказывается, можно сделать GRUB более дружелюбным в плане установки! Конечно директ-загрузка из MBR иногда бывает полезна, но это бывает крайне редко. Хотя и такой способ загрузки можно сделать значительно элегантнее, чем это реализовано в GRUB'е (мы как-то при обсуждении затрагивали эту тему).

Цитата:
Более ранние не компилируются из-за внутреннего глюка определения свойств линкера.
Значит, ты все-таки собираешь из исходников? Я все делаю из бинарников, в том числе и старого GRUB'а, модиф. версией которого и пользовался до недавнего времени (его функционала было достаточно). А адаптация второго GRUB'а хотя и была сделана давно, оставалась на уровне эксперимента (я тебе вроде бы рассказывал, что чтобы мой инсталлятор мог использовать модиф. GRUB 2 в качестве вторичного загрузчика, нужно разместить все необходимые модули вместе с ядром загрузчика в одном установочном каталоге, без использования вложенных каталогов, и все это в конечном итоге попадет в корневой каталог загрузочного диска, что не очень хорошо).

Цитата:
Вот меня как раз инициализация и смущает. Я не понимаю, какое значение имеет эта (-1). Хорошо, предположим, что имеется ввиду носитель без раздела. Но я ведь устанавливаю ГРУБ на диск, разбитый на разделы с одним разделом. Это во-первых. Во-вторых, почему инсталляторы разных версий пишут совершенно разные значения?
1.96 вписала 0
1.97-1.98 вписали 0xFFFFFFFF (-1)
1.99 вписала 0xFFFFFFFE (-2) и в номер раздела, и в номер BSD-раздела.
2.0 вписала в номер раздела байт 0xFF
Ты проверял работоспособность всех названных версий при таких значениях переменных? Может, установщик где-то ступил или ты что-то не учел при установке какой-то версии.

Цитата:
Больше всего меня в данной ситуации смущает версия 1.99.
Не может такого быть, что -1 означает автодетект? Или просто дурят инсталляторы и не смогли вписать правильный номер? Насколько я понимаю, правильные значения в данной ситуации должны быть: раздел 0, подраздел -1.
Про автодетект загрузочного раздела в GRUB'е я не слышал. Нужно посмотреть в исходниках версии 1.99, как осуществляется работа с этой переменной (этими переменными).


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

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 938
Откуда: Дагоба
phantom-84 писал(а):
Значит, ты все-таки собираешь из исходников? Я все делаю из бинарников

Знал бы, где нарыть канонические бинарники, может быть и пользовался ими. Однако идеология Линукса настаивает на "Ду ит ёсэлф" со всеми вытекающими.

phantom-84 писал(а):
Ты проверял работоспособность всех названных версий при таких значениях переменных? Может, установщик где-то ступил или ты что-то не учел при установке какой-то версии.

А что можно не учесть при установке ГРУБа?
Нет, все пока не проверял. Надо будет проверить при разных значениях. Проверю на своей коллекции ГРУБов.

_________________
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
СообщениеДобавлено: 05 дек 2012, 08:31 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1195
Yoda писал(а):
Знал бы, где нарыть канонические бинарники, может быть и пользовался ими. Однако идеология Линукса настаивает на "Ду ит ёсэлф" со всеми вытекающими.
Я беру из дистров убунту или минта (там же и core.img собираю). Они конечно не канонические (если таковые вообще в природе существуют), но близкие к тому. Например:
1.98 - Ubuntu 10.10
1.99 - Ubuntu 11.10
2.00 - надеюсь, что Ubuntu 12.10 - дистрибутив есть и даже записан, но какая версия GRUB'а, еще не смотрел (допишу этот пост, посмотрю).

Цитата:
А что можно не учесть при установке ГРУБа?
Нет, все пока не проверял. Надо будет проверить при разных значениях. Проверю на своей коллекции ГРУБов.
Ну, может какие-то параметры видоизменились или еще что (я GRUB родным инсталлятором очень редко ставлю). Раз не проверял, не факт, что все указанные значения валидные. Нужно было поставить и попробовать загрузиться. Я как-нибудь тоже проверю версии 1.98-2.00. Кстати, я в дальнейшем не собираюсь использовать GRUB 2 до версии 1.98, поэтому поведение пред. версий меня уже не сильно интересует. Версию 1.98, как оказалось, я все-таки адаптировал правильно, только не понятно, почему у тебя инсталлятор для первого раздела вписал в переменную dos_part минус 1. Может это прокатывает, когда раздел на диске единственный, хотя как это будет работать, если после будет создан второй раздел. Может это прокатывает для активного или просто первого раздела? У меня ядро также детектит загрузочное устройство, являющееся отдельным разделом диска, когда вместо номера раздела передан 0: если устройство не цельное, то пытается найти его активный раздел (при помощи сервиса менеджера разделов), а если активного нет, то просто первый существующий.


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

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1195
Да, если судить по заголовку, то в Ubuntu 12.10 включена версия 2.00.

По крайней мере в версии 1.98 автодетект загрузочного раздела не работает. Пишет: "Неизвестная файловая система". Т.е. видимо пытается детектить ФС на цельном устройстве и не более того. Так что скорее всего, Yoda, у тебя данная версия проинсталлирована неправильно, если судить по невалидному для обозначения раздела значению переменной dos_part.


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

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 938
Откуда: Дагоба
Ффуф, немного разгрёб завал бытовых дел. Попытаюсь вернуться к работе над проектом.
Сейчас тестирую разные версии ГРУБа на флешке, разбитой на один раздел.
Ситуация получается парадоксальная. Загружабельность совершенно не зависит от содержимого этого поля. По крайней мере в версии 1.98 в номер раздела я могу вписать абсолютно любое значение, ГРУБ всегда грузится. Не пойму, как дальше жить. Надо вникать в исходники, что ли...

_________________
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
СообщениеДобавлено: 11 дек 2012, 08:19 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1195
У меня не грузится. Я проверял уже sys-grubldr. Проверял на хардах. Так вот к примеру если вписать 0 (преобразуется в 0xFFFFFFFF) вместо 3 (преобразуется в 2), то GRUB сообщает об ошибке, о которой я писал выше, и переходит в спасательный режим. Если вписать вместо 0 номер не "системного" раздела, то GRUB также может выдать сообщения "Файл не найден" или "Нет такого раздела" в зависимости от того, существует ли раздел с указанным номером или нет. Т.е. все абсолютно логично.

Может инсталлятор куда-то еще вшивает номер раздела на случай, если при использовании обозначенной переменной возникает ошибка? Хотя это конечно навряд ли. Еще теоретически можно определить номер "системного" раздела по номеру на диске 2-го сектора ядра, который хранится в конце helper'а. У меня в адаптационном коде там хранится 0, а в оригинальном helper'е после инсталляции - вполне актуальное значение. Надеюсь, не нужно пояснять, как можно, зная номер сектора на диске, определить его принадлежность к определенному разделу или непринадлежность к каким-либо разделам вообще. Хотя, думаю, что до такого крутого изврата разработчики GRUB'а тоже не дошли. Правда, номер этого сектора зачем-то сохраняет в helper'е в регистре ebp...


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

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 938
Откуда: Дагоба
phantom-84 писал(а):
если вписать 0 (преобразуется в 0xFFFFFFFF) вместо 3 (преобразуется в 2), то GRUB сообщает об ошибке

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

phantom-84 писал(а):
Еще теоретически можно определить номер "системного" раздела по номеру на диске 2-го сектора ядра, который хранится в конце helper'а.

Я хелпер вообще отбрасываю за ненадобностью. Так что исключено.

Ладно, пока заложусь на корректность твоих экспериментов. Готовлю пакет.

_________________
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
СообщениеДобавлено: 11 дек 2012, 12:13 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1195
Yoda писал(а):
Вероятно, всё дело в том, что у меня единственный раздел на диске. Может быть, при одном разделе GRUB херит вписанное значение и всегда пользуется этим разделом.
Нифига, я тестил модифицированный GRUB в разных конфигурациях. К тому же это нелогично, о чем я уже говорил. Доп. раздел можно добавить и после установки. Уж лучше тогда просто брать активный/первый раздел, когда их несколько. Может, на твоей флешке осталась гибридная разметка? Тогда GRUB может ее распознать, как цельное устройство и вообще не пытаться обращаться к отдельным разделам. Нужно попробовать выставить какой-либо номер раздела при загрузке с цельного устройства. Интересно, будет ли в этом случае ругаться GRUB. ...Проверил. По крайней мере на CD тоже ругается (вставил 1 вместо нуля): "no partition on this disk". Может, на флешках и флоппиках будет иначе.

Цитата:
Я хелпер вообще отбрасываю за ненадобностью. Так что исключено.
Вообще я думал, что ты говоришь о наплевательстве оригинального GRUB'а на значение переменной dos_part, установленное его инсталлятором. Я в модиф. GRUB'е заменяю оригинальный helper своим адаптационным кодом, в котором номер на диске 2-го сектора ядра обнулен. В оригинальном GRUB'е после его установки родным инсталлятором там хранится вполне актуальное значение. А что у тебя хранится в этой ячейке памяти, когда код GRUB'а получает управление?


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

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 938
Откуда: Дагоба
phantom-84 писал(а):
Может, на твоей флешке осталась гибридная разметка?

Да нет, там один нормальный раздел Ext2 без всякой гибридизации на весь объём флешки.

phantom-84 писал(а):
Интересно, будет ли в этом случае ругаться GRUB. ...Проверил. По крайней мере на CD тоже ругается (вставил 1 вместо нуля): "no partition on this disk". Может, на флешках и флоппиках будет иначе.

Поставил следующий эксперимент на твоём дискетном образе GRUB 1.98 (очевидно, разделов на дискете нет). Получилось следующее. При значениях <=0 (т.е. и при любом отрицательном тоже) ГРУБ нормально грузится. При значениях >=1 ГРУБ не грузится. Т.е., да, анализ этого поля проводится, но сильно обобщающий и, возможно, с какими-то запасными вариантами. Дома ещё раз проверю на флешке...

_________________
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