Page 2 of 3

Re: Хочу по тихой грусти рабить ядро на несколько модулей..

Posted: Fri Jul 04, 2008 12:54 pm
by Hack_phoenix
Предлагаю обсудить задачи, которые должны выполняться вторичным загрузчиком и алгоритмы работы.

Re: Хочу по тихой грусти рабить ядро на несколько модулей..

Posted: Fri Jul 04, 2008 1:22 pm
by Hack_phoenix
собственно возник вопрос... а как узнать, какое именно устройство загрузочное? Просто сразу же в начальном загрузчике сохранить регистр dl или я не правильно понимаю?

Re: Хочу по тихой грусти рабить ядро на несколько модулей..

Posted: Fri Jul 04, 2008 1:29 pm
by <Lrz>
В текущем состоянии дел, когда все в ядре, наличее вторичного загрзчика будет нужным. Рассмотим модель загрузки ОС:
Первичный загручкик стартует, загружает ядро, ядро уже сохраняет некоторые параметры, загружает образ, делает RAM диск и т.д. Т.е. если отделить вторичный загручик, то он будет делать загрузку ядра, формирование RAM диска, сохранение определенных настроек (скажем из blue screen) загрузка ядра, и т.д. ... Для этого нужно сделать поддержку обработки ini файла на уровне вторичного загрузчика, сохранение и загрузку. Частично можно подсмотреть обработку ini файлов в библиотеке от майка, и в принципе сделать все остальное. Но для каждой файловой системы нужне будет свой первичный загрузчик, и поддержка им callback функций.

Re: Хочу по тихой грусти рабить ядро на несколько модулей..

Posted: Fri Jul 04, 2008 1:42 pm
by Hack_phoenix
Ну, про первичный загрузчик это да. Сейчас думаю, как передать номер загрузоного устройства вторичному загрузчику (смотрю код первичного, обнуляется ли там dl перед передачей управления). Т.е. вообще, после загрузки вторичного загрузчика после того, как он получает управление, с моей точки зрения он должен сделать: смотрим таблицу параметров тома, и определяем к использованию процедуры чтения/записи для данной ФС... После чего проверяем наличие конфигурационного файла, скажем boot.ini. Хотя, чтоб не по аналогии виндой и никсами, пусть будет kolibri.cfg... Если его нет - создаем, далее определяем оборудование, спрашиваем пользователя про видеорежимы и т.п., пишем информацию в файл... Если пользователю нужен RAM-диск, формируем его, загружаем ядро и передаем ему управление. Т.е. от первиного загрузчика нам нужен только номер загрузочноного устройства, и больше ничего собственно. все остальное мы в состоянии выяснить сами...

Re: Хочу по тихой грусти рабить ядро на несколько модулей..

Posted: Fri Jul 04, 2008 2:30 pm
by Serge
Hack_phoenix

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

Re: Хочу по тихой грусти рабить ядро на несколько модулей..

Posted: Fri Jul 04, 2008 3:05 pm
by Ghost
Ну кроме WinImage есть ещё гнутая программулина (приеду домой вспоню как называетя), в линуксе запросто можеш монтировать образ как обычную дискету, с досом - хз, ибо не приходилось этим в нем заниматся. Сборку без RAM`а вроде кто то уже делал. Хоче делать - делай, всё польза ).
Про вторичный загрузчик. Что ты под ним понимаеш и подробнее что хочеш сам в нем сделать? В принципе то о чем ты писал выше, происходит в /boot/bootcode.inc посути это и есть вторичный загрузчик, просто если можно так сказать "собраный" вместе с ядром. В их разделении я вижу потенциальную проблему в будущем, с совместимостью вторичного загрузчика и ядра, так как обе эти части сильно связаны (предварительная инициализация железа, и его последующее использование).
В общем я не вижу сейчас острой необходимости в их разделении. Насколько я понимаю ты хорошо разбираешся в низкоуровневом программировании x86 (как звучит то криво, ну вы меня поняли), может найдеш задачу поинтереснее?
[offtop]млин, пока писал, опять кучу постов пропустил ((([/offtop]

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

Re: Хочу по тихой грусти рабить ядро на несколько модулей..

Posted: Fri Jul 04, 2008 3:23 pm
by Hack_phoenix
Эх... Было бы время. Просто я хочу как раз разделить инициализацию оборудования от ядра. Сейчас смотрю на GRUB. Ядро у нас монолит... Я не вижу потенциальных проблем, я вижу дальнейшее разбиение на модули, плюс уменьшение ядра. Именно отделить bootcode плюс оставить именно на него задачу инициализации и предзагрузочной конфигурации системы... Дать возможность зщапускать различные ядра и т.д. Сейчас смотрю в сторону GRUB. Разберусь с этой задачей, потом все же хочу сделать шаг в сторону микроядра.

Re: Хочу по тихой грусти рабить ядро на несколько модулей..

Posted: Fri Jul 04, 2008 3:25 pm
by Gluk
поддерживаю мнение насчет GRUB

Re: Хочу по тихой грусти рабить ядро на несколько модулей..

Posted: Fri Jul 04, 2008 3:32 pm
by Hack_phoenix
Короче, ТЗ получил, сроков не называю :)

Re: Хочу по тихой грусти рабить ядро на несколько модулей..

Posted: Fri Jul 04, 2008 3:50 pm
by Serge
Hack_phoenix

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

Re: Хочу по тихой грусти рабить ядро на несколько модулей..

Posted: Fri Jul 04, 2008 3:59 pm
by Hack_phoenix
Я пока слил WinGrub, изучаю... Я этим загрузчиком не пользовался в общем ни разу, сейчас осваиваюсь с синтаксисом... Читаю доки...

Re: Хочу по тихой грусти рабить ядро на несколько модулей..

Posted: Fri Jul 04, 2008 4:33 pm
by Hack_phoenix
Эм... Получается, надо просто привести ядро к формату, который понимает GRUB? Я что-т не понял... Я считал, что загрузил файл, передал управление и усе, а тут...

Re: Хочу по тихой грусти рабить ядро на несколько модулей..

Posted: Fri Jul 04, 2008 4:55 pm
by Serge
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 уже в защищённом режиме.

Re: Хочу по тихой грусти рабить ядро на несколько модулей..

Posted: Fri Jul 04, 2008 5:06 pm
by Hack_phoenix
Угу. сейчас как раз читаю multiboot specification. чешу репу :). Если он передает управление уже в защищенном режиме, тогда придется ядро хорошо править. :).

Re: Хочу по тихой грусти рабить ядро на несколько модулей..

Posted: Fri Jul 04, 2008 5:11 pm
by Hack_phoenix
Как я понимаю, нужно будет после получения управления сразу установить свои GDT и IDT, стек и прочее, а потом bluescreen переписывать, уже под защищенный режим, ибо прерывания BIOS там не заюзать... Хотя, есть возможность уйти в реальный режим после получения управления, а затем перейти в него своими средствами... Это проще...