Готовим свой Linux на базе Gentoo | ||
Разное > Прочее Многие любят Gentoo за ее универсальность. Используя портежи, можно сделать инструмент под любые задачи. И пускай вас не смущает то, что секретарь никогда не будет компилировать Firefox — Боже упаси ей дать возможность ставить софт! Что может быть лучше дистрибутива, установив который вам больше ничего не понадобится с ним делать! Представьте себе — 5-10 минут времени и вы получаете систему с необходимым набором софта, собранного, настроенного и оптимизированного по вашим предпочтениям.
Многие любят Gentoo за ее универсальность. Используя портежи, можно сделать инструмент под любые задачи. И пускай вас не смущает то, что секретарь никогда не будет компилировать Firefox — Боже упаси ей дать возможность ставить софт! Что может быть лучше дистрибутива, установив который вам больше ничего не понадобится с ним делать! Представьте себе — 5-10 минут времени и вы получаете систему с необходимым набором софта, собранного, настроенного и оптимизированного по вашим предпочтениям. В этой статье я опишу процесс создания своей версии дистрибутива на основе Gentoo при помощи утилит Calculate 2.2. На выходе вы получите гибридный ISO диск для записи на CD/DVD или USB-Flash, полностью совместимый с Gentoo, поддерживающий установку на USB-HDD, USB-Flash, HDD с поддержкой LVM и Raid, файловой системой ext4, ext3, ext2, reiserfs, btrfs, xfs, jfs, nilfs2 или fat32. Статья в первую очередь адресована всем любителям Gentoo, системным администраторам, преподавателям компьютерных классов школ и вузов, а также всем любителям Linux. Все операции выполняются с правами пользователя root из консоли. 1. То что нам понадобится Разумеется, у вас уже должен быть установлен Gentoo, либо любой Gentoo-based дистрибутив и настроен доступ к сети интернет. Все операции я выполнял из Calculate Linux Desktop 11.9 KDE 64 бит. Для начала установите пакеты calculate-assemble и calculate-builder. В Gentoo для этого понадобится подключить оверлей Calculate: emerge layman layman -a calculate emerge calculate-assemble calculate-builder Теперь определитесь с тем, какую систему вы хотите собрать. Перед вами выбор базовых образов:
В зависимости от задачи, загрузите последний Stage-архив Gentoo или Stage-образ Calculate и поместите в директории /var/calculate/remote/stages и /var/calculate/linux соответственно: cd /var/calculate/remote/stages wget mirror.yandex.ru/gentoo-distfiles/releases/x86/current-stage3/stage3-i686-20111018.tar.bz2 или cd /var/calculate/linux wget mirror.cnet.kz/calculate/CLDX/stages/i686/cldx-20111024-i686.iso Stage образ Calculate Linux включает дерево портежей. По сути это одно из основных отличий образа Calculate от Gentoo Stage4. Собирая систему из Gentoo Stage, вам также понадобится загрузить портежи в директорию /var/calculate/remote/snapshots: cd /var/calculate/remote/snapshots wget mirror.yandex.ru/gentoo-distfiles/snapshots/portage-20111024.tar.bz2 Обратите внимание, версии фалов постоянно обновляются. В этой статье я остановлю свой выбор на CLDX 32 бит по следующим причинам:
2. Подготовим систему к сборке Для подготовки системы к сборке служит утилита cl-assemble. Вы можете воспользоваться любым из доступных профилей. В профилях Calculate Linux флаги подобраны с учётом используемого рабочего стола. CLD оптимизирован с учётом использования Qt/KDE, CLDG — Gtk/Gnome, XFCE — Gtk. Профиль CLDX идеально подойдет, если вы не хотите использовать ни KDE, ни Gnome. Если в качестве профиля указать «CLDX», программа попросит более точно ввести его название: Вам также понадобится указать раздел для установки. Это может быть либо раздел жесткого диска (10-15 Гб), либо директория. В случае использования директории, будет тратиться дополнительное время на удаление старых файлов. По умолчанию утилита использует Gentoo Stage3 образ и свежие портежи: Укажем, что мы хотим взять 32-битный образ CLDX, свежую версию которого можно скачать отсюда mirror.cnet.kz/calculate/CLDX/stages/i686/. Для этого понадобится правильно указать профиль и, в случае если мы работаем в 64-битной системе, указать, что мы хотим использовать архитектуру i686: cl-assemble -p desktop/CLDX/x86/binary -d /dev/sda2 --source=CLDX --march=i686 На моей машине вся подготовка заняла менее 10 минут: 3. Обновим систему Для сборки системы служит утилита cl-make. Обратите внимание на несколько параметров. Если вы хотите собрать систему со Stage3 — используйте опцию сборки системы "-m" (или "--make"), если из образа Calculate — опцию обновления системы "-u", (или "--update"). Обратите внимание на опцию "-V" (или "--withvideo") для копирования проприетарных видеодрайверов. Копирование без установки пресекает нарушение лицензии GPL, при этом у вас остаётся выбор проприетарного видеодрайвера, который будет инсталлирован в систему во время процесса загрузки. cl-make -u -V Выполним обновление: В приведенном примере я не указывал собираемый профиль. Его следует вводить в случае, если вы ставите на сборку несколько систем одновременно. Например, 32 и 64 битную версии. В этом случае профиль можно ввести как "-p amd64" и "-p x86". Путем сравнения собираемых версий, программа попытается определить нужный профиль. В моем случае потребовалось обновить около 40 пакетов. Свои действия утилиты Calculate отписывают в файл /etc/calculate/assemble.env: Некоторые значения, например rsync-сервер портежей, доступные разделы, можно прописать в переменных утилит. Пример с реального сервера сборки: После указания доступных разделов, передавать параметр раздела сборки уже не обязательно. Я успел написать этот текст пока система обновляется. Мне попались под обновление сразу gtk с python, лучше бы я взял сегодняшний образ. Несмотря на то, что я выбрал бинарный профиль, компиляция идет из исходников. Пойду налью себе кофе :) 4. Внесем изменения Наконец добрались до самого интересного. Что мы можем изменить:
Как вы могли заметить, образ развернулся в директорию /mnt/calculate-desktop-CLDX-x86-binary/. Используйте этот путь для внесения изменений. На скриншотах видно, что с развернутой системой производится некоторая настройка. Собственно все шаблоны настройки можно посмотреть в директории /usr/share/calculate/templates/assemble/. Важно вносить изменения так, чтобы не вызывать конликт настроек. Где-то можно создать свои шаблоны изменений, где-то использовать альтернативные файлы. Рассмотрим теперь подробней. 4.1. Флаги сборки Управление параметрами сборки пакетов осуществляется через USE-флаги. Урезая зависимости, вы можете добиться нескольких преимуществ:
Давайте посмотрим на содержимое переменной USE. Для этого в собираемой системе нужно выполнить следующую команду: linux32 chroot /mnt/calculate-desktop-CLDX-x86-binary /bin/bash -c "emerge --info" Обратите внимание, я использовал вызов chroot через утилиту linux32, т.к. я выполняю сборку 32-битной системы из-под 64-битной. В противном случае в утилите linux32 нет необходимости. Флагов будет великое множество. Более подробно о них можно узнать, почитав следующие описания: общие — /usr/portage/profiles/use.desc и индивидуальные — /usr/portage/profiles/use.local.desc. Для внесения изменений в флаги применительно ко всем пакетам сразу используется файл make.conf. В процессе сборки содержимое файла /etc/make.conf будет переписываться, поэтому для внесения изменений, мы рекомендуем использовать альтернативный путь — /etc/portage/make.conf. В качестве примера, давайте исключим поддержку адресации ipv6 во всех пакетах, для этого добавьте в файл /mnt/calculate-desktop-CLDX-x86-binary/etc/portage/make.conf следующую строчку: USE="-ipv6" Посмотрим что получится. В этот раз запустим обновление с флагом "-U", вместо "-u". Это позволит сэкономить время на синхронизацию портежей. Выполним 'cl-make -U -V': Примечание. Так как при обновлении пакетов был пересобран Xorg сервер, в конце программа выполнит пересборку его модулей. Если вы будете запускать несколько сборок подряд, анализируя файл emerge.log, программа будет каждый раз пересобирать драйвера Xorg-сервера. Чтобы этого не происходило, вы можете удалить файл var/log/emerge.log в директории собираемой системы. Во время запаковки системы в образ, этот файл будет в любом случае удален. 4.2. Флаги и маски пакетов Для изменения флагов и масок используются следующие пути: etc/portage/package.use, etc/portage/package.keywords, etc/portage/package.mask, etc/portage/package.unmask. Менеджер пакетов emerge 2.2 умеет размаскировывать зависимости. Рассмотрим размаскировку пакетов, на примере браузера Firefox. Для начала сменим корневой каталог: linux32 chroot /mnt/calculate-desktop-CLDX-x86-binary env-update && source /etc/profile Определим правильное название пакета firefox и узнаем список доступных версий: eix firefox * www-client/firefox Available versions: *3.6.12 3.6.20 ~3.6.21 ~3.6.22 ~7.0.1-r1 Стабильная версия пакета 3.6.20. Размаскируем версию 7.0.1-r1: Для обновления настроек используем утилиту dispatch-conf вместо env-update: Утилита обновит маски и USE-флаги. В обоих случаях нажмите «u» для принятия изменений. Здесь же вы можете проверить и выписать названия других пакетов, необходимых для сборки. В конце, чтобы проверить все зависимости, выполните: emerge -p пакет1 пакет2 .. 4.3. Добавление пакетов Все устанавливаемые пакеты, за исключением зависимостей, прописываются в файле 'world'. Если вы ставите пакет, он, вместе с зависимыми библиотеками, устанавливается в систему. Если какие-либо библиотеки в последствии пакету уже не понадобятся, команда 'emerge --depclean' их удалит. Поэтому важно, чтобы все пакеты (без зависимостей), которые вы установили дополнительно, были прописаны в файле 'world'. Удалить их можно опять же командой 'emerge --unmerge' с указанием пакета(ов) или вручную, отредактировав файл и выполнив 'emerge --depclean'. Для построения дерева зависимостей утилиты Calculate используют мета-пакеты, в основе которых лежит app-misc/calculate-meta. Посредством USE-флагов строятся всё дерево зависимостей. Так как в процессе сборки вы могли устанавливать для проверки софт, файл var/lib/portage/world перед запаковкой будет содержать только один этот мета-пакет. Для того, чтобы добавить свои пакеты в дистрибутив, в портежах есть замечательный инструмент — сеты. При помощи сетов вы сможете подготовить свои тематические подборки программ. Сеты поддерживают вложения, что тоже очень удобно. Вы можете отредактировать свой список пакетов, воспользоваться сетом custom, находящемся в фале /etc/portage/sets/custom@, вписав в него строчку: www-client/firefox Либо создать новый сет с другим именем, например 'web', вписав в него пакет, а в файле 'custom' указать ссылку на него: @web Таким образом, сет может содержать как вложенные сеты, так и пакеты. Во время обновления системы программы из сета будут установлены, т.к. сет прописан в своем world-файле, находящемся в /var/lib/portage/world_sets. 4.4. Удаление пакетов Если очистить файл world и выполнить 'emerge --depclean', мы получим Stage3-образ. Т.е. прожиточный минимум всё же имеется и называется он 'system'. Обновить его можно командой 'emerge system', либо используя сет — 'emerge @system'. Мета-пакет calculate-meta строит зависимости исходя из выбранного профиля. Используя USE-флаги calculate_nowireless, calculate_nonetwork, calculate_noxfce и т.п., можно исключить часть зависимостей. Полный список флагов можно посмотреть в файле /var/lib/layman/calculate/profiles/desc/calculate.desc. Для примера, давайте отключим поддержку беспроводных устройств. Для этого отредактируете файл /etc/portage/make.conf, вписав в него: CALCULATE="nowireless" 5. Сохраним изменения Мы добавили браузер firefox, удалили поддержку беспроводных устройств, давайте теперь обновим образ: cl-make -U -V Пакет firefox будет установлен, а лишние зависимости удалены: 5. Создадим новый образ Для создания образа используйте утилиту cl-image: cl-image --live iso Опция "--live" позволит выиграть несколько секунд при загрузке с LiveCD или USB-Flash. Используйте эту опцию, если вы используете свежий Stage-образ Calculate Linux. 6. Завершение сборки В случае необходимости, либо по завершению установки можно прервать сборку выполнив: cl-make --break 7. Итог Для эксперимента я выбрал дистрибутив Calculate Linux Desktop XFCE и воспользовался бинарным профилем CLDX. Все дальнейшие обновления системы я буду выполнять с учётом своих USE-флагов, командой 'emerge -uDNa world'. В случае, если флаги будут полностью совпадать, пакет будет установлен из бинарного репозитория, если будут различия — пакет соберется на моей машине. Источник: http://habrahabr.ru/blogs/linux/131234/ |
||
Комментарии | ||