среда, 29 февраля 2012 г.

Релиз ОС MINIX 3.2.0

Представлен стабильный релиз операционной системы MINIX 3.2.0, разработку которой курирует известный учёный Эндрю Таненбаум при финансовой поддержке Европейского исследовательского совета. Новая версия отличается целым рядом значительных улучшений и изменений, позволяющих рассматривать MINIX не только как систему для экспериментов и образовательных нужд, но и как платформу для производителей встраиваемой техники, отличающуюся модульностью, высокой надёжностью и низким потреблением памяти.
ОС MINIX построена на базе микроядерной архитектуры: код работающий на уровне ядра составляет всего несколько тысяч строк, остальное работает на пользовательском уровне. Базовое программное окружение Minix вобрало в себя большое число стандартных для BSD-систем утилит и библиотек, портированных из NetBSD. Дополнительно в репозитории представлено около 650 пакетов с разнообразными приложениями.
Исходные тексты MINIX распространяются под BSD-подобной лицензией, что повышает привлекательность системы для компаний, которые считают неприемлемыми условия GPL. Для загрузки доступен готовый загрузочный iso-образ (366 Мб), который можно использовать в роли Live-окружения или запустить под управлением систем виртуализации VMWare, QEMU или VirtualBox (поддерживается только работа с задействованием механизмов аппаратной виртуализации VT-x или AMD-V). С января началась разработка порта MINIX для архитектуры ARM.
Ключевые новшества MINIX 3.2.0:
  • Использование Clang в качестве компилятора по умолчанию (GCC доступен в виде опции);
  • Интеграция новой стандартной библиотеки Си (libc), портированной из NetBSD. Новая библиотека позволила существенно упростить портирование приложений из NetBSD;
  • Задействование по умолчанию формата исполняемых файлов ELF;
  • Реализован работающий в асинхронном режиме многопоточный модуль с реализацией абстрактной виртуальной файловой системы (VFS), позволяющей унифицировать процесс интеграции поддержки различных ФС;
  • Экспериментальная поддержка SMP-режима, дающая возможность задействовать все ресурсы многоядерных CPU;
  • Поддержка механизма FUSE, позволяющих обеспечить работу с реализациями файловых систем, работающих в режиме пользователя;
  • Переход на использование формата файла с паролями от системы NetBSD;
  • Включение в базовую систему новых пользовательских утилит и библиотек, портированных из NetBSD: ext2 fsck и mkfs, gzip, m4, man, mkdep, mkdir, mkfifo, mktemp, rm, rmdir, tic, uniq, libcurses, libcrypt, libprop, libterminfo, libutil, bzip2, date, indent, mdocml (mandoc), sed, zoneinfo;
  • Изменения в инфраструктуре файловых систем:
    • Задействован файл /etc/fstab;
    • Для ФС MFS реализована поддержка флага "грязного" размонтирования, позволяющего выявить когда файловая система была размонтирована корректно, а когда нет;
    • Полная интеграция в базовую систему ФС ext2 и утилит newfs и fsck. Поддержка установки MINIX на раздел ext2;
    • Реализация корректного запуска "fsck -p" в процессе загрузки для всех ФC, отражённых в fstab;
  • Интеграция загрузчика из проекта NetBSD;
  • Поддержка ProcFS (псевдо-fs /proc);
  • В драйвер AHCI добавлена поддержка многопоточности и NCQ;
  • Улучшение возможностей по отладке: поддержка GDB и core dump, возможность трассировки работы блочных устройств;
  • Увеличение надёжности:
    • Поддержка прозрачного для файловых систем восстановления в случае краха драйвера блочного устройства.
    • Реализация прозрачного для ФС повтора выполнения драйвером блочных устройств сбойных операций ввода/вывода;
    • Новый драйвер Faulty Block Device для симулирования дисковых сбоев в целях тестирования и отладки;
    • Серверные модули и драйверы запускаются под непривилегированным пользователем;
    • Исправлены все ошибки, выявленные в процессе внедрения Clang;
  • Улучшение поддержки виртуализации: добавлена библиотека libvassert для поддержки VMWare VAssert, реализован новый драйвер для синхронизации времени в VirtualBox;
  • В процессе разработки представленной версии был осуществлён переход на систему управления исходными текстами Git.