Алексей Федорчук
Как было сказано в конце предыдущего очерка, после установки с mini.iso
получается чисто консольная система, способная к самонаращиванию. Используя последнюю возможность, её надлежит превратить в полноценный десктоп с поддержкой графического режима, среды Cinnamon и необходимых приложений. Так что темой нынешнего очерка будет описание того, как это сделать с минимальными затратами сил и времени.
Настройка консольного режима
Поскольку сразу после установки у нас нет не только рабочей среды, но даже ни малейших Иксов, основные действия по «десктопизации» системы придётся выполнять в «голой» консоли. А консольный режим по умолчанию в Ubuntu далёк от совершенства, в частности, из-за маленьких и некрасивых шрифтов. А локализованной русифицированной системе нет и намёка на русские буквы, заменяемые квадратиками. Казалось бы, мелочь — а она не даёт возможности читать сообщения в выводе команд, в том числе и сообщения об ошибках. Наконец, по умолчанию не включена служба консольной мыши, что лишает применителя такой полезной возможности, как помещение выделенного мышью текста в «мышиный» буфер и вставки его щелчком средней кнопки, функцию которой на современных скроллирующих мышах выполняет колёсико, а при отсутствии той и другого — одновременное нажатие на левую и правую кнопки.
Проще всего, если на скорую руку, решается задача чтения сообщений — командой
$ export LANG=C
система «разрусифицируется взад», и вывод всех последующих сообщений будет происходить по английски. Те, кто в ладах с языком Вильяма нашего, Шекспира, не смущаются экранными шрифтами и не нуждаются в консольной мыши, могут этим и ограничиться, переходя сразу к установке необходимых пакетов. Я же всегда (и во всех системах) настраиваю консоль «до упора»: во-первых, по привычке давних времён, когда работал по преимуществу в ней, во-вторых, из эстетических соображений, ибо в системе всё должно быть прекрасно. Тем более, что во всех deb based дистрибутивах это делается очень просто и всегда — с неизменно превосходным результатом. Для достижения которого служит такая команда:
$ sudo dpkg-reconfigure console-setup
Здесь первым делом определяется кодировка — к Ubuntu 15.10 товарищи зулусы наконец осознали, что по умолчанию она должна быть не ISO-8859-15
, а та, что выведена на скриншотое:
Далее выбирается набор символов — кириллица славянские языки. И здесь надо помнить, что в ненастроенной консоли пункты меню будут даны либо квадратиками, либо, если экспортировать локаль C
, латиницей. Поэтому на скриншоте ниже требующися пункт отмечен — через один вниз от пункта с KOI8-R
и KOI8-U
, который опознается при любом раскладе:
В качестве экранного шрифта для LCD-мониторов (а что, у кого-то остались трубочные?) настоятельно (и практически безальтернативно) рекомендуется TerminusBold:
А размер шрифта (точнее, для консоли это плотность его матрицы) выбирается соответственно своему зрению. На скриншоте — та, что подходит мне:
После этого «за кадром» происходит регенерация 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’е довольно много, однако актуальных (то есть содержащих последнюю версию) — три:
Первый — это 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 будет темой следующего очерка.