Содержание

3.1. Версии ОС и ПО. Дистрибутивы Linux под E2K для теста.

Bitblaze Oberon 100L с Эльбрус 8С, Radeon RX580, двумя SSD Micron по 256 ГБ и 32 ГБ оперативной памяти (4 модуля DDR3-1600 по 8 ГБ) ко мне изначально приехал с Альт Линукс 9. Тогда я накатил Эльбрус ОС (OSL) 6.0.1 на второй SSD, чтобы оценить, как работает Эльбрус с ОС от МЦСТ.

Краткая информация об Эльбрус ОС 6.0.1 с версией ядра и драйвера GPU и LCC компилятора.

Скриншот 33. Краткая информация об Эльбрус ОС 6.0.1 с версией ядра и драйвера GPU и LCC компилятора.

Месяца 2 спустя я накатил ещё Альт Линукс 10 в качестве уже 3-й ОС.

Краткая информация об Альт Линукс 10, версии ядра и драйвера GPU и LCC компилятора.

Скриншот 34. Краткая информация об Альт Линукс 10, версии ядра и драйвера GPU и LCC компилятора.

Какое-то время пользовался Альт Линукс 9 и Эльбрус ОС 6.0, переключаясь между этими системами и проводя некоторые свои тесты. Но затем спустя время после установки Альт Линукс 10, когда 9-я версия уже стала не актуальна, я удалил Альт Линукс 9. В нём просто нет надобности, т.к. новые пользователи Альт Линукс не будут ставить старую версию, да и те, у кого стояла старая версия, потихоньку переезжают на Альт 10.

Параллельно я установил себе Эльбрус ОС (OSL, он же OS Elbrus) 6.2, затем Эльбрус ОС (OSL) 7.0 RC3 и, под конец, Эльбрус ОС (OSL) 7.1.

Краткая информация об Эльбрус ОС 6.2 с версией ядра и драйвера GPU и LCC компилятора.

Скриншот 35. Краткая информация об Эльбрус ОС 6.2 с версией ядра и драйвера GPU и LCC компилятора.

Краткая информация об Эльбрус ОС 7.0 RC3 с версией ядра и драйвера GPU и LCC компилятора.

Скриншот 36. Краткая информация об Эльбрус ОС 7.0 RC3 с версией ядра и драйвера GPU и LCC компилятора.

Краткая информация об Эльбрус ОС 6.2 с версией ядра и драйвера GPU и LCC компилятора.

Скриншот 37. Краткая информация об Эльбрус ОС 6.2 с версией ядра и драйвера GPU и LCC компилятора.

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

Самое большое различие кроется в версии компилятора: в версии OSL 7.1 стоит самый свежий компилятор на момент написания статьи: 1.26.09. А в версии OSL 6.0 стоит 1.25.19. К слову, Альт Линукс 10 имеет практически все те же компоненты, что и Эльбрус ОС 6.0.1: тут та же версия компилятора, 1.25.19, та же версия браузера Firefox (52.9.0 в OSL 6.0.1 и 68.12.0 в OSL 6.2 и более новых версиях), да и в целом по набору базовых инструментов Альт Линукс 10 больше походит именно на Эльбрус ОС (OSL) 6.0.1.

На случай, если забыли, что за компилятор такой этот LCC (mcst-lcc)? Это собственная разработка МЦСТ, которая по большей части совместима с основным компилятором в Linux для языков C и C++ под названием GCC (кроме пары специфических GCC-расширений вроде nested functions и VLAIS, вложенных функций и массивов переменной длины посреди структуры). Компилятор – это программа, которая переводит код, который вы написали на языке программирования (в случае с LCC – это языки C, C++ и Fortran) в машинный код, с которым уже работает процессор.

Что за машинный код генерируют разные версии компилятора, вы можете посмотреть на сайте ce.mentality.rip (респект Алибеку за этот ресурс).

Код на C++ (слева) и машинный код для E2K, сгенерированный компилятором (справа).

Скриншот 38. Код на C++ (слева) и машинный код для E2K, сгенерированный компилятором (справа).

Помимо разной версии компилятора, у OSL и Alt много отличий, и одно из них – графическое окружение. В OSL используется xfce4, тогда как в Alt по умолчанию используется mate (есть Альт и с xfce, и kde). Вы можете и по оболочке Терминала понять, что внешний вид в разных ОС различается.

Центр приложений в Альт Линукс 10.

Скриншот 39. Центр приложений в Альт Линукс 10.

У Альт Линукс и Эльбрус ОС имеется ещё одно важное различие: у Альта есть нормальные репозитории на серверах Базальт СПО. Т.е., в то время, когда у OSL все пакеты, которые вы можете установить, поставляются с образом диска, у Альт Линукс вы пакеты загружаете из интернета, а точнее – с серверов Базальт СПО. Т.е. у OSL вы новые версии пакетов получаете только с выходом новой версии ОС (за редким исключением), а у Альт Линукс постоянно обновляются пакеты в репозитории, и вы можете их обновлять как на любом другом нормальном дистрибутиве Linux.

И как следствие вы видите нормальный магазин приложений, как в Ubuntu, Windows или macOS. Но это не совсем магазин, там всё бесплатно, да и я им не пользовался, т.к. я в Linux привык всё ставить через Terminal. В Elbrus OS используется консольный менеджер apt. А что в Альте?

Менеджер репозиториев в Альт Линукс: Synaptic. Формат устанавливаемых пакетов: .rpm.

Скриншот 40. Менеджер репозиториев в Альт Линукс: Synaptic. Формат устанавливаемых пакетов: .rpm.

В Альт Линукс используется менеджер репозиториев Synaptic, наряду с ним можно устанавливать пакеты из репозитория и при помощи команды apt-get install, как и на любом другом Linux дистрибутиве на базе Debian.

Что такое менеджер репозиториев? Это программа, которая помогает вам устанавливать другие программы. В Windows и macOS зачастую вы устанавливаете программу сразу со всеми компонентами внутри этой самой программы. Иногда программы требуют для работы прочие компоненты вроде Microsoft Visual C++, но в целом вы ставите программу и всё работает.

В Linux же программы реже «статически линкуются», т.е. собираются из исходного кода так, чтобы включать в себя сразу все необходимые компоненты. Чаще программы компилируются так, что их зависимости (те самые другие компоненты/программы, на которые полагается программа и без которых она работать не будет), обычно поставляются отдельно. Вот и как в таком случае их ставить? Вы будете вручную устанавливать все программы и зависимости к каждой из них? Нет, конечно, поэтому и существуют менеджеры репозиториев, которые помогают вам устанавливать вместе с программой сразу все компоненты, требующиеся для её запуска. Такой подход имеет и плюсы, и минусы. Плюсы: у вас так меньше места расходуется на диске. Минусы: разные программы могут требовать разные версии зависимостей для запуска.

Допустим, одной программе требуется для запуска GLIBC версии 2.23, а другой – GLIBC 2.29. Вот и как быть в такой ситуации? Если вы работаете с Python, вы знаете, у Python есть свой пакетный менеджер PyPi, который позволяет вам устанавливать любые нужные модули для работы. В Python вы можете создать виртуальное окружение под каждый из своих проектов, и в рамках каждого из них установить именно те пакеты или те версии пакетов, которые нужны тому или иному отдельно взятому проекту. Вы просто изолируете друг от друга модули, используемые в разных программах. Делается это очень просто при помощи пакета python3-venv (или python3-module-virtualenv), имеющегося в репозиториях большинства Linux-дистрибутивов. Но с пакетами, устанавливаемыми пакетными менеджерами в вашей системе, всё не так просто. В рамках одного репозитория проблем обычно нет (например, если вам нужны только репозитории разработчика самого дистрибутива), но, если вам нужно использовать много сторонних репозиториев для большого числа разных программ, вы уже можете столкнуться с проблемами. Для изоляции компонентов в Linux тогда уж либо использовать виртуализацию (например, с Docker), либо париться с chroot.

Эльбрус этот вопрос особо не затрагивает, т.к. под него нативно доступны лишь 3 дистрибутива. Какой есть 3-ий помимо OSL и Альт?

Есть ещё Астра Linux, с которым, к сожалению, я совсем не работал, поэтому ничего, по большому счёту, о нём не скажу. Просто знайте, что он есть. Итого у нас 3 системы под Эльбрус, которые работают на нём нативно без всяких трансляторов: Эльбрус ОС (OSL), Альт Линукс и Астра Линукс.

Работая за Эльбрусом с OSL и Альт Линукс, я не сталкивался с тем, чтобы пакеты из репозитория конфликтовали друг с другом, а сторонних репозиториев под него нет, так что Эльбрус эта проблема не затрагивает.

Количество пакетов в Альт Линукс для архитектуры e2k и для других архитектур (в т.ч. x86_64).

Скриншот 41. Количество пакетов в Альт Линукс для архитектуры e2k и для других архитектур (в т.ч. x86_64).

В Эльбрус ОС (OSL) приложения можно устанавливать через apt или dpkg. Формат пакетов там .deb, т.е. такой же, как в Debian или Ubuntu.

В Альте же используется другой формат пакетов: не .deb как в Debian и Ubuntu, а .rpm как в Fedora и CentOS. Их устанавливать можно через Synaptic (утилита с графическим интерфейсом) и apt-rpm (консольная утилита). apt-rpm – это форк (модификация, ответвление) классического apt в Debian, но с поддержкой .rpm пакетов, которые используются в Fedora и CentOS. И Synaptic, и apt-rpm полагаются на libapt, т.е. под капотом у них общая библиотека, оттуда они берут всю инфу и между собой они не конфликтуют.

В Альте в репозиториях много пакетов, их почти 17 тысяч на момент написания статьи (смотрите на скриншоте слева на noarch и e2kv4). И это просто ахренеть. Для понимания, около 85% пакетов, доступных для x86_64 систем так или иначе доступны и на Эльбрусе (смотрите на скриншоте справа на x86_64 и noarch). Если не знаете, доступен ли нужный вам софт на Эльбрусе, или же его нужно будет самому собирать из исходного кода, просто откройте страницу на сайте Альт Линукса и воспользуйтесь поиском.

Telegram-Desktop 3.0.4 Beta из репозитория Альт Линукс.

Скриншот 42. Telegram-Desktop 3.0.4 Beta из репозитория Альт Линукс.

Просто для примера: в репозитории Альт Линукса доступен даже Telegram Desktop. Я пользовался версией 3.0.4 beta от 14-го сентября 2021-го года, которая на Эльбрусе стала доступна 8-го октября 2021-го года. Пока я писал эту статью, 9-го марта 2022-го года под Эльбрус портировали ещё более свежую Telegram Desktop, 3.2.5. Команда Telegram сама не занимается сборкой приложения под E2K, эту задачу на себя берут специалисты из Базальт СПО. Правда, на Эльбрус новые версии портируются не сразу после их выхода, а после того, как их сперва оттестируют в полной мере на x86 платформе, потому в репозитории Альт Линукс версия не самая свежая. Впрочем, тем, кто предпочтёт стабильность свежести, это только в радость.

OBS 26.1.0 на Эльбрус 8С с Альт Линукс 10.

Скриншот 43. OBS 26.1.0 на Эльбрус 8С с Альт Линукс 10.

В Альт Линукс есть не только пакеты, не присутствующие в OSL, вроде Telegram Desktop, но и те же самые пакеты, только с расширенными функциональными возможностями. Для примера возьму OBS, наиболее распространённую программу для стриминга и записи видео. В версии 26.1.0 из репозитория Альт Линукс есть возможность использования не только процессора для кодирования картинки в кодек H.264 (для сжатия видео, которое вы стримите на YouTube или любую другую платформу), но также для этой задачи вы можете задействовать и аппаратные блоки кодирования видео вашей видеокарты. Взгляните на тот самый пункт «FFMPEG VAAPI»: он доступен в Альте, но не доступен в OSL. VAAPI и есть тот самый API для общения процессора с блоками аппаратного кодирования и декодирования видео видеокарты, и он нам позволит эти блоки задействовать. Это в большой степени разгружает процессор. Зачем грузить процессор теми задачами, которые можно поручить видеокарте? И это прекрасно, что в Альт Линукс есть такая возможность.

VLC плеер в стандартной конфигурации не воспроизводит видео с HTTPS источников.

Скриншот 44. VLC плеер в стандартной конфигурации не воспроизводит видео с HTTPS источников.

Другой пример с софтом, который точно знают все: видеоплеер VLC от VideoLAN. Он есть и в OSL, и в Alt, но по умолчанию он не воспроизводит видео с HTTPS источников (например, YouTube). Почему?

Лог VLC при ошибке воспроизведения видео с HTTPS источника.

Скриншот 45. Лог VLC при ошибке воспроизведения видео с HTTPS источника.

Судя по логу VLC, причина в том, что отсутствует нужный модуль. И вот в чём дело: в OSL нельзя просто установить дополнительные модули с помощью того же пакетного менеджера. В OSL в целом мало пакетов. Ну, сами подумайте, они же поставляются на одном образе диска весом до 5 ГБ.

Установка VLC в Альт Линукс через Synaptic.

Скриншот 46. Установка VLC в Альт Линукс через Synaptic.

В Альт Линукс же всё иначе: вы можете при установке VLC отметить для установки ещё и плагин GNUTLS, который и позволит проигрывать видео, да и музыку, и всё, что вам надо, из веб-источников с HTTPS.

Запуск видео с YouTube в VLC после установки всех модулей для VLC.

Скриншот 47. Запуск видео с YouTube в VLC после установки всех модулей для VLC.

Я решил не париться и отметил для установки вообще все модули/плагины для VLC, доступные в Synaptic. Ну и после этого у меня вполне нормально инициировалось HTTPS подключение к YouTube в VLC.

Запуск видео с YouTube после установки всех плагинов через Synaptic.

Скриншот 48. Запуск видео с YouTube после установки всех плагинов через Synaptic.

Ну и спустя секунд 10 после того, как прогрузилось превью, у меня начало воспроизводиться видео. Короче говоря, все нужные модули для VLC есть в Альте. В OSL их нет. Да и вообще, пользоваться OSL на постоянной основе сложновато как-раз из-за малого числа пакетов в репозитории. Это ожидаемо, ведь все доступные для установки пакеты, вообще весь репозиторий у OSL поставляется просто на одном диске или образе диска.

Репозиторий Альт Линукс это словно манна небесная на Эльбрусе. Могу выразить лишь респект разработчикам, в частности – Михаилу Шигорину. Просто с ума сойти от того, сколько софта они портировали под Эльбрус (посмотрите на их работу в upstream). Мне тяжело представить, насколько сложнее было бы пользоваться Эльбрусом, если бы приходилось вообще каждую программу компилировать из исходного кода, т.к. каких-то её модулей в OSL не хватает, или в принципе её нет в репозитории.

Поэтому я проводил тесты преимущественно на двух системах: Альт 10 и OSL 7.1. В версиях OSL 6.0 и Альт 10 одни и те же версии компилятора и многого другого ПО, поэтому сравнивать OSL 7.1 с OSL 6.0.1 смысла нет, когда есть Альт 10. Да, Альт 10 имеет много различий с OSL 6.0.1: тут и графическое окружение (mate вместо xfce4), и отсутствие systemd в OSL, но в целом по части производительности Альт 10 даст нам те же результаты, что и OSL 6.0.1, и при этом у нас будут нормальные репозитории с кучей пакетов.