Большая, но малоизвестная ОС

Дата: 28/06/05;  Оригинальный источник: www.sysbin.com


В один тихий день, на форуме появилось громкое заявление... Да-да, это была еще одна ос, но ее отличие было в том, что она уже написана. И на нападки зачем еще одна ОС, последовал достаточно убедительный ответ: "В моей оси очень простая установка, грузиться можно с FDD, HDD и CD, работать в оси можно во время её-же установки/восстановления. Она в отличие от остальных осей, никогда не даст админа или юзера по сети, по сети можно создать только гостя (почти половина видов атак отпадают). Благодаря тому что файловая система построена как база данных у неё высокая скорость работы, и можно настроить каждый файл на индивидуальную работу с каждым пользователем." Сеть? Это уже что-то, потом пошли упоминания про звук. Медленно вырисововалась альтернативная операционная система - ее рабочий объём состовляет 90 мб, разрабатывается она на паскале и ассемблере, с небольшим использованиям С. Держитесь за стул, но размер исходников свыше 200 мб! Ниже вы можете прочитать рассказ самого автора, и как всегда - впервые, только на www.sysbin.com ;)

Итак, всё началось когда в 8 классе мы с пацанами поспорили кто первый сделает загрузочную дискету, которая бы загружалась и выводила текст. Условились, что писать будем ровно один урок – 40 минут (это для тех кто вместо школы из-за компа не вылезал). Недолго думая все очухались, и вспомнили что проги такого рода пишут на ассемблере, а про ассемблер мы знали только что он пишется с 2-мя буквами «с», хотя среди нас был Лёша он в программировании был настоящий гуру (к сожалению уже умер), и ассемблер знал с 5-го класса, ну я ещё знал несколько команд. Тогда мы решили за эти же 40 минут, но на паскале (даже оговорили Borland Turbo Pascal 7.0) написать интерпретатор команд с возможностями создание, копирование, удаление файла/папки, просмотр директории, переход в директорию, не успел никто (хотя заподозрили что Лёша все-таки сделал, он за эти 40 минут нормальную игру написал-бы), все дружненько посмеялись друг над другом посмотрев на коды и результаты и больше к этому не возвращались (они, но не я :) ). В конце (а не начале, как я написал раньше) 9 класса один мой друг написал движок и игру на нем, и я задумался что могу сделать я, и вспомнил интерпретатор команд.

Уже под конец лета моя ось состояла из регистрации пользователя, доработанного интерпретатора команд (правда осталось только название, а делал он уже совсем другое, делал вид что обращается к оборудованию, дело в том что в интерпретатор команд я добавлял процедуры для работы с оборудованием, а потом их разделил), и 3 вариантов отображения: командной строки, текстового псевдографического режима, и графического режима. Была одна существенная проблема, сама она не загружалась, я запускал её из ДОСа как обычную программу. Выучив ассемблер (даже ещё не полностью) первое что я написал, это не “Hello world!”, а загрузчик. Можно сказать я все лето убил на ось. Под конец 10 класса (темпы замедлились), я уже написал что-то безымянное похожее на ось, но она использовала FAT. Весь 11 класс придумывал свою файловую систему.
Полгода назад я её разделил на две ветки, и дал имена: бесплатный SinX, и платный Dios.

До того как я начал использовать собственную ФС я использовал FAT - как одну из самых простых.В этом случае на hdd создавался основной раздел назначаемый как активный, на нём-то и находилась ОСь,остальные разделы использовались пользователем. На fdd всё лежало в корневом каталоге. Сам понимаешь защиты файлов никакой, я имею ввиду системную область - раздел оси. Итак, структура раздела ОС:

{
DRV
   (различные драйвера пока немного-15 штук, но планирую разделить по типам VIDEO, AUDIO, CHIPSET и т.д.)
PROG
   (программы типа калькулятора, fdisk, format и прочей мелочи)
}
ФАЙЛЫ:
1) загрузчик передавал управление cmd.exe
2) cmd.exe смотрел есть ли такой файл pasw.inf, если нет - пункт 5, есть - загружал pasw.exe который
3) просил ввести имя и пароль, затем сверял есть ли такой в pasw.inf если есть пункт 5, нет возврат на пункт 3
4) затем pasw.exe обратно отдавал управление на cmd.exe
5) cmd.exe проверял есть ли такой файл driver.inf если нет грузит драйвера по умолчанию (достаточно для командной строки и эмуляции графики в текстовом режиме) если есть - загружает драйвера по списку
6) после загрузки дров идет проверка на существование файлов file.inf - ассоциация по расширению файла (например *.bmp - просмотрщик рисунков, *.txt - текстовый редактор и т.д.), и run.inf - загружаемые в фоне программы (например антивирус, в этом-же файле загружается и виртуальный рабочий стол).

Можно упомянуть и про настройку параметров например driver.inf:

// фрагмент файла driver.inf
/////////////////////////////////////////////////
//
// chip:1(via4in1.drv)   //чипсет
// cpu:1(p4.drv)   //тип процессора
// video:0 \vesa2.800x600x32 //видеокарта
// sound:3    //звуковуха
// keyb:0 \s.w.p   //клава
// mouse:1(a4.drv \3.1)   //мышь
// monitor:0 \LG (F700B)  //монитор
// fdd35:0    //дисковод 3,5"
// cd1:0    //cd-rom
// #cdrw1:1(asus.drv \52.48)  //cd-rw
// hdd1:2    //винт
//
/////////////////////////////////////////////////
//
# - закамментить строку
0 - драйвер по умолчанию
1 - специальный драйвер (в скобках указывается название драйвера)
2 - автоопределение (море глюков но оставил из расчета на будущее)
3 - отключено

После символа "\"следует помощь cmd.exe в определении устройства при 2 при 1 (вместе с указанием файла в скобках) дополнительные параметры драйвера при 0 выбор драйвера совместимого с указанными параметрами (т.к. использует ту-же систему автоопределения лучше указывать без параметров) в случае с монитором текст в скобках это то что сакзал о себе монитор при установке, и не очень нужно. Несложно заметить чтопараметры устройств указываются через точки: в случае с клавой: s - клавиша sleep, w - клавиша wake up, p - выключение в случае с cd-rw: драйвер asus запускается с параметрами 52 - чтение, 48 - запись в случае с мышью: драйверу передаются параметры 2 кнопки, колесико-по совместительству 3 кнопка.