Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Сб май 27, 2017 3:36 am

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 39 сообщений ]  На страницу Пред. 1 2 3 След.
Автор Сообщение
СообщениеДобавлено: Пт июл 04, 2008 12:54 pm 
Не в сети

Зарегистрирован: Чт сен 20, 2007 8:09 pm
Сообщения: 96
Предлагаю обсудить задачи, которые должны выполняться вторичным загрузчиком и алгоритмы работы.


Вернуться к началу
СообщениеДобавлено: Пт июл 04, 2008 1:22 pm 
Не в сети

Зарегистрирован: Чт сен 20, 2007 8:09 pm
Сообщения: 96
собственно возник вопрос... а как узнать, какое именно устройство загрузочное? Просто сразу же в начальном загрузчике сохранить регистр dl или я не правильно понимаю?


Вернуться к началу
СообщениеДобавлено: Пт июл 04, 2008 1:29 pm 
Не в сети
Kernel Optimizer
Аватара пользователя

Зарегистрирован: Пн янв 16, 2006 7:58 pm
Сообщения: 657
В текущем состоянии дел, когда все в ядре, наличее вторичного загрзчика будет нужным. Рассмотим модель загрузки ОС:
Первичный загручкик стартует, загружает ядро, ядро уже сохраняет некоторые параметры, загружает образ, делает RAM диск и т.д. Т.е. если отделить вторичный загручик, то он будет делать загрузку ядра, формирование RAM диска, сохранение определенных настроек (скажем из blue screen) загрузка ядра, и т.д. ... Для этого нужно сделать поддержку обработки ini файла на уровне вторичного загрузчика, сохранение и загрузку. Частично можно подсмотреть обработку ini файлов в библиотеке от майка, и в принципе сделать все остальное. Но для каждой файловой системы нужне будет свой первичный загрузчик, и поддержка им callback функций.


Вернуться к началу
СообщениеДобавлено: Пт июл 04, 2008 1:42 pm 
Не в сети

Зарегистрирован: Чт сен 20, 2007 8:09 pm
Сообщения: 96
Ну, про первичный загрузчик это да. Сейчас думаю, как передать номер загрузоного устройства вторичному загрузчику (смотрю код первичного, обнуляется ли там dl перед передачей управления). Т.е. вообще, после загрузки вторичного загрузчика после того, как он получает управление, с моей точки зрения он должен сделать: смотрим таблицу параметров тома, и определяем к использованию процедуры чтения/записи для данной ФС... После чего проверяем наличие конфигурационного файла, скажем boot.ini. Хотя, чтоб не по аналогии виндой и никсами, пусть будет kolibri.cfg... Если его нет - создаем, далее определяем оборудование, спрашиваем пользователя про видеорежимы и т.п., пишем информацию в файл... Если пользователю нужен RAM-диск, формируем его, загружаем ядро и передаем ему управление. Т.е. от первиного загрузчика нам нужен только номер загрузочноного устройства, и больше ничего собственно. все остальное мы в состоянии выяснить сами...


Вернуться к началу
СообщениеДобавлено: Пт июл 04, 2008 2:30 pm 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3925
Hack_phoenix

Сделай загрузку GRUBом. Это сложно, но можно. Функциональность системы вырастет на порядок.


Вернуться к началу
СообщениеДобавлено: Пт июл 04, 2008 3:05 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Пн мар 20, 2006 10:44 am
Сообщения: 557
Ну кроме WinImage есть ещё гнутая программулина (приеду домой вспоню как называетя), в линуксе запросто можеш монтировать образ как обычную дискету, с досом - хз, ибо не приходилось этим в нем заниматся. Сборку без RAM`а вроде кто то уже делал. Хоче делать - делай, всё польза ).
Про вторичный загрузчик. Что ты под ним понимаеш и подробнее что хочеш сам в нем сделать? В принципе то о чем ты писал выше, происходит в /boot/bootcode.inc посути это и есть вторичный загрузчик, просто если можно так сказать "собраный" вместе с ядром. В их разделении я вижу потенциальную проблему в будущем, с совместимостью вторичного загрузчика и ядра, так как обе эти части сильно связаны (предварительная инициализация железа, и его последующее использование).
В общем я не вижу сейчас острой необходимости в их разделении. Насколько я понимаю ты хорошо разбираешся в низкоуровневом программировании x86 (как звучит то криво, ну вы меня поняли), может найдеш задачу поинтереснее?
[offtop]млин, пока писал, опять кучу постов пропустил ((([/offtop]

Про GRUB польностью согласен, было бы хорошо.


Вернуться к началу
СообщениеДобавлено: Пт июл 04, 2008 3:23 pm 
Не в сети

Зарегистрирован: Чт сен 20, 2007 8:09 pm
Сообщения: 96
Эх... Было бы время. Просто я хочу как раз разделить инициализацию оборудования от ядра. Сейчас смотрю на GRUB. Ядро у нас монолит... Я не вижу потенциальных проблем, я вижу дальнейшее разбиение на модули, плюс уменьшение ядра. Именно отделить bootcode плюс оставить именно на него задачу инициализации и предзагрузочной конфигурации системы... Дать возможность зщапускать различные ядра и т.д. Сейчас смотрю в сторону GRUB. Разберусь с этой задачей, потом все же хочу сделать шаг в сторону микроядра.


Вернуться к началу
СообщениеДобавлено: Пт июл 04, 2008 3:25 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн апр 16, 2007 6:38 pm
Сообщения: 1222
поддерживаю мнение насчет GRUB

_________________
И мы уже давно не пешки,
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!


Вернуться к началу
СообщениеДобавлено: Пт июл 04, 2008 3:32 pm 
Не в сети

Зарегистрирован: Чт сен 20, 2007 8:09 pm
Сообщения: 96
Короче, ТЗ получил, сроков не называю :)


Вернуться к началу
СообщениеДобавлено: Пт июл 04, 2008 3:50 pm 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3925
Hack_phoenix

Если осилишь GRUB огромный респект тебе будет. Я подумывал сам взяться но асм меня уже задолбал. Зато могу приделать новый менеджер страничной памяти и прислать код для инициализации ядра после GRUBа.


Вернуться к началу
СообщениеДобавлено: Пт июл 04, 2008 3:59 pm 
Не в сети

Зарегистрирован: Чт сен 20, 2007 8:09 pm
Сообщения: 96
Я пока слил WinGrub, изучаю... Я этим загрузчиком не пользовался в общем ни разу, сейчас осваиваюсь с синтаксисом... Читаю доки...


Вернуться к началу
СообщениеДобавлено: Пт июл 04, 2008 4:33 pm 
Не в сети

Зарегистрирован: Чт сен 20, 2007 8:09 pm
Сообщения: 96
Эм... Получается, надо просто привести ядро к формату, который понимает GRUB? Я что-т не понял... Я считал, что загрузил файл, передал управление и усе, а тут...


Вернуться к началу
СообщениеДобавлено: Пт июл 04, 2008 4:55 pm 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3925
Hack_phoenix

Чтобы передать управление Груб ищет заголовок в первых восьми килобайтах файла.

mboot:
dd 0x1BADB002
dd 0x00010003
dd -(0x1BADB002 + 0x00010003)
dd mboot
dd 0x100000
dd _edata ;
dd _end
dd __start
Поля подробно описаны в Multiboot Specification

Ядро грузится по адресу 0х100000. Груб передаст управление на __start уже в защищённом режиме.


Вернуться к началу
СообщениеДобавлено: Пт июл 04, 2008 5:06 pm 
Не в сети

Зарегистрирован: Чт сен 20, 2007 8:09 pm
Сообщения: 96
Угу. сейчас как раз читаю multiboot specification. чешу репу :). Если он передает управление уже в защищенном режиме, тогда придется ядро хорошо править. :).


Вернуться к началу
СообщениеДобавлено: Пт июл 04, 2008 5:11 pm 
Не в сети

Зарегистрирован: Чт сен 20, 2007 8:09 pm
Сообщения: 96
Как я понимаю, нужно будет после получения управления сразу установить свои GDT и IDT, стек и прочее, а потом bluescreen переписывать, уже под защищенный режим, ибо прерывания BIOS там не заюзать... Хотя, есть возможность уйти в реальный режим после получения управления, а затем перейти в него своими средствами... Это проще...


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

Часовой пояс: UTC+03:00


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

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


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

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