Журнал LinuxFormat - перейти на главную

LXF110:Minix

Материал из Linuxformat
Перейти к: навигация, поиск

Содержание

Unix с мордочкой енота

История Linux неразрывно связана с историей этой ОС, но она всегда остается в тени своего большого собрата. LXF решил исправить ситуацию: Роман Ярыженко представляет Minix 3!

Minix 3. Тот самый, на основе которого… Впрочем, сравнивать тот Minix и Minix 3 – все равно, что сравнивать Mac OS с Mac OS X.

Итак, Minix был создан в 1987 году в качестве учебного пособия к книге Эндрью Таненбаума [Andrew Tanenbaum] «Operating Systems: Design and Implementation» [в переводе: «Операционные системы: реализация и построение»] на основе исходного кода UNIX version 6. Почему именно 6? Да потому, что начиная с седьмой версии UNIX стал коммерческим, и его исходные тексты перестали распространяться в университетской среде! В течение 10 лет до выхода книги Таненбаума в университетах использовался учебник Джона Лайонса [John Lions] «Lion’s Commentary on UNIX 6th Edition, with Source Code», который из-за закрытия исходных текстов UNIX оказался почти что вне закона[1][2].

Первая версия Minix была создана для процессора 8086, а затем портирована на другие архитектуры, но уже во второй версии (1997 год) от поддержки альтернативных аппаратных платформ отказались.

Minix 2 уже являлся POSIX-совместимым. По сравнению с первой версией он также содержал множество изменений, бывших по большей части эволюционными. Так, например, разработчики перешли от 16-разрядного реального режима и дискет к 32-разрядному защищенному режиму и жестким дискам.

Minix 3 был анонсирован 24 октября 2005 года на симпозиуме ACM и существенно отличался от своего предшественника. По сообщению Таненбаума, Minix 3 разрабатывался не только для обучения студентов, но и с прицелом на применение в более серьезных целях (например, во встраиваемых устройствах). Сейчас его можно смело назвать полноценной микроядерной системой, ибо драйверы работают не в режиме ядра, как во многих современных ОС, а в режиме пользователя. На этих страницах мы рассмотрим стабильный релиз Minix 3.1.2a и кратко опишем новинки, введенные в нестабильную версию.

Ключ на старт!

Как уже говорилось выше, Minix 3 построен в соответствии с архитектурой микроядра, иными словами, он работает по принципу «клиент–сервер» [3]. Это позволило разработчикам уместить ядро ОС, т.е. тот код, который работает в привилегированном режиме процессора, в 4000 (!) строк. Все остальное (файловая система, сетевой стек, даже почти все драйверы) выполняется в режиме пользователя.

Minix – это не Debian, и включенных в состав дистрибутива программ насчитывается не так уж много, но для комфортной работы в консоли инструментов вполне достаточно. Правда, большинство из них надо добавить после первоначальной инсталляции командой packman – обо всем этом мы сейчас и поговорим.

В духе современных веяний, Minix 3 распространяется в виде Live CD, после загрузки с которого перед вашим взором предстает консоль с приглашением входа в систему. Над ним расположено справочное сообщение, которое (в переводе) гласит:

"Добро пожаловать в Minix 3.1.2.
Система запущена, команды работают нормально.
Чтобы использовать Minix всерьез, необходимо поставить его на жесткий диск.
Это можно сделать, введя команду ‘setup’, когда вы зайдете в систему как root.
Затем следуйте инструкциям на экране.".

Собственно инсталляция выполняется в семь шагов. Данный процесс хорошо документирован (см., например, [4]), поэтому мы ограничимся общим описанием.

Первый шаг – выбор раскладки клавиатуры; думаю, здесь не должно возникнуть каких-либо проблем. Затем надо указать тип установленного в вашем компьютере Ethernet-контроллера или, по-простому, сетевой карты. На момент написания данной статьи стабильная версия Minix 3 поддерживала ограниченный набор чипов, среди которых, однако, были все более-менее распространенные. Далее необходимо выбрать вариант установки. Пользователи Linux со стажем, возможно, ожидали бы увидеть здесь стандартные «Сервер», «Офисный компьютер», «Станция разработчика» и т.п., но в Minix все обстоит несколько проще: можно выполнить минимальную и полную установку. Первая включает скомпилированную систему и базовые исходные тексты, а полная – еще и исходные коды команд.

(thumbnail)
Утилита part: создаем раздел для установки Minix.

Четвертый шаг – выбор способа разбиения диска: вручную или автоматически. Предупреждаю сразу: вам необходимо иметь хотя бы один свободный первичный раздел в пределах первых 128 ГБ винчестера. Автоматическое разбиение происходит с минимальным вмешательством пользователя, поэтому сосредоточимся на ручном.

После входа в режим эксперта появится предупреждение, а затем экран утилиты part. Первым делом необходимо выбрать диск, который вы планируете разбить на разделы. Minix использует собственную схему именования: d0 – primary master, d1 – primary slave и т.д. Далее следует указать тип раздела (для Minix – 81) и размер. При выходе программа запросит имя раздела и сохранит таблицу на жесткий диск. Пользуясь случаем, хочу напомнить: эта операция необратима! Убедитесь, что вы выбрали правильный раздел и создали резервные копии важных данных.

После этого инсталлятор предложит согласиться с выбором раздела для установки. Смело отвечайте ‘yes’, так как отступать все равно уже некуда! Программа должна будет поинтересоваться, желаете ли вы выполнить чистую установку с нуля или переустановить систему с сохранением раздела /home. Вряд ли на вашей машине есть домашний раздел Minix (иначе зачем бы вы стали читать эту статью?), так что данный этап будет пропущен.

Шестой шаг – выбор размера для раздела /home. Если у вас нет специальных пожеланий, можете принять значение, предложенное программой (мне порекомендовали 1549 МБ). Теперь остается только выбрать размер блока файловой системы (вариант по умолчанию также подойдет).

И наконец – свершилось! Пока Minix 3 сканирует диск на наличие сбойных блоков, вы, согласно забытой традиции Microsoft, можете откинуться на спинку кресла.

После копирования файлов потребуется перезагрузка. Наберите команду shutdown, и... спустя пару секунд появится строка вида fd0>. Это – приглашение монитора загрузки. Дело в том, что Minix 3 ушел от старой модели холодной/горячей перезагрузки. Вместо того, что-бы передавать управление BIOS, а затем долго и нудно «поднимать» систему, разработчики решили размещать вышеупомянутый монитор в конце доступной физической памяти при первом старте и передавать ему управление при штатном останове ОС. Конечно, питание можно окончательно выключить командой off, но ведь мы не для этого устанавливали Minix 3, не так ли? Тогда – едем дальше!

Первый взгляд

Инструментарий

Краткий список дополнительного ПО, включенного в состав дистрибутива:

  • bash-3.0
  • zsh-4.2.6
  • gnu-coreutils-5.2.1
  • gcc-3.4.3
  • perl-5.8.7 (без модулей)
  • emacs-21.4
  • lynx2-8-5
  • X11R6.8.2
(thumbnail)
В Minix есть Emacs: Столлмен и Торвальдс будут довольны.

Итак, набираем boot dXpY в приглашении загрузочного монитора. X и Y здесь – номера диска и раздела, на который мы установили ОС (соответственно). Вы увидите экран выбора конфигурации ядра. Поскольку вы его еще ни разу не перекомпилировали, и у вас (надеюсь!) больше 16 МБ памяти, то можно просто подождать 3 секунды для загрузки конфигурации по умолчанию.

Перед вами проскочат строки, сообщающие о считывании в память загрузочного образа, после чего загрузчик окончательно «умоет руки» и передаст бразды правления ядру. Ядро же спустя полсекунды запустит из загрузочного образа серверы, необходимые для нормального функционирования системы. Серверами в Minix называются системные процессы, предоставляющие услуги пользовательским программам. Через 3–8 секунд перед вами появится приглашение входа в систему.

Для начала предлагаю зайти root’ом и установить дополнительное ПО, которое есть на CD, но по неведомым причинам не разворачивается на этапе установки, а заодно создать учетную запись обычного пользователя. При этом motd любезно уведомит нас, что для установки ПО нужно ввести команду packman. Ого! 46 пакетов! И это только те, что есть на диске! Чтобы просмотреть список ПО, введите 3, после этого вы можете либо составить свой набор пакетов, либо поставить все 46 (см. врезку). Автор этих строк поставил бы все... а впрочем, решайте сами.

Попытавшись создать нового пользователя, вы явно почувствуете отличие Minix от других UNIX-подобных систем. Ручаюсь, вам пришла на ум команда ‘adduser/useradd username’. Ан нет, в Minix не так! То есть команда, конечно, есть (POSIX-совместимость, куда же без нее), но синтаксис у нее немного другой:

adduser username groupname homedir

при этом группа должна существовать. То есть, чтобы добавить пользователя bob, надо набрать

adduser bob other /home/bob

Не такой, как все

Давайте остановимся на отличительных особенностях Minix 3 поподробнее. Помимо упомянутого уже дважды микроядра, первое, что следует отметить – это сервер реинкарнации (RS). Нет-нет, это вовсе не из буддизма! Сервер реинкарнации наблюдает за драйверами и, в случае «падения», перезапускает их. Это следствие того, что драйверы, как, впрочем, и RS, выполняются в режиме пользователя.

В качестве формата исполняемых файлов используется легкий, но устаревший a.out. Есть и X-сервер, но мне, как я ни старался, не удалось заставить их работать. Стабильная версия Minix не поддерживает файловые системы объемом больше 4 ГБ, впрочем, в нестабильной версии это ограничение снято.

Очень огорчительно и отсутствие виртуальной памяти, тем более, что Minix 3 разрабатывался и для слабых машин с малым объемом ОЗУ. Зато есть команда chmem, позволяющая ограничивать доступную динамическую память. Нельзя назвать достоинством и то, что в системе нет динамических библиотек. Также плохо развита поддержка USB-устройств (точнее, ее нет вообще, за исключением того, что Minix 3 загадочным образом может загружаться с USB-брелков и USB CD-ROM) [4].

Или возьмем файловую систему ISO: ее нормальной поддержки в Minix пока тоже нет. Вместо того, чтобы просто примонтировать компакт-диск и скопировать данные, необходимо, во-первых, просмотреть каталоги диска с помощью команды isodir и уточнить, как правильно называется нужный файл, а во-вторых, перенаправить его в какой-нибудь каталог (к примеру, домашний) командой isoread. Заметим, что поддерживается только ISO level 1 (имена файлов 8.3, глубина вложенности директорий – 8, в пути максимум 255 символов)[5].

Теперь слегка подсластим бочку дегтя ложкой меда: есть поддержка AGP! Но… поддержка других шин, таких как PCMCIA или PCI Express, находится в зачаточном состоянии. Видео-драйверов, поддерживающих аппаратное ускорение, в Minix 3, естественно, нет и в ближайшее время, скорее всего, не будет.

Принтеры… принтеры-таки поддерживаются! Но и тут есть свои нюансы. Во-первых, принтер должен быть с LPT-подключением. Это и понятно: USB-то отсутствует. Во-вторых, по мнению вашего покорного слуги, просмотревшего исходный код драйвера, печать картинок невозможна.

Minix 3.1.3 – что внутри?

Если вас огорчила функциональность текущей стабильной версии Minix, обратите свое внимание на нестабильный Minix 3.1.3, увидевший свет 13 апреля 2007 года. Основные нововведения таковы:

  • В состав дистрибутива теперь входит 108 пакетов (сравните с 46 в версии 3.1.2a). В их числе: рабочий стол EDE, web-сервер Apache, интерпретатор PHP, пакет для работы с изображениями ImageMagick.
  • Файловая система может превышать 4 ГБ.
  • Реализована виртуальная файловая система (VFS).
  • Появился новый аудиодрайвер.
  • Добавлена возможность выбора русской раскладки клавиатуры во время установки.

Более полный список изменений можно найти в[6].

Если к настоящему моменту вы начали потихоньку недоумевать, зачем вообще было писать статью о такой «плохой» системе, позвольте вас разубедить: Minix отнюдь не бесполезен. Конечно, в качестве замены настольной ОС или сервера он сейчас вряд ли сгодится, но ведь никто и не предлагает использовать его в таком качестве! 4000 строк – это совсем немного (один только игрушечный гипервизор lguest для ядра Linux содержит их около 6000 и продвигается как маленький, легкий проект для быстрого изучения энтузиастами), поэтому его образовательная ценность весьма высока. Ну и если вам нужна только голая консоль и не требуется специфичное оборудование (вспомните разговор про встраиваемые системы), у Minix 3 тоже найдется, что предложить – и не в последнюю очередь, благодаря условиям распространения. Лицензия базовой части Minix3 – BSD: с кодом в двоичной или бинарной форме разрешается делать все, что угодно, кроме удаления уведомлений об авторских правах и использования имен исходных разработчиков для продвижения производного продукта. Ну и, конечно же, никаких гарантий.

Взгляд в будущее

Что ждет Minix 3 в дальнейшем? Останется ли эта ОС интересной лишь энтузиастам, или ей суждено достигнуть чего-то большего? Точно на эти вопросы может ответит только время. Я же рискну предположить, что Minix 3 способен частично вытеснить Linux на рынке встроенных систем. Уже сейчас имеется экспериментальная версия реального времени. Minux 3 также позиционируется разработчиками как «ОС для OLPC». Впрочем, он не очень-то подходит для данной роли. А вот для роли конструктора «сделай сам» – на все сто процентов.

В то же время, на данном этапе разработки Minix недостает многих функций (например, SMP), которые есть в более продвинутых ОС. Хочется надеяться, что разработчики постепенно добавят эти и многие другие возможности, ведь Minix 3 – очень молодая ОС и развивается достаточно динамично.

Слово разработчикам

Думаю, многим было бы интересно узнать, если ли в России живые миниксоиды, поэтому спешим сообщить – есть! LXF разыскал одного из них – Романа Игнатова, который, несмотря на постоянную занятость, нашел время ответить на все наши вопросы.

LXF: Расскажите, пожалуйста, о своей роли в сообществе Minix 3. Чем вы занимаетесь?

Роман Игнатов (РИ): Я – официальный разработчик операционной системы Minix 3, а также автор сайта русскоязычного сообщества разработчиков и пользователей этой системы (http://www.minix3.ru).

LXF: Вот как? А можно пару слов о себе? Где готовят разработчиков Minix?

РИ: Я родился и вырос в городе Курске. Окончил Курский государственный медицинский университет и Курский государственный технический университет. Сейчас живу и работаю в Санкт-Петербурге.

LXF: А почему именно Minix 3?

РИ: Minix 3 – это операционная система, основанная на микроядре. Ядро Minix 3 является наименьшим среди всех существующих. В режиме ядра в Minix 3 работает только крошечная часть кода – всего около 4000 строк. Следует отметить, что в ядрах монолитных систем, таких как Linux (2,5 млн. строк исполняемого кода) или Windows (5 млн. строк), содержится не менее 15000 ошибок. Кроме того, при наличии системы из нескольких миллионов строк кода ни один человек не способен прочитать весь исходный код и полностью понять, как он работает. Последнее обстоятельство делает нахождение всех ошибок в традиционных ОС с монолитными ядрами практически невозможным. В основе же микроядра Minix 3 лежит столь же компактное микроядро ОС Minix 2, в котором за последние 10 лет не было найдено ни одной ошибки! Эти особенности позволяют говорить о Minix 3 как об одной из самых надежных и безопасных операционных систем в мире.

LXF: А над чем трудится сообщество Minix 3 сегодня?

РИ: Сейчас мы работаем над реализацией поддержки динамических библиотек и виртуальной памяти, портированием различного программного обеспечения и переносом Minix 3 на другие платформы, такие как PowerPC, ARM и другие. Идет работа в направлении поддержки USB и различных Ethernet-интерфейсов, а также прочего оборудования. Ну и еще мы занимаемся локализацией Minix 3.

LXF: Кстати, а насколько хорошо у Minix 3 с русским в настоящее время?

РИ: На данный момент в операционной системе Minix 3 есть поддержка русского языка в кодировках koi8-r и cp866. Идут работы по реализации поддержки cp1251. В планах – utf8. Помимо этого, идет работа по переводу руководств man на русский язык.

LXF: Чем, по-вашему, Minix 3 может быть привлекателен для простого пользователя?

РИ: Прежде всего, Minix 3, как и предыдущие версии – это наилучшая учебная операционная система. Ее код прекрасно документирован. Из-под крыла этой замечательной ОС вышло уже не одно поколение пользователей и программистов, например, Линус Торвальдс [Linus Torvalds] – создатель Linux. Сейчас под Minix 3 портировано большое количество программ и библиотек, таких как MPlayer, Emacs, Vim, gv и других. Также, по сравнению с предыдущими версиями, появился графический интерфейс и менеджеры окон, такие как JWM и EDE. Теперь начинающему пользователю будет легче и удобнее работать в новой системе. Начав с Minix 3, ему будет проще продолжать знакомство с другими Unix-подобными ОС.

LXF: А какими вы видите перспективы Minix 3 на рабочем столе, на серверах?

РИ: Сегодня, конечно, Minix 3 не способен состязаться за рабочий стол с Windows или Linux. Но если взвесить все преимущества Minix 3, такие как надежность и безопасность, (а это именно те качества, на которые пользователи в последнее время обращают все больше и больше внимания), то Minix 3 имеет все шансы стать конкурентоспособной альтернативой – но для этого нам еще предстоит много работать. Сейчас для Minix 3 еще нет множества полезных программ, таких как OpenOffice.org, Firefox, много чего не реализовано, но мы упорно работаем над этими моментами, и, думаю, придет время, когда Minix 3 сможет бросить вызов другим настольным ОС.

LXF: Вы упомянули Firefox, OOo – но ведь они уже есть под Unix? Насколько легко портировать в Minix 3 приложения, написанные для других POSIX-систем?

РИ: В отличие от предыдущих версий, Minix 3 поддерживает стандарт POSIX, а значит, программы, написанные в соответствии с ним, будет перенести сравнительно легко. В этом можно убедиться, посетив официальный сайт операционной системы Minix 3 (http://www.minix3.org) и сайт русскоязычного сообщества разработчиков и пользователей системы Minix 3 (http://www.minix3.ru). Там вы найдете множество уже портированных программ.

LXF: А что, по-вашему, ждет Minix 3 в будущем?

РИ: В отличие от своих предшественников, которые представлялись только в качестве учебных ОС и имели ограниченную лицензию, Minix 3 разрабатывается для встраиваемых систем, таких как видео-камеры, DVD и другие мультимедийные или мобильные устройства. Он также может использоваться для маломощных дешевых ноутбуков с маленьким объемом ОЗУ, предназначенных для детей из стран «третьего мира». Помимо этого, Minix 3 может найти свое применение в приложениях, требующих высокой надежности, или тех задач, для которых лицензия GPL является слишком ограничивающей. Minix 3, сконструированный строго в соответствии с научными принципами надежности и безопасности, может быть использован в том сегменте рынка, где эти надежность и безопасность выходит на первый план: это медицина и военная отрасль. В общем, у Minix 3 есть хороший шанс найти свое место на рынке и сделать шаг в светлое будущее.

Литература

  1. А. Зубинский «Minix: можете считать ее «студебекером» – http://www.itc.ua/node/22523/
  2. Some Notes on the «Who wrote Linux» Kerfuffle – http://www.cs.vu.nl/~ast/brown/
  3. Э. Таненбаум «Операционные системы. Реализация и построение», 3-е изд., СПб, Питер, 2007.
  4. 4,0 4,1 А.Федорчук «MINIX 3. Установка» – http://citkit.ru/articles/345/
  5. Р. Игнатов «Передача данных с диска CD-ROM в Minix» – http://www.minix3.ru/docs/read_cdrom.pdf
  6. Комментарии к выпуску MINIX 3.1.3 – http://www.minix3.ru/releasenotes-3.1.3.html
Персональные инструменты
купить
подписаться
Яндекс.Метрика