Содержание статьи
В этом году в мире Open Source произошло не так уж много действительно знаковых и интересных событий: в основном допиливался существующий софт и развивались операционные системы. Поэтому сенсаций не будет, и мы тихим и спокойным шагом пройдемся по прошлому, дабы вспомнить все самое важное в мире открытого софта.
Linux 3.19–4.3
Начнем, конечно же, с ядра Linux. За год Линус Торвальдс успел зарелизить ядро пять раз, да еще и инициировал процесс перехода на четвертую ветку, не внесшую, впрочем, ничего кардинально нового (чистая формальность). Изменений, как обычно, огромное количество, однако большинство из них связано с драйверами и узкоспециализированными подсистемами.
Остановимся на самых важных:
- Поддержка технологии MPX (Memory Protection Extensions), которая будет доступна в процессорах на ядре Intel Skylake и Goldmont (версия ядра 3.19). MPX позволяет реализовать защиту от срыва стека, передавая процессору сведения о допустимых границах области памяти для каждой ссылки на память. Технология не будет работать из коробки и потребует как минимум пересборки софта.
- Драйвер AMD KFD, реализующий новый интерфейс для GPGPU-вычислений (ядро 3.19). Естественно, с полной поддержкой OpenCL.
- Механизм наложения патчей «на живую», без перезагрузки системы (ядро 4.0). В своей реализации напоминает старые ядерные руткиты: память ядра модифицируется напрямую, ссылка на одну функцию заменяется ссылкой на альтернативную реализацию в модуле ядра. Соответственно, работает только в отношении мелких патчей с исправлением безопасности без возможности модификации структур данных и базовых частей ядра.
- Поддержка шифрования в файловой системе ext4 (ядро 4.1). Причем шифруется не вся ФС целиком, а только отдельные каталоги или даже файлы, а ключ шифрования задается во время монтирования ФС. В качестве алгоритмов используются AES-256-XTS для данных и AES-256-CBC для имен. Однако размер и права доступа на файлы остаются видимыми, что создает проблему в том случае, когда стоит задача не только скрыть данные, но и не позволить определить их тип.
- Распределенный RAID 1 (ядро 4.1). Позволяет отзеркалировать данные по узлам кластера при помощи DLM (Distributed Lock Manager).
- Драйвер PMEM, превращающий энергонезависимую память (NVM, non-volatile memory) в виртуальный диск (ядро 4.1). NVM намного быстрее (и дороже) SSD и обеспечивает производительность, близкую к оперативной памяти. Раньше ядро воспринимало такую память только как часть оперативной.
- Поддержка виртуальных GPU (ядро 4.1). Решение позволяет закрепить часть критичных для обеспечения высокой производительности ресурсов реального GPU за каждым виртуальным окружением, не требуя при этом никаких модификаций окружения и позволяя использовать внутри ВМ обычные видеодрайверы. Технология разработана в Intel, поэтому пока поддерживает только их видеоадаптеры.
- Поддержка стекового подключения модулей LSM (Linux Security Modules) (ядро 4.2). Позволяет подключать модули обеспечения безопасности один к другому для организации сложных конфигураций. Например, теперь можно подключить специализированные LSM-модули в качестве надстройки поверх SELinux, Smack, TOMOYO или AppArmor.
- Драйвер AMDGPU (ядро 4.2). Отныне открытый и закрытый драйверы видеоадаптеров AMD будут использовать один и тот же ядерный модуль, реализующий базовую функциональность, тогда как Catalyst будет лишь надстройкой над этим модулем. Пользующиеся открытыми драйверами, однако, разницы не заметят.
- Удаление драйвера ext3 (ядро 4.3). Отныне за монтирование ext3-разделов отвечает драйвер ext4.
- Сборка по умолчанию с поддержкой IPv6 (ядро 4.3). Размер образа ядра увеличился на 270 Кбайт.
- Поддержка виртуальных таблиц маршрутизации (VRF — Virtual Routing and Forwarding) (ядро 4.3). Теперь изолированные контейнеры могут использовать собственные таблицы маршрутизации.
Ну и немного скандалов, интриг, расследований. Под конец года сообщество разработчиков покинула Сара Шарп (Sarah Sharp), которая мало того что является разработчиком стека USB 3.0, так еще и входит в технический совет Linux Foundation. Причина: грубость и неуважение разработчиков друг к другу. Чуть позже вслед за ней ушел Мэтью Гарретт (Matthew Garrett), один из директоров Фонда свободного ПО и создатель метода запуска Linux на системах с UEFI Secure Boot (за который получил премию). Оба продолжат участвовать в разработке, но с сообществом решили не пересекаться.
Хакер #204. Шифровальщик для Android
Ubuntu 15.04, 15.10
За год Ubuntu обновился два раза. В обоих случаях — никаких кардинальных изменений интерфейса, дистрибутив остается на Unity 7, а все силы брошены на разработку Unity 8. Ubuntu 15.04 «Vivid Vervet» («Яркая верветка») увидел свет 23 апреля и, если не считать обновлений софта и багфиксов, включал в себя два наиболее значительных изменения: перевод дистрибутива с Upstart на systemd (с опциональной возможностью загрузки с Upstart) и новый инструмент командной строки Ubuntu Make. Последний позволяет в одну команду развернуть окружение разработки для разных языков и сред. Реализована поддержка Android, Go, Dart, окружений IDEA, PyCharm, WebStorm, RubyMine, PhpStorm и Eclipse. Для сравнения: полное окружение разработчика Android в Ubuntu стандартными средствами устанавливается в девять команд, с помощью Ubuntu Make — в одну.
Кроме того, подготовлены первые сборки двух новых вариантов дистрибутива: Snappy Ubuntu Core и Ubuntu MATE. Первый — это форк Ubuntu Core для умных устройств, систем домашней автоматизации, дронов и автономных роботов. Система формируется как единый образ, готовый для заливки на устройство, обновление происходит атомарно. Ubuntu MATE, в свою очередь, вариант Ubuntu с рабочим столом MATE — модернизированный GNOME 2 с классическим рабочим столом.
22 октября состоялся релиз Ubuntu 15.10 «Wily Werewolf» («Хитрый оборотень»). Это уже, скорее, инкрементальный релиз. На этот раз Unity подверглась небольшому тюнингу, включая поддержку перемещения пиктограмм с Dash на рабочий стол и управление списком результатов с клавиатуры. Unity 8, которая была запланирована на включение в релиз 16.04 (но уже не будет включена), предложена как ознакомительная версия. Доступны музыкальный проигрыватель Music player и почтовый клиент Dekko.
Новая версия базируется на ядре Linux 4.2 и включает в себя LibreOffice 5.0.2, Shotwell 0.22, Chromium 45, Rhythmbox 3.2.1 и другие приложения. Продолжена работа по более тесной интеграции дистрибутива с компонентами systemd. Steam Controller теперь работает из коробки, достаточно установить Steam и запустить его в полноэкранном режиме. Расширено количество платформ и сред разработки в Ubuntu Make.
Парад релизов *BSD
За год обновление получили все четыре BSD-системы, а команда NetBSD даже выпустила мажорный релиз, работа над которым продолжалась более двух лет. Как и обычно, изменений в BSD намного меньше, чем в Linux, а сами они носят не столь кардинальный характер, но здесь тоже есть на что посмотреть. Особенно в NetBSD, разработчики которой славятся смелостью идей и не колеблясь воплощают их в жизнь.
Начнем с FreeBSD 10.2. Релиз минорный — разработчики активно пилят 11-ю версию, поэтому изменения носят характер багфиксов и небольших доработок, включая обновления драйверов. Из наиболее интересных изменений можно отметить расширение поддержки ARM: добавлена поддержка систем Exynos 5420 Octa и плат Toradex Apalis i.MX6, также появился драйвер bcm2835_cpufreq для управления частотой на Raspberry Pi, реализованы средства корректного завершения работы на платах BeagleBone Black. Гипервизор bhyve теперь поддерживает аппаратные расширения SVM и AMD-V процессоров AMD, для виртуальных дисков реализована поддержка команды DSM TRIM. Обновлены многие драйверы.
NetBSD 7.0 получилась куда более интересной. Это не просто мажорный релиз, это первая версия системы, в которую включили реализацию механизма исполнения Lua-скриптов в ядре. Теперь любой желающий с минимальными знаниями в программировании может заскриптовать ядро, расширив его функциональность или добавив новую. Фактически на Lua теперь можно писать даже драйверы! Зачем это нужно? Для быстрого прототипирования и проверки идей.
Из других важных нововведений можно отметить поддержку мультиядерных процессоров ARM, драйверы DRM/KMS для GPU Intel и Radeon, реализацию распараллеленного USB-стека на многопроцессорных системах, множество улучшений файрвола NPF и демон blacklistd, защищающий от брутфорса SSH, named и ftpd. Последний особенно хорош тем, что интегрируется с пакетным фильтром, так что не создает лишней нагрузки на процессор. Сборки NetBSD 7.0 доступны для 58 архитектур, включая 16 различных семейств CPU. В новой версии появилась поддержка новых платформ ARM:
- Raspberry Pi 2;
- ODROID-C1;
- BeagleBoard, BeagleBone, BeagleBone Black;
- MiraBox;
- Allwinner A20, A31: CubieBoard2, CubieTruck, Banana Pi и другие;
- Freescale i.MX50, i.MX51: Kobo Touch, Netwalker;
- Xilinx Zynq: Parallella, ZedBoard.
OpenBSD за год обновилась два раза: версия 5.7 и юбилейная 5.8, приуроченная к 20-летию проекта. Как и обычно, основное внимание разработчики уделили безопасности: режим защиты памяти W^X для адресного пространства ядра, защита от перекрытия областей памяти в memcpy, генератор arc4random для системных вызовов семейства rand(), сброс генератора случайных чисел при выходе из сна, полный перевод базовой системы на формат PIE, безальтернативное использование алгоритма blowfish в утилите passwd, использование SHA-512 при генерации начальных номеров TCP, удаление кода поддержки procfs и модулей ядра, новая утилита file с разделением привилегий и изоляцией системных вызовов, усиленная проверка заголовков исполняемых файлов ELF.
Кроме того, в версии 5.7 появился драйвер xhci с реализацией одноименной спецификации USB 3.0. Из базовой поставки удалены nginx и sendmail, которые можно установить из портов либо использовать OpenSMTPD и HTTP-сервер от команды OpenBSD. В 5.8 утилиту sudo заменили на doas (первая устарела и была излишне сложна) и начали работу над технологией изоляции tame, разделяющей все системные вызовы на группы, которые пользователь может разрешить приложению.
Кроме того, разработчики начали работу над собственным гипервизором VMM. В результате должно получиться некое подобие KVM из Linux, но с некоторыми отличиями в виде поддержки архитектуры i386, задействования механизма теневых страниц (shadow paging), вложенной виртуализации и устаревшей периферии. Ожидается, что под управлением VMM можно будет запустить любую ОС с поддержкой драйверов virtio. Другими словами: «работает под KVM, заработает и у нас».
Обновилась и DragonFly BSD (версия 4.4). В частности, были обновлены драйверы radeon и i915, переработана система локали, ну и по традиции обновились файловые системы HAMMER и HAMMER 2. Последняя примечательна высокой производительностью и поддержкой таких возможностей, как распределение данных на несколько хостов в режиме multi-master, снапшоты с возможностью их отдельного монтирования (причем даже на запись), квоты для каталогов и сжатие данных.
Браузеры
Из других событий в первую очередь хотелось бы отметить появление нового браузера Vivaldi, созданного под руководством бывшего главы Opera Software. Vivaldi примечателен двумя вещами. Во-первых, при его развитии основное внимание будет уделено функциональности и кастомизируемости, то есть тем самым чертам, за которые любили Opera (ныне превратившуюся в очередной клон Google Chrome). Во-вторых, Vivaldi, базируясь на Chromium, фактически использует только его движок, тогда как весь интерфейс написан с использованием веб-технологий: HTML, JavaScript, CSS. Это позволяет тонко настроить и кастомизировать браузер любому, кто хоть чуть-чуть понимает, что такое HTML-теги. Представленный в январе браузер уже к ноябрю добрался до бета-версии.
А раз уж мы заговорили о браузерах, то стоит отметить и то, что Chrome/Chromium и Firefox обновились за год пять раз каждый. Причем если изменения в самих браузерах не так уж и интересны (косметические поправки в интерфейсе, новые API, новые блобы), то связанные с ними события более чем. Например, в конце года Google объявила о прекращении поддержки 32-разрядных Linux-систем. Так что все владельцы стареньких нетбуков либо идут лесом, либо пересаживаются на Firefox.
Отметились и мозиловцы. Кроме того что многопоточный движок Servo допилили до приемлемого состояния, они также решили отказаться от XUL (XML User Interface Language), языка, на котором написан интерфейс браузера и который в свое время стал его отличительной чертой и особенностью, позволяющей расширениям модифицировать интерфейс. Частично это связано с тем, что XUL несовместим с Servo, частично с желанием разгрузить браузер от лишнего кода. Самое же интересное в том, что XUL решено заменить на HTML, по сути так же, как это сделано в Vivaldi.
Также представители Mozilla заявили, что добавленный в Firefox 35 механизм защиты от отслеживания (активируется через установку переменной privacy.trackingprotection.enabled в about:config) позволил сократить время загрузки страниц на 44%. В реализации механизма задействован список disconnect.me, в который внесены сайты, отслеживающие пользователя через iFrame- и JavaScript-вставки. Кстати, данный механизм активирован по умолчанию в режиме «инкогнито» начиная с Firefox 42, выпущенного третьего ноября.
Выводы
На этом все, ребята. Мы, конечно, могли бы коснуться и других тем, например выпуска новых версий GNOME и KDE, а также того, что происходит в мире мобильных технологий. Но первые обновились незначительно (как говорится, «установи и посмотри»), а вторым у нас посвящена отдельная рубрика, и смешивать все в кучу не хотелось бы.
С наступающим!
Новости одной строкой
12.03 — хостинг открытых проектов Google Code официально закрыт
25.03 — релиз GNOME 3.16
28.04 — релиз nginx 1.9.0
07.07 — появился порт Docker для FreeBSD
01.08 — поддержка FreeBSD 8 прекращена
25.08 — релиз окружения рабочего стола KDE Plasma 5.4
28.09 — создатели Vagrant представили инструмент деплоя приложений Otto
20.10 — релиз SteamOS 2
31.10 — релиз GNU Hurd 0.7
02.11 — релиз окружения рабочего стола Cinnamon 2.8
03.11 — представлен Neovim, полностью переработанный вариант редактора Vim
12.11 — в продаже появились первые игровые консоли на базе SteamOS
18.11 — релиз сетевого анализатора Wireshark 2.0
23.11 — представлена NodeOS, операционная система на базе ядра Linux с окружением исполнения на базе Node.js
05.12 — Microsoft заявила об открытии JavaScript-движка браузера Edge