Minix

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

Операционная система Minix

Логотип Minix3

Minix 3 - является операционной системой с открытыми исходным кодом, основными задачами разработки которой является обеспечение надежности, гибкости и безопасности.

В отличии от предыдущих версий (Minix 1 и Minix 2), которые создавались с целью демонстрации основных принципов построения операционных систем, целью Minix 3 является полноценное функционирование приложений в условиях ограниченности технических ресурсов (микроконтроллеры, встраиваемые системы и прочие компьютеры, поддерживающие x86 архитектуру). Добиться поставленной цели удаётся за счёт снижения размеров самой операционной системы и повышения требований к надёжности: части системы, работающие в пользовательском режиме, поделены на модули и полностью изолированы друг от друга.

Для примера, все драйвера устройства выполняется как отдельный процесс пользовательского режима. Таким образом, ошибка драйвера не приведёт к краху системы, как это часто бывает в различных версиях Windows - в Minix потерпевший крах драйвер будет автоматически перезапущен (без вмешательства пользователя, без перезагрузки, и без затрагивания уже запущенных процессов). Всё это, в совокупности с микроядерной архитектурой (которой особенно гордятся разработчики) действительно ощутимо повышают надёжность этой операционной системы.

Если изначально (в 1987 году) эта система была написана профессором Амстердамского свободного университета Эндрюю Таненбаумом для демонстрации принципов построения ОС, то сейчас разрабатывать эту операционную систему может каждый, кто знаком с языком С (лицензия BSD). Сам Таненбаум сейчас отошёл от руководства этим проектом на прямую, оставив себе лишь роль идеолога. Процессом принятия предлагаемых изменений сейчас занимаются его многочисленные студенты и аспиранты.

Тем не менее, Minix продолжает развиваться. Так, на пример, в версии 3.1.4 появилась поддержка виртуальной памяти; в версии 3.1.5 появилась разделяемая память и была портирована СУБД PostgreSQL; в версии 3.1.6 было добавлено множество драйверов (именно отсутствие достаточного количества драйверов является на данный момент основной проблемной Minix) и различных средств измерения производительности, таких как tcpdump...

Основные особенности ОС Minix

  • Полная POSIX совместимость
  • Поддержка TCP/IP
  • Графическая система (Window System, jwm, ede)
  • Компиляторы для различных языков программирования (cc, gcc, g++, perl, python, etc.)
  • Более 650 UNIX программ
  • Полноценная многопользовательская система с многозадачностью
  • Драйвера устройств работают в пользовательском пространстве
  • Низкие требования к аппаратному обеспечению
  • Исходные коды на C

Сборка ОС Minix

Не смотря на то, что наиболее простой (а по тому рекомендуемый) путь установки Minix это скачивание заранее подготовленного образа с официального сайта (а далее обновить мир и ядро для получения наиболее свежих обновлений), разработчики предоставляют возможность собрать систему самостоятельно, используя для этого различные компиляторы различных систем (Linux, BSD, ...). Для этого разработчиками предоставлен makefile верхнего уровня (т.е. нет необходимости перемещаться по разным папкам и собирать по отдельности различные части - всё делается из корня папки проекта), генерация всех зависимостей на лету (т.е. нет необходимости для указания отдельных целей depends) и даже кросс-инсталяция (пока что в экспериментальном режиме).

Далее подробнейшим образом будет рассмотрен процесс сборки Minix по шагам.

Консоль Debian Linux

Работа производится на Debian (ядро 2.6.32).

Установка Subversion

Для начала, необходимо наличие Subversion клиента.
Subversion является системой хранения исходного кода, и управления различным версиями этого кода.

apt-get install subversion

Изменение текущей директории

Теперь переходим в папку проекта.

svn checkout

И получаем ревизию, которую можно собирать с использованием gcc:

svn checkout https://gforge.cs.vu.nl/svn/minix/branches/src.r4508.buildsystem --username anonymous

Анонимная авторизация на SVN сервере

Для начала система спросит принимать или не принимать сертификат безопастности. Для однократного приянтия нужно нажать t.
Поле пароля можно оставить пустым. И на вопрос о сохранении пароля можно ответить no.

Check out последней ревизии

На момент написания, последняя ревизия 9636

Установка bison и flex

Для дальнейшей работы необходимо установить yacc (для Debian и Ubuntuон входит в пакет bison) и flex.
yacc (Yet Another Compiler Compiler) генерирует парсер на основе аналитической грамматики. Поскольку парсер, генерируемый с помощью yacc, требует использования лексического анализатора, то часто он используется совместно с генератором лексических анализаторов, в данном случае это flex.

apt-get install bison flex

Начало сборки Minix

Переходим в папку со свежжевыкаченной ревизией, и командой запускаем сборку.

make all

На этом шаге можно было бы использовать возможности крос-инсталяции командрй

CI_HOST=my.minix.machine make cross-install

В этом случае все драйвера, сервисы и загрузочный образ копируется на хост my.minix.machine

Завершение сборки Minix

На выходе получаем файл image.aout
В документации сказано «Copy the resulting image.aout to the /boot/image directory of your Minix installation» и система заработает. Можно на основании этого файла создать iso образ, с которого можно устанавливать систему.

Установка ОС Minix

Имеется возможность запуска Minix 3 на виртуальной машине.
Разработчики утверждают, что Minix 3 хорошо работает под управлением QEMU, VMWare, VirtualBox, Bochs, Parallels
На практике, запустить систему под VirtualBox: система сообщет

*** kernel messages:
ested 0
rs 2 0xb957 0x83c6 0x2f24 0x8667 0x870f 0x831a 0x27d9 0x25c5 0x100a
pc of pagefault: 0xb957
rs 2 0xb957 0x83c6 0x2f24 0x8667 0x870f 0x831a 0x27d9 0x25c5 0x100a
kernel panic: cause_sig: sig manager 2 gets lethal signal 11 for itself
kernel: 0x51de 0x48de 0xbf0c 0xc064 0xeb8
cs: RPL 0, ind 6 of GDT -> base 0x00100000 size 0x000178e0 exec nonacc DPL 0
ds: RPL 0, ind 3 of GDT -> base 0x00118000 size 0x18ee8000 nonexec DPL 0

Был найден способ

VBoxSDL --startvm <имя_виртуальной_машины> --norawr0 --norawr3

Но он хорошо работал, когда VirtualBox запускался на Ubuntu, но по прежнему не работал, если хостом является Windows 7.

Для запуска Minix 3 из под Windows 7 будем использовать Bochs (вообще, было бы интересно попробовать хотя бы демо-версию Parallels Desktop 4 для Windows и Linux, но она требует аппаратной поддержки VT-x или AMD-V, а этим далеко не каждый ноутбук может похвастаться).

Для запуска Minix 3 из под Windows 7 будем использовать Bochs, который необходимо установить включив установку DLX Linux.
После завершения процесса установки, в директории C:\Program Files\Bochs-X.X.X будет находиться директория dlxlinux.
Эту директорию можно скопировать в ту же родительскую директорию переименовав копию в minix3.
После этого, в директорию minix3 и необходимо отредактировать файл bochsrc.bxrc. Для начала, необходимо увеличить память до 256.

megs: 256

Далее нужно добавьте CDROM, для этого в разделе "# hard disk" стоит прописать строку

ata0-slave: type=cdrom, path=minix.iso, status=inserted

А в раздее "# choose the boot disk." нужно указать приоритет загрузки

boot: cdrom

Образ загрузочного диска можно скачать с официального сайта, либо создать самому на основе той сборки, которая рассматривалась в предыдщем разделе. В любом случае, образ нужно переименовать в minix.iso, и положить в папку minix3.
После этого остаётся только отредактировать файл run.bat в директории minix3 - заменить dlxlinux на minix3 на первой строке в пути.
Можно запустите run.bat, и MINIX 3 начнёт загружаться в виртуальной машине.

Ссылки