Задача - получить русскоязычный livecd образ системы с браузером по умолчанию Firefox. Проделав эту операцию, вы сможете в дальнейшем проводить различного рода эксперименты. Для примера загрузите свежий образ Calculate Linux. Мне под руку попался 32-битный CLDX 20130124.
Все эксперименты я буду проводить на флешке, без установки системы на жесткий диск. В результате работы я получу загрузочную флешку с необходимыми мне изменениями. Полученную систему можно в любой момент установить на жесткий диск. Поскольку мне понадобится запись на флешку, для установки на нее системы я воспользуюсь установщиком Calculate. Установщик использует файловую систему FAT32, а это значит, что я смогу в конце работы сгенерировать и записать на неё новый Squash-образ c системой.
Для эксперимента подойдет флешка с размером памяти в 2 раза превышающим размер образа. Желательно взять с некоторым запасом. Так как в процессе работы я буду распаковывать портежи, оперативной памяти на компьютере также должно быть не менее 2 Гб. В моём случае было 4 Гб.
Все теже действия можно проделать и при помощи CD/DVD диска с той лишь разницей, что на выходе получим новый ISO образ, который нужно будет куда-то сохранить, например подмонтировав раздел жесткого диска, либо вставив флешку.
Итак, загружаемся с флешки, пожеланию выбираем в меню загрузчика русский язык, кликнув F2, выбираем загрузку в Builder-режиме. После загрузки получаем привычный вид рабочего стола (см. рис. 1).
рис. 1.
Первое, что необходимо сделать - выйти в интернет. Воспользуйтесь NetworkManager, кликнув в правом-верхнем углу трея по иконке.
Итак, приступим. Откроем консоль и получим права root, набрав:
su
Переходим builder-режим:
cl-builder
После ввода команды, цвет текста изменится на коричневый. Идея builder-режима в том, чтобы отделить систему от пространства пользователя посредством использования слоеной файловой системы AUFS. cl-builder работает в отдельном слое, содержимое которого видит пользователь и эти изменения как раз можно включить в новый образ системы. Более подробно можно почитать здесь.
Дистрибутивы Calculate Linux включают только запакованную копию портежей. Поэтому первое, что необходимо сделать, это распаковать и синхронизировать портежи и оверлей:
eix-sync
Calculate использует бинарные обновления и к тому же rolling-release модель обновления, поэтому возьмём за правило первым делом всегда обновлять систему:
# emerge -uDNa world
These are the packages that would be merged, in order:
Calculating dependencies... done!
[binary U ] media-libs/freetype-2.4.11 [2.4.9-r1] USE="-infinality%"
[binary R ] virtual/udev-197 USE="kmod%*"
[binary U ] sys-apps/portage-2.2.0_alpha161 [2.2.0_alpha160]
[binary U ] sys-fs/udisks-1.0.4-r4 [1.0.4-r2]
[binary U ] sys-power/upower-0.9.19 [0.9.18]
[binary U ] net-misc/networkmanager-0.9.6.4-r1 [0.9.6.4] USE="consolekit%*"
Would you like to merge these packages? [Yes/No]
Теперь я могу смело удалить браузер Chromium.
# emerge -C chromium -a
* This action can remove important packages! In order to be safer, use
* `emerge -pv --depclean <atom>` to check for reverse dependencies before
* removing packages.
>>> These are the packages that would be unmerged:
www-client/chromium
selected: 24.0.1312.56
protected: none
omitted: none
All selected packages: www-client/chromium-24.0.1312.56
>>> 'Selected' packages are slated for removal.
>>> 'Protected' and 'omitted' packages will not be removed.
Would you like to unmerge these packages? [Yes/No]
Немаловажно после удаления подчистить зависимости:
emerge -ac
Здесь вы увидите, что одному пакету с расширением, входящему в world-файл (/var/lib/portage/world), всё же нужен Chromium, удалим и его:
emerge -C chromium-adblock
Теперь можно удалить зависимости, всего 9 пакетов:
# emerge -ac
...
All selected packages: dev-python/ply-3.4 dev-libs/ppl-0.11.2-r1 dev-libs/cloog-ppl-0.15.10 media-libs/libvpx-1.0.0 dev-lang/v8-3.14.5.3 dev-python/simplejson-2.6.2 dev-lang/nacl-toolchain-newlib-0_p9093 media-libs/opus-1.0.1 media-libs/libwebp-0.2.1
Мне повезло, я работаю НЕ в винде и могу это делать с запущенным браузером Chromium, продолжая писать эту статью даже после удаления браузера с зависимостями.
Осталось установить Firefox. Зная, что браузер прожорливый, я воспользуюсь пакетом firefox-bin, чтобы не забить всю память. Опять же, в случае необходимости, я могу задействовать своп с жесткого диска.
Установлю Firefox:
emerge -a firefox-bin
Проверим на обновления конфигурационных файлов:
dispatch-conf
Поскольку я работаю в так называемом режиме интерактивной сборки системы, я могу уже запустить Firefox и проверить насколько он меня устраивает. В нижней панельке программ я его увижу только после перезахода в сеанс, в силу особенностей XFCE. Если вы подскажите какой командой можно обновить панель, мы с удовольствием добавим это действие в шаблоны.
Всё, осталось систему запаковать. Не забудем выйти из builder-режима:
exit
Сгенерируем Squash-образ с нашими изменениями:
# cl-image --lang=ru_RU --keep-tree squash
* Пересборка live образа Calculate Linux
Системная информация
* Собираемая система: Calculate Linux Desktop XFCE
* Версия системы: 13
* Тип оборудования машины: i686
* Язык по умолчанию: ru_RU
* Свободное место на flash: 14G
Выполнение проверок
* Образ будет создан в: /mnt/flash
Продолжить пересборку на flash (yes/no):
Вот наиболее интересные опции:
- ‘–compress’ выбирая более простой метод сжатия, например gzip, можно получить существенный выигрыш в скорости;
- '-
keep-tree’иногда бывает удобно сохранять распакованным дерево портежей, особенно если вы захотите продолжить эскпериментировать с флешкой; - ‘–lang’ и '-
timezone’язык и часовой пояс по умолчанию;
Если вместо squash ввести iso, будет создан новый ISO файл.
После выполнения создался новый образ (livecd.squashfs.1), увидеть который можно в директории /mnt/flash. При этом первоначальный образ livecd.squashfs сохранился. При последующих запаковках он будет удалён, сохраняться будет только предыдущий, текущий на момент выполнения операции образ.
Осталось перезагрузить компьютер и сделать скриншот. Теперь мне уже не понадобится нажимать F2 в меню загрузчика, чтобы указать родной язык. Вид рабочего стола после перезагрузки:
Разумеется, все изменения останутся в системе и после установки на жесткий диск.
Ещё раз порядок действий из консоли:
su
cl-builder
eix-sync
emerge -uDNa world
emerge -C chromium chromium-adblock
emerge -ac
emerge -a firefox-bin
dispatch-conf
exit
cl-image --lang=ru_RU --keep-tree squash
P.S. Я всё же нашел глюк в работе запущенной версии хрома после удаления пакета - ничего нельзя открыть в новых вкладках.