Minix — различия между версиями
KorovinAA (обсуждение | вклад) м (→Установка ОС Minix) |
|||
(не показано 26 промежуточных версий 1 участника) | |||
Строка 1: | Строка 1: | ||
== Операционная система Minix == | == Операционная система Minix == | ||
− | -- | + | [[Файл:Minix3.png|frame|Логотип Minix3]] |
+ | |||
+ | Minix 3 - является операционной системой с открытыми исходным кодом, основными задачами разработки которой является обеспечение надежности, гибкости и безопасности. | ||
+ | |||
+ | В отличии от предыдущих версий (Minix 1 и Minix 2), которые создавались с целью демонстрации основных принципов построения операционных систем, целью Minix 3 является полноценное функционирование приложений в условиях ограниченности технических ресурсов (микроконтроллеры, встраиваемые системы и прочие компьютеры, поддерживающие [http://ru.wikipedia.org/wiki/%D0%A586 x86 архитектуру]). Добиться поставленной цели удаётся за счёт снижения размеров самой операционной системы и повышения требований к надёжности: части системы, работающие в пользовательском режиме, поделены на модули и полностью изолированы друг от друга. | ||
+ | |||
+ | Для примера, все драйвера устройства выполняется как отдельный процесс пользовательского режима. Таким образом, ошибка драйвера не приведёт к краху системы, как это часто бывает в различных версиях Windows - в Minix потерпевший крах драйвер будет автоматически перезапущен (без вмешательства пользователя, без перезагрузки, и без затрагивания уже запущенных процессов). Всё это, в совокупности с [http://ru.wikipedia.org/wiki/%D0%9C%D0%B8%D0%BA%D1%80%D0%BE%D1%8F%D0%B4%D1%80%D0%BE микроядерной архитектурой] (которой особенно гордятся разработчики) действительно ощутимо повышают надёжность этой операционной системы. | ||
+ | |||
+ | Если изначально (в 1987 году) эта система была написана профессором Амстердамского свободного университета [http://ru.wikipedia.org/wiki/%D0%A2%D0%B0%D0%BD%D0%B5%D0%BD%D0%B1%D0%B0%D1%83%D0%BC,_%D0%AD%D0%BD%D0%B4%D1%80%D1%8E Эндрюю Таненбаумом] для демонстрации принципов построения ОС, то сейчас разрабатывать эту операционную систему может каждый, кто знаком с языком С (лицензия [http://ru.wikipedia.org/wiki/%D0%9B%D0%B8%D1%86%D0%B5%D0%BD%D0%B7%D0%B8%D1%8F_BSD BSD]). Сам Таненбаум сейчас отошёл от руководства этим проектом на прямую, оставив себе лишь роль идеолога. Процессом принятия предлагаемых изменений сейчас занимаются его многочисленные студенты и аспиранты. | ||
+ | |||
+ | Тем не менее, Minix продолжает развиваться. Так, на пример, в версии 3.1.4 появилась поддержка виртуальной памяти; в версии 3.1.5 появилась разделяемая память и была портирована СУБД [http://ru.wikipedia.org/wiki/PostgreSQL PostgreSQL]; в версии 3.1.6 было добавлено множество драйверов (именно отсутствие достаточного количества драйверов является на данный момент основной проблемной Minix) и различных средств измерения производительности, таких как tcpdump... | ||
== Основные особенности ОС Minix == | == Основные особенности ОС Minix == | ||
− | + | *Полная POSIX совместимость | |
+ | *Поддержка TCP/IP | ||
+ | *Графическая система ([http://www.minix3.ru/desktop/X.jpgX Window System], [http://www.minix3.ru/desktop/jwm.jpg jwm], [http://www.minix3.ru/desktop/ede.png ede]) | ||
+ | *Компиляторы для различных языков программирования (cc, gcc, g++, perl, python, etc.) | ||
+ | *Более 650 UNIX программ | ||
+ | *Полноценная многопользовательская система с многозадачностью | ||
+ | *Драйвера устройств работают в пользовательском пространстве | ||
+ | *Низкие требования к аппаратному обеспечению | ||
+ | *Исходные коды на C | ||
== Сборка ОС Minix == | == Сборка ОС Minix == | ||
− | ---- | + | Не смотря на то, что наиболее простой (а по тому рекомендуемый) путь установки Minix это скачивание заранее подготовленного образа с официального сайта (а далее обновить мир и ядро для получения наиболее свежих обновлений), разработчики предоставляют возможность собрать систему самостоятельно, используя для этого различные компиляторы различных систем (Linux, BSD, ...). Для этого разработчиками предоставлен makefile верхнего уровня (т.е. нет необходимости перемещаться по разным папкам и собирать по отдельности различные части - всё делается из корня папки проекта), генерация всех зависимостей на лету (т.е. нет необходимости для указания отдельных целей depends) и даже кросс-инсталяция (пока что в экспериментальном режиме). |
+ | |||
+ | Далее подробнейшим образом будет рассмотрен процесс сборки Minix по шагам. | ||
+ | |||
+ | [[Файл:001.png|Консоль Debian Linux]] | ||
+ | |||
+ | Работа производится на Debian (ядро 2.6.32). | ||
+ | |||
+ | [[Файл:002.png|Установка Subversion]] | ||
+ | |||
+ | Для начала, необходимо наличие [[Subversion]] клиента.<br> | ||
+ | Subversion является системой хранения исходного кода, и управления различным версиями этого кода. | ||
+ | apt-get install subversion | ||
+ | |||
+ | [[Файл:003.png|Изменение текущей директории]] | ||
+ | |||
+ | Теперь переходим в папку проекта. | ||
+ | |||
+ | [[Файл:004.png|svn checkout]] | ||
+ | |||
+ | И получаем ревизию, которую можно собирать с использованием gcc:<br> | ||
+ | svn checkout https://gforge.cs.vu.nl/svn/minix/branches/src.r4508.buildsystem --username anonymous | ||
+ | |||
+ | [[Файл:005.png|Анонимная авторизация на SVN сервере]] | ||
+ | |||
+ | Для начала система спросит принимать или не принимать сертификат безопастности. Для однократного приянтия нужно нажать t.<br> | ||
+ | Поле пароля можно оставить пустым. И на вопрос о сохранении пароля можно ответить no. | ||
+ | |||
+ | [[Файл:006.png|Check out последней ревизии]] | ||
+ | |||
+ | На момент написания, последняя ревизия 9636 | ||
+ | |||
+ | [[Файл:007.png|Установка bison и flex]] | ||
+ | |||
+ | Для дальнейшей работы необходимо установить yacc (для Debian и Ubuntuон входит в пакет bison) и flex.<br> | ||
+ | yacc (Yet Another Compiler Compiler) генерирует парсер на основе аналитической грамматики. Поскольку парсер, генерируемый с помощью yacc, требует использования лексического анализатора, то часто он используется совместно с генератором лексических анализаторов, в данном случае это flex.<br> | ||
+ | apt-get install bison flex | ||
+ | |||
+ | [[Файл:008.png|Начало сборки Minix]] | ||
+ | |||
+ | Переходим в папку со свежжевыкаченной ревизией, и командой запускаем сборку.<br> | ||
+ | make all | ||
+ | На этом шаге можно было бы использовать возможности крос-инсталяции командрй<br> | ||
+ | CI_HOST=my.minix.machine make cross-install | ||
+ | В этом случае все драйвера, сервисы и загрузочный образ копируется на хост my.minix.machine | ||
+ | |||
+ | [[Файл:009.png|Завершение сборки Minix]] | ||
+ | |||
+ | На выходе получаем файл image.aout<br> | ||
+ | В документации сказано «Copy the resulting image.aout to the /boot/image directory of your Minix installation» и система заработает. Можно на основании этого файла создать iso образ, с которого можно устанавливать систему. | ||
== Установка ОС Minix == | == Установка ОС Minix == | ||
+ | |||
+ | Имеется возможность запуска Minix 3 на виртуальной машине.<br> | ||
+ | Разработчики утверждают, что Minix 3 хорошо работает под управлением [http://ru.wikipedia.org/wiki/QEMU QEMU], [http://www.vmware.com/ru/ VMWare], [http://www.virtualbox.org/ VirtualBox], [http://bochs.sourceforge.net/ Bochs], [http://www.parallels.com/ru/ Parallels]<br> | ||
+ | На практике, запустить систему под VirtualBox: система сообщет<br> | ||
+ | *** 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 | ||
+ | Был найден способ<br> | ||
+ | VBoxSDL --startvm <имя_виртуальной_машины> --norawr0 --norawr3 | ||
+ | Но он хорошо работал, когда VirtualBox запускался на Ubuntu, но по прежнему не работал, если хостом является Windows 7. | ||
+ | |||
+ | Для запуска Minix 3 из под Windows 7 будем использовать Bochs (вообще, было бы интересно попробовать хотя бы демо-версию [http://www.parallels.com/ru/products/desktop/pd4wl/sys-requirements/ Parallels Desktop 4 для Windows и Linux], но она требует аппаратной поддержки VT-x или AMD-V, а этим далеко не каждый ноутбук может похвастаться).<br> | ||
+ | |||
+ | Для запуска Minix 3 из под Windows 7 будем использовать Bochs, который необходимо установить включив установку DLX Linux.<br> | ||
+ | После завершения процесса установки, в директории C:\Program Files\Bochs-X.X.X будет находиться директория dlxlinux.<br> | ||
+ | Эту директорию можно скопировать в ту же родительскую директорию переименовав копию в minix3.<br> | ||
+ | После этого, в директорию minix3 и необходимо отредактировать файл bochsrc.bxrc. Для начала, необходимо увеличить память до 256.<br> | ||
+ | megs: 256 | ||
+ | Далее нужно добавьте CDROM, для этого в разделе "# hard disk" стоит прописать строку<br> | ||
+ | ata0-slave: type=cdrom, path=minix.iso, status=inserted | ||
+ | А в раздее "# choose the boot disk." нужно указать приоритет загрузки<br> | ||
+ | boot: cdrom | ||
+ | Образ загрузочного диска можно скачать с официального сайта, либо создать самому на основе той сборки, которая рассматривалась в предыдщем разделе. В любом случае, образ нужно переименовать в minix.iso, и положить в папку minix3.<br> | ||
+ | После этого остаётся только отредактировать файл run.bat в директории minix3 - заменить dlxlinux на minix3 на первой строке в пути.<br> | ||
+ | Можно запустите run.bat, и MINIX 3 начнёт загружаться в виртуальной машине.<br> | ||
+ | |||
+ | == Ссылки == | ||
+ | |||
+ | *[http://www.minix3.org/ Официальный сайт Minix 3] | ||
+ | *[http://www.minix3.ru/ Рускоязычное сообщество пользователей Minix 3] | ||
+ | *[http://www.cs.vu.nl/~ast/brown/ История Minix глазами Эндрю Таненбаума] | ||
+ | *[http://oreilly.com/catalog/opensources/book/appa.html Спор Линуса Торвальдса и Эндрю Таненбаума] |
Текущая версия на 08:22, 4 октября 2011
Содержание
Операционная система Minix
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 (ядро 2.6.32).
Для начала, необходимо наличие Subversion клиента.
Subversion является системой хранения исходного кода, и управления различным версиями этого кода.
apt-get install subversion
Теперь переходим в папку проекта.
И получаем ревизию, которую можно собирать с использованием gcc:
svn checkout https://gforge.cs.vu.nl/svn/minix/branches/src.r4508.buildsystem --username anonymous
Для начала система спросит принимать или не принимать сертификат безопастности. Для однократного приянтия нужно нажать t.
Поле пароля можно оставить пустым. И на вопрос о сохранении пароля можно ответить no.
На момент написания, последняя ревизия 9636
Для дальнейшей работы необходимо установить yacc (для Debian и Ubuntuон входит в пакет bison) и flex.
yacc (Yet Another Compiler Compiler) генерирует парсер на основе аналитической грамматики. Поскольку парсер, генерируемый с помощью yacc, требует использования лексического анализатора, то часто он используется совместно с генератором лексических анализаторов, в данном случае это flex.
apt-get install bison flex
Переходим в папку со свежжевыкаченной ревизией, и командой запускаем сборку.
make all
На этом шаге можно было бы использовать возможности крос-инсталяции командрй
CI_HOST=my.minix.machine make cross-install
В этом случае все драйвера, сервисы и загрузочный образ копируется на хост my.minix.machine
На выходе получаем файл 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 начнёт загружаться в виртуальной машине.