OSDev

для всех
Текущее время: 05 июл 2025, 02:40

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




Начать новую тему Ответить на тему  [ Сообщений: 353 ]  На страницу Пред.  1 ... 17, 18, 19, 20, 21, 22, 23 ... 36  След.
Автор Сообщение
 Заголовок сообщения: Re: OS Boot Tools
СообщениеДобавлено: 07 ноя 2012, 10:17 
Аватара пользователя

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 976
Откуда: Дагоба
phantom-84 писал(а):
Просто тестирование как-то странно проводится (подозреваю, что вообще никак)... Не буду же я человека учить основам тестирования.

Может хватит наезжать? В отличие от большинства программеров уделяю значительное внимание тестированию. Ты себе даже не представляешь, какая у меня тестовая база и сколько вообще труда вложено в этот проект! На каждый случай создаётся свой test-case, тестовая база вырастает, мало того, сделана автоматизированная генерация большого тестового набора по каждому чиху. При фазе интенсивного тестирования проверяются такие вещи, на которые любой другой забил бы. Плюс к этому большой и разнообразный парк компов нашей компании. Но всё равно нереально проверить всё и везде! Что касается базы 500h, я проверил её на ВСЕХ файловых системах, включая FAT12, но мне и в голову не пришло, что именно с флопом (не с файловой системой, а с устройством!) может быть такая засада.
Вот мало того, что я не заработал ни копейки на проекте, всё на голом энтузиазме и в свободное время, так ещё вместо благодарности одни наезды да пинки.
Я рад, что ты находишь ошибки в моём проекте, это означает, что он совершенствуется. Мне и самому часто с пол-пинка удавалось найти ошибки в больших и серьёзных коммерческих проектах, тестированию которых уделяется много внимания. Но давай всё-таки проявлять хоть толику уважения к моему труду.

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

<<< OS Boot Tools. >>>


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: OS Boot Tools
СообщениеДобавлено: 07 ноя 2012, 11:03 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1209
Yoda, прежде всего, я никогда ни на кого не наезжаю. Уверяю тебя, если тебе или кому-то еще так может показаться, что в действительности это не так! Твою работу и тебя я уважаю. Про "ни копейки" тут вообще не к месту. Тебя же никто не просит это делать, тем более задаром. Значит, присутствует какая-то мотивация (опробовать свои силы, довести до ума, чтобы потом перевести в коммерческое русло, просто ради интереса/удовольствия и т.п.)

Теперь относительно моих слов и конкретного загрузчика под FAT12 (а ведь был еще и под FAT16...). Это же надо суметь не догадаться загрузчик под FAT12 не запустить на флоппике! Я думаю большинство народу вообще не представляет, что FAT12 может быть где-либо еще кроме флоппика! То что у тебя богатый парк подопытного железа, это хорошо. Но в наше время нужно писать, что либо ты эмуляторы не поддерживаешь вообще, либо перечислять все поддерживаемые и по каждому писать о нештатном поведении софта, если таковое имеется, о временных проблемах с функционированием на определенных эмуляторах или об отказе от использования определенных эмуляторов применительно к конкретному софту, о рекомендуемых настройках для каждого эмулятора и т.д. и т.п. Тем более где-то проскакивало, что ты, также как и я, в первую очередь используешь бокс. Короче о работе судят по результатам. Я указал на конкретные недоработки. Когда кто-то мне делает такой подарок, я только радуюсь и говорю спасибо! А ты начинаешь обижаться и переводишь по сути позитивную ситуацию в конфликтное русло.

Надеюсь, ты меня правильно понял. Если нет, то только скажи, и в адрес любой твоей работы и лично тебя ты больше не услышишь ни единого моего слова.

P.S. Я вчера в ответ на твой пост на буржуйском форуме выбирал картинку "Good job" и не разместил ее лишь по той причине, чтобы не показаться льстецом. Выводы делай сам.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: OS Boot Tools
СообщениеДобавлено: 07 ноя 2012, 11:32 

Зарегистрирован: 18 окт 2012, 21:03
Сообщения: 54
Сергей так как насчет базового адреса? Вы пропустили мой пост, может решение в boot перенести все же?

phantom-84 А по поводу тестирования так всегда бывает уделяешь в первую очередь сложным моментам и некоторые очевидности бывает пропускаешь, как раз как правило самые очевидные, так что чего было удивляться и так акцентировать внимание не понятно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: OS Boot Tools
СообщениеДобавлено: 07 ноя 2012, 13:10 
Аватара пользователя

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 976
Откуда: Дагоба
jarilo писал(а):
Сергей так как насчет базового адреса? Вы пропустили мой пост, может решение в boot перенести все же?

Нет, не пропустил. Ведение двух базовых адресов потребует ведение двух разных загрузчиков, специальную поддержку со стороны утилиты подготовки и добавит кучу путаницы. Оставить базу 600h, пусть это и не лучшая возможная база, всё-таки наиболее эффективное решение. Поверьте, мне самому очень хочется опустить базу до теоретического предела, но будем считать это техническим ограничением, связанным с требованиями совместимости. В конце концов, даже самые распоследние компьютеры до сих пор 100% совместимы, включая такие законченные атавизмы, как линия А20.
Вы лучше скажите, как обстоят дела с загрузкой с флешки на последней версии? Там немного изменились опции, для формата суперфлоппи надо указать номер диска, и больше не надо указывать букву, кроме того, надо добавить опцию -b. Если не заработает, будем разбираться более детально.

phantom-84 писал(а):
Yoda писал(а):
Здесь можно со спокойной совестью убрать cli/sti. В соответствии с интеловскими спецификациями, любая загрузка сегмента стека автоматически запрещает прерывания до окончания следующей за ней инструкции. Это специально сделано для безопасной настройки стека и существует ещё с первых 8086/8088.
Не, в 8086/8088 этого не было.

Не могу сейчас найти в официальном интеловском руководстве (в печатных изданиях того времени поиск не делается, а оно довольно толстое :)), но я точно помню этот факт ещё со времён программирования на настоящих XT. Да и в книге Финогенова/Рудакова по программированию на ассемблере 8086 этот факт специально оговорен, что при загрузке SS на следующую инструкцию маскируются все, даже самые немаскируемый прерывания.

По поводу наездов я говорю про конкретные зацитированные фразы. Про моё отношение к найденным ошибкам я сказал:
Yoda писал(а):
Я рад, что ты находишь ошибки в моём проекте, это означает, что он совершенствуется.
и я действительно рад, говорю это искренне. Про "ни копейки" я говорил к тому, что не стоит сразу ожидать, что я тут же перепакую всё с описанием настройки стека и пр. Я сильно ограничен по времени и приходится оптимизировать работу по затратам времени.
Ладно, считаем, что замяли этот вопрос.
Давай лучше обсудим передачу номера раздела в DH.
Я так понимаю, второй груб ожидает следующий формат:
0 - загрузка с диска без разделов.
1-4 - основные разделы в таблице разделов.
5-... - логические диски расширенного раздела, причём, нумерация начинается с 5 независимо от количества реально присутствующих основных разделов.
Верно?
В принципе, кроме логических дисков, всё остальное вполне логично. А с логическими дисками второй вариант, это когда номер передаётся сквозной, т.е., если в системе один основной раздел, то логические диски будут нумероваться с 2. Самая засада заключается в том, что эти две системы нумерации не конвертируются одна в другую, поэтому нужно сразу определиться с тем, какой вариант будет использован.
Вообще удивляюсь, сколько кривизны тянется со старых разработок. Структуры MBR/EBR весьма показательны в этом плане.

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

<<< OS Boot Tools. >>>


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: OS Boot Tools
СообщениеДобавлено: 07 ноя 2012, 14:28 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1209
Yoda писал(а):
Не могу сейчас найти в официальном интеловском руководстве (в печатных изданиях того времени поиск не делается, а оно довольно толстое :)), но я точно помню этот факт ещё со времён программирования на настоящих XT. Да и в книге Финогенова/Рудакова по программированию на ассемблере 8086 этот факт специально оговорен, что при загрузке SS на следующую инструкцию маскируются все, даже самые немаскируемый прерывания.
Насколько я знаю, это появилось позднее. В PM32 я это использую, т.к. в 32-разрядных процах это точно было с самого начала.

Цитата:
По поводу наездов я говорю про конкретные зацитированные фразы.
Я тоже. Из того, на каких простых ситуациях они "сыпались", я сделал предположение, что они могли вообще не тестироваться или тестироваться кое-как.

Цитата:
Про "ни копейки" я говорил к тому, что не стоит сразу ожидать, что я тут же перепакую всё с описанием настройки стека и пр. Я сильно ограничен по времени и приходится оптимизировать работу по затратам времени.
Не хочу опять говорить грубости, но тебя кто-нибудь торопил выкладывать сырой, плохо документированный продукт? Трудно подготовить весь пакет целиком, давай "вылизывать" его по частям, тестировать здесь и т.п. После первого "облома" я тебе сам предлагал скинуть мне новые версии тех же загрузчиков в личку, чтобы я мог их проверить в тех же условиях, что и прежние, но ты этого не стал делать, значит, подумал я, сделал все сам. Ну в общем ты меня понял...

Цитата:
Ладно, считаем, что замяли этот вопрос.
Как ты понимаешь, я только за. Как сказал выше, его вообще лучше было не поднимать.

Цитата:
Давай лучше обсудим передачу номера раздела в DH.
Я так понимаю, второй груб ожидает следующий формат:
0 - загрузка с диска без разделов.
1-4 - основные разделы в таблице разделов.
5-... - логические диски расширенного раздела, причём, нумерация начинается с 5 независимо от количества реально присутствующих основных разделов.
Верно?
Вообще он ничего не ожидает. И без разницы, второй или первый (в них только на пользовательском уровне нумерация разделов различается). В обычных условиях все это в него уже вшито инсталлятором. Сам формат идентификатора описан в Multiboot Spec. (см. описание boot_device). Если кратко, то там разделы нумеруются с нуля, 0xFF является невалидным значением, т.е. используется для цельных устройств. Сам идентификатор 32-разрядный и поддерживается несколько уровней вложенности одних разделов в другие. Следующий за основным уровень - это уровень BSD-разделов. Дополнительные разделы внутри расширенного раздела DOS не считаются вложенными. Для них используется последовательная нумерация (4-254). То что ты показал, больше похоже на мою "географическую" нумерацию, правда 0 не обязательно обозначает цельное устройство (еще может обозначать активный раздел или просто первый раздел в таблице - у меня все это, включая цельное устройство, называется загрузочным разделом по умолчанию). Я преобразую входной параметр моего ядра в номер раздела GRUB простым циклическим декрементом. Сообщить GRUB'у о более глубоких уровнях вложенности разделов не могу, т.к. у меня такого понятия нет вообще (оно вообще редко где есть).

Цитата:
В принципе, кроме логических дисков, всё остальное вполне логично. А с логическими дисками второй вариант, это когда номер передаётся сквозной, т.е., если в системе один основной раздел, то логические диски будут нумероваться с 2. Самая засада заключается в том, что эти две системы нумерации не конвертируются одна в другую, поэтому нужно сразу определиться с тем, какой вариант будет использован.
И у меня, и в GRUB'е используется первый вариант. Хотя для меня это справедливо только для классической "географической" нумерации, т.к. на самом деле смысл номеров может быть совершенно разным. Главное, чтобы и загрузчики, и драйверы номера понимали одинаково. Само ядро работает только с нулевым значением, выполняя ряд дополнительных действий по поиску загрузочного устройства в такой ситуации.

Цитата:
Вообще удивляюсь, сколько кривизны тянется со старых разработок. Структуры MBR/EBR весьма показательны в этом плане.
В этом был определенный смысл. Это сделано для того, чтобы созданные в других системах первичные разделы не влияли на порядок следования дополнительных разделов после первичных.


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

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

Не преувеличивай. Если нашлась ошибка и появились пожелания по документации, это не означает, что он сырой и плохо документированный.

phantom-84 писал(а):
Вообще он ничего не ожидает... В обычных условиях все это в него уже вшито инсталлятором.

Это понятно. Хорошо, я не так выразился. Что нужно для того, чтобы организовать адекватную последующую загрузку? Как я понял, вариант с нумерацией логических дисков, начиная с пятого. (пусть примем за 0 формат суперфлоппи)

phantom-84 писал(а):
Сам формат идентификатора описан в Multiboot Spec. (см. описание boot_device).

Прочитал. Выходит, на этом и порешим. Таким образом, для поля part1 'boot_device' ГРУБа надо будет просто декрементировать переданный номер.

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

<<< OS Boot Tools. >>>


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: OS Boot Tools
СообщениеДобавлено: 07 ноя 2012, 16:53 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1209
Yoda писал(а):
Не преувеличивай. Если нашлась ошибка и появились пожелания по документации, это не означает, что он сырой и плохо документированный.
ОК, тогда просто: "Кто тебя торопит?" Не хватает времени (у кого его вообще хватает!), "придержи" выпуск.

Цитата:
Это понятно. Хорошо, я не так выразился. Что нужно для того, чтобы организовать адекватную последующую загрузку? Как я понял, вариант с нумерацией логических дисков, начиная с пятого. (пусть примем за 0 формат суперфлоппи)
Да, 4 номера по-любому закреплены за первичными разделами. Если тебя устраивает мой вариант нумерации, я не против. Можешь взять и формат MB-идентификатора, отбросив два младших байта, и передавать его в dx (номер раздела в dh), если тебе это больше нравится.

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


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

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

В своём ядре я думаю использовать его в том случае, если не будет индикатора раздела (например, ядро загрузили ГРУБом) или вдруг они совпали для двух носителей/разделов. Так что польза от него будет в любом случае.

phantom-84 писал(а):
Еще скажи, можно ли надеяться на присутствие нового параметра в любом случае, или нужно делать какие-то доп. проверки, чтобы убедиться в его наличии (с учетом того, что обновление еще не вышло, в этом есть смысл)?

Ситуация следующая. Сейчас я занимаюсь именно этой фичей. Как только закончу, будет опубликована версия 3.1. На данный момент все загрузчики без исключения передают 0 в DH (вроде как недокументированная фича для безопасного fall-back специально задуманная для этого случая). Такое же поведение в будущем будет соответствовать тому, что винт не разбит или же используется MBR, не совместимый с загрузчиками, т.к. номер раздела они могут получить только от него. Определить версию используемого загрузчика нет возможности. Таким образом, алгоритм действий в твоём случае следующий. Проверяешь содержимое DH и если оно НЕ РАВНО нулю, то это точно номер раздела на винте. Если оно равно нулю, то винт или не разбит или номер по каким-то причинам получить не удалось.

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

<<< OS Boot Tools. >>>


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: OS Boot Tools
СообщениеДобавлено: 07 ноя 2012, 18:32 

Зарегистрирован: 18 окт 2012, 21:03
Сообщения: 54
Yoda писал(а):
Вы лучше скажите, как обстоят дела с загрузкой с флешки на последней версии? Там немного изменились опции, для формата суперфлоппи надо указать номер диска, и больше не надо указывать букву, кроме того, надо добавить опцию -b. Если не заработает, будем разбираться более детально.


Извиняюсь за задержку, не получалось выделить время. Проверил загрузку на бажном с FAT32 в HDD режиме (не суперфлоп) - не грузит, пишет "Error loading OS...". На нормальном BIOS грузит за 0.5сек. вашу тестовую затычку и выдает параметры диска. Вобщем как и все другие загрузчики, на бажном надо проверять поддержку LBA, я так понимаю что LBA в процессе эволюции менялось несколько раз и видимо загрузчики видя что LBA есть начинают его использовать LBA48 а там может предыдущий LBA или вообще не корректный. FlashBoot это как то определяет и корректно грузит подменяя при этом номер диска.

По поводу утилиты boot, не логично используются параметры, для инсталляции логично указать только один единственный параметр ДИСК или БУКВУ все нужные загрузчики должны быть установлены, т.е. boot -d 2 или boot -d f, причем это две абсолютно одинаковые по смыслу должны быть команды просто кому как нравиться буква или диск, а если в строке встречается параметр -m или -b то он ограничит запись только MBR или boot sector, если в строке запуска нет этих параметров надо писать все чтоб была полная FULL установка - это логично.
Очень понравилась новая подробная информация о дисках, при чем она стала гораздо быстрей выдаваться, раньше после команды boot -l программа задумывалась на пару секунд, теперь мгновенно выводит список всех подробных данных о дисках, единственно уж очень много листов потом крутить скролинг просматривать не гуд, не плохо бы продумать (это на те времена когда совсем делать будет нечего) более компактный вывод информации.

Протестировал hybrid формат FAT32: на нормальном BIOS грузит за 0.5сек , на бажном подвисает намертво, на чистом экране курсор в самой первой верхней левой позиции, нечего не пишет , не реагирует на три волшеб. клав. только power да и тот только с принудительным удержанием 6 сек.
Вывод: на всех современных BIOS должно работать без проблем, на старых компах велика вероятность что вообще не загрузится, а так же на современных но очень бюджетных машинах там BIOS тоже кривой как на старых )))


Последний раз редактировалось jarilo 07 ноя 2012, 20:00, всего редактировалось 3 раз(а).

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: OS Boot Tools
СообщениеДобавлено: 07 ноя 2012, 18:55 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1209
Yoda писал(а):
В своём ядре я думаю использовать его в том случае, если не будет индикатора раздела (например, ядро загрузили ГРУБом) или вдруг они совпали для двух носителей/разделов. Так что польза от него будет в любом случае.
Не понял. Ты же сейчас как-то умудряешься запускать систему, не опираясь на MB-идентификатор, передаваемый GRUB'ом. Что тебе мешает продолжать это делать и дальше? Или реально приходится сталкиваться с проблемами "лэйбльной" адресации, о которых я когда-то рассказывал?

Цитата:
Ситуация следующая. Сейчас я занимаюсь именно этой фичей. Как только закончу, будет опубликована версия 3.1. На данный момент все загрузчики без исключения передают 0 в DH (вроде как недокументированная фича для безопасного fall-back специально задуманная для этого случая). Такое же поведение в будущем будет соответствовать тому, что винт не разбит или же используется MBR, не совместимый с загрузчиками, т.к. номер раздела они могут получить только от него. Определить версию используемого загрузчика нет возможности. Таким образом, алгоритм действий в твоём случае следующий. Проверяешь содержимое DH и если оно НЕ РАВНО нулю, то это точно номер раздела на винте. Если оно равно нулю, то винт или не разбит или номер по каким-то причинам получить не удалось.
Т.е. в будущем можно будет и не проверять, т.к. в адаптационном коде я все равно не смогу понять, что означает 0 (пусть с этим разбирается дальнейший код). Сейчас же лучше заменять твой 0 своим нулем или другим пропатченным значением и рекомендовать в дальнейшем отказаться от пропатчивания выпускаемых сейчас версий (и само собой новых, в которых этой возможности может не быть вообще), оставив в качестве окончательного значения пропатчиваемой ячейки 0. Только тогда ты должен будешь сообщить "пользователям" о выходе новой версии пакета, которая отменяет необходимость пропатчивания. А если описанное нововведение появится в версии 3.1 в обязательном порядке, то можешь сейчас сообщить, что нам нужно писать в пояснениях к текущим версиям "ядер" по этому поводу. Или можно выдумывать самим? Кроме того, чтобы это работало для всех потенциально выпускаемых сейчас "ядер", а не только моего, нужно определиться с порядком пропатчивания. Инструкция mov dh,im уже не может идти на первом месте, т.к. до нее должна присутствовать проверка dh на ноль. Как вариант:
Код:
  and dh,dh ; подобные инструкции имеют две формы кодирования
            ; можно забивать явно только один вариант, который и считать валидным
  jnz short @f ; $+4
  mov dh,0
@@:

Получилось: 20 F6 75 02 B6 ??

Кстати номер раздела первичные загрузчики могут и не получать от MBR-загрузчика, а пропатчиваться вручную или при помощи установщика (помнишь, я тебе говорил про наличие такого кода в моих первичных загрузчиках). А если ты собираешься получать номер от MBR-загрузчика, может тебе глянуть в сторону моего интерфейса "MBR-загрузчик - первичный загрузчик" в плане передачи этого номера, тогда мои MBR-загрузчики смогут загружать твои первичные, а они в свою очередь смогут нормально воспринимать переданный им номер. Или у нас там возникло пересечение параметров, я уже не помню?

Edited. Подправил циферки.


Последний раз редактировалось phantom-84 08 ноя 2012, 10:23, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 353 ]  На страницу Пред.  1 ... 17, 18, 19, 20, 21, 22, 23 ... 36  След.

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


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

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


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

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