Linux Mint и его Cinnamon. Очерки применителя
Шрифт:
Индивидуализация системы
Последний очерк посвящается апофеозу знакомства с дистрибутивом Mint и его Cinnamon — сборке индивидуализированной системы на его основе. Как сказал то ли один из премьер-министров Великобритании, то ли некий президент Франции (кому только это изречение ни приписывали?):
Тот, кто в (информационной) юности не мечтал собрать свой дистрибутив Linux'а, не имеет сердца. Тот, кто продолжает мечтать об этом в (информационной) зрелости — не имеет разума.
Однако применительно к Linux Mint вполне возможно сочетать сердечность и разумность даже в преклонные годы, ибо собрать свою индивидуализированную систему на базе
Свой Mint: введение
Во время первого знакомства с с Mint у меня сложилось впечатление, что в его инсталляции настолько мало лишних программ, что не стоило и заморачиваться с их удалением. Однако при дальнейшем рассмотрении оказалось, что лишних (для меня) приложений вполне достаточно — например, вся мультимедиа. С другой стороны, ряд привычных для меня программ (например, те же мультимединые) приходилось доустанавливать. И появилась мысль изготовить свой установочный диск этого дистрибутива. На котором не было бы ничего лишнего (повторяю, для меня). И, напротив, были бы все приложения, которые мне так или иначе пришлось доустанавливать.
В сети можно найти упоминания о нескольких инструментах для изготовления собственного дистрибутива на базе Ubuntu и её производных (а Mint, как известно, принадлежит к их числу):
• oem-config-remaster — утилита командной строки, позволяющая сделать снапшот установленной системы;
• remastersys — утилита для резервного копирования установленной системы и создания на её базе Live-носителя; именно таким образом собирается, например, дистрибутив Matuntu — отечественный вариант Ubuntu с MATE в качестве рабочей среды;
• Ubuntu Builder-- программа с графическим интерфейсом, позволяющая скомпоновать свой дистрибутив попакетно.
Однако первые две показались мне сложноватыми и избыточными для моих целей, а последняя, похоже, прекратила своё развитие — версии её для Ubuntu Trusty, на которой основываются текущие релизы Mint, в PPA-репозитории не обнаружилось.
И в итоге я остановился на программе Ubuntu Customization Kit (далее — UCK): гугление показало, что это примерно то, что мне нужно, ибо специально предназначается для коррекции состава пакетов в первую очередь.
UCK: обзор
Программа UCK в виде одноимённого пакета имеется в официальном репозитории, и потому может быть установлена любым из стандартных способов. После этого в секции Администрирование главного меню Cinnamon появляется пункт, который, как ни странно, называется Ubuntu Customization Kit, через который эту программу и можно запустить. Но прежде чем смотреть, что она после этого делает, попробуем представить, что у неё внутре.
Всякий, кому приходилось заниматься модификацией существующего установочного образа какого-либо дистрибутива, представляет себе основные этапы этого процесса:
• монтирование образа как loop-устройства;
• развёртывание её файловой системы — нынче все дистрибутивы используют какой-либо механизм компрессии, в частности в убунтоидах это SquashFS;
• монтирование в loop-систему как связанных (bind) таких служебных, но абсолютно необходимых каталогов материнской системы, как /dev, /sys и, на всякий случай, /proc;
• выполнение операции chroot в loop-каталог, становящийся таким образом корневым;
• выполнение в chroot-окружении необходимых действий по удалению ненужных пакетов и установке необходимых;
• выход из chroot-окружения и обратная запаковка loop-каталога;
• размонтирование loop-устройства и создание из него загрузочного iso-образа с помощью isolinux.
Интуитивно понятно, что UCK
не делает ничего иного, кроме перечисленного — он просто автоматизирует описанный процесс, делая его этапы почти незаметными для применителя.Основные исполняемые файлы пакета uck (а их 16 штук) собраны, понятное дело, в каталоге /usr/bin и имеют префикс uck-*. Все они являются самыми обычными шелл-скриптами, причём по их именам легко догадаться о назначении каждого. «Головным», то есть запускающим весь процесс скриптом является /usr/bin/uck-gui — именно он вызывается через пункт меню Администрирование -> Ubuntu Customization Kit:
А через редактор меню можно посмотреть на его свойства:
По скриншоту можно догадаться о присутствии в строке запуска опции --wait-before-exit, отвечающей за ожидание нажатия Enter перед выходом из программы после успешного завершения её работы.
Кстати говоря, при неуспешном завершении, то есть возникновении ошибки по любой причине (например, нехватке места на целевом устройстве), ничего не происходит, кроме остановки работы. Никаких возвратов назад не предусмотрено, остаётся только закрывать главное терминальное окно программы (о котором далее) и начинать всё сначала. Так что, учитывая длительность распаковки SquashFS и необходимость удаления образовавшихся в процессе файлов (а их — многие десятки тысяч, что на файловой системе, например, XFS затягивается очень надолго), лучше действовать аккуратно и по возможности не ошибаться.
Команда uck-gui запускается от лица обычного пользователя — пароль для доступа к административным привилегиям запрашивается только тогда, когда они на самом деле потребуются. Кроме указанной --wait-before-exit, она имеет ещё как минимум две опции. Первая, -m, обеспечивающая кеширование модифицированных частей образа, работает, как сказано в man (1) uck-gui, не всегда, и потому в стандартной ситуации не используется.
Вторая опция также штатно не задействована, но она может оказаться важной для применителя. Это опция remaster-dir, определяющая рабочий каталог для UCK, отличный от умолчального ~/tmp. Через редактор меню Cinnamon я переопределил этот каталог как ~/data/my-mint, поэтому итоговая команда для запуска UCK через меню приобрела такой вид:
uck-gui --wait-before-exit /home/data/my-mint
Кроме запуска процесса, сценарий uck-gui отвечает, в том числе, и за выбор типа десктопа — unity, gnome, kde, или others. Однако попытки вносить здесь какие-либо изменения (например, пополнение списка доступных десктопов) никакого результата за собой не повлекут. То есть добавленные десктопы появятся в меню их выбора, но ничего не изменится.
Потому что на самом деле кроме исполняемых скриптов в каталоге /usr/bin, основным компонентом UCK является также каталог /usr/lib/uck/. А в нём, кроме всего прочего — файл /usr/lib/uck/customization-profiles/localized_cd/customize, представляющий собой исполняемый шелл-сценарий, который отвечает в том числе и за вызов терминальной программы. Запомним его — в некоторых случаях он подлежит ручному редактированию.
Впрочем, всё сказанное проще продемонстрировать на примере конкретной сборки своего варианта дистрибутива, чем мы сейчас и займёмся.
UCK: процесс
Сразу после запуска UCK перед нами появляется пустое терминальное окно и на фоне его — приглашение программы:
В нём указаны системные требования, не являющие собой ничего сверхъестественного: 5 ГБ свободного пространства в каталоге ~/tmp (или его аналоге, определённом выше) и доступ в Интернет. Так что можно смело нажимать OK и приступать к кастомизации, которая начинаетсяс выбора локали — сначала для инсталлятора: