Рассказ о самых необычных и странных событиях, произошедших в мире Open Source
UNIX и Open Source когда-то выросли из идей, казавшихся безумными
даже их прародителям, Linux появился в результате эксперимента, BSD —
следствие увлечения студентов. Очень многое в мире Open Source —
случайность и эксперимент. А какие сегодня можно встретить безумные идеи
и эксперименты?
Работает даже на тостере
До начала повсеместной экспансии Linux на все мыслимые и немыслимые
устройства пальму первенства среди самых портируемых ОС уверенно
занимала NetBSD. Ее можно было установить на практически все
существующие и хоть сколько-нибудь популярные компьютерные системы,
включая даже такие ископаемые, как машины на базе процессора Motorola
68000. Однако наибольшую известность получил порт системы на тостер.
В 2005 году компания Technologic Systems представила миру первый
полностью рабочий тостер на базе NetBSD. В его основе лежал одноплатный
компьютер их собственного производства TS–7200 с ARM-процессором на 200
МГц и 32 Мб оперативной памяти (продается до сих пор, кстати), а с
внешней стороны располагались четырехстрочный LCD-дисплей, USB-порт для
подключения клавиатуры, порт Ethernet и последовательный порт для
подключения консоли.
Находящийся внутри компьютер включал в себя полноценную инсталляцию
NetBSD с предустановленными веб-сервером Apache, PHP, а также набором
CGI-скриптов для удаленного выполнения различных операций, таких как
проигрывание аудио через USB-аудиосистему, управление LCD-экраном и так
далее. К сожалению, компоненты, отвечающие за приготовление тостов, так и
остались механическими, поэтому включить процесс приготовления удаленно
с помощью SSH было нельзя. Зато тостер умел вести статистику по
приготовленным тостам и автоматически запускать задачи в начале и по
окончании поджарки.
ОС в браузере
Кроме тостеров и прочего экзотического железа, не так давно NetBSD
прославилась еще одним необычным портом. На этот раз систему запустили в
браузере, не используя никаких плагинов и прочих костылей. Все ядро
системы, а также несколько драйверов и утилит пространства пользователя
было транслировано в набор скриптов на языке JavaScript, которые можно
запустить в любом браузере.
Осуществить такое удалось благодаря наличию в ядре NetBSD слоя
абстракции RUMP (Runnable Userspace Meta Program), который представляет
собой прослойку над железом в стиле гипервизора или этакого микроядра.
RUMP позволяет выносить части ядра или все ядро целиком в пространство
пользователя, из которого они смогут получать доступ к гипервизору с
помощью специального API.
Чтобы перенести ядро в браузер, разработчики NetBSD взяли код
RUMP-ядра, применили к нему транслятор Emscripten для перевода на язык
JavaScript, а затем реализовали на том же JavaScript минималистичный
гипервизор, под управлением которого и запустили RUMP-ядро. В JavaScript
также были транслированы некоторые драйверы файловых систем (FFS, Tmpfs
и kernfs) и несколько утилит командной строки. Все это уместилось в 5
Мб и может быть протестировано в любом браузере по этой ссылке.
Несмотря на экспериментальный характер проекта, он имеет вполне себе
утилитарные цели. Одно из применений такого ядра разработчики видят в
том, чтобы позволить веб-приложениям выполнять сложные функции, ранее
присущие только операционным системам. Например, с помощью такого
JavaScript-ядра можно легко реализовать веб-приложение, позволяющее
напрямую работать с образами файловых систем без необходимости запускать
какие-либо процессы на серверной стороне.
JavaScript-ядро уже включено в официальный список портов NetBSD и
располагается в каталоге sys/arch/javascript. Конец i386 близок как
никогда.
Комп в браузере
Но зачем ограничиваться одним ядром, когда в браузер можно запихнуть
весь компьютер, а точнее, его виртуальный аналог? Именно это сделал
неугомонный математик, а по совместительству автор эмулятора QEMU и
медиапакета FFmpeg Фабрис Беллар. Исключительно ради проверки текущих
возможностей JS, а также собственных скиллов он сел и начал реализацию
браузерного эмулятора ПК с нуля.
В результате появился удивительно быстрый эмулятор, способный
загрузить linux–2.6.20 с виртуальной файловой системой, содержащей
практически все стандартные команды Linux, буквально за несколько секунд
(8,478 в Chrome 28, если быть точным). Причем, по заявлению Беллара,
JavaScript позволил реализовать некоторые оптимизации, отсутствующие в
QEMU, и таким образом в некоторых местах добиться более высокой, в
сравнении с тем же QEMU, производительности.
Во всем остальном возможности эмулятора довольно стандартные: набор
инструкций i486, эмуляция сетевой карты и текстового видеоадаптера.
Поддержка дисковых накопителей пока не реализована, как и поддержка
сопроцессора и наборов инструкций MMX, SSE. Однако все это не мешает
работе Linux, благодаря наличию в ядре эмулятора сопроцессора и
поддержки виртуальных дисковых накопителей в памяти.
Полюбоваться работой этого чуда программистской мысли можно на странице автора.
Сразу после входа начнется загрузка эмулятора, в конце которой выпадет
консоль и станут доступны редакторы vi и qemacs, компилятор tcc, сетевые
серверы dnsd, ntpd, ftpd, httpd, sendmail и многое другое.
INFO
Последняя разработка Фабриса Беллара — реализованная софтверно
базовая станция 4G LTE, которую может запустить любой желающий,
обзаведясь средненьким компом и дешевенькой антенной.
ОС для калькулятора
Если полноценный UNIX в браузере тебя не впечатлил, то как насчет
UNIX’а в калькуляторе? TI–92+ — программируемый калькулятор для
серьезных математиков, начинка его равна среднему компу примерно
30-летней давности: процессор на 12 МГц, 256 Кб оперативной памяти, 2 Мб
постоянной, плюс полноценная QWERTY-клавиатура и растровый экран с
разрешением 240 × 128. Работает под управлением собственной
минималистичной ОС и позволяет выполнять множество самых разнообразных
математических операций.
Полноценную NetBSD или Linux в него не впихнешь, ввиду уж слишком
ограниченных ресурсов, а вот стороннюю минималистичную ОС вполне. Этой
возможностью и решили воспользоваться энтузиасты, создавшие Punix —
UNIX-подобную ОС для TI–92+. Система, кстати говоря, для столь
ограниченных ресурсов получилась очень даже неплохая. Поддерживается
вытесняющая многозадачность, виртуальные терминалы, организация прямой
связи с внешним ПК или другим калькулятором через порт ввода-вывода,
вывод звука через /dev/audio. Доступны стандартные UNIX-утилиты: sh, top, cat, true, false, clear, uname, env, id и date.
Написана система почти целиком на языке Си и распространяется под
лицензией BSD. Если у тебя есть возможность стать владельцем такого
калькулятора, то я настоятельно рекомендую потестить операционку, скачав и собрав ее из исходников.
Унитаз с удаленным управлением
Японцы — народ изобретательный и технически продвинутый. Они готовы
автоматизировать, роботизировать и компьютеризировать все, до чего
только дотянутся их руки. И вот, после автоматизации велопарковок,
домов, автобусных станций и поездов, они добрались до самого ценного,
что есть в доме, — туалета. Новые унитазы линейки Satis,
выпускаемые японской фирмой Lixil, не только сделают всю грязную работу
за тебя (в разумных пределах, конечно), но и позволят рулить унитазом
удаленно, используя Android-приложение.
Lixil Satis обладает всей функциональностью, которая только может
понадобиться в умном унитазе. Это и регулировка температуры сиденья, и
автоматический смыв, и закрытие крышки, и, конечно же, незаменимая
функция проигрывания музыки для большего комфорта. Однако, используя
фирменное Android-приложение, работающее с унитазом по протоколу
Bluetooth, ты получишь еще больший контроль над устройством. Например,
ты сможешь заблаговременно открыть крышку еще до входа в туалет, выбрать
наиболее подходящую для данного момента музыкальную композицию и
просмотреть журнал посещений уборной с подробной информацией о каждом
событии.
Порт Android на C
Раз уж мы заговорили об Android, то нельзя не вспомнить и о довольно
бесполезном начинании под названием XobotOS. В начале 2012 года компания
Xamarin, которая занимается поддержкой Mono, инициировала проект по
переписыванию всех Java-компонентов Android на язык C# и, как следствие,
замену виртуальной машины Dalvik на Mono. В результате на свет
появилась XobotOS, она же Android 4.0.3 с Mono внутри, код которой был
выложен в репозиторий и ни разу не менялся с тех пор.
Интересно во всей этой истории то, что в результате вложения довольно
значительных усилий в портирование системы каких-то существенных выгод,
за исключением рекламы Mono, разработчики не получили. Все, что
осталось в итоге, — это внесенные доработки в инструмент Sharpen,
предназначенный для трансляции Java в C#, а также изменения в порте Mono
на Android, который избавился от привязки к Java.
Зато родился график, который очень красноречиво показывает, насколько
более эффективной стала система — производительность возросла более чем
в шесть раз. Однако тест, его генерирующий, на проверку оказался
полностью синтетическим и не отражающим ровным счетом ничего.
Графическая подсистема в ядре
Как известно, на определенном этапе проектирования программисты,
разрабатывающие Windows NT, пришли к выводу, что в целях эффективности
вся графическая подсистема ОС должна находиться в ядре. В UNIX, с другой
стороны, система X Window всегда была хоть и привилегированным, но
пользовательским процессом, который обращался к ядру только с целью
получить доступ к адресному пространству видеоадаптера. Такой подход
считался неэффективным, поэтому разговоры о том, что Linux должен
следовать по пути Windows и тоже включать в ядро графическую систему, в
какой-то момент стали самым популярным занятием линуксоидов.
Люди в теме прекрасно понимали, что на самом деле переносить всю
графику в ядро ни в коем случае нельзя и что наряду с незначительным
поднятием производительности мы получим массу самых разнообразных
проблем, от раздувания ядра до уничтожения совместимости со всем
существующим софтом. Однако для некоторых идея переноса графической
системы в ядро показалась интересной и правильной. В результате появился
Framebuffer UI — оконная система, работающая внутри ядра и базирующаяся
на интерфейсе Framebuffer (fbdev), этаком универсальном средстве
программирования любого видеоадаптера в ядре Linux.
Вся графическая система представляла собой небольшой модуль ядра,
реализующий примитивную оконную систему, и набор стандартных приложений,
таких как часы, календарь, терминал и даже плеер MPEG–2. В распоряжении
программистов также была библиотека libfbui для создания собственных
приложений. Назначение этой системы и ее преимущества перед
классическими оконными системами в пространстве пользователя так и
остались непонятными.
Текстовый оконный интерфейс
Если графическая система в ядре Linux тебя не сильно впечатлила, то,
может быть, впечатлит многооконная система, работающая в текстовом
режиме? Еще в 1993 году Массимилиано Гиларди решил развить свои скиллы в
программировании, написав оконную систему, работающую прямо в терминале
DOS, то есть отрисовываемую только с помощью ASCII-символов без
перехода в графический режим. На определенном этапе разработки он
заметил, что однозадачный DOS никак не может быть использован для
запуска сразу нескольких приложений в разных окнах (а реализовать
псевдомногозадачность а-ля Windows 3.11 он не смог), и, раздосадованный,
забросил проект.
Но на этом история не закончилась. Открыв для себя многозадачный
Linux в конце 90-х, Джиларди решил возобновить проект и начал процесс
портирования Twin в среду Linux. В результате он довел самую бесполезную
оконную систему в мире до очень приличного уровня развития. Последняя
версия, выпущенная в 2012 году, поставляется с солидным набором
приложений, поддерживает несколько типов раскладок окон, много опций
конфигурирования, несколько одновременных сессий с возможностью
детачинга и многое-многое другое.
Опробовать это чудо ты можешь практически в любом дистрибутиве,
установив одноименный пакет. Рекомендую запускать в голой консоли, так
как в иксах система задействует графические возможности для
декорирования окон. В общем, прощайте, screen и tmux, до здравствует
Twin!
Кластер из Raspberry Pi
Дешевый и расширяемый Raspberry Pi заработал огромную популярность
среди гиков всех мастей. Одни используют его для управления световыми
приборами, другие — для автоматизации приготовления кофе, третьи — в
качестве медиацентра, а некоторые — для создания кластеров большой
вычислительной мощности. Энтузиасты из Саутгемптонcкого университета
сделали такой кластер из 64 плат Raspberry Pi и конструктора Lego.
Как и сам Raspberry Pi, кластер получился со всех сторон бюджетный.
Специальные стойки не заказывали, а собрали из конструктора Lego, для
соединения задействовали обычный Ethernet-свитч, для питания
использовали 13 удлинителей по пять розеток в каждом, в которые были
вставлены недорогие 5-вольтовые блоки питания. Общий объем постоянной
памяти кластера составил 1 Тб (64 SD-карты по 16 Гб), а объем
оперативной памяти — 16 Гб. Общая стоимость — 4 тысячи долларов.
Для вычислений использован стандартный протокол MPI и набор
Python-скриптов. Все исходники, а также инструкции по сборке ребята
выложили в Сеть.
Так что если у тебя появятся лишние четыре тысячи долларов и желание
заиметь собственный кластер, то этот адрес тебе пригодится.
Долгожданный релиз: FreeBSD 2.2.9
Первого апреля 2006 года в мейл-листе FreeBSD появилось сообщение о
доступности для загрузки долгожданной FreeBSD 2.2.9, выпущенной спустя
семь с половиной лет с момента выхода версии 2.2.8. Казалось бы, всего
лишь одна из многочисленных гиковых шуток, однако выяснилось, что релиз
действительно существовал и его можно было загрузить с официальных
FTP-серверов FreeBSD Foundation.
Среди наиболее существенных изменений отмечались: переход на XFree86
версии 3.3.3, с улучшенной поддержкой 2D-акселерации, поддержка Quake 2
в эмуляторе Linux, а также изменение кода драйвера wd(4), благодаря
которому теперь обеспечивалась поддержка дисковых накопителей
фантастического размера в 137 Гб! В планах на релиз 2.2.10 было
избавление от дестабилизирующих возможностей, типа разделяемых библиотек
и модулей ядра, а в дальнейшем — долгожданное воссоединение с 386BSD.
Lua в ядре ОС
И вновь о сумасшедших программистах из проекта NetBSD. Кроме запуска
ядра в браузере и порта на тостер, эти ребята решили воплотить в жизнь
еще более сумасшедшую идею — встроить в ядро скриптовый язык. Эта идея
витала в сообществе NetBSD еще с 2010 года, но только в начале 2013-го
они наконец-то собрались с духом закоммитить наработки в ветку current.
Идея всего проекта в том, чтобы встроить в ядро минималистичный
интерпретатор языка Lua (который, кстати, называется Lunatik) и, таким
образом, получить возможность быстрой модификации частей ядра для
проверки новых идей, конфигурирования подсистем ядра, эффективной
разработки драйверов и тому подобных вещей. Предполагается, что наличие
Lua в ядре также существенно снизит порог вхождения новых разработчиков в
команду.
Звучит, кстати, довольно здраво, особенно если учитывать, что Lua —
один из самых простых для изучения языков, а его интерпретатор — один из
самых компактных. По этой причине Lua любят использовать в движках игр.
Десять мест, где ты не ожидал увидеть Linux
Мотоцикл. Mavizen TTX02 — первый гоночный электромотоцикл,
оснащенный бортовым компьютером, с помощью которого можно выполнять
мониторинг работы систем байка и тюнинг. Поддерживается подключение
через USB-порт или по Wi-Fi.
Большой адронный коллайдер. Полностью управляется с помощью Linux-систем.
Система управл ения трафиком Сан-Франциско. Построена на базе машин
с процессором Freescale PowerQUICC II Pro и работает под управлением
Linux.
Калькулятор TI Nspire CAS CX. Цветной экран 320 × 240, 100 Мб
внутренней памяти, 64 Мб оперативной. Операционная система Linux, языки
программирования TI-BASIC, Lua, а также Си и ассемблер после
джейлбрейка.
Управление воздушным трафиком. В 2006 году Федеральное управление
гражданской авиации США перевело все машины, управляющие воздушным
трафиком, на Linux.
Поезда. Linux-система используется в Японии для управления прибытием и отправлением скоростных поездов.
Подводная лодка. В 2004 году компания Lockheed Martin спустила на
воду атомную субмарину, все бортовые компьютеры которой работают под
управлением Red Hat Linux.
Доение коров. В 2005 году шведская компания DeLaval начала
выпускать роботизированную технику для доения коров. Вся система
работает под управлением Linux и индивидуально выбирает время доения для
каждой коровы.
Биржа Нью-Йорка. Все машины, обслуживающие Нью-Йоркскую фондовую биржу, работают под управлением Linux.
Автомобили. В сентябре 2011 года Toyota, Nissan, Jaguar и Land
Rover вступили в состав новой рабочей группы Automotive Grade Linux
(AGL), которая занимается разработкой бортовых автомобильных систем на
базе мобильной операционной системы Tizen с ядром Linux и основанным на
веб-технологиях интерфейсом.