Page 2 of 2

Re: Загрузчик, динамически собирающий kolibri.img

Posted: Fri Nov 22, 2013 9:41 pm
by CleverMouse
Fanatic wrote:1. io.sys - это не ядро. Ядро - это msdos.sys. По крайней мере - в ms dos.
msdos.sys - это, грубо говоря, реализация int 21h. io.sys - это, грубо говоря, слой абстрагирования от оборудования: оборачивает в единый интерфейс блочных и символьных устройств вещи типа COMx/LPTx - реализованные в самом io.sys - и внешние драйвера. И то, и другое - части ядра.
Fanatic wrote:Если загрузчик вынесен в отдельный от ядра файл, то с точки зрения формальной логики он не может являться частью ядра.
Если формально разрезать пополам файл kernel.mnt, получатся две части ядра. Если какой-то код инициализирует драйверы, он автоматически становится столь же важным, как половинка kernel.mnt.
Fanatic wrote:Под "рабочей средой" вы подразумеваете защищённый режим памяти?
Не только. Защищённый режим процессора, страничная организация памяти и функции для работы с ней, менеджер памяти, APIC, таймер, тикающий на заданной частоте, многозадачность и примитивы синхронизации для работы с ней. Применительно к Колибри - реализация всех функций, перечисленных в kernel/trunk/core/exports.inc - API ядра для драйверов.

Re: Загрузчик, динамически собирающий kolibri.img

Posted: Fri Nov 22, 2013 9:45 pm
by Две монеты
CleverMouse wrote:Если формально разрезать пополам файл kernel.mnt, получатся две части ядра. Если какой-то код инициализирует драйверы, он автоматически становится столь же важным, как половинка kernel.mnt.
Если в программе есть что-то неважное от чего можно отказаться, это следует немедленно удалить.

Загрузчик остаётся загрузчиком, даже если находится в одном общем файле с ядром. И он должен быть выгружен (= занимаемая им память должна быть освобождена) после завершения инициализации.

Re: Загрузчик, динамически собирающий kolibri.img

Posted: Sat Nov 23, 2013 12:58 am
by art_zh
Две монеты wrote:
CleverMouse wrote:Если формально разрезать пополам файл kernel.mnt, получатся две части ядра. Если какой-то код инициализирует драйверы, он автоматически становится столь же важным, как половинка kernel.mnt.
Если в программе есть что-то неважное от чего можно отказаться, это следует немедленно удалить.

Загрузчик остаётся загрузчиком, даже если находится в одном общем файле с ядром. И он должен быть выгружен (= занимаемая им память должна быть освобождена) после завершения инициализации.
прежде чем давать людям советы космической мудрости,
загляни в код ядра.
отметь все подлежащие удалению блоки загрузки/инициализации,
напиши код, удаляющий их и безопасно перемещающий остальные куски ядра на освободившееся место,
подсчитай профит -
и прослезись.

Re: Загрузчик, динамически собирающий kolibri.img

Posted: Sat Nov 23, 2013 3:37 am
by Две монеты
Во-первых, не по теме.

Во-вторых, я считаю неверным что ядром размером меньше 50 кб занимает 1,5 Мб.

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

Мне каждому объяснять прописные истины, или всё-таки дойдёт прочитать Таненбаума, Windows/Linux Internals или хотя бы SDK по прикладному программирования для Win32/Linux прежде, чем пытаться строить архитектуру ядра слабо представляя что такое ядро, кому и зачем оно нужно. Тогда и не будет ситуации, когда функция Windows просит буфер размером 64 байта, а Колибри - 1 кб, тогда не придётся объяснять что такое асинхронность и зачем она нужна, что такое IRP, как работает отложенная обработка аппаратных прерываний, что такое стек драйверов, что такое initrd и какие у него преимущества и недостатки, и т.д.

Совет, который ты просил: если (за 9 лет) ни хрена не выходит - прочти наконец учебник. Прочти его на этот раз до конца.

Re: Загрузчик, динамически собирающий kolibri.img

Posted: Sat Nov 23, 2013 3:40 pm
by art_zh
Две копейки
Шел бы ты на... osdev.ru Таннебаумом детей пугать.
Критерием качества в Колибри всегда (ну по крайней мере до прошлого лета) была эффективность кода:
diamond wrote:Напоминаю, что Колибри позиционируется как маленькая и быстрая ось.

btw, я насчет другого интересного решения хотел поговорить:
в QNX есть утилитка FastBoot, копирующая весь образ памяти и состояние регистров всех контроллеров в единый ROM-файл (разумеется, работает она только на избранных чипсектах).
После перепрошивки (вместо чипа BIOS втыкают ROM-образ QNX) PC за 2-3секунды грузит готовую рабочую среду.

Re: Загрузчик, динамически собирающий kolibri.img

Posted: Sat Nov 23, 2013 4:58 pm
by Две монеты
Возможность прошивки в ППЗУ - одно из преимуществ initrd. Перепрошить можно любой BIOS с ППЗУ.

Изначальная цель проекта coreboot состояла в создании возможности записать Линукс в BIOS. Для этого потребовалось переписать BIOS чтобы выполнить все выполняемые им процедуры. Цель достигнута. Новая цель проекта - создание универсального BIOS, обеспечивающего возможность загрузки любой ОС.

Re: Загрузчик, динамически собирающий kolibri.img

Posted: Mon Nov 25, 2013 3:10 pm
by CleverMouse
Две монеты
Вы узнали про архитектуру NT. Это похвально. Но теперь вы считаете, что всё, что не следует этой архитектуре, - быдлокод. Это уже печально.
Две монеты wrote:Во-вторых, я считаю неверным что ядром размером меньше 50 кб занимает 1,5 Мб.
К.О. просил передать, что ядро размером меньше 50 кб занимает меньше 50 кб. Я добавлю, что текущий размер ядра Колибри - около 90 Кб. Если вы про размер kolibri.img - я для тестов загружала систему с образом 720К, можно и меньше без всяких проблем. Но людям почему-то недостаточно ядра и драйверов, им ещё программы подавай.
Две монеты wrote:Совет, который ты просил: если (за 9 лет) ни хрена не выходит - прочти наконец учебник. Прочти его на этот раз до конца.
Это вы про себя? У нас вполне неплохо выходит.

Re: Загрузчик, динамически собирающий kolibri.img

Posted: Tue Nov 26, 2013 10:10 pm
by GerdtR
Хм... загрузчик уже не обсуждаем(я уж не говорю про "пишем")... :)

To CleverMouse

Posted: Thu Nov 28, 2013 6:58 pm
by Fanatic
А ты сможешь скомпилировать exe-шники, которыми я пользовался для установки системы на нетбук, для MS DOS?

setmbr.exe и inst.exe, которым можно было бы в параметрах скармливать диск, задавать, к примеру, параметр "-d" для какого-нить дебаггинга и -expert чтобы не выдавал warning-ов - и они справлялись бы со своей задачей из коммандной строки.

UPD: Ещё лучше было бы объединить их в один "inst.exe", которому можно было бы задать параметр "-setmbr" - и он прописывал бы mbr-ку.
Разместить некий Warning при запуске без параметра "-expert", заглавным и жирным шрифтом, о том что, дескать: "Если у вас несколько ОС - гуляйте лесом и пользуйтесь GRUB, этот установщик, мол, не для тех, кто хочет "поматросить и бросить", а для тех кто "всерьёз и надолго" и т.п.
А потом перед самой операцией прописывания mbr какой-нибудь "Are you sure?" и дефолтом "N"...

Re: Загрузчик, динамически собирающий kolibri.img

Posted: Thu Nov 28, 2013 7:19 pm
by CleverMouse
Fanatic wrote:А ты сможешь скомпилировать exe-шники, которыми я пользовался для установки системы на нетбук, для MS DOS?
Нет, они используют WinAPI.
Fanatic wrote:Ещё лучше было бы объединить их в один "inst.exe", которому можно было бы задать параметр "-setmbr" - и он прописывал бы mbr-ку.
Есть проблема: не на всех флешках есть MBR, на некоторых прямо с нулевого сектора начинается единственный раздел. Особенно часто так бывает на SD-картах. Попытка записи MBR в таком случае убьёт файловую систему.

Re: Загрузчик, динамически собирающий kolibri.img

Posted: Thu Nov 28, 2013 8:30 pm
by Fanatic
CleverMouse wrote:Нет, они используют WinAPI.
А написать на для MS DOS можешь?
CleverMouse wrote:Есть проблема: не на всех флешках есть MBR, на некоторых прямо с нулевого сектора начинается единственный раздел. Особенно часто так бывает на SD-картах. Попытка записи MBR в таком случае убьёт файловую систему.
Ох ты ж господи, в коем-то веке вопросы совместимости беспокоят приверженцев Linux-подхода :))))))))
Иронизирую.

В таком случае нужен ещё один большой warning заглавными жирными буквами, а для пущей уверенности - "are you sure?" c default-ным "N".

Re: Загрузчик, динамически собирающий kolibri.img

Posted: Thu Nov 28, 2013 8:51 pm
by CleverMouse
Fanatic wrote:А написать на для MS DOS можешь?
Мне это неинтересно. Версию для Windows писала не я.
Fanatic wrote:В таком случае нужен ещё один большой warning заглавными жирными буквами, а для пущей уверенности - "are you sure?" c default-ным "N".
Откуда пользователь узнает, нужно ему писать MBR или нет? Текущая инструкция с раздельными шагами "запускайте setmbr.exe, только если после inst.exe не загрузилось" тоже не идеал - во-первых, мало ли почему не загрузилось, во-вторых, если setmbr всё же нужен, получается лишний шаг с неработающей перезагрузкой - но хотя бы как-то решает вопрос.

Уточнения

Posted: Thu Nov 28, 2013 9:10 pm
by Fanatic
Две монеты wrote:Поэтому и переход в Колибри от одной схемы к другой ничего не даст.
Даст. С самого начала делать как проще, даже не допуская мысли о том, что однажды это может сильно понадобиться? Мол - да так повелось уже, никто менять не будет...
Получается как в той истории: "Вышел старший брат во двор, наступил на грабли, получил по лбу - упал и лежит. Пошёл средний брат во двор, подошёл к граблям, наступил - получил по лбу, упал и лежит. Увидел младший брат это дело, пригорюнился - да делать нечего..."

Две монеты wrote:Производительность по большей части определяется алгоритмами, а не их реализацией. Сравни: нужно вскопать 10 га, у меня трактор, у тебя - палка-копалка. Палка-копалка "проста как доска"... :) Тесты показывают, что выигрыш в производительности от перехода на ассемблер редко превышает 5-10%; разница в размере скомпилированного файла более ощутима, но по сравнению с ёмкостью жёстких дисков не критична.
Экий Вы хитрец: взяли - и подменили предмет обсуждения на свой, смешав всё в кучу :))
Давайте-ка по полочкам.
Я утверждаю вполне очевидный факт, что ассемблер - язык программирования низкого уровня, на нём программируют pic-контроллеры, микросхемы разнообразного оборудования и прочую полупроводниковую технику. Написание кода, описывающего заданную логику, усложнено крайне низким уровнем абстракции, но выполнение упрощено ввиду максимального исключения опосредованности при обращении к оборудованию.
Язык высокого уровня, такой как PHP, к примеру - намного упрощает написание кода, описывающего заданную логику, но выполнение такого кода усложнено многократной опосредованностью.

Поэтому у нас речь идёт не о комбайне и копателе, а скорее об организации труда: в случае с языком высокого уровня обработка поля происходит не комбайном, а всё теми же ребятами с лопатами, но организованными иерархически, с множеством подрядчиков, их управляющими, начальством над управляющими, районной администрацией, которая отводит поля для обработки, производством, выпускающим лопаты, а так же профсоюзом, выделяющим новых юнитов. В итоге весь процесс тормозится от того, что одни ждут лопат, другие - испытывают проблемы со своевременным снабжением новыми юнитами, третьи - завязли в бюрократической волоките, дожидаясь выдачи какого-нибудь сертификата.
В случае же с языком программирования низкого уровня - нам приходится непосредственно управлять каждым копателем, но при этом мы значительно выигрываем по срокам, избегаем расходов на содержание бюрократии и получаем полный и непосредственный контроль над процессом обработки участка земли.
Преимущества и недостатки очевидны: управлять каждым копателем очень тяжело, это предъявляет непомерно высокие требования к управляющему, который должен знать максимум деталей и тонкостей работы копателей, но задача будет выполняться с многократным сокращением сроков. Вместе с тем: выдавать задачи высокого уровня абстракции намного легче, но дождаться их выполнения нередко становится тяжкой мукой.

Две монеты wrote:Установщик будет полезен, когда система станет востребованной среди сколько-нибудь большого числа людей. На текущий момент большинство использует её как LiveCD на эмуляторах.
У вас телега впереди лошади едет. Вам не приходило в голову, что система потому и непопулярна, что её хрен установишь? :)))))))))))))) Я неделю бился в конвульсиях, пытаясь установить Колибри на нетбук - и то, только потому что я "Фанатик"... А сколько ещё есть таких упоротых? Единицы. Вот и получаем "узкий круг ограниченных людей" :))

Re: Загрузчик, динамически собирающий kolibri.img

Posted: Thu Nov 28, 2013 9:21 pm
by CleverMouse
Fanatic wrote:система потому и непопулярна, что её хрен установишь?
Её сложно установить единственной системой на отдельный жёсткий диск, это так, ибо разработчики этим не занимаются. Другие варианты установки просты вплоть до "запустите mtldr_install.exe, он сам всё сделает" в случае установки второй системой после загрузчика Windows.