Sep 1st, 2019

Немного о быстрой (и тихой) загрузке

Данная запись дополняет мою прошлую заметку про загрузку Linux без экранных сообщений. В этот раз я покажу, как можно организовать загрузку в обход Grub2, т.е. обойтись без стороннего загрузчика вообще. Нам понадобится система с поддержкой UEFI и примерно 5 минут времени.

Современных компьютеров без UEFI днём с огнём не сыщешь, и даже моя рабочая лошадка родом из 2011 года прекрасно поддерживает эту технологию. В Linux имеется замечательная утилита efibootmgr, управляющая загрузочными записями прямо в ПЗУ материнской платы. С помощью Efibootmgr можно добавлять, удалять и менять приоритет загрузки этих записей. Efibootmgr может добавить запись, ссылающуюся на grub2-efi — в этом случае вы увидите меню Grub вашего дистрибутива. Но можно сразу указать путь к vmlinuz и initrd, а также произвольный набор параметров ядра, и тогда Linux будет загружаться безо всякого Grub. Если у вас на ПК установлена только одна ОС, то это прекрасный способ сделать процесс загрузки более быстрым и плавным.

Для реализации этой идеи для начала нужно скопировать образы vmlinuz и initrd из /boot куда-нибудь внутрь EFI-раздела. В моём случае это директория efi/opensuse. Я переименовал эти файлы в initrd.img и vmlinuz.efi для удобства, но названия могут быть любыми. Далее следует ввести команду примерно такого вида:
efibootmgr --create --disk /dev/sda --part 1 --label "opensuse" -u --loader '\efi\opensuse\vmlinuz.efi'
"root=/dev/sda2 initrd=/efi/opensuse/initrd.img resume=/dev/sda2 splash=silent plymouth.enable=0 quiet elevator=noop logo.nologo acpi_osi=Linux acpi_backlight=vendor audit=0 rd.timeout=120 scsi_mod.use_blk_mq=1 dm_mod.use_blk_mq=1 systemd.show_status=0 rd.udev.log-priority=3 ipv6.disable=1 loglevel=3 vt.global_cursor_default=0 systemd.log_target=null systemd.journald.forward_to_console=0 systemd.default_standard_output=null systemd.default_standard_error=null init=/bin/systemd"

На что нужно обратить внимание:

  • У меня EFI-раздел находится на /dev/sda1, а корневой — на /dev/sda2 (у вас может быть иначе);
  • Я отключил заставку Plymouth, указал планировщик ввода/вывода Noop, отключил IPv6 и убрал вывод сообщений на экран (тут довольно много опций, с избытком);
  • Нужно не забыть передать UEFI-загрузчику путь до Systemd. В openSUSE это /bin/systemd, но в других системах может быть иначе, например в Росе это /lib/systemd/systemd.

Далее нужно указать приоритет записей:

efibootmgr -o <номер 1>,<номер 2>...

Можно просто удалить все остальные записи кроме нашей:

efibootmgr -b <номер записи> -B

Дополнительно имеет смыл залезть в UEFI BIOS и включить там быструю загрузку, когда система не показывает логотип производителя, не пытается опрашивать USB-устройства и т.д.

Мой результат: от нажатия кнопки питания на системном блоке до полной прогрузки KDE Plasma проходит 25 секунд, причём половина этого времени проходит ещё до загрузки Linux.

Вот и всё. Если ваш дистрибутив всё равно загружается слишком долго, посмотрите вывод команды systemd-analyze blame. Скорее всего, какой-то сервис инициализируется слишком долго — иногда его проще отключить.

P.S.

Для отключения неопрятных сообщений в консоли, которые мигают, например, перед выключением/перезагрузкой системы, существует простой хак:
sudo systemctl disable getty@tty1.service
Теперь у вас нет консольного терминала, но зато выглядит всё просто отлично!

KMail и Akonadi

Принято считать, что openSUSE нынче уже не тот. Ошибок, мол, много. Но вот показательный пример.

В декабре все три используемых мною дистрибутива — Rosa, OpenMandiva и openSUSE — собрали KDE Applications 18.12. Я являюсь активным пользователем почтового клиента KMail, который использует для доступа к данным подсистему Akonadi. На данный момент результаты забега следующие:

Rosa. Akonadi работает и даёт настроить почтовый ящик Gmail. Но, при попытке скачать письма валится ошибка akonadi_imap_resource. Работать нельзя.

OpenMandriva. Akonadi не работает и даже не запускается. Кое-как я смог его запустить, но настроить почтовый ящик не вышло: всё падает и отваливается ещё на этапе авторизации в Google, причём падает всё тот же akonadi_imap_resource.

Обе системы ещё не довели до ума KDE Applications 18.12. В Росе сейчас внутреннее тестирование и QA (напомню, что релиза Rosa R11 пока не было), да и OpenMandriva 4.0 всё ещё находится в состоянии Alpha 1. Вроде как и нельзя никаких претензий предъявить.

Но в openSUSE Leap 15 репозитории с новыми версиями KDE, KF5 и приложений тоже считаются тестовыми и не до конца стабильными, однако в этой системе у меня KMail работает идеально. Никаких ошибок, программа безупречно запускается и корректно получает почту. Выходит, что не так уж и нестабильна openSUSE?

Sep 20th, 2018

Russian KDE community

KDEНаконец-то увидел свет новый движок портала https://kde.ru, посвященного русскоязычным пользователям KDE и проету KDE в частности. И хотя сам я уже давно KDE не пользуюсь, до сих пор многое связывает меня с этим проектом. Именно с разработки KDE начался мой путь в мир свободного ПО. Еще будучи студентом я познкомился с проетом GNU, Linux и Qt3, а уже после, в Германии – когда я начал работу в SUSE – занимался разработкой и портированием стека KDE4 на openSUSE (больше всего постов в этом блоге именно о KDE и openSUSE). Мы тогда еще сидели на svn, помните что это такое? 🙂
После SUSE я забросил проект KDE, опробовал и пересел на различные window managers. До тех пор, пока не устроился разработчиком LiMux (Kubuntu на основе собственной management-системы на основе LDAP) тут, в Мюнхене. И хотя занимался я в основном security-проектами,  было приятно вспомнить и почти весь KDE стек, который мы создавался более чем 10 лет назад.

Это очень интересный проект. Да, он большой, очень большой, и не всегда это хорошо, тем не менее он обладает самой на мой взгляд продуманной архитектурой. Программировать KDE всегда было здорово не только из-за мощи Qt и самым новейшим инструментам, используемым в проекте, но и благодаря идеям, заложенным в основу структуры стека его компонентов. Очень важным в проекте KDE всегда было сообщество людей, его разрабатывающих. Его окружило много молодых инженеров, открытых для новых, а порой даже и для откровенно сумасшедших идей. Это так освежало. Это так вписывалось в природу свободного ПО. Я никогда не забуду эти хиппи-тусовок по всей Европе, куда мы добирались по ночам и самыми сумасшедшими способами, доклады, подготавливаемые и читаемые друг другу просто ради удовольствия.

Я рад, что и в России есть люди, продолжающие разработку и продвигающие этот проект. Хочу пожелать вам, ребята, удачи. Постарайтесь сохранить эту атмосферу, сводящую с ума и увлекающую за собой. Я думаю, это самый большой стимул для разработки ПО. Увлечение процессом, удовольствие от наконец-то найденного решения, восхищение его элегантностью и простотой. Все это KDE, все это – сообщество людей, его продвигающих.

May 25th, 2018

Leap 15.0 Beta testing: Fujitsu U757 Laptop

2 месяца назад нашел незначительный, но все же баг в ядре openSUSE Leap 15.0 (тогда еще это была Beta, build 174). Баг связан с лептопом Fujitsu U757 и воспроизводиться должен во всех дистрибутивах, т.к. проблема в upstream коде ядра.
Суть проблемы связана с поддержкой мультифункциональных клавиш, отвечающих за включение/выключение wifi.

Чтобы удостовериться, что kernel не обрабатывает нажатие клавиш, можно воспользоваться libinput. Это так называемый input device driver для X.org window system. С его помощью можно легко (в userland) отлавливать события, которые должны быть обработаны ядром. Так вот он показывал, что комбинация клавиш Fn+F5 при нажатии не давала никакого эффекта (F5 – это wifi-клавиша).
Тем не менее, при помощи rfkill wireless можно легко включить/отключить:

# rfkill list
0: phy0: Wireless LAN
        Soft blocked: no
        Hard blocked: no
# rfkill block 0
# rfkill list
0: phy0: Wireless LAN
        Soft blocked: yes
        Hard blocked: no

Как оно обычно и бывавает, много времени уходит на то, чтобы собрать достаточно материала. Долгое время я не был уверен, что делаю все верно. С толку сбивало и то, что в других дистрибутивах проблема воспроизводилась один в один. Я отключил Bluetooth в BIOS, чтобы только одно устройство влияло на работу LED на корпусе лептопа. Таким образом, LED должен был загораться при включении wireless и наоборот – тухнуть при выключении. Этого не происходило…

Я решил опробовать другие ядра. Я ставил ядро из репозиториев Kernel:stable (на тот момент это было ядро 4.15.13) и Kernel:HEAD (4.16 rc7-1). Это не решило проблему.

Спустя какое-то время я нашел в сети описание этой проблемы и патч. Я отправил bugreport. Такаши, один из разработчиков в Kernel Team, сказал мне, что патч будет принят в upstream в 4.17-rc1. В стандартное Leap-ядро этот фикс сразу же не попал, т.к. баг не слишком критичен, НО Такаши пересобрал ядро с этим исправлением для SLE15 и Leap15. Leap пользователи могут установить его отсюда. Это исправление будет в Leap совсем скоро официально, в виде maintenance update.

После установки этого ядра libinput отлавливает events:

# libinput debug-events

 -event7  KEYBOARD_KEY   +3.51s  KEY_RFKILL (247) pressed
  event7  KEYBOARD_KEY   +3.51s  KEY_RFKILL (247) released

В качестве заключения я хочу сказать всем разработчикам: слушайте свою интуицию, не давайте никому сбить вас с толку. Полагайтесь в первую очередь на свой опыт. Не слушайте коллег, которые подгоняют логику под увиденный результат. К сожаленью, часто бывает, когда вы стоите в шаге от правильного решения, но все же решаете посоветоваться, коллеги начинают вас переубеждать. Защайтесь. Не ленитесь перепроверить все еще раз.

Удачи! Have a lot of fun =)

Mar 29th, 2018

Будущее наступает

Прочитав заметку Кая Уве о глобальном меню в Plasma 5.13, я уже приготовился было ждать июня, когда эта версия официально выйдет, однако меня ждала хорошая новость! В новой версии openSUSE Leap 15.0, которая тоже ещё не вышла, но уже довольно давно доступна как бета-версия, уже давно всё сделано и работает! Напомню, что речь идёт о поддержке глобального меню не только для Qt-приложений, но и для GTK-программ. Это значит, что в Plasma теперь можно добиться гораздо лучшей интеграции чужеродных приложений (не основанных на Qt5) и наслаждаться отличным и единообразным видом программ, использующтх разные графические библиотеки.

Картинки покажут всё лучше слов, поэтому смотрим:

Screenshot_20180330_004552

Для начала — список установленных пакетов, без которых ничего получится

Затем нужно просто добавить на рабочий стол верхнюю панель с меню приложений. В Plasma 5.12 это стало проще, так как больше не нужно идти в настройки стиля и выбирать там расположение меню. Теперь вы просто добавляете стандартную панель с меню и всё происходит автоматически. Так, к примеру выглядит у меня Gimp:

Screenshot_20180330_005111

А так — Inkscape:

Screenshot_20180330_005222

C Libreoffice нужно немного повозиться. Во-первых, потребуется установить VCL-плагины для интеграции пакета c GTK2 и GTK3 (увы, VCL-плагин для KF5 разрабатывается, но пока не готов). В openSUSE это пакеты libreoffice-gtk2 и libreoffice-gtk3. Затем нужно запустить любой из нужных вам компонентов, предварительно объявив переменную SAL_USE_VCLPLUGIN, например так:

SAL_USE_VCLPLUGIN=gtk oowriter

Результат:

Screenshot_20180330_005713

Это просто кра-со-та! Теперь в моём любимом KDE глобальное меню почти так же универсально как и в macOS, и уже явно не хуже чем vala-appmenu, которое работает в XFCE и Mate.

 

UPD.

Среди Linux-блогеров, которых я читаю, есть некий Alex285, являющийся большим фанатом Gnome. Он ведёт интересный блог World of Gnome (WOGUE), откуда удобно узнавать о самых свежих новостях, связанных с Gnome. Я слежу за этой темой для того, чтобы знать, что из себя представляет современный Gnome Shell и мир GTK3-приложений. Вдруг, в какой-нибудь параллельной вселенной или мире розовых пони так случится, что Gnome станет быстрее, удобнее и надёжнее чем KDE Plasma, и тогда мне придётся перейти в стан гномолюбов — хотя бы для того, чтобы оставаться честным с самим собой. К счастью, в реальном мире  всё происходит ровно наоборот: последние версии Gnome (3.22-3.28) работают в моём VirtualBox заметно медленнее чем Plasma, а про убогий набор функций Gnome можно говорить бесконечно.

Так вот, этот самый блогер внезапно очень нервно и агрессивно отреагировал на новость про глобальное меню в KDE. Дескать, это всё не нужно и вообще, вместо меню разработчикам нужно работать над стандартным API приложений, чтобы их функции были доступны из HUD (это такая вываливающаяся сверху область уведомлений со строкой поиска). На это мне есть что сказать: я прекрасно понимаю природу гнева гномовода по поводу глобального меню в KDE. Причина здесь в зависти и бессильной злобе от того, что в конкурирующем настольном окружении хорошо работают штуки, которых в Gnome нет и в ближайшее время точно не будет. У нас есть KRunner (лучшая в своём классе реализация HUD), но самое главное — в KDE меню приложений можно настраивать. Его можно оставить в окне самого приложения, можно закинуть в кнопку в заголовке окна, можно вынести в отдельный плазмоид на панель, можно вообще отключить. Любой, кто пытался освоиться в Gnome Shell, может подтвердить убогость, бедность и малую информативность как оболочки в целом, так и отдельных GTK3-программ. Пользователь Gnome не видит какие программы у него запущены, но он также не видит функций по управлению документом, открытым в GTK3-программе до тех пор, пока не перейдёт к этой программе. Эта «слепота» приводит к тому, что в Gnome нужно тратить дополнительное время на то чтобы постоянно переключаться между обзором запущенных программ и рабочим приложением, а потом отдельно искать, где у приложения меню (и есть ли оно там вообще). Современные тенденции в развитии GTK3 приводят также к тому, что цельность таких рабочих окружений как XFCE и Mate размывается и становится эклектичной. Говоря по-русски, вместо продуманного рабочего стола вы рискуете получить помойку, щедро сдобренную фантазиями дизайнеров Gnome. По этой, и по многим другим причинам, KDE Plasma — лучший рабочий стол на сегодняшний день.

Mar 15th, 2018

Leap 15.0 Beta testing: configuring 802.1x (auth with RADIUS)

В этом посте я попытаюсь рассказать как настроить IEEE 802.1x в openSUSE. Сейчас Leap 15.0 в активной стадии бета-тестирования, поэтому возьмем её и для клиента и для сервера, чтобы убедиться, что все работает как надо, и никаких неприятных сюрпризов в финально-официальном релизе нам ждать не придется.

Если в двух словах, 802.1x это стандарт сетевой аутентификации. Работает на втором OSI уровне и определяет механизм контроля доступа к сети на основе принадлежности к порту и проверки x509-сертификатов. Доступ к сети получают только клиенты прошедшие аутентификацию. В качестве “системы, проверяющей подлинность” или просто аутентификатора я буду использовать CISCO SG300-28 28-Port Gigabit Managed Switch. Для проверки он будет обмениваться сертификатами с authentication server, который мы попытаемся развернуть на отдельной машине и который будет колдовать для нас x509 TLS-сертификаты.

Authentication server

Когда я только задумывал этот пост, я представлял это себе как “пустяковое дело на 20 минут”. Сразу же после установки я понял, что “приключение начинается”. Инсталлер разучился отключать firewall и включать OpenSSH. Фича? Аха щас… BUG! Первый баг. Попался 🙂 Пытался сначала достучаться до людей в IRC, все бестолку. Три дня думал, что я что-то пропустил и искал информацию. Так ничего и не найдя, я заглянул в ML, где меня ждал успех.

Очень не приятно после установки заходить в систему и отключать firewalld и включать sshd… но на сейчашний момент это именно то, что мы имеем:

# systemctl stop firewalld
# systemctl disable firewalld
# systemctl start sshd
# systemctl enable sshd

Напомню, что мы тут просто тестируем 802.1x. На практике отключать firewall конечно же не обязательно, достаточно открыть UDP/1812 и UDP/1813 порты.

Приступаем к установке authentication server. Мы будем использовать freeradius. Последняя стабильная версия – 3.0.16 – вышла два месяца назад. В openSUSE пакет называется freeradius-server. Устанавливаем его:

> sudo zypper in freeradius-server
> rpm -qa freeradius-server
freeradius-server-3.0.16-lp150.1.3.x86_64

После установки переходим в /etc/raddb/certs. Тут все будем делать от root.

# ll /etc/raddb/certs
total 48
-rw-r----- 1 root radiusd 6155 Feb 20 06:18 Makefile
-rw-r----- 1 root radiusd 8714 Feb 20 06:18 README
-rwxr-x--- 1 root radiusd 2706 Feb 20 06:18 bootstrap
-rw-r----- 1 root radiusd 1432 Feb 20 06:18 ca.cnf
-rw-r----- 1 root radiusd 1103 Feb 20 06:18 client.cnf
-rw-r----- 1 root radiusd 1131 Feb 20 06:18 inner-server.cnf
-rw-r--r-- 1 root radiusd  166 Feb 20 06:18 passwords.mk
-rw-r----- 1 root radiusd 1125 Feb 20 06:18 server.cnf
-rw-r----- 1 root radiusd  708 Feb 20 06:18 xpextensions

Документация о том, как сгенерировать сертификаты (самый минимум) находится в файле README. 3 шага: генерация root-сертификата (ca.pem), генерация сертификата сервера (server.pem) и клиента (client.pem). Необходимые параметры нужно указать в конфиг файлах: ca.cnf, server.cnf и client.cnf соответственно.

Несмотря на то, что все кажется простым и логичным, генерация TLS/SSL сертификатов может быть оказаться достаточно запарным процессом. Особенно если вы нечасто этим занимаетесь. Дело в том, что сообщения об ошибках не всегда понятны. Давайте рассмотрим пару примеров.

Во-первых, нигде не сказано, что пароль в /etc/raddb/certs/server.cnf и /etc/raddb/mods-enabled/eap должен быть один и тот же. Вот в этом месте файла /etc/raddb/mods-enabled/eap надо быть осторожней:

        tls-config tls-common {
                private_key_password = myTEST1eap
                private_key_file = ${certdir}/server.pem

Вот так выглядит часть /etc/raddb/certs/server.cnf файла, где нужно быть чуточку внимательней:

[ req ]
prompt                  = no
distinguished_name      = certificate_authority
default_bits            = 2048
input_password          = myTEST1eap
output_password         = myTEST1eap
x509_extensions         = v3_ca

Если пароли окажутся разными, то при запуске cервера мы получим в логах вот это:

Wed Mar  7 17:08:15 2018 : Info: Debugger not attached
Wed Mar  7 17:08:15 2018 : Error: tls: Failed reading private key file "/etc/raddb/certs/server.pem"
Wed Mar  7 17:08:15 2018 : Error: tls: error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt
Wed Mar  7 17:08:15 2018 : Error: tls: error:23077074:PKCS12 routines:PKCS12_pbe_crypt:pkcs12 cipherfinal error
Wed Mar  7 17:08:15 2018 : Error: tls: error:2306A075:PKCS12 routines:PKCS12_item_decrypt_d2i:pkcs12 pbe crypt
error
Wed Mar  7 17:08:15 2018 : Error: tls: error:0907B00D:PEM routines:PEM_read_bio_PrivateKey:ASN1 lib
Wed Mar  7 17:08:15 2018 : Error: tls: error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib
Wed Mar  7 17:08:15 2018 : Error: rlm_eap_tls: Failed initializing SSL context
Wed Mar  7 17:08:15 2018 : Error: rlm_eap (EAP): Failed to initialise rlm_eap_tls
Wed Mar  7 17:08:15 2018 : Error: /etc/raddb/mods-enabled/eap[14]: Instantiation failed for module "eap"

Согласитесь, с ходу не ясно в чем тут может быть проблема.
Остальные пароли могут быть (должны быть) разными.

Во-вторых, можно забыть про команду:

# openssl dhparam -out dh 2048

В bootstrap скрипте она есть, но если вы решите сгенерировать сертификаты дважды и отчистите все командой

# make destroycerts

то make удалит и файл /etc/raddb/certs/dh, а при make ca.pem или make server.pem файл dh снова создан не будет. При запуске сервера это приведет к следующему сообщению в логах:

Wed Mar  7 16:18:44 2018 : Info: Debugger not attached
Wed Mar  7 16:18:44 2018 : Error: Unable to check file "/etc/raddb/certs/dh": No such file or directory
Wed Mar  7 16:18:44 2018 : Error: rlm_eap_tls: Failed initializing SSL context
Wed Mar  7 16:18:44 2018 : Error: rlm_eap (EAP): Failed to initialise rlm_eap_tls
Wed Mar  7 16:18:44 2018 : Error: /etc/raddb/mods-enabled/eap[14]: Instantiation failed for module "eap"

Обратите внимание, что в README файле написано, что удалять старые сертификаты нужно вот так:

# rm -f *.pem *.der *.csr *.crt *.key *.p12 serial* index.txt*

т.е. без dh файла. Это, пожалуй, единственная проблема, суть которой ясна из сообщения об ошибке.

И вот еще одина проблема, с которой, я надеюсь, никому не придется столкнуться:

failed to update database
TXT_DB error number 2

Она возникает по причине того, что CN (Common Name) для генерируемого сертификата такое же как и для CA-сертификата.

Последний шаг настройки RADIUS – прописываем имя, ip и secret клиента (остальное можно оставить как есть) в /etc/raddb/clients.conf. Клиент в данном случае – наш cisco-коммутатор. Шаг простой, но очень важный. Без него RADIUS не будет отвечать коммутатору. Secret тут должен быть как можно сложнее.

После того как все сертификаты созданы, для уверености их можно сверить:

# openssl verify -CAfile ca.pem client.crt client.pem
client.crt: OK
client.pem: OK

Если все в порядке, запускаем сервер, проверяем созданные им сокеты:

# systemctl start radiusd

# lsof -i :1812
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
radiusd 4811 root    7u  IPv4 179990      0t0  UDP *:radius 
radiusd 4811 root    9u  IPv6 179994      0t0  UDP *:radius 

# lsof -i :1813
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
radiusd 4811 root    8u  IPv4 179993      0t0  UDP *:radius-acct 
radiusd 4811 root   10u  IPv6 179995      0t0  UDP *:radius-acct

# tcpdump -vv -n -i eth0 -S port 1812 -l -A -X

Последняя команда может помочь при отладке. Вы видете, что именно ушло в сеть. Даже если вы подробно не знакомы с EAP, можно заметить отличие удачных попыток авторизации и не очень удачных 🙂 Если по той или иной причине возникли проблемы, log radius-сервера находится в /var/log/radius/radius.log.
Если все же возникнет какая-то новая проблема, которая тут не описана, и вы начнете искать информацию в инете и найдете примеры программы radtest(1) и попытаетесь ее запусить… в openSUSE она лежит в отдельном пакете:

> rpm -qf $(which radtest) 
freeradius-server-utils-3.0.16-lp150.1.3.x86_64

Я не стал описывать ВСЕ, что мне пришлось пережить за эти пару дней… и так этот пост разбух и стал походить на статью. Возможно я напишу еще что-то о самой openssl в отдельной статье. Тема PKI очень интересная и нужная. Ее понимание требуют многие работадатели.

Но вернемся к нашему тестированию. Переходим к настройке нашего коммутатора. Пока новых жуков не обнаружено 🙂

Authenticator

Настройка аутентификатора (или “системы, проверяющей подлинность”) сводится к простому добавлению в список RADIUS-серверов только что настроенной машины. Security => RADIUS => Add:

В появившемся окне просто добавляем IP-адрес и secret, который мы указывали /etc/raddb/clients.conf на RADIUS-сервере. Secret – это фактически единственный механизм аутентификации между cisco-коммутатором и сервером проверки подлинности (RADIUS). Эта часть сети в 802.1x-схеме подразумевает достаточно доверительные отношения между хостами, т.е. остается практически не защищенной. Поэтому повторюсь – secret должен быть как можно сложнее.

Client

Переходим к последнему шагу – настройке клиента.
Да, друзья мои, в качестве клиента openSUSE сейчас использовать увы, не получится. Для тестирования 802.1x мне пришлось взять какой-то другой GNU-дистрибутив. Но обо всем по порядку.

Сначала я поставил Leap 15.0 Beta с Plasma 5.12 LTS. networkmanagement отказался создавать соединение, и я сначала подумал, что проблема в созданных мной сертификатах. Я потратил несколько дней на проверку и перегенерацию сертификатов. Я устанавливал Leap с GNOME… с Xfce… и вообще без X. Паралельно я проверял все в Tumbleweed, и это меня и сбило с толку. Там соединение тоже не работало и я подумал, что проблема на 8 OSI уровне 🙂
Через несколько дней я попробовал другие GNU-дистрибутивы и оказалось, что, используя те же самые сертификаты и конфиги, там соеднинение удается создать одной командой…

BUUUUG! Да, черт побери, и сидит он так глубоко, что ни одним NM-апплетом его не достать. Он воспроизводится и через nmcli(1):

# cat /etc/NetworkManager/system-connections/LEAP_8021x
[connection]
id=LEAP_8021x
uuid=de2f2a7c-33cc-4d92-ae3b-785575dffddc
type=ethernet
permissions=user:alex:;

[ethernet]
auto-negotiate=true
mac-address-blacklist=

[802-1x]
ca-cert=/home/alex/ca.pem
client-cert=/home/alex/client.crt
eap=tls;
identity=GNOME
private-key=/home/alex/client.pem
private-key-password=GNOME

[ipv4]
dns-search=
method=auto

[ipv6]
addr-gen-mode=stable-privacy
dns-search=
method=auto

# nmcli con reload

# nmcli con up LEAP_8021x
Secrets are required to access the wired network 'LEAP_8021x'
Warning: password for '802-1x.identity' not given in 'passwd-file' and nmcli
cannot ask without '--ask' option.
Error: Connection activation failed: Secrets were required, but not provided

Secret я использую и в конфиге и прописывал его и в апплетах GNOME и KDE. Не принимает ни в какую.
Пробовал испльзовать ‘–ask’, результат тот же: спашивает, вводишь пароль… снова спрашивает, снова вводишь… снова спрашивает…

# nmcli con up LEAP_8021x --ask
Secrets are required to access the wired network 'LEAP_8021x'
Identity (802-1x.identity): GNOME
Secrets are required to access the wired network 'LEAP_8021x'
Private key password (802-1x.private-key-password): *****
Secrets are required to access the wired network 'LEAP_8021x'
Identity (802-1x.identity): GNOME
Secrets are required to access the wired network 'LEAP_8021x'
Private key password (802-1x.private-key-password): *****

Я использовал и wpa_supplicant(1). Результат такой же. Он просто повисает.

Чтобы довести дело до конца я взял Kubuntu 17.10. Выбор был не случайным, т.е. это не был “первый дистрибутив, который попался под руку”. Пока я искал инфу по поводу проблем с 802.1x, я нашел этот BUG. Я не уверен, что это именно то, но повеселил меня не тот факт, что проблема в upstream’е, а то, КАК это решили в Ubuntu 🙂 Ребятами из RedHat (хотя там ссылка на GNOME, а оттуда на Debian…) было предложено и другое решение. Следить за изменениями я уже не стал. Хотя разобраться до конца все же стоило бы.

В Kubuntu 17.10 просто кидаешь конфиг в /etc/NetworkManager/system-connections/802.1x и перезапускаешь сеть (без ‘–ask’), как я показал выше. Понадобятся 3 сертификата: клиентские сертификаты client.pem и client.crt (к ним надо знать secret) и root-сертификат CA.pem. При генерировании новых клиентских сертификатов нужно лишь обновить client.cnf (имя и secret) и сделать

# make client.pem

Помните, что в случае повторной генерации root-сертификата придется перенастраивать уже настроенные клиенты.

Итак, ситуация Leap 15.0 пока очень и очень не классная. BUG’ов в beta хватает. О них знают, и можете быть уверенными, друзья мои, их исправят.
Оставайтесь на светлой стороне. И да прибудет с вами удовольствие от работы с openSUSE 🙂

openSUSE Leap 15.0: call for testers

Самый разгар тестирования следующей major-версии openSUSE – Leap 15.0. Beta доступна уже без малого месяц. Как и обычно, качество системы зависит от нас с вами, друзья. Для тех, кто никогда не принимал участия в разработке openSUSE, но хотел бы наконец-то помочь, самое время скачать Leap 15.0, установить и погонять его по самые не балуй 🙂 на своей машине (хотя бы виртуальной) или машине своего коллеги 😀 Помните, что beta-версия нестабильна и может сломаться в самом непредсказуемом месте.
О всех найденных ошибках надо сообщить нам в bugzilla.

Важно понимать, что система разрабатывается силами сообщества, и ее качество в большей мере зависит он нас с вами. Ошибается тот, кто думает, что в Нюрнберге все и так сделают как надо и даже лучше. Там ребята работают главным образом над SLE – тем, что приносит SUSE деньги. Дистрибутив openSUSE отдан сообществу: энтузиастам, дизайнерам, программистам… и простым пользователям. У нас есть права менять его как мы захотим. Более того – от нас этого ожидают. Не будем же делать вид, что это не так.

Итак, что мы имеем на сейчашний момент? На момент написания этого поста актуальным является build139. Второй и третьей официальной beta, как это было когда-то, не будет. Теперь beta меняется по принципу rolling release. Уже где-то через месяц, в апреле/мае, мы перейдем на фазу release candidate. Было бы здорово найти как можно больше и начать работать над исправлениями ДО начала этой фазы.
Так как следующий Leap получится мажором, поддерживаться он будет не 12 (в отличии от минорных релизов, привязанных к SUSE Linux Enterprise Service Packs), а 36 месяцев.

Так что же собственно тестировать? Для каждого из нас есть свои use cases. Кто-то админит самый обычный web- и mail-сервер, кто-то не может представить свою жизнь без какой-то хитроумной конфигурации Kerberos, кто-то в Leap видит исключительно desktop-систему и захочет посмотреть на сколько стабильна в ней работает Plasma 5.12 LTS. Я, к примеру, планирую протестировать sddm c PAM, а так же freeradius сервер со своим 802.1x L3-свитчем. Также будет интересно посмотреть, получится ли обновить свой Leap до нового Leap 15.0.
Кстати, в Leap 15.0 используется новый rpm из Tumbleweed – версии 4.14.1 (с целым вагоном и маленькой тялежкой SUSE-патчей). Возможно там получится что-то найти.

Я оставлю ссылку на эту таблицу. Туда вы можете добавить себя и добавить комментарий, если что-то сломано и не заработало (если заработало, тоже можете оставить комментарий). Помните только, что если что-то не заработало, и вы написали там об этом, мы будем ожидать, что вы откроете report в bugzilla, где и будет проходить дальнейшее обсуждение проблемы.
Возможно вам будет также интересно узнать о состоянии автотестирования.

Актуальное состояние пакетной базы Leap 15.0 можно посмотреть вот тут.
Там же есть ссылка на изменения, которые ожидают Leap 15.0.

Если у вас возникли вопросы, я всегда буду рад помочь вам. Оставляйте комментарии или просто пишите на alexander_naumov @openSUSE.org. Меня так же можно найти на freenode IRC-сервере. Мой ник там – anaumov. Удачи!

Nov 8th, 2017

Linux: личный опыт в этом году

Хочу поделиться своим опытом тестирования дистрибутивов Linux в медленно уходящем 2017 году. Напомню, что мой профиль использования — это классическое настольное применение, также известное как desktop computing. Если говорить конкретно, то свою тестовую машину я использую для интернет-сёрфинга, проигрывания медиа-контента, каталогизации фотографий, а также для написания, сканирования и печати документов. Существенный момент: я регулярно пишу обзоры новинок открытого ПО, которые вы можете читать в журнале Linux Format, поэтому для меня жизненно важно иметь возможность устанавливать самые новые программы. Если есть готовые бинарные сборки — хорошо, нет — не беда, я могу и сам собрать что угодно из Github.com.

С точки зрения «железа», использовалась следующая конфигурация:

  • Intel Core i3 2105 с материнской платой DH67BL-B3;
  • Встроенная графика Intel HD 3000 Graphics;
  • 8 Гб ОЗУ (DDR3/1333)
  • Intel SSD 120GB

В качестве подопытных операционных систем выступали интересующие меня дистрибутивы Linux: openSUSE 42.3, elementaryOS 0.4.1, Rosa Fresh R9, Mageia 6. Каждая из этих систем прожила в моём компьютере не менее 2 месяцев и оценивалась с точки зрения удобства, функциональности и эстетики. Ниже я поделюсь своими впечатлениями о каждой из них.

openSUSE 42.3

Данный дистрибутив имеет массу преимуществ для тех, кто по тем или иным причинам, предпочитает RPM-системы. Здесь есть очень удобный и надёжный инсталлятор от Suse Enterprise Linux (SLE) и довольно толковый центр управления YaST. Я сознательно выбрал более консервативную и стабильную версию Leap вместо всегда супер-свежей Tumbleweed по простой причине: в Leap я могу подключить дополнительные репозитории и обновить множество компонентов до самых свежих версий, получив на выходе нечто похожее на Tumbleweed. Но при этом, если что-то пойдёт не так, я всегда могу временно отключить такие репозитории и откатиться обратно. Не стоит забывать, что команда ‘zypper dup’ не столько обновляет пакеты, сколько приводит их в соответствие с текущим набором включённых репозиториев, то есть, её можно использовать и для даунгрейда (отката). Я установил новые версии для Qt5, KF5, KDE, KDE Extras, настроил себе более свежий компилятор GCC 7, перешёл на свежую версию ядра. У меня появилась самая новая версия рабочего стола KDE Plasma 5, которая автоматически обновлялась почти без моего участия. В openSUSE имеется отличная интеграция PackageKit и Zypper, поэтому для установки обновлений достаточно пару раз щёлкнуть мышью по значку в системном лотке. Даже пароль вводить не нужно!

opensuse1
Что и говорить, обновления в openSUSE ставить легко и приятно, однако за последствия никто не отвечает…

Однако, со временем стали вылезать недостатки такой системы: приверженность самым новым версиям вышла мне боком. То и дело после очередного обновления что-нибудь отваливалось или начинало работать не так. Либо Segmentation fault, либо частые падения самой оболочки Plasma (да, она всё ещё падает иногда!), либо временная потеря функциональности (Virtualbox может не работать с самым новым ядром). Проблемы можно обычно решить с помощью маневрирования с репозиториями, но со временем, опять же, дистрибутив превращается в гремучую смесь пакетов от разных поставщиков. Поддерживать стабильность вручную оказалось довольно трудозатратно. Всё таки, openSUSE Leap наиболее надёжен именно в своём изначальном виде, со стандартным набором репозиториев (плюс можно безболезненно использовать Packman), но тогда он теряет важную для меня особенность — свежесть пакетов. Оставаться на Qt 5.6 и GCC 4.8 для меня неприемлемо: я знаю дюжину проектов на Github, которые нельзя скомпилировать с этим устаревающим инструментарием.

Есть и ещё одна особенность проекта openSUSE, которая меня расстраивает. Дело в том, что инфраструктура проекта работает слишком уж нестабильно и непредсказуемо. По выходном где-то раз в месяц останавливается сервис software.opensuse.org, якобы на «плановые работы». Несколько раз я сталкивался с неработающим сервисом OBS и по будним дням – вместо страницы поиска пакетов вылетал Error 404. У openSUSE имеется два датацентра: один в Нюрнберге (Германия) и второй где-то в США. Стабильность работы обоих отражает общую картину с обеспечением качества (quality assurance, QA) в openSUSE – лично я не вижу ни стабильности, ни качества, но зато воочию наблюдаю постоянно прерывающийcя uptime.

opensuse2

При «настольном» использовании система обрастает репозиториями как снежный ком. Ну, по крайней мере, у меня 🙂

По этим причинам я в итоге принял решение перенести openSUSE 42.3 в виртуальную среду VirtualBox и использовать этот дистрибутив по мере надобности. Мне по-прежнему нравится очень удобная функция Zypper, позволяющая мигом установить все зависимости для сборки того или иного пакета:

sudo zypper --si d <package>

Пользовательская аудитория у openSUSE всё ещё значительная, и в частных репозиториях на OBS можно найти очень много интересных программ, которые уже кто-то успел собрать.

elementaryOS 0.4 «Loki»

Это один из самых популярных отпрысков Ubuntu. Система очень хорошо себя зарекомендовала у новичков в мире Linux, и вполне заслуженно, как мне кажется. Система elementaryOS 0.4 «Loki» основана на Ubuntu 16.04 LTS и отличается повышенной стабильностью, надёжностью и увеличенным сроком поддержки. Последнее особенно удобно: можно один раз установить Loki в качестве запасной ОС и вспомнить о ней пару лет спустя. После установки всех накопившихся обновлений с системой не случится ничего страшного, всё продолжит работать как часы. Вроде бы, ничего особенного, но многие другие Linux не переносят такого к себе отношения. Очень круто и удобно то, что elementaryOS полностью совместима с Ubuntu, а значит я могу подключить любой PPA-репозиторий для Ubuntu, и он гарантированно будет работать. Де-факто Ubuntu является наиболее распространённым дистрибутивом Linux в мире, и для него создано множество таких частных PPA-источников. Почти любая Linux-версия какой-либо программы имеется в уже собранном виде в чьём-то PPA, а значит мне не нужно возиться со сборкой исходников. Это удобно.

Одной из причин, почему я использую elementaryOS, а не саму Ubuntu, является рабочий стол Pantheon, который является оригинальной разработкой проекта elementary. Он основан на библиотеках GTK3 и Granite, и включает в себя отдельные элементы Gnome 3 (хотя их тут немного). Pantheon очень быстр и по своему поведению напоминает пресловутую macOS, как внешне, так и идеологически.

eos1

Вроде бы всё чисто и аккуратно, но активная вкладка в браузере очень слабо выделена, из-за чего работать неудобно. В дизайне elementaryOS не очень хорошо обстоят дела с контрастностью элементов.

Несмотря на то, что я не являюсь поклонником Debian и deb-дистрибутивов, наличие на компьютере elementaryOS для меня полезно, так как на свете существует некоторое число программ, которые очень легко установить в Ubuntu-подобных ОС, и очень трудно собрать где-либо ещё. Хороший пример: игра Machines vs. machines, которая опирается на QML-модули к Qt5, написанные в Canonical специально для Ubuntu. Это также относится к целому пласту программ, написанных в то время, когда в Canonical ещё делал ставку на Unity и Mir, и разрабатывал много специфических для Ubuntu компонентов. Другой пример – замечательный каталогизатор заметок Outwiker, который очень легко поставить из PPA и довольно муторно собирать вручную.

elementaryOS 0.4 могла бы быть идеальной настольной системой, но увы, она имеет свои недостатки, которые раскрываются после первых дней интенсивного использования. Во-первых, не все компоненты от Ubuntu 16.04 можно заменить более свежими версиями, и если программа требует самую новую GTK3, то мне гораздо проще накатить новейшую Fedora и собрать всё там, вместо ломания стабильной, но устаревшей GTK3 в elementaryOS. Во-вторых, кажущееся удобство рабочего окружения оборачивается совершенно дикими проблемами при каждодневной работе. Копирование файлов в Pantheon-files, каталогизация фотографий штатным приложением, веб-сёрфинг в Midori и Epiphany (Gnome Web) – всё это очень неудобно. Мало функций, мало настроек, невозможно что-либо изменить и перенастроить. Дополнительное наблюдение, которое, впрочем, относится не столько к elementaryOS 0.4, сколько ко всем рабочим окружениям на GTK3 – это крайне скудная и ограниченная функциональность прикладных программ. Я уже писал заметку о возмутительно убогом индикаторе погоды от проекта elementary, но с остальными приложениями из нового elementary AppCenter ситуация та же. Когда я подбираю свободные приложения для своей рубрики в журнале, я всегда отмечаю убожество и ограниченность программ на GTK3. Почти все они примитивны до безобразия, и при том часто ещё и нестабильно работают. Напротив, самые лучшие, развитые и функциональные приложения часто написаны на C++ и имеют интерфейс на Qt. Такое вот наблюдение 🙂

Наконец, я отмечаю всё возрастающую жадность разработчиков elementaryOS в отношение пользовательских донатов. Принцип Pay what you want – пример отвратительной жадности и истончающейся связи этих ребят с реальностью. Они заставляют ничем не виноватых людей чувствовать себя нищебродами каждый раз когда требуется скачать из AppCenter «условно-бесплатную» программу (с лицензией GPLv3, между прочим). Разумеется, это вовсе не означает что весь дистрибутив Loki 0.4 из-за этого плох.

eos2

Мы напишем недопрограмму на Vala и GTK3, а вы нам дадите немного денег. Видимо, в мире хипстеров растёт напряжение из-за недостатка донатов…

В итоге, elementaryOS живёт у меня на запасной разделе моего SSD и используется время от времени, в зависимости от задач и настроения.

Rosa Fresh R9

Мои отношения с этим российским дистрибутивом начались в 2012 году, когда в мае проект Rosalab презентовал версию Rosa Marathon. Этот релиз планировали поддерживать и обновлять аж 5 лет, что являлось прямым ответом на Ubuntu 12.04 LTS от британской Canonical. Увы, история Rosa Linux продолжила своеобразное «хождение по мукам» своего прародителя – французской Mandriva Linux. В 2011-2013 годах Rosa имела мощную финансовую подпитку от фонда NGI, организованным бывшим министром связи РФ Леонидом Рейманом. У компании имелся шикарный офис в Сколково и большой штат сотрудников. Именно в это время под руководством UX-дизайнера Кирилла Монахова был создан прекрасный набор фирменных значков Rosa и куча интересных модификаций для KDE. Многое из этого используется в дистрибутиве до сих пор.

Rd2012-new-icons

Отличная фирменная тема значков — это именно то, что меня всегда привлекало во внешнем виде Rosa Linux

Любопытно, что «тучные» годы Rosa Lab совпали с волной неистовой критики дистрибутива со стороны анонимусов и прочих человекоподобных с сайта Linux.org.ru. Дистрибутив ненавидели за то, что под него якобы попилили неисчислимые суммы бюджетных денег, а также за то, что он русский, а всё русское по определению толковым быть не может. Время показало, что оба обвинения были напрасными. С некоторых пор Rosa Linux существует под крылом НТЦ ИТ «Роса», имеет очень скромный штат сотрудников (не знаю, сколько их там точно, но вряд ли больше 10-15 человек) и в основном развивается за счёт образовавшегося сообщества. Интересно, что в наши дни у дистрибутива вполне неплохая репутация у Интернет-пользователей, никто Росу больше не ненавидит, но зато и будущее дистрибутива немного туманно: лично я боюсь, что проект может в любой момент умереть, и сообщество просто не справится с его поддержкой (например, кто-то должен оплачивать размещение сборочной среды ABF в датацентре).

После Rosa Marathon стартовала проект Rosa Fresh – версия дистрибутива с полускользящим режимом поддержки и обновления. «Полу-» означает, что в рамках базовой платформы у вас есть полноценная роллинг версия, а для перехода между платформами всё же рекомендуется устанавливать систему с нуля. Были выпущены две базовых платформы: 2014.1 и 2016.1, последняя является актуальной на данный момент.

Итак, какими особенностями обладает Rosa Fresh R9, основанная на платформе 2016.1?

  • Интеграцией дополнительных инструментов настройки (drak-приложений, унаследованных от Mandriva) в стандартный центр настройки KDE Plasma. Для сторонних программ сделаны соответствующие KCM-обёртки;
  • Свежими версиями рабочих окружений и прикладных программ. Версии пакетов в Rosa могут немного отставать от upstream, но зато в дистрибутиве организовано более толковое и тщательное тестирование новых функций. Если новая версия Plasma 5 несёт в себе регрессии и новые ошибки, пользователи Rosa получат её позднее, когда ошибки будут исправлены в корректирующих минорных релизах. Это не очень удобно для тех кому нужен bleeding edge (таким лучше подойдёт Manjaro или тот же Tumbleweed), но зато обеспечивает отличную стабильность системы. Однажды установленная Rosa Fresh может работать годами без сбоев;
  • Наличием огромного количества дополнительного ПО в репозитории Contrib. Стандартная поставка Rosa уже включает задействованный репозиторий Contrib, который по своему «богатству» не уступает, а иногда и превосходит знаменитый AUR от проекта Arch Linux. Я говорю сейчас не о формальном количестве пакетов, а о наличии всяких редких штук, вроде VoltAir, OilWar, Softmaker Freeoffice, которые сложно найти где-то ещё в готовом виде. В отличие от россыпи PPA-репозиториев в Ubuntu или частных OBS в openSUSE, содержимое Contrib централизованно пересобирается и тестируется средствами сборочной фермы ABF, что положительно сказывается на стабильности программ;
rosa2

Хотите поиграть в эту игру? Ставьте Rosa Fresh!

  • Возможностью скачать свежий промежуточный образ системы вместо того, чтобы накатывать огромный пласт обновлений поверх оригинального релизного образа. Это не полноценные nightly builds, но очень близко к ним. Это именно то, чего мне так не хватает в других дистрибутивах, особенно когда под рукой нет быстрого безлимитного Интернета (бывает и такое!);
  • Наличием дружного и адекватного сообщества на официальном форуме проекта. Активность там умеренная, и, к примеру, сообщество Ubuntu будет гораздо многочисленнее и более разговорчивым, однако форум Росы гораздо толковее, чем форум openSUSE, и бесконечно лучше того, что происходит в русском сообществе elementaryOS (напомню: ребята там зачем-то специально забросили свой форум и переместились в Telegram-канал, где быстро скатились в привычный для телеграма шлак).
rosa1

В разделе «Системное администрирование» содержатся инструменты, которые в других дистрибутивах разбросаны где попало.

В Росе довольно удобно заниматься сборкой программ из исходного кода, так как, с одной стороны, у нас есть здесь практически все инструменты и библиотеки для сборки (актуальных версий), а с другой, имеется довольной развитый инструментарий URPM, который содержит все неоходимые мне функции. Например, аналогом “zypper –si d” здесь выступает “urpmi –buildrequires”, а вместо “zypper dup” можно использовать “urpm-reposync”.

Разумеется, у Росы имеются и недостатки. Помимо неустойчивого положения дистрибутива и непонятных перспектив (а точнее – молчания со стороны НТЦ ИТ «Роса»), я бы отметил довольно архаичный инсталлятор и заброшенность прежних разработок (например, проигрыватель Rosa Media Player больше не развивается). Но в реальной эксплуатации это всё мелочи.

Rosa R9 является сейчас моей основной системой, и она меня полностью устраивает. Мне нравится то, что инфраструктура сборки этого дистрибутива находится на территории России, и помимо моей личной позиции, тут есть и практическая сторона: никакой тропический ураган или санкции США на реэкспорт ПО не могут повлиять на доступность Росы. Если вопрос с «американскими сервисами» был чисто политическим и никак не отразился в итоге на доступе к ним в РФ, то в конце августа этого года я лично столкнулся с тем, что моя Russian Fedora Remix 26 (какая ирония!) не могла достучаться до списка зеркал именно тогда, когда мне срочно нужно было сделать “sudo dnf update” – в это время в городке Ралейф бушевал ураган «Харви», который на несколько часов обесточил датацентр Red Hat. После этого я задумался: хочу ли я, чтобы мою работу с Linux определяли ураганы в стране вероятного противника? 😉

Mageia 6

Напоследок напишу немного о Mageia Linux. Это ещё один потомок почившей Mandriva Linux и в некотором смысле конкурент Rosa Linux. Я никогда особо интенсивно не использовал Mageia, так как в данном дистрибутиве исторически всегда наблюдались разброд, шатания и срывы сроков. Но я добросовестно прожил некоторое время с Mageia 6, так как в ней имеется портированный из Fedora пакетный менеджер DNF. С моей точки зрения, DNF является более перспективной технологией, чем URPM, и мне очень жаль, что в Росе пока нет DNF. Я пробовал портировать его самостоятельно, но это оказалось трудным заданием, и пока что я застрял где-то на сборке библиотеки Hawkey. В общем, я снимаю шляпу перед разработчиками Mageia за то, что они проделали отличную работу. Более того, в Mageia имеется графический интерфейс для DNF под названием Dnfdragora. Эта программа использует libYui и может интегрироваться с GTK3, Qt5 и ncurses. Такие штуки вызывают у меня зависть и восхищение!

mageia

Современный и быстрый менеджер пакетов, плюс отличный интерфейс к нему — это, безусловно, сильный ход разработчиков Mageia.

Что касается самого дистрибутива, то для начала я советую прочитать обзор от Dedoimedo. Сразу скажу, что с выводами этого уважаемого автора с согласен лишь отчасти. В принципе, Mageia 6 вполне можно использовать в качестве основной системы, особенно если вам нужен проприетарный драйвер Nvidia, однако я легко могу перечислить и недостатки данного дистрибутива:

  • Крайне скудное наполнение стандартных репозиториев (и небогатый выбор сторонних). Я уже как-то привык, что QtCurve, Kvantum, Cool Retro Term можно поставить сразу из репозиториев в Росе. В Магее так нельзя, увы;
  • Старые версии программ. Версия с Plasma 5 использует устаревший набор KDE Applications 16.12, которому скоро стукнет год. Остальные программы обновляются тоже крайне избирательно;
  • Странная приверженность к неудачным пережиткам Mandriva, например к Netapplet. Чтобы понять всю ущербность Netapplet по сравнению с NetworkManager (стандарт в большинстве другим дистрибутивов Linux), достаточно сравнить поведение Mageia и Rosa в VirtualBox: если на хосте меняются сетевые настройки, то NetworkManager в гостевой системе заметит это и автоматически перенастроится, а NetApplet в Mageia просто потеряет сеть до тех пор пока вы не сделаете “# service network restart”. Кстати, в Mageia почему-то нет sudo в стандартной поставке;
  • Довольно много багов. Например, смена языка и системной локали удивительным образом не влияет на некоторые программы. И таких мелочей в системе хватает.

В общем, если бы не DNF, то Mageia 6 вообще не стоило бы рассматривать.

В итоге, опыт использования подсказывает мне, что среди настольных дистрибутивов наиболее сбалансированным вариантом является Rosa R9 (а скоро уже выйдет и R10). Если вы по какой-то причине не любите Plasma 5, то можно использовать отдельную редакцию Росы с рабочим столом Gnome 3. В зависимости от вкуса, предпочтений и привычек вполне достойно установить Ubuntu 16.04 или elementaryOS 0.4, но использовать openSUSE Leap или Mageia скорее всего не стоит: количество ошибок и трудностей со временем приведёт к разочарованию.

Спасибо, что дочитали до конца. Подписывайтесь, ставьте лайки, и всё такое…

Aug 27th, 2017

Решение проблемы с долгой перезагрузкой в openSUSE

Этот баг долго не давал мне покоя, ещё с версии 42.1. Суть в том, что при выключении или перезагрузке система замирала на консольном приглашении на 60-90 секунд, и лишь потом выключалась. Поиск в Google, конечно же, выдавал кучу подобных жалоб от других людей, вместе с советами по решению проблемы. Но мне ничего не помогало: ни отключение служб, ни ручное отмонтирование разделов, ни ручное завершение всех процессов.

Наконец, мне удалось выяснить, что дело было в кривизне Systemd 228, используемой в openSUSE Leap. Мне помог рецепт, описанный тут. Быстрое решение выглядит так:

The bug can be worked around by creating a file /etc/sysctl.d/50-coredump.conf with the following contents:

kernel.core_pattern=core

That causes the kernel to write coredumps directly, bypassing the buggy systemd code.

Однако, так ядро будет при определённых обстоятельствах писать большие дампы в файл на корневом разделе. Чтобы избежать этого, можно скидывать дамп ядра в /dev/null:

sudo -i

ln -s /dev/null /etc/sysctl.d/50-coredump.conf

echo '* hard core 0' >> /etc/security/limits.conf

UPD.

За последнее время мне удалось выяснить, что в некоторых случаях описанный выше метод не помогает, но зато гарантированно помогает уменьшение таймаута, который использует Systemd для ожидания завершения пользовательских процессов. Нужно всего лишь изменить файл /etc/systemd/system.conf, раскомментировав параметр DefaultTimeoutStopSec и установив ему какое-нибудь небольшое значение. Например, так:

#DefaultStandardOutput=journal
#DefaultStandardError=inherit
#DefaultTimeoutStartSec=90s
DefaultTimeoutStopSec=5s
#DefaultRestartSec=100ms
#DefaultStartLimitIntervalSec=10s
#DefaultStartLimitBurst=5

Теперь больше никаких задержек при перезагрузке или выключении!

Jun 27th, 2017

openSUSE Conference 2017

В конце прошлого месяца разработчики openSUSE снова собрались в Нюрнберге, чтобы обсудить дальнейшее развитие дистрибутива и просто пообщаться и весело провести время вместе. В последние пару лет проект стал очень быстро меняться. К проекту присоединилось очень много новых людей. Новые идеи, которые они приносят, находят свое место в новых проектах, разрабатываемых для openSUSE. Даже используя все информационные каналы проекта openSUSE, тяжело уследить за всеми новшествами, включаемыми в проект, и просто меняющейся стратегией совета. Поэтому вопрос о посещении конференции, тем более, если вы мейнтейнер, долгого размышления не потребует 🙂


Конференция была открыта докладом Матиаса о LiMux. Краткая история проекта, его взлет, надежды и его падение… Явный пример того, на сколько опасны могут быть политики, пользующиеся властью для удовлетворения собственных предпочтений, и закрывающие глаза на интересы и желания населения. В настоящий момент я как раз работаю над этим проектом в администриции Мюнхена.

На конференции я снова встретился с Дмитрием, занимающимся проектом invis и продвижением Free Software решений на базе 1C в Германии. Беседовали о русскоязычном сообществе openSUSE, и о причинах его столь плачевного состояния. Я очень надеюсь, что сообществу получится преодалеть существующие проблемы и оно снова возьмет курс на развитие, как было в 2008-2010 годах.

Познакомился с Денисом Кондратенко из Киева и его женой. Очень приятная пара. Денис рассказывал о Ceph и EKG в openSUSE, а также о методах обработки метаданных в Elasticsearch. Мой личный опыт использования Elasticsearch ограничивается только BigData/Hadoop, поэтому и тут удалось узнать что-то новое.

Много новых иновационных идей было услышано от Ричарда. Он уже давно стал openSUSE evangelist’ом; его доклады об OBS или openQA можно услышать практически на каждой европейской Free Software конференции, посвященной GNU/Linux. Я всем советую посмотреть его доклад о Containerised Application.


Одним из спонсоров конференции в этом году стал fedora project. Fedora уже не первый год использует нашу систему openQA для автоматического тестирования linux-систем, а сотрудники RedHat уже во второй раз читают свои доклады на openSUSE Conference. В этом году это был доклад How semantic analysis of C and C++ ELF binaries can be used to analyze ABI changes, в прошлом году это были Enforcement of a system-wide crypto policy и Testing complex software in CI.

В общем, как и обычно, конферениция оставила приятное впечатление (пару фоток можно найти тут). И хотя в этом году она длилась всего 3 дня вместо 5, как в прошлом, информации для размышления я пролучил придостаточно. Её посещение в этом году не стоило мне ничего. Спасибо за это TSP. В следующем году она пройдет в Праге, куда я планирую поехать с семьей. Возможно там я встречусь и с теми, кто читает сейчас эти стоки 😉