Cintu: Ubuntu и Cinnamon. «Десктопизация» системы

Алексей Федорчук

Как было сказано в конце предыдущего очерка, после установки с mini.iso получается чисто консольная система, способная к самонаращиванию. Используя последнюю возможность, её надлежит превратить в полноценный десктоп с поддержкой графического режима, среды Cinnamon и необходимых приложений. Так что темой нынешнего очерка будет описание того, как это сделать с минимальными затратами сил и времени.

Настройка консольного режима

Поскольку сразу после установки у нас нет не только рабочей среды, но даже ни малейших Иксов, основные действия по «десктопизации» системы придётся выполнять в «голой» консоли. А консольный режим по умолчанию в Ubuntu далёк от совершенства, в частности, из-за маленьких и некрасивых шрифтов. А локализованной русифицированной системе нет и намёка на русские буквы, заменяемые квадратиками. Казалось бы, мелочь — а она не даёт возможности читать сообщения в выводе команд, в том числе и сообщения об ошибках. Наконец, по умолчанию не включена служба консольной мыши, что лишает применителя такой полезной возможности, как помещение выделенного мышью текста в «мышиный» буфер и вставки его щелчком средней кнопки, функцию которой на современных скроллирующих мышах выполняет колёсико, а при отсутствии той и другого — одновременное нажатие на левую и правую кнопки.

Проще всего, если на скорую руку, решается задача чтения сообщений — командой

$ export LANG=C

система «разрусифицируется взад», и вывод всех последующих сообщений будет происходить по английски. Те, кто в ладах с языком Вильяма нашего, Шекспира, не смущаются экранными шрифтами и не нуждаются в консольной мыши, могут этим и ограничиться, переходя сразу к установке необходимых пакетов. Я же всегда (и во всех системах) настраиваю консоль «до упора»: во-первых, по привычке давних времён, когда работал по преимуществу в ней, во-вторых, из эстетических соображений, ибо в системе всё должно быть прекрасно. Тем более, что во всех deb based дистрибутивах это делается очень просто и всегда — с неизменно превосходным результатом. Для достижения которого служит такая команда:

$ sudo dpkg-reconfigure console-setup

Здесь первым делом определяется кодировка — к Ubuntu 15.10 товарищи зулусы наконец осознали, что по умолчанию она должна быть не ISO-8859-15, а та, что выведена на скриншотое:

robust_001

Далее выбирается набор символов — кириллица славянские языки. И здесь надо помнить, что в ненастроенной консоли пункты меню будут даны либо квадратиками, либо, если экспортировать локаль C, латиницей. Поэтому на скриншоте ниже требующися пункт отмечен — через один вниз от пункта с KOI8-R и KOI8-U, который опознается при любом раскладе:

robust_002

В качестве экранного шрифта для LCD-мониторов (а что, у кого-то остались трубочные?) настоятельно (и практически безальтернативно) рекомендуется TerminusBold:

robust_003

А размер шрифта (точнее, для консоли это плотность его матрицы) выбирается соответственно своему зрению. На скриншоте — та, что подходит мне:

robust_004

После этого «за кадром» происходит регенерация initrd, и автоматическое конфигурирование завершается. Но не наша вахта, потому что после перезагрузки консоль возвратится в исходное состояние — разве что вместо квадратиков будут кракозябры.

Одноразово (и только на текущей виртуальной консоли) это можно будет излечить такой командой:

$ sudo setupcon -f

Но проще увековечить это решение, для чего нужно в каталоге /lib/systemd/system/ отыскать файл systemd-vconsole-setup.service и, открыв его root’ом в любом редакторе (в дистрибутивах семейства Ubuntu для этих целей обычно используется Nano), в последней строке секции [Service] заменить

ExecStart=/bin/true

на

ExecStart=/bin/setupcon

После чего нашей консоли (точнее, всем её виртуальным терминалам) не страшны никакие происки и перезагрузки. Кроме обновлений ядра и установки каких-либо других пакетов, требующих регенерации initrd: после этого опять потребуется или команда setupcon в форс-режиме, или редактирование файла systemd-vconsole-setup.service. Каковое, к слову сказать, можно выполнить не только в редакторе, но и утилитой sed.

Теперь для достижения полной консольной эйфории остаётся только включить службу консольной мыши. Для этого потребуется только установить один-единственный пакет, обеспечивающий её поддержку:

$ sudo apt install gpm

Мышь после этого заработает сама собой и сразу, без всяких дополнительных действий. Знаменуя окончание настройки консольного режима как физической сущности. Ибо следующие действия относятся уже к настройке интерфейса командной строки (CLI) и её окружения.

Настройка CLI-окружения

Лично для меня настройка окружения командной строки начинается с замены умолчального шелла (каковым во всех Linux’ах выступает Bash) на любимую оболочку Zsh. Что требует сначала установки соответствующего пакета:

$ sudo apt install zsh

Свежеустановленный Zsh выглядит не вполне презентабельно внешне, и его функционал на поверхности не валяется. А потому он нуждается в индивидуальной настройке, заниматься которой сейчас совсем не с руки. Да и не нужно — у меня (как и у любого хронического применителя этого шелла) есть любимый конфиг, кочующий, с минимальными коррективами, из системы в систему вот уже почти полтора десятилетия. Так что остаётся его только скопировать с любого внешнего носителя типа флешки или USB-диска.

Однако внешний носитель предварительно надо примонтировать, обо никакого автомонтирования в нашей mini-системе пока нет. Так что время вспомнить, как это делается руками:

$ sudo mount /dev/sd?# /mnt

После чего уже выполнить копирование:

$ cp /mnt/path2/.zsh* ~/

В первом аргументе команды cp фигурирует маска, потому что на самом деле для нормальной работы Zsh во всех дистрибутивах, происходящих от Debian’а, требуется два конфига — .zshrc и .zshenv. И здесь говорится, зачем и почему это нужно, а также приводится примерное содержимое обоих конфигов.

После этого внешний носитель можно размонтировать:

$ sudo umount /mnt

Кстати, bash’ист со стажем тоже наверняка имеет свой конфиг любимого шелла, с которым не захочет расставаться. Для чего ему имеет смысл проделать те же операции — монтирования, копирования и размонтирования. После чего ему достаточно дать команду

$ source ~/.bashrc

чтобы оказаться в привычном окружении. Ну а мне предстоит ещё одна процедура — смена регистрационной оболочки пользователя (login shell):

$ chsh -s /bin/zsh

После чего надо завершить текущий сеанс командой

$ exit

и авторизоваться в системе заново.

Практически все действия, описанные в этом и следующих разделах этого очерка, потребуют прав суперпользователя. И, чтобы не напрягать себя постоянным ввод команды sudo, да ещё с паролем, имеет смысл обрести их на то время, которое потребуется впредь. Я делаю это такой командой:

$ sudo -s

Этим внутри пользовательского сеанса открывается полноценный сеанс администратора, что внешне будет выражено в изменении вида приглашения командной строки. Как — зависит от настройки оного. У меня в Zsh, например, оно становится таким:

[root]=$

Однако далее я буду придерживаться более или менее общепринятой нормы: команды, выполняемые в квази-сеансе администратора, будут предваряться символом #, те же, для выполнения которых достаточно полномочий пользователя — символом $.

Во «вложенном» сеансе администратора, открытом описанным образом, сохраняется не только командная оболочка запустившего его пользователя, но и наследуются все её переменные окружения, что в моём случае принципиально: шелл root’а по умолчанию — Bash, а менять эту ситуацию по ряду причин не целесообразно. Приведённая же форма команды сохраняет привычную мне пользовательскую среду CLI и в режиме администратора.

Кроме того, все команды, выполненные во «вложенном» сеансе администратора, сохраняются в пользовательском файле истории (в моём случае это ~/.zhistfile), а не в его аналоге из каталога /root, доступа к которому никто, кроме root’а же, не имеет. А вот из пользовательского файла их легко извлечь, например, для помещения в этот очерк. Или, при необходимости, просто отыскать для повторения.

Всем этим и определяется (по крайней мере, для меня) предпочтительность приведённой формы пролонгированного root’ования перед той, что обычно предлагается в подобных случаях:

$ sudo -i

Она полностью аналогична команде

$ su -

или прямой авторизации root’ом в консоли, устанавливая полное его CLI-окружение, которое будет отличаться от пользовательского. Или — потребует отдельной настройки «под себя».

Первые действия во «вложенном» root’овом сеансе я выполняю почти в любой системе, хотя в общем случае они отнюдь не обязательны. Для начала это — редактирование файла /etc/fstab, в который вносится строка, обеспечивающая монтирование файловой системы tmpfs в каталог /tmp:

tmpfs   /tmp    tmpfs   noatime         0       0

Использование tmpfs для хранения временных файлов, во-первых, теоретически обеспечивает рост скорости выполнения ряда операций (некогда весьма ощутимое, но ныне практически не заметное). Во-вторых, при использовании накопителей SSD снижается их износ. И в-третьих, при рестарте системы этим гарантируется очищение каталога /tmp от временных файлов на все 146%.

Второе действие общего характера — избавление от «лишних» локалей. Как говорилось в прошлом очерке, отмечай при инсталляции только en_US.UTF8, или не отмечай её вовсе, всё равно потом в системе обнаружится спектр локалей для всех англоговорящих стран, от Антигуа и Барбадоса (en_AG.utf8) до Зимбабве (em_ZW.utf8), а также локаль ru_UA.utf8. В принципе лежат они на диске и есть не просят, да и места занимают не особо много. Но иногда оказываются реально лишним (например, при включении спеллинга в браузерах). Поэтому я избавляюсь от них такой командой:

# locale-gen --purge ru_RU.utf8

Поскольку, как показали комментарии к прежним материалам, такая форма команды иногда вызывает вопросы, поясняю: суть её в том, что она сначала очищает систему от всех установленных локалей, а потом генерирует только локали, указанные в качестве её аргументов. И в результате этого вывод команды

$ locale -a

в моём случае будет таким:

C
C.UTF-8
POSIX
ru_RU.utf8

где первые три строки — «прошитые» локали, имеющиеся в любой POSIX-совместимой системе. Причём локали C и POSIX эквивалентны, а C.UTF-8 — их 16-битная модификация. В принципе, любой из них достаточно для чтения сообщений в нештатных ситуациях (подобных той, с которой мы столкнулись в свежеустановленной системе). Но если кому реально нужны более иные локали, например en_US.utf8 или ru_UA.utf8, никто не запрещает добавить их в список генерируемых после очистки.

Подготовка к «десктопизации»

Среда Cinnamon нынче не лежит в основе какого-либо дистрибутива из числа законных потомков семейства Ubuntu (а об одном незаконном отпрыске, Cubuntu, я со временем расскажу отдельно). Тем не менее, в официальных репозиториях входящие в неё пакеты имеются. Правда, для релиза Wily (и даже — разрабатываемого релиза Xenial) — только версии 2.6, тогда как текущей для этой среды вот уже полтора месяца является версия 2.8. Которую можно обнаружить только на Launchpad’е, правда, в нескольких вариантах (о чём будет сказано в следующем разделе).

Так что одним из первых шагов на пути к вожделенному десктопу будет подключение PPA-репозиториев. Какждый Ubuntu’ец знает, что это делается командой add-apt-repository. Однако в установке с mini.iso она, как ни странно, отсутствует. Не увенчается успехом и попытка поиска пакета с таким именем посредством apt search. А определение, к какому неустановленному пакету принадлежит файл с заданным именем — задача, на первый взгляд, не тривиальная.

Благо, нынче на сей предмет существует специальная утилита apt-file, каковую и следует установить (тем более, что она пригодится и в дальнейшем, ибо обладает многими полезными свойствами, о которых рассказывается здесь):

# apt install apt-file

Утилита для своей работы требует собственного кеша, который создаётся таким образом:

# apt-file update

После чего (процедура эта продолжается некоторое время, зависящее от скорости соединения с Интернетом) поиск нужного пакета можно выполнить таким образом (вид приглашения командной строки здесь намекает на то, что тут в общем случае достаточно прав обычного пользователя):

$ apt-file find add-apt-repository
software-properties-common: /usr/bin/add-apt-repository

Далее найденный пакет устанавливается:

# apt install software-properties-common

В Zsh после этого потребуется выполнить команду rehash, пересчитывающую хэш-таблицу каталогов с исполняемыми файлами. В Bash такой необходимости нет — можно сразу переходить к подключению PPA-репозиториев.

Каких — будет сказано в следующем разделе. А в разделе этом завершим подготовку к десктопизации — обеспечением работы в графическом режиме посредством установки Иксов (то есть xorg). Что делается до смешного просто — командой

# apt install xorg

Она установит всё необходимое для последующей корректной работы в графическом режиме — и не потянет за собой почти ничего лишнего, даже какого-либо умолчального менеджера окон (в роли какового традиционно выступал twm, ныне иногда заменяемый IceWM’ом). В качестве излишеств можно рассматривать только драйвера реликтовых видеокарт типа cirrus, mach64, mga, s3, savage, sis, trident и таких, о которых я и слыхом не слыхивал. От которых, конечно, при желании можно и избавиться, оставив только драйвера поддержки актуальных чипов:

  • intel — понятно чьих;
  • nouveau — видеокарт от Nvidia;
  • radeon — видеочипов AMD и ихних же APU;
  • fbdev и vesa, необходимые при старте Иксов для обеспечения modesetting’а.

И раньше я так и делал. Но потом пришёл к выводу, что затраты времени не стоят полученного результата.

В составе метапакета xorg устанавливается минимально необходимый набор шрифтов fonts-dejavu-core, самодостаточный и в большинстве случаев удовлетворяющий базовые потребности и интерфейса, и приложений, в том числе терминала и текстового редактора. Однако я для интерфейсных целЕй доустанавливаю ещё Cantarell, а для некоторых специальных применений — Liberation:

# apt install fonts-cantarell fonts-liberation

За отсутствием в штатном расписании оконного менеджера проверить успешность установки Иксов можно чисто символически — перейдя в другую консоль, авторизовавшись там обычным пользователем и дав команду

$ X

После которой чёрный экран «голой» консоли сменится радикально-чёрным экраном столь же «голых» Иксов. Правда, после этого простого способа прибить иксовый сеанс нет. Нужно вернуться в root’овую консоль, дать там команду

# ps aux | grep '^X'

установить идентификатор (PID) соответствующего Иксам процесса и убить его такой командой:

# kill [PID]

Так что последнее время я от такой проверки отказался (тем более что проблем с установкой Иксов дано не наблюдал), сразу переходя к главной теме этого очерка, каковая будет —

Обретение десктопа

Как явствует из названия всех очерков, обретаемым десктопом должна быть среда Cinnamon. Которая, хоть и имеется в официальных репозиториях Ubuntu — но не последней версии даже для разрабатываемого релиза. И это не случайность сегодняшнего момента, а закономерность. Можно предполагать, что Cinnamon версии 2.8 подадут в репозитории ко времени выхода Ubuntu 16.04. А примерно в это же время, как показывает опыт прежних лет, будет объявлено о релизе Cinnamon 3.0.

Так что отставание версии Cinnamon официального репозитория Ubuntu от апстимовской, скорее всего, будет хроническим. И потому для обретения этой среды нужно ориентироваться на PPA-репозитории. Их на Launchpad’е довольно много, однако актуальных (то есть содержащих последнюю версию) — три:

robust_005

Первый — это PPA Гвендаля ле Бьена (Gwendal le Bihan), первопроходца в деле внедрения среды Cinnamon в Ubuntu. Ныне в нём представлены только так называемые «ночные», то есть тестовые, сборки, основанные непосредственно на GitHub’ головного проекта.

Репозиторий moorkai, напротив, позиционируется как стабильный. Он практически полностью освобождён от Mint-специфических зависимостей, в частности, в нём отсутствует дисплейный менеджер MDM и ряд дополнительных пакетов к файловому менеджеру Nemo.

Репозиторий Эрика Краниха (Eric Kranich), основанный на репозитории Гвендаля, также имеет статус стабильного. Он был перенесён на Launchpad из проекта Cubuntu — того самого, который был упомянут выше. И который со временем будет предметом специального рассмотрения.

Каюсь, о проекте Cubuntu я узнал совсем недавно, и потому до этого пробовал репозитории ле Бьена и moorkai, остановившись в конечном счёте на последнем. Он и будет основным объектом дальнейшего описания, хотя в различия в установке среды из разных репозиториев минимальны.

Для начала выбранный репозиторий нужно подключить таким (для PPA moorkai) образом:

# add-apt-repository ppa:moorkai/cinnamon

Или — таким (для PPA Гвендаля):

# add-apt-repository ppa:gwendal-lebihan-dev/cinnamon-nightly

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

# apt update

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

# apt install cinnamon

В предыдущих заметках на эту тему, где установка осуществлялась в mini-установке Wily ещё в стадии тестирования, были описаны всякие трудности, возникавшие в ходе выполнения данной директивы. А также рассказывалось о методах их преодоления. Теперь ничего этого не нужно: введя указанную команду, можно нажать Enter и идти заваривать кофе и курить. Много времени процесс не займёт, и завершится сообщением об успехе.

Однако это ещё не всё: вместе с пакетом cinnamon будет установлен и файловый менеджер Nemo, но — не оконный менеджер Muffin. Нет пока и никакого дисплейного менеджера.

Первая задача решается командой

# apt install muffin

А вот относительно второй — возможны варианты. В репозиторий Гвендаля входит дисплейный менеджер MDM, родной для Cinnamon, и потому прекрасно вписывающийся в его Параметры системы. Почему его и следует препочесть в этом случае:

# apt install mdm

А вот в репозитории moorkai нет никакого дисплейного менеджера. Нет MDM и в официальном репозитории Ubuntu — в нём под этим именем фигурирует совсем другая программа. Поэтому тут логично обратиться к родному для Ubuntu LightDM:

# apt install lightdm

Правда, в этом случае надо не забыть и пакет поддержки PAM-авторизации, сам собой он у меня не установился:

# apt install pam-dbus-notify

Можно использовать и SLiM, как самый лёгкий из железов дисплейных менеджеров. И в своих первых опытах прививания Cinnamon на Ubuntu я так и делал::

# apt install slim

Однако надо помнить, что этот проект давно не развивается, не адаптирован к использованию совместно с systemd и вообще может неожиданно заглючить. А её придётся распроститься с мыслью настраивать окно входа в систему штатными средствами среды. Впрочем, это распространяется и на LightDM.

Осталось добавить немногое. При установке варианта Гвендаля надо не забыть самый необходимый минимум приложений, без которых дальнейшие действия по настройке и наращиванию среды будут затруднены, например:

# apt install gedit gnome-terminal

Да-да, сборка Гвендаля — суперпурифицированная, в ней нет ни терминала, ни текстового редактора. В сборке moorkai терминал имеется (тот же gnome-terminal), так что надо позаботиться только редакторе графического режима. И здесь я в этом качестве задействовал Geany со всеми его дополнительными прелестями:

# apt install geany geany-plugin-addons geany-plugins

Последний штрих — установка редактора Dconf:

# apt install dconf-editor

Ибо без него не выполнить некоторые настроечные действия. А настройка среды Cinnamon будет темой следующего очерка.

Cintu. Оглавление

Добавить комментарий