OSDev http://osdev.su/ |
|
OS Boot Tools http://osdev.su/viewtopic.php?f=4&t=485 |
Страница 28 из 36 |
Автор: | Yoda [ 23 янв 2013, 23:37 ] |
Заголовок сообщения: | Re: OS Boot Tools |
phantom-84 писал(а): Yoda, а зачем возиться с FreeDOS? Там что есть какие-то проблемы с установкой/загрузкой? Хммм. Об этом я как-то не подумал. Просто поддержал и всё. А что, там нет проблем с установкой/загрузкой? phantom-84 писал(а): Может быть, лучше брать имена из файловых записей в MFT, а не из индексных записей? Неа, не лучше. Я вообще не понимаю, зачем в файловых записях присутствует имя, когда настоящим именем считается только имя в индексах. Теоретически, они могут отличаться, например, в случае хардлинков. Вообще, NTFS мне жутко не нравится. Очень кривая файловая система, избыточно сложная (атрибуты, например, - порождение чьей-то больной фантазии) и тормозная. Единственная концепция, которая мне в ней понравилась, это Data Runs. Интересно, дата-раны запатентованы или нет? Я бы вполне рассмотрел их использование в своей файловой системе. |
Автор: | phantom-84 [ 24 янв 2013, 11:41 ] |
Заголовок сообщения: | Re: OS Boot Tools |
Yoda писал(а): Вышла версия 3.2. Cool Цитата: fat32.bin, ... Все-таки убедил Кстати помнишь разговор про битое поле FATSize32 на флешках. Я тогда предлагал перечитывать его из backup-копии или дублировать в отдельной ячейке бутсектора. Перечитывать можно и из оригинальной копии бутсектора на диске. Идея с дублированием в отдельной ячейке тоже вполне ничего.Цитата: mbr.bin, ebr.bin Почти как у меня Только смущает один момент (не о себе забочусь, а о юзерах), а именно ты написал, что при сохранении номера доп. загрузочного раздела в EBR доп. разделы нумеруются, начиная с 1. Или я тебя неправильно понял, или ты предлагаешь при сохранении использовать независимую нумерацию доп. разделов, внося тем самым путаницу в обозначение доп. разделов. Преимущества от такого подхода весьма облачные, а вот путаница на лицо. Почему бы не сделать, как у меня, т.е. сохранять номера доп. разделов на диске в единой форме. Я в EBR-коде сохраняю и использую нумерацию доп. разделов, начиная с номера 5.Теперь что касается альтернативной загрузки. Не понял, возможно ли у тебя одновременно иметь разные активный и альтернативный доп. разделы? Из того, что я прочитал, я сделал вывод, что нет. Кстати ты решил проблему невозможности детекта удерживания клавиши на нек. компах при использовании однократного теста на нажатие без задержки? Если ты видел, я делаю две редакции MBR-загрузчиков (поддерживающих dual booting) - с однократным тестированием без задержки и с многократным тестированием с задержкой в 1 сек. Цитата: Хммм. Об этом я как-то не подумал. Просто поддержал и всё. А что, там нет проблем с установкой/загрузкой? Ну, насколько я знаю, таких, как в GRUB'е и SYSLINUX'е, нет.Цитата: Неа, не лучше. Я вообще не понимаю, зачем в файловых записях присутствует имя, когда настоящим именем считается только имя в индексах. Теоретически, они могут отличаться, например, в случае хардлинков. Согласен, что дублирование имен - полный идиотизм. В доках вроде написано, что все имена хардлинков сохраняются в файловой записи. Только я пока не дошел до того, как понять, какому хардлинку какое имя, сохраненное в файловой записи, соответствует.Цитата: Единственная концепция, которая мне в ней понравилась, это Data Runs. Интересно, дата-раны запатентованы или нет? Я бы вполне рассмотрел их использование в своей файловой системе. Я уже пытаюсь использовать. Я вроде бы тебе рассказывал, что идентификатор раздела в виде номера его начального сектора был бы хорош, если бы можно было с течением времени расширять разрядность номера. Data Run (в исходниках M$ видел термин Mapping Pair; я всю цепочку называю DataChain, если ты планируешь следить за моей веткой форума, посвященной NTFS) как раз для этого подходит - номер начального сектора раздела/размер раздела в секторах (размер может и отсутствовать). Концепция не слишком сложна, поэтому, надеюсь, в M$ сидят не такие м-даки, чтобы вставлять всем палки в колеса по таким мелочам. Кстати, в AML похожая концепция используется. Да, много еще где.
|
Автор: | Yoda [ 24 янв 2013, 17:05 ] |
Заголовок сообщения: | Re: OS Boot Tools |
phantom-84 писал(а): Цитата: fat32.bin, ... Все-таки убедил Я поизучал и понял, что всё-таки можно сделать один файл исходника, который будет нормально компилироваться в любом из трёх режимов. Раньше мне казалось, что для получения двухсекторного универсального варианта придётся завести отдельный исходник, чего делать очень не хотелось. phantom-84 писал(а): Кстати помнишь разговор про битое поле FATSize32 на флешках. Я тогда предлагал перечитывать его из backup-копии или дублировать в отдельной ячейке бутсектора. Перечитывать можно и из оригинальной копии бутсектора на диске. Идея с дублированием в отдельной ячейке тоже вполне ничего. Кстати, да, в универсальной версии места полно. Там можно сделать чтение резервной копии. В отдельную ячейку вписывать не хочется, это будет несовместимое нарушение стандарта, перечитывать оригинальный бут-сектор, как показывает практика, тоже не панацея. Пожалуй, впишу себе в "туду". Кстати, должно нормально работать и в отсутствии резервной копии, т.к. в этом случае ссылка на резервную копию должна содержать 0, т.е. указывать на оригинальный загрузочный сектор. phantom-84 писал(а): ты написал, что при сохранении номера доп. загрузочного раздела в EBR доп. разделы нумеруются, начиная с 1. Или я тебя неправильно понял, или ты предлагаешь при сохранении использовать независимую нумерацию доп. разделов, внося тем самым путаницу в обозначение доп. разделов. Преимущества от такого подхода весьма облачные, а вот путаница на лицо. Почему бы не сделать, как у меня, т.е. сохранять номера доп. разделов на диске в единой форме. Я в EBR-коде сохраняю и использую нумерацию доп. разделов, начиная с номера 5. Мне кажется, это не принципиальный момент. Мои соображения были следующими:
phantom-84 писал(а): Теперь что касается альтернативной загрузки. Не понял, возможно ли у тебя одновременно иметь разные активный и альтернативный доп. разделы? Из того, что я прочитал, я сделал вывод, что нет. Не понял. А какой смысл в альтернативном разделе, если он совпадает с активным? Или ты имеешь ввиду логические диски расширенного раздела? Да, одновременно могут быть разные активный и альтернативный логические диски. phantom-84 писал(а): Кстати ты решил проблему невозможности детекта удерживания клавиши на нек. компах при использовании однократного теста на нажатие без задержки? Если ты видел, я делаю две редакции MBR-загрузчиков (поддерживающих dual booting) - с однократным тестированием без задержки и с многократным тестированием с задержкой в 1 сек. Я не в курсе этой проблемы. А как она проявляется? В чём её источник? phantom-84 писал(а): Цитата: Хммм. Об этом я как-то не подумал. Просто поддержал и всё. А что, там нет проблем с установкой/загрузкой? Ну, насколько я знаю, таких, как в GRUB'е и SYSLINUX'е, нет.Ну идеология, может, и более правильная, однако я тщательно не исследовал их бут-сектор и допустил возможность каких-нибудь странных ограничений, как в винде или в старом ДОС. К тому же, в данном случае есть возможность смены загружаемой ОС простым переименованием файла. Т.е. загрузочный сектор вообще трогать не надо, но при этом грузи любую ОС. Мне кажется, это вполне удобно. К тому же, работа уже сделана, так что поздно . По поводу палок в колёса. Вообще-то M$ - гигантская корпорация, которой нужно кормить свой разжиревший штат сотрутников и выколачивать деньги они умеют. Вспомни про массовые проверки лицензионности ПО, инициированные в первую очередь M$. А долго думать, какую сумму тебе вчинить, они не будут. Вот, например, exFAT мало отличается от обычных FAT, а тем не менее ухитрились запатентовать её так, что любая её реализация, в отличие от NTFS, уже стоит вне закона, а лицензия даже для простых устройств, типа фотоаппаратов, стоит 300k$ |
Автор: | SII [ 24 янв 2013, 18:40 ] |
Заголовок сообщения: | Re: OS Boot Tools |
Тут ещё надо смотреть, ИМХО, а распространяются ли все эти патенты на Россию. У нас же патентное законодательство отличается, причём в лучшую сторону: нельзя патентовать внешний вид изделий, алгоритмы как таковые и т.д. (Могу, конечно, ошибаться, я не еврист, но вроде так) |
Автор: | phantom-84 [ 24 янв 2013, 20:05 ] |
Заголовок сообщения: | Re: OS Boot Tools |
Yoda писал(а): Я поизучал и понял, что всё-таки можно сделать один файл исходника, который будет нормально компилироваться в любом из трёх режимов. Раньше мне казалось, что для получения двухсекторного универсального варианта придётся завести отдельный исходник, чего делать очень не хотелось. У меня тоже есть нечто подобное. Можно собирать загрузчики, использующие новые/старые функции или только новые. Только старые нельзя. У меня есть один загрузчик только со старыми функциями специально для флоппика, но я его писал очень давно (еще в школе) и с тех пор практически не менял (в нем и без того много устаревших решений, одни жестко закодированные параметры геометрии и ФС чего стоят).Цитата: В отдельную ячейку вписывать не хочется, это будет несовместимое нарушение стандарта Естественно, ни о каком стандарте речь не идет. Но параметр практически неизменный (Resizing тома и др. подобные издевательства в расчет не беру) - можно вписать один раз при установке загрузчика или даже при форматировании и забыть.Цитата: перечитывать оригинальный бут-сектор, как показывает практика, тоже не панацея. Серьезно? Ты проверял? Я не думал, что разработчики BIOS докатились до такого идиотизма, чтобы портить данное поле при выполнении обычной операции чтения этого сектора. Что-то я сильно сомневаюсь, что это действительно так.Цитата: Мне кажется, это не принципиальный момент. Мои соображения были следующими: Понятно, что не принципиальный. Но по-моему это немного неестественно и как-то резко выбивается из общей более-менее гладкой картинки. Когда я писал пред. пост, я уже понимал указанное соображение, но все-таки.
Цитата:
Цитата:
Цитата:
Цитата:
Цитата: Не понял. А какой смысл в альтернативном разделе, если он совпадает с активным? Или ты имеешь ввиду логические диски расширенного раздела? Да, одновременно могут быть разные активный и альтернативный логические диски. Все, я сообразил. Просто прежде прикинул на свой лад и забыл, что ты "активный" доп. раздел маркируешь флагом активности. Получается, что по смещению 445 в EBR ты хранишь номер альтернативного загрузочного раздела? А как ты тогда определяешь в EBR-коде, с какого загрузочного раздела грузиться, активного или альтернативного?У меня в EBR по смещению 445 хранится номер активного доп. раздела, а номер альтернативного доп. раздела передается MBR-загрузчиком. Флаг активности для доп. разделов не используется вообще. Цитата: Я не в курсе этой проблемы. А как она проявляется? В чём её источник? На нек. компах, особенно ноутбуках, недостаточно однократного тестирования клавиатурных флагов BIOS для отлавливания факта удерживания клавиши. Момент не постоянный или короткий, а предварительное нажатие и удерживание видимо не отражается на состоянии флагов. Жалко, что wasm прикрыли, я там это проблему описывал. Может, в каких-нибудь кэшах осталось. Тема вроде бы называлась "Загрузка первого байта первого сектора".
|
Автор: | Yoda [ 24 янв 2013, 22:53 ] |
Заголовок сообщения: | Re: OS Boot Tools |
phantom-84 писал(а): Цитата: перечитывать оригинальный бут-сектор, как показывает практика, тоже не панацея. Серьезно? Ты проверял? Я не думал, что разработчики BIOS докатились до такого идиотизма, чтобы портить данное поле при выполнении обычной операции чтения этого сектора. Что-то я сильно сомневаюсь, что это действительно так.Ты не поверишь (я сам не поверил своим глазам), ЕСТЬ BIOSы, которые патчат это поле при ЛЮБОМ чтении сектора через Int 13h! Я потратил уйму времени, просто потому что не мог в это поверить. В конце концов написал прямолинейный тест - сырое перечитывание сектора уже из загруженного в память загрузчика. Все байты на месте, а этот байт запорчен. phantom-84 писал(а): Не, ну ты же не учитываешь в своем коде различные "нестандартные" расширения таблицы разделов. Это сейчас не учитываю. Но я не могу гарантировать, что не поддержу в будущем . phantom-84 писал(а): Подход вполне простой: используется географическая (геометрическая) нумерация разделов и традиционное разбиение диска на разделы. Ты же в EBR-коде придерживаешься именно этого способа нумерации и наверняка пересчитываешь 1 в 5, 2 в 6 для передачи номера дальше по цепочки. К великому сожалению, приходится пересчитывать, иначе отвалится GRUB. Увы, но моё личное мнение таково, что геометрическая нумерация, принятая в GRUB, идеологически порочна и ошибочна. Либо надо нумеровать сквозным образом (добавлять номер логического диска к номеру раздела EBR), либо вообще отказаться от геометрической нумерации. phantom-84 писал(а): Сделаешь EBR-код, основанный на другом подходе, можешь и доп. разделы нумеровать не с 5, а к примеру с 7. Я бы с удовольствием придумал какой-нибудь простой механизм, позволяющий вводить корректный сдвиг, но пока ничего красивого на ум не приходит. Можно расширить интерфейс и задействовать ещё один регистр, но это будет уже некрасиво. phantom-84 писал(а): Получается, что по смещению 445 в EBR ты хранишь номер альтернативного загрузочного раздела? Да, верно. Мы же этот номер и перетираем выше . phantom-84 писал(а): А как ты тогда определяешь в EBR-коде, с какого загрузочного раздела грузиться, активного или альтернативного? По клавиатурным флагам и определяю. phantom-84 писал(а): На нек. компах, особенно ноутбуках, недостаточно однократного тестирования клавиатурных флагов BIOS для отлавливания факта удерживания клавиши. Момент не постоянный или короткий, а предварительное нажатие и удерживание видимо не отражается на состоянии флагов. Хммм. Пока что не вижу красивого способа обойти. Секундные задержки как-то не вдохновляют. Очень хочется, чтобы вся система грузилась не больше, чем за две секунды. Ну максимум - 5 секунд. Такова цель. |
Автор: | phantom-84 [ 25 янв 2013, 04:04 ] |
Заголовок сообщения: | Re: OS Boot Tools |
Yoda писал(а): Ты не поверишь (я сам не поверил своим глазам), ЕСТЬ BIOSы, которые патчат это поле при ЛЮБОМ чтении сектора через Int 13h! Я потратил уйму времени, просто потому что не мог в это поверить. В конце концов написал прямолинейный тест - сырое перечитывание сектора уже из загруженного в память загрузчика. Все байты на месте, а этот байт запорчен. Буду искать такие BIOS'ы.Цитата: Это сейчас не учитываю. Но я не могу гарантировать, что не поддержу в будущем . Я здесь вообще не вижу никакой проблемы. Геометрическая нумерация не нами придумана. При этом нумерация доп. разделов с фиксированного номера 4/5 (в зависимости от выбранной базы) является вполне обоснованной. Можно конечно в EBR-код передавать доп. параметр типа "максимальное количество первичных разделов" или "номер первого доп. раздела" (опять 4 или 5), но я пока не вижу в этом никакой практической пользы. Хочешь универсальности EBR-кода, заведи в нем отдельную ячейку для хранения такого параметра и вычисляй окончательный номер путем сложения "базы" и "смещения". Кстати при таком подходе твоя нумерация доп. разделов, начиная с 1, будет смотреться более логично. Тогда уже понятно, что это относительный номер, т.к. он является элементом пары.К великому сожалению, приходится пересчитывать, иначе отвалится GRUB. Увы, но моё личное мнение таково, что геометрическая нумерация, принятая в GRUB, идеологически порочна и ошибочна. Либо надо нумеровать сквозным образом (добавлять номер логического диска к номеру раздела EBR), либо вообще отказаться от геометрической нумерации. Я бы с удовольствием придумал какой-нибудь простой механизм, позволяющий вводить корректный сдвиг, но пока ничего красивого на ум не приходит. Можно расширить интерфейс и задействовать ещё один регистр, но это будет уже некрасиво. Цитата: Да, верно. Мы же этот номер и перетираем выше . Я же говорю, что стал на свой лад рассуждать и немного запутался.Цитата: По клавиатурным флагам и определяю. Ё. Т.е. ты и в MBR-загрузчике тестишь клавиатурные флаги, и в EBR-? Мне кажется, что это как-то неправильно. У меня за dual booting отвечает исключительно MBR-загрузчик. EBR-код только проверяет, требует ли от него MBR-загрузчик загрузки с определенного доп. раздела (обычно это происходит в случае альтернативной загрузки) или он (EBR-код) должен сам определиться, с какого доп. раздела выполнять загрузку (обычная загрузка). Раньше EBR-код даже такой проверки не делал, т.к. при альтернативной загрузке MBR-загрузчик записывал номер альтернативного загрузочного раздела прямо в соответствующую ячейку EBR.Цитата: Хммм. Пока что не вижу красивого способа обойти. Секундные задержки как-то не вдохновляют. Очень хочется, чтобы вся система грузилась не больше, чем за две секунды. Ну максимум - 5 секунд. Такова цель. Если пользователь обладает феноменальной реакцией, он может ускорить этот процесс для альтернативной загрузки Как я написал, во время ожидания периодически выполняется тестирование и как только факт нажатия зафиксирован, происходит выход из ожидания. Именно из-за наличия обязательной задержки при обычной загрузке я и не отказался от использования "упрощенных" редакций загрузчиков. Более того, эти редакции считаются основными, а с задержкой - вспомогательными. Правда, в плане объема кода приходится ориентироваться именно на редакции с задержкой, т.к. у них объем больше. Т.е. в основных редакциях всегда остается небольшой незадействованный участок, куда можно вписать копирайт и т.п.
|
Автор: | Yoda [ 25 янв 2013, 10:46 ] |
Заголовок сообщения: | Re: OS Boot Tools |
phantom-84 писал(а): Я здесь вообще не вижу никакой проблемы. Геометрическая нумерация не нами придумана. Да я пока тоже не вижу проблемы. Если проблемы возникнут, то не у меня, а у GRUB и у мультибут-совместимых ядрах на альтернативных схемах разбивки на разделы. phantom-84 писал(а): При этом нумерация доп. разделов с фиксированного номера 4/5 (в зависимости от выбранной базы) является вполне обоснованной. Обоснованной, как я уже писал, была бы сквозная нумерация. А так - "Хотели как лучше, а получилось как всегда" (с). phantom-84 писал(а): Хочешь универсальности EBR-кода, заведи в нем отдельную ячейку для хранения такого параметра и вычисляй окончательный номер путем сложения "базы" и "смещения". Кстати при таком подходе твоя нумерация доп. разделов, начиная с 1, будет смотреться более логично. Тогда уже понятно, что это относительный номер, т.к. он является элементом пары. Хорошая идея! Пасиб, так и сделаю. phantom-84 писал(а): Ё. Т.е. ты и в MBR-загрузчике тестишь клавиатурные флаги, и в EBR-? Мне кажется, что это как-то неправильно. У меня за dual booting отвечает исключительно MBR-загрузчик. Криминала в этом не вижу, флаги - вполне себе глобальная переменная. Если я возложу всё на MBR, надо будет расширять интерфейс MBR/EBR. Да, я понимаю, что это волатильная глобальная переменная, но более красивого решения пока на ум не приходит. |
Автор: | jarilo [ 25 янв 2013, 16:11 ] |
Заголовок сообщения: | Re: OS Boot Tools |
А мне нравится что нумерация раздела с 1 начинается, всем обычным людям пользователям далеким от тех. подробностей это тоже покажется логичным. А вот если бы с 5 начиналось я думаю обычный пользователь долго бы искал отсутствующие 3 раздела По FreeDOS у них проблем нет но только под чистым DOS, а вот из под win32 сделать загрузку нечем кроме всяких FlashBoot и т.п. который по последним данным перехватывая прерывание не дает нормально работать хардовым утилитам которые сами на прямую обращаются к хардам. А в boot еще поддержка hybrid FAT32+ "free copy installation". Как бы плюсов вроде более чем достаточно. |
Автор: | phantom-84 [ 25 янв 2013, 18:28 ] |
Заголовок сообщения: | Re: OS Boot Tools |
jarilo писал(а): А мне нравится что нумерация раздела с 1 начинается, всем обычным людям пользователям далеким от тех. подробностей это тоже покажется логичным. А вот если бы с 5 начиналось я думаю обычный пользователь долго бы искал отсутствующие 3 раздела Речь шла о нумерации логически дисков внутри расширенного раздела (дополнительных разделов в моей терминологии), причем "внутри" загрузчика. Эта нумерация хорошо знакома поклонникам линуха и др. GNU-сных продуктов типа GRUB'а. "Обычным пользователям" вникать в подобные обсуждения без надобности. Даже программисты-разработчики первичных загрузчиков под конкретные ФС или "ядер" уже будут получать привычные номера 1-4 для первичных разделов и 5-255 для дополнительных. Я беспокоился о том, что "обычным пользователям", если они все-таки на это натолкнутся, может показаться крайне нелогичным, а точнее сбивающим с толку, когда у них и первичный раздел будет обозначаться номером 1 и доп. раздел будет обозначаться номером 1, когда этот номер сохраняется на диске.
|
Страница 28 из 36 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |