Мы рады сообщить о выпуске Minoca OS версии 0.4. За восемь месяцев, прошедших с момента выпуска 0.3, нашего самого первого релиза с открытым исходным кодом, многое изменилось. В частности, Minoca теперь имеет ранние признаки настольного компьютера. И, конечно же, ни один рабочий стол не был бы полноценным без приложения, которое на нем можно было бы запустить. Поэтому мы добавили fceux, эмулятор NES, который мы использовали для тестирования графической производительности и звука. Надеюсь, вы будете лучше в Super Mario Brothers, чем Крис, который, как я наблюдал, явно убивал Марио, вероятно, более 50 раз во имя тестирования звука. Вот что, как и почему мы это сделали.

Для тех, кто никогда не слышал о нас раньше, Minoca OS - это новая операционная система, созданная полностью с нуля. Он разработан, чтобы быть компактным, портативным, модульным и современным (не считая эмулятора NES). Мы стараемся делать больше с меньшими затратами, поэтому устройства с ограниченным бюджетом мощности и ресурсов могут получить полную функциональность ОС с минимальными накладными расходами.

Что нового

Некоторые новые драйверы в версии 0.4:

  • AHCI (контроллер обычно за вашим портом SATA)
  • e1000 (гигабитный сетевой драйвер Intel)
  • USB и мышь PS / 2
  • Аудио Intel HD Audio и Raspberry Pi PWM audio

Стоит отметить некоторые новые сторонние пакеты:

  • Xorg-сервер
  • SDL
  • fceux (эмулятор NES)
  • miniDLNA
  • Mesa3D (программный рендеринг)
  • GTK +

Вы можете скачать последние образы ОС на нашей странице Загрузки. Об ошибках и запросах функций можно писать на нашей странице GitHub. Вы можете запустить X для себя, запустив opkg update; opkg install fceux xinit; startx .

Мотивация

Прежде всего, я хотел бы сказать огромное спасибо всем, кто попробовал Minoca OS с тех пор, как в ноябре мы перешли на открытый исходный код. Еще большее спасибо бесстрашным ребятам, которые отправляли сообщения об ошибках и пул-реквесты на нашей странице GitHub. Крис и я очень ценим это, пожалуйста, продолжайте это делать!

Один из запросов, которые мы, похоже, часто получали, был: «Где же графический интерфейс?» Или «Могу ли я запустить это графическое приложение XYZ?» Когда мы запустили 0.3, мы не работали над графической средой, в основном ссылаясь на тот факт, что ускоренная графика - это сложная задача. Это по-прежнему верно, и у нас все еще нет ускоренной графики (помните, что это начало рабочего стола), но нам было любопытно узнать, как далеко мы далеки от того, чтобы иметь какую-то базовую графическую окружающая обстановка.

Целью здесь было не выпустить 0.4 с сообщением «вот, великолепный графический интерфейс рабочего стола прибыл», а скорее предоставить элементы и строительные блоки для людей, знакомых с компилированием программного обеспечения, чтобы потенциально добиться прогресса самостоятельно.

Все дороги ведут к X

Наша первоначальная мысль заключалась в том, чтобы перенести через DirectFB, библиотеку Linux для непосредственного взаимодействия с буфером кадра. Фактически мы дошли до того, что перенесли DirectFB в Minoca. Все немного развалилось, когда мы начали искать приложения, построенные на основе DirectFB. Их не так много. Wayland / Weston выглядит супер круто и ново, но он также оказался довольно специфичным для Linux, поэтому для начала это не казалось идеальным выбором. Нет, кажется, все графические элементы скомпилированы с X. Древняя ужасающая медуза - X. Это было в самом конце моего мысленного списка возможных вариантов, но становилось ясно, что это действительно был единственный вариант.

X - это не просто что-то, что вы загружаете и компилируете. Он состоит из более сотни различных пакетов. Как разработчики новой ОС, мы обычно считаем, что сегодня неплохой день, если добавили один или два новых пакета. Идея добавить более 100 новых пакетов, даже если все они правильно портированы, кажется устрашающей. И хотя мы много работали над созданием POSIX-совместимой библиотеки C, жизнь складывается не так гладко.

В бездну

На самом деле нет никакого способа проверить и увидеть, не застрянете ли вы на отсутствующей функции ОС в пакете номер 67 из 140, вам просто нужно начать сборку и надеяться, что препятствия будут преодолимы. Глава о X в книге Linux From Scratch - это драгоценная карта в бесконечном лабиринте. Я понятия не имею, как кто-то создавал X-сервер до этой книги. По большей части это не супер-специфично для Linux, с небольшим редактированием они могли бы назвать это Любая ОС с нуля.

Также помогает то, что почти все автоматически настроено. Не то чтобы я не боролся с autoconf и особенно с libtool, но я бы сказал, что autoconf и у меня есть «взаимопонимание». По крайней мере, это черт знает меня.

Первая партия из примерно 25 пакетов содержит в основном заголовки. Думаю, разминка, чтобы развязать пальцы. Затем идет еще одна партия из 30 или около того пакетов библиотек. К моему удивлению, все идет довольно гладко, и даже кросс-компиляция!

Самым большим препятствием я столкнулся с Mesa, библиотекой трехмерной графики, отвечающей за такие библиотеки, как libGL. Mesa была одним из немногих пакетов, не относящихся к Xorg, в поисках X-сервера, и для этого требовалось немного обезьянничать. Для предоставления правильных параметров конфигурации для конвейера, работающего только на программном обеспечении, отличном от Linux, который удовлетворил X-сервер, потребовались некоторые методы проб и ошибок. Также было несколько специфичных для ОС фрагментов кода, которым требовались обязательные фрагменты кода и вот еще Minoca. Самой мерзкой зазубриной, о которой я узнал позже, было их принудительное использование модели локального хранилища потоков initial-exec. Я знаю, что это было сделано во имя производительности, но это оставляет некоторую путаницу для разработчиков ОС, которые либо должны 1) приспособить это к хрупкой фразе может сработать для Mesa, но я надеюсь, что никто другой не сделает этого. или 2) заставить программы, использующие libGL, загружать его при начальной загрузке программы, чего обычно не делал бы X-сервер. Мы выбрали вариант 2, благодаря которому вы чувствуете себя немного менее грязным.

Остальные пакеты, необходимые для запуска X-сервера, прошли на удивление гладко. Мои комплименты разработчикам Xorg. Xterm, не относящийся к Xorg пакет, потребовал некоторой работы. Есть некоторые кодовые базы, в которых есть атмосфера «засуньте сюда свою ОС с ifdefs», xterm - одна из них. Обычно это довольно легко сделать, но никогда не бывает очень хорошо.

Minoca I / O

Теоретически у нас был работающий X-сервер, но, учитывая, что X не мог отображать видео или получать ввод, особых доказательств не было. Я добавил поддержку фреймбуфера Minoca и написал драйвер ввода, позволяющий X собирать события клавиатуры и мыши из ядра. Это также потребовало фактического добавления поддержки мыши в Minoca, включая синтаксический анализатор USB HID. После нескольких фальстартов мне подарили такую ​​красоту:

Марио

Fceux потребовалось немного больше времени, потому что для этого потребовался GTK +, набор инструментов с графическим интерфейсом. Но послушайте, после переноса примерно 140 пакетов, что еще пять или шесть. В итоге вот что у меня получилось:

Как весело! Конечно, без звука это довольно досадно. Поэтому Крис разработал аудиофреймворк в стиле OSS и написал драйвер для устройства Intel HD Audio, распространенного на ПК. Raspberry Pi 3 - наша любимая платформа ARM, поэтому он также написал для нее аудиодрайвер PWM.

Производительность на Raspberry Pi 3 неплохая, в Марио можно играть, несмотря на отсутствие ускоренной графики. Я перенес gperftools и быстро посмотрел на производительность fceux и X-сервера. Я искал, проводим ли мы слишком много времени в библиотеке C или в системном вызове, указывая на то, что мы сделали что-то тупоголовое в библиотечной функции. Как и ожидалось, большая часть процессорного времени ушла на копирование пикселей, поэтому я думаю, что производительность для неускоренной графики вполне нормальная.

Что дальше

Наконец, вершина разработки ОС - возможность имитировать игровую консоль конца 80-х с оконным менеджером того же периода. Мы все здесь закончили, верно?

Мы рассматриваем этот выпуск как отправную точку. Работа по запуску X открывает новые возможности для Minoca OS. Кажется, что теперь у вас есть современный рабочий стол или даже браузер. Я вообще не разбирался в этом, но мне интересно, какая часть Chrome будет компилироваться сейчас. Теперь, когда в пользовательском режиме есть что-то, что можно использовать, теперь можно решить проблему с фреймворком отображения ядра. Или, может быть, пришло время для нового облегченного графического интерфейса использовать облегченную ОС. Или, черт возьми, может быть, нам просто нужно наладить больше либретро.

Открывается множество возможностей, и мы будем рады помочь в их изучении. Если вам комфортно компилировать пакеты с открытым исходным кодом и вы готовы стать пионером ОС, возьмите свой любимый пакет и посмотрите, соберется ли он. Если он сработает, мы добавим его в наш репозиторий пакетов. Если вам интересно работать над самой ОС, ознакомьтесь с нашим списком желаний.

Вы можете скачать последние 0.4 изображения на нашей странице скачать. Исходный код ОС доступен здесь. Не стесняйтесь обращаться к [email protected] с вопросами. Новички обязательно приветствуются. Или вы можете написать мне по электронной почте [email protected].