Archiso (Русский)

From ArchWiki
Jump to: navigation, search
Состояние перевода: На этой странице представлен перевод статьи Archiso. Дата последней синхронизации: 4 декабря 2018. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

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 носителе.

Примечание: Если вы хотите использовать оконный менеджер в Live CD, то вы должны добавить необходимые и правильные видео драйвера, или WM может зависнуть при загрузке.

Собственный локальный репозиторий

Merge-arrows-2.pngThis article or section is a candidate for merging with Pacman/Tips and tricks (Русский)#Собственный локальный репозиторий.Merge-arrows-2.png

Notes: Переместите общую информацию (например, дерево репо) в основную статью. (Discuss in Talk:Archiso (Русский)#)

Для подготовки своих пакетов или пакетов из 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 должно принадлежать суперпользователю. Правильные владельцы будут установлены в ближайшее время.

Каталог 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#Using a signed boot loader.

Вход в систему

Запуск 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, которые вы можете записать на CD или USB:

Сначала создайте каталог out/,

# mkdir ~/archlive/out/

Затем внутри ~/archlive выполните:

# ./build.sh -v

Теперь скрипт загрузит и установит пакеты, указанные в work/*/airootfs, создаст ядро и инициализирует образы, применит ваши настройки и, наконец, создаст iso в out/.

Пересборка ISO

Пересборка iso после изменений официально не поддерживается. Однако это легко осуществить, применив два шага. Сначала вам нужно удалить файлы блокировки в рабочем каталоге:

# rm -v work/build.make_*

Кроме того, требуется отредактировать скрипт airootfs/root/customize_airootfs.sh, и добавить команду id в начале строки useradd, как показано здесь. В противном случае пересборка останавливается на этом моменте, потому что пользователь, который должен быть добавлен, уже существует FS#41865.

Tango-edit-clear.pngThis article or section needs language, wiki syntax or style improvements. See Help:Style for reference.Tango-edit-clear.png

Reason: Опечатка? (Discuss in Talk:Archiso (Русский)#)
! id arch && useradd -m -p "" -g users -G "adm,audio,floppy,log,network,rfkill,scanner,storage,optical,power,wheel" -s /usr/bin/zsh arch

Также удалите постоянные данные, например созданные пользователями или символические ссылки, такие как /etc/sudoers.

Tango-view-fullscreen.pngThis article or section needs expansion.Tango-view-fullscreen.png

Reason: Сообщите больше информации о том, что необходимо удалить или сбросить. (Discuss in Talk:Archiso (Русский)#)

Сборку можно немного ускорить, отредактировав скрипт pacstrap (расположенный в /bin/pacstrap) и изменив следующее в строке 361:

До:

if ! pacman -r "$newroot" -Sy "${pacman_args[@]}"; then

После:

if ! pacman -r "$newroot" -Sy --needed "${pacman_args[@]}"; then

Это увеличивает скорость первоначальной загрузки, так как не нужно загружать и устанавливать какие-либо основные пакеты, которые уже установлены.

Использование ISO

Для получения дополнительной информации смотрите статью Руководство по установке.

Смотрите также

Документация и учебные пособия

Примеры шаблонов настройки

Создание автономного установочного ISO