Archiso (Русский)
Archiso — набор bash скриптов, предназначенных для создания полностью функциональных Live-CD/DVD и Live-USB на базе Arch Linux. Это тот же инструмент, который используется для создания официальных образов, но он довольно гибкий инструмент, который может быть использован как для создания дисков восстановления или установочных, так и для специализированных live-CD/DVD/USB систем. Сердце Archiso — mkarchiso. Для получения подробного описания всех его опций достаточно вызвать его без параметров, так что здесь будет описанно только создание live диска своими руками.
Если вам требуется только краткое изложение требований и процесса сборки, вы можете также воспользоваться официальной документацией проекта.
Установка
Прежде чем начать, установите пакет archiso или archiso-gitAUR.
Archiso поставляется с двумя "профилями": releng и baseline.
- Если вы хотите создать полностью индивидуальную версию Arch Linux, предварительно установленной со всеми вашими любимыми программами и конфигурациями, используйте профиль releng.
- Если вы просто хотите создать основу для live CD, без предварительно установленных пакетов и минимальной конфигурацией, используйте baseline.
Теперь скопируйте профиль на Ваш выбор, в каталог (~/archlive
используется в примере ниже), в котором вы можете вносить корректировки. Выполните следующую команду, заменив profile
либо на releng
, либо на baseline
.
# cp -r /usr/share/archiso/configs/profile/ archlive
- Если вы используете профиль
releng
для создания полностью индивидуального образа, вы можете переходить к секции #Настройка live носителя. - Если вы используете профиль
baseline
для создания пустого образа, то вам не нужно его настраивать, поэтому переходите к секции #Сборка ISO.
Настройка live носителя
В этом разделе подробно описывается настройка создаваемого вами образа, определение пакетов и конфигураций, которые вы хотите, чтобы ваш live образ содержал.
Внутри каталога archlive
, созданного в #Установка, имеется ряд файлов и каталогов; мы рассмотрим лишь несколько из них, в основном:
packages.x86_64
— это где вы перечисляете построчно пакеты, которые вы хотите установить, и- каталог
airootfs
— это каталог, действующий как наложение, и именно там вы делаете все настройки.
Как правило, любые административные задачи, которые вы обычно делаете после новой установки, могут быть выполнены в скрипте archlive/airootfs/root/customize_airootfs.sh
, за исключением установки пакетов. Скрипт должен быть написан с точки зрения новой среды, поэтому /
в скрипте означает корень ISO-образа, который создается.
Установка пакетов
Отредактируйте списки пакетов в packages.x86_64
чтобы указать, какие пакеты должны быть установлены на live носителе.
Собственный локальный репозиторий
Для подготовки своих пакетов или пакетов из AUR/ABS, вы можете создать собственный локальный репозиторий. Если вам нужна поддержка нескольких архитектур, примените соответствующие меры для предотвращения ошибок в будущем. Каждая архитектура должна иметь собственное дерево каталогов:
Например:
$ tree ~/customrepo/ | sed "s/$(uname -m)/<arch>/g"
/home/archie/customrepo/ └── <arch> ├── customrepo.db -> customrepo.db.tar.xz ├── customrepo.db.tar.xz ├── customrepo.files -> customrepo.files.tar.xz ├── customrepo.files.tar.xz └── personal-website-git-b99cce0-1-<arch>.pkg.tar.xz 1 directory, 5 files
Затем вы можете добавить свой репозиторий, поместив следующее в ~/archlive/pacman.conf
выше других записей (для более высокого приоритета):
~/archlive/pacman.conf
... # Свой (пользовательский) репозиторий [customrepo] SigLevel = Optional TrustAll Server = file:///home/пользователь/customrepo/$arch ...
Если пакет подходит, repo-add выполняет проверку. Иначе, вы столкнетесь с сообщениями об ошибках, подобными этому:
==> ERROR: '/home/archie/customrepo/<arch>/foo-<arch>.pkg.tar.xz' does not have a valid database archive extension.
Предотвращение установки пакетов, принадлежащих основной группе
По умолчанию /usr/bin/mkarchiso
, скрипт, который используется ~/archlive/build.sh
, вызывает один из скриптов arch-install-scripts с именем pacstrap
без флага -i
, что заставляет Pacman не ждать ввода пользователя во время процесса установки.
При внесении в черный список основных пакетов группы путем добавления их в строку IgnorePkg
в файле ~/archlive/pacman.conf
, Pacman спрашивает, должны ли они все еще быть установлены, а это значит, что они будут при обходе ввода пользователя. Чтобы избавиться от этих пакетов существует несколько вариантов:
- "Грязный" способ: Добавьте флаг
-i
в каждую строку, вызывающуюpacstrap
в/usr/bin/mkarchiso
.
- "Чистый": Создайте копию
/usr/bin/mkarchiso
, в которую вы добавите флаг и адаптируете~/archlive/build.sh
, так чтобы он вызывал измененную версию скрипта mkarchiso.
- Расширенный способ: Создайте функцию для
~/archlive/build.sh
, которая явно удаляет пакеты после основной установки. Это принесет вам удовольствие от того, что вам не придется много вводить во время процесса установки.
Установка пакетов из multilib
Чтобы установить пакеты из репозитория multilib, вам нужно просто раскомментировать его в ~/archlive/pacman.conf
:
pacman.conf
[multilib] SigLevel = PackageRequired Include = /etc/pacman.d/mirrorlist
Добавление файлов в образ
Каталог airootfs действует как наложение, считайте его корневым каталогом '/' в вашей текущей системе, поэтому любые файлы, которые вы размещаете в этом каталоге, будут скопированы при загрузке.
Поэтому, если у вас есть набор скриптов iptables в вашей текущей системе, которые вы хотите использовать на вашем live образe, скопируйте их:
# cp -r /etc/iptables ~/archlive/airootfs/etc
Размещение файлов в домашнем каталоге пользователей немного отличается. Не помещайте их в airootfs/home
, а вместо этого создайте каталог skel внутри airootfs/
и разместите их там. Затем мы добавим соответствующие команды в customize_airootfs.sh
, которые мы собираемся использовать для их копирования при загрузке и выяснения разрешений.
Сначала создайте каталог skel:
# mkdir ~/archlive/airootfs/etc/skel
Теперь скопируйте файлы 'home' в каталог skel, например для .bashrc
:
# cp ~/.bashrc ~/archlive/airootfs/etc/skel/
Когда выполняется ~/archlive/airootfs/root/customize_airootfs.sh
, и создается новый пользователь, файлы из каталога skel будут автоматически скопированы в новую домашнюю папку, а разрешения будут установлены правильно.
Аналогичным образом, требуется обратить внимание на особые файлы конфигурации, которые находятся где-то внизу по иерархии. В качестве примера конфигурационный файл /etc/X11/xinit/xinitrc
находится на пути, который может быть перезаписан путем установки пакета. Чтобы поместить файл конфигурации, следует поместить пользовательский xinitrc
в ~/archlive/airootfs/etc/skel/
, а затем изменить customize_airootfs.sh
, чтобы переместить его соответствующим образом.
Загрузчик
Файл по умолчанию должен работать прекрасно, поэтому вам не нужно трогать его.
Из-за модульной природы isolinux вы можете использовать множество дополнений, так как все *.c32 файлы копируются и доступны вам. Посмотрите официальный сайт syslinux и репозиторий git archiso. Используя указанные аддоны, можно сделать визуально привлекательные и сложные меню. Для получения дополнительной информации смотрите здесь.
UEFI Secure Boot
Если вы хотите загружать Archiso в окружении с включённым UEFI Secure Boot, вы должны использовать подписанный загрузчик. Вы можете воспользоваться инструкциями из статьи Secure Boot#Booting an installation medium.
Вход в систему
Запуск X при загрузке выполняется путем включения службы systemd менеджера входа в систему. Если вы знаете, какой файл .service нуждается в символической ссылке: Отлично. Если нет, то вы можете легко узнать в случае, если вы используете одну и ту же программу в системе, в которой вы собираете свой iso. Просто используйте:
$ ls -l /etc/systemd/system/display-manager.service
Теперь создайте ту же самую символическую ссылку в ~/archlive/airootfs/etc/systemd/system
. Для LXDM:
# ln -s /usr/lib/systemd/system/lxdm.service ~/archlive/airootfs/etc/systemd/system/display-manager.service
Это позволяeт запустить LXDM при загрузке системы из вашего live образа.
В качестве альтернативы вы можете просто включить службу в airootfs/root/customize_airootfs.sh
вместе с другими включенными там службами.
Если вы хотите, чтобы графическая среда фактически запускалась автоматически во время загрузки, обязательно отредактируйте airootfs/root/customize_airootfs.sh
и замените
systemctl set-default multi-user.target
на
systemctl set-default graphical.target
Изменение автоматического входа в систему
Файлы настроек автоматического входа для getty расположены в airootfs/etc/systemd/system/getty@tty1.service.d/autologin.conf
.
Вы можете отредактировать этот файл для изменения автоматического входа пользователя в систему:
[Service] ExecStart= ExecStart=-/sbin/agetty --autologin isouser --noclear %I 38400 linux
Или удалите его вообще для отключения автоматического входа в систему.
Сборка ISO
Создайте ISO, который затем можно записать на компакт-диск или USB, запустив:
# mkarchiso -v -w /путь/до/рабочей_директории -o /путь/до/выходной_директории /путь/до/профиля/
-w
указывает рабочий каталог. Если параметр не указан, по умолчанию он будетработать
в текущем каталоге.-o
указывает каталог, в который будет помещен созданный ISO-образ. Если параметр не указан, по умолчанию он будетвыводить
в текущий каталог.- Следует отметить, что файл профиля
profiledef.sh
не может быть указан при запуске mkarchiso, только путь к файлу
Замените /путь/до/профиля/
на путь к вашему пользовательскому профилю или на /usr/share/archiso/configs/releng/
, если вы создаете неизмененный профиль.
# mkarchiso -v -w /tmp/archiso-tmp /путь/до/профиля/
При запуске сценарий загрузит и установит указанные вами пакеты в рабочую_директорию/x86_64/airootfs
, создаст образы ядра и инициализации, применит ваши настройки и, наконец, создаст ISO в выходной каталог.
Удаление рабочей директории
/run/ media/user/label
, привязывается к work/x86_64/airootfs/run/media/user/label
в процессе сборки).Временные файлы копируются в рабочую директорию. После успешного создания ISO рабочую директорию и его содержимое можно удалить. Например.:
# rm -rf /путь/до/рабочей_директории
Использование ISO
Для получения дополнительной информации смотрите статью Руководство по установке.