Алексей Федорчук
В одной из первых заметок о Mint'е 17-м я написал, что в его инсталляции настолько мало лишних программ, что не стоило и заморачиваться с их удалением. Однако тут я несколько покривил душой -- лишних (для меня) приложений вполне достаточно. Из своей рабочей системы я их так и не удалил. Но с прицелом на будущее (а похоже, что оно будет продолжаться ещё без малого пять лет) задумал изготовить свой установочный диск этого дистрибутива. На котором не было бы ничего лишнего (повторяю, для меня). И, напротив, были бы все приложения, которые мне так или иначе пришлось доустанавливать.
Задумать-то я задумал, а вот претворить эту задумку в жизнь -- всё руки не доходили, да и болезнь печени (в просторечии именуемая ленью) тому не способствовала. Но давешнее обсуждение в Джуйке меня спровоцировало. И я, забыв о печени и прочих делах, занялся изучением вопроса.
В сети можно найти упоминания о трёх инструментах для изготовления собственного дистрибутива на базе Ubuntu и её производных (а Mint, как известно, принадлежит к их числу). Во-первых, это oem-config-remaster
-- утилита командной строки, позволяющая сделать снапшот установленной системы. Она чрезвычайно гибкая, но требует большой предварительной подготовки в виде установки и кастомизации этой самой системы на отдельном разделе, в виртуальной машине или в chroot-окружении. Ибо снапшотить свою рабочую систему у меня большого желания не было.
Во-вторых, можно найти сведения о программе Ubuntu Builder, имеющей графический интерфейс и позволяющей скомпоновать свой дистрибутив попакетно. Однако следствием было установлено, что нынче такого пакета в репозиториях нет, и куда он делся -- неизвестно.
Наконец, в третьих, существует программа Ubuntu Customization Kit, каковая обнаружилась в виде пакета uck. Беглое гугление показало, что это примерно то, что мне нужно. Так что я установил её стандартным способом:
$=> sudo apt install uck
После чего под именем Ubuntu Customization Kit обнаружил её в секции Администрирование. Оставалось приступить к делу. Правда, при первом запуске она пожаловалась на отсутствие каталога ~/tmp и работать дальше отказалась. Пришлось прервать процесс и означенный каталог создать. Результатом чего было сначала появление некоего терминального окна:
А вскоре -- и окна пригласительного:
Далее предлагалось выбрать язык инсталляции и, соответственно, инсталлированной системы -- я, ввиду квасного патриотизьма, остановился на русском:
Следующий шаг -- выбор языка интерфейса при загрузке Live-носителя. Здесь я тоже избрал язык родных осин -- хотя и был предупреждён, что это может не поддерживаться конкретным релизом кастомизируемой системы:
Забегая вперёд, скажу, что так оно и оказалось.
Поскольку в обоих случаях я к рiдной мове добавил ещё и вражью, на следующей стадии мне предложили определиться, которую из них я хочу видеть умолчальной -- разумеется, я продолжал гнуть патриотическую линию:
Далее было предложено выбрать рабочую среду -- Unity, Gnome, KDE или более иную. Так как я планировал собрать свою систему с Cinnamon'ом, именно последний вариант и был отмечен:
Теперь требовалось выбрать образ диска, который подлежал потрошению -- через обычное окно открытия файла:
Разумеется, ему следовало дать имя:
Впрочем, где оно фигурировало в дальнейшем, я так и не понял.
Затем меня спросили, хочу ли кастомизировать образ мануально -- разумеется, ответил я, иначе зачем было бы весь огород городить?
Следующий вопрос касался Windows-related файлов, типа autorun.inf
-- и тут я, подобно послу, отвечал yes (хотя, кажется, их на установочном носителе Mint'а и так нет):
И на вопрос о создании гибридного образа (то есть пригодного для записи как на OD, так и на USB) я ответил положительно, ибо мой CD/DVD-привод давно уже агонизирует, а новым обзаводиться я не намерен:
Далее мне сообщили, что вся необходимая информация собрана, по введении пароля можно приступать к сборке диска, который будет помещён в /home/alv/tmp/remaster-new-files
под именем livecd.iso (спрашивается, зачем я придумывал ему осмысленное имя?):
Наступил момент сообщить системе пароль:
После чего началась распаковка образа, выбранного ранее в качестве исходного:
Поскольку образ этот несёт на себе компрессированную файловую систему SquashFS, процедура его распаковки оказалась весьма долгой. И закончилась вопросом -- запустить ли консоль или продолжить построение диска. Во втором варианте получилась бы почти точная копия исходного образа, так что выбор первого варианта напрашивался сам собой:
В результате было открыто ещё одно терминальное окно, chroot'овое (тогда как в первом шли сообщения о ходе процесса):
Здесь бы мне следовало притормозиться и запустить apt update && apt upgrade
для обновления всего chroot'ового хозяйства -- оно было цельнотянуто с исходного образа, вышедшего без малого три месяца назад. Однако я этого не сделал -- и в результате получил некоторые проблемы и в ходе сборки своего образа, и после его установки.
Вместо этого я, как можно видеть на предыдущем скриншоте, решил запустить Synaptic. Конечно, можно было обойтись и apt
'ом, но в данном случае Synaptic показался мне наглядней, вот:
Хотя что, вы Synaptic'а не видели, что ли? Так что дальнейшее расскажу на словах. Перво-наперво я отметил для удаления всё, что полагал излишками всякими нехорошими: LibreOffice, Gimp, Thunderbird, всю изобильную мультимедию. А заказал установку для меня необходимого -- от zsh'а до MPlayer'а. Причём всё время получал сообщения о конфликтах и нарушениях зависимостей. Потом-то я понял, что это было связано с тем, что я поленился (точнее, просто забыл) обновить систему: устанавливаемые вновь пакеты тянули за собой зависимости, которые конфликтовали с компонентами, унаследованными от исходного образа трёхмесячной давности. А тогда просто плюнул и отказался от установки всех конфликтных приложений, в частности, мультимедийных -- всё равно образ собирался в сугубо экспериментальных целях, и предназначался не для практической работы, а для установки в виртуалке.
В итоге я выполнил таки удаление ненужного и установку нужного -- всё действительно необходимое, типа zsh, Geany, Guake, Shutter, никаких проблем и конфликтов не вызвали. Разумеется, истинный последователь малчега Дениски на этой стадии подумал бы, как прикрутить к будущей системе свои обои. Но я, по своему малодушию, этим заморачиваться не стал, а просто закрыл Synaptic, а вслед за ним и второй терминал, оказавшись снова в предыдущем окне, где резонным было выбрать пункт Continue building:
После чего началось исполнение сценариев кастомизации, плавно перешедшее в компрессию системы в виде SquashFS -- это оказалось самым долгим делом во всём процессе:
Однако всё когда-нибудь кончается -- и упаковка SquashFS закончилась сообщением об успехе операции и напоминанием о том, где и под каким именем можно найти её результат:
Приняв это к сведению, я узнал, что собранный образ не вместится на стандартный семисотмегабайтный CD: действительно, как потом оказалось, он размахнулся более чем на 900. Но я и не ставил своей целью экономию места: лишь бы ненужные (и никогда мной не используемые) программы не мозолили глаза в меню. Да и по сравнению с 1,3 ГБ исходного образа результат оказался не плохим:
Так что я нажал OK, что повлекло закрытие окна сборки. И в первом терминале нажал Enter -- в результате закрылся и он:
Теперь предстояло полюбоваться плодами своего труда. Для этого я в VirtualBox'е создав виртуальную машину, запустив её с новосозданного LiveCD. Никаких неожиданностей меня здесь не подстерегало -- Mint оказался как Mint, с Cinnamon'ом и очень урезанным его меню. Интерфейс системы в Live-режиме оказался английским -- но о возможности этого меня честно предупредили:
Так что можно было приступать к установке системы, всё в той же виртуалке. Установка прошла без всяких осложнений, ничем не отличаясь от таковой с оригинального диска. Результат её -- точная копия образа LiveCD, развёрнутая на "винчестере". Но -- уже с русскоязычным интерфейсом:
Правда, оказалось, что Firefox сохранил интерфейс англоязычный, и это не лечилось даже таким сильнодействующим средством, как вызов из строки адреса about:config
и исправлением значения параметра general.useragent.locale
с en-US
на ru
. Причина оказалась простая: сам Firefox был взят с исходного диска и имел номер версии 28 с чем-то, а пакет локализации соответствовал версии текущей, то есть 31-й. И потому положение было легко исправлено путём тотального обновления системы.
Тогда-то я и понял причину конфликтов во время компоновки образа: не забудь я сделать полный апгрейд в chroot'е, тянутом с исходного образа, никаких проблем бы и не было. Так что сделал зарубку на будущее -- дабы к сборке следующего образа подойти во всеоружии. В том числе -- и с собственными обоями (что я, хуже малчега Дениски, что ли?). Потому что чую -- текущую версию Mint'а мне придётся устанавливать ещё много раз, и не только себе. Ведь до конца света хоть и не миллиард лет, но почти пять. А за это время тоже можно много успеть...