Remastering the Install ISO (Русский) - ArchWiki

# Remastering the Install ISO (Русский)

From ArchWiki
Состояние перевода: На этой странице представлен перевод статьи Remastering the Install ISO. Дата последней синхронизации: 19 августа 2018. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

Ссылки по теме

- Archiso (Русский)

Ремастеринг официального установочного ISO образа Arch Linux не является необходимым для большинства приложений. Однако, это может быть желательно в некоторых случаях.

- Основное оборудование не поддерживается базовой установкой. (Редко)
- Установка на машине, не поддерживающей интернет.
- Развертывание Arch Linux на многих аналогичных машинах, требующих такой же процедуры установки.

Поскольку эти ISO являются загрузочными, они также могут использоваться для восстановления системы, тестирования, демонстрации проектов и т.д.

## Archiso

Часто предпочтительнее пересобирать установку ISO с помощью Archiso, вместо ремастеринга существующего ISO.

## Вручную

### Как это работает

Корень файловой live системы хранится в `arch/x86_64/airootfs.sfs` в ISO. Ядро и initramfs находятся в `arch/boot/x86_64`.

При загрузке initramfs будет искать устройство, с которого он был загружен с помощью его метки, например `ARCH_201410`, и смонтирует корневую файловую систему для архитектуры x86_64.

### Распаковка ISO

Чтобы переделать Arch Linux ISO, вам понадобится копия исходного ISO-образа. Загрузите его со страницы загрузок

Теперь создайте новый каталог для монтирования ISO:

    # mkdir /mnt/archiso

Смонтируйте ISO к этому каталогу (из-за специфики ISO, результат доступен только для чтения):

    # mount -t iso9660 -o loop /path/to/archISO /mnt/archiso

Скопируйте содержимое в другой каталог, где они могут быть отредактированы:

    $ cp -a /mnt/archiso ~/customiso

Примечание: Убедитесь, что `customiso` не существует заранее, иначе это создаст подкаталог `archiso` внутри `customiso`

### Настройка

#### Редактирование системы x86_64

Перейдите в каталог системы x86_64:

     $ cd ~/customiso/arch/x86_64

Unsquash `airootfs.sfs` (для `squashfs-root`):

     $ unsquashfs airootfs.sfs

Примечание: Для этого вам нужен пакет squashfs-tools.

Если вам необходимо запустить `mkinitcpio` без `arch-chroot`, тогда нужно временно скопировать ядро:

    $ cp ../boot/x86_64/vmlinuz squashfs-root/boot/vmlinuz-linux

Теперь вы можете изменить содержимое системы в `squashfs-root`. Вы также можете сделать chroot в эту систему для установки пакетов и т.д.:

     # arch-chroot squashfs-root /bin/bash

Примечание: `arch-chroot` является частью пакета arch-install-scripts
Примечание: Если скрипт `arch-chroot` недоступен в вашей системе (например, при ремастеризации дистрибутивов на основе arch), смонтируйте файловые системы api и скопируйте данные DNS. Для получения допольнительной информации смотрите статью Chroot#Использование chroot.

Чтобы иметь возможность устанавливать пакеты, вы должны инициализировать pacman keyring:

     (chroot) # pacman-key --init
     (chroot) # pacman-key --populate archlinux

Примечание: Этот шаг может занять довольно долгое время, будьте терпеливыми. (Для получения допольнительной информации смотрите статью Pacman-Key)

Если обновлено ядро или initrd, необходимы дополнительные шаги. В этом случае вам нужно установить archiso внутри chroot и изменить содержимое `/etc/mkinitcpio.conf`:

     (chroot) # pacman -Syu --force archiso linux
     (chroot) # nano /etc/mkinitcpio.conf

Измените строку `HOOKS="...` на:

     HOOKS="base udev memdisk archiso_shutdown archiso archiso_loop_mnt archiso_pxe_common archiso_pxe_nbd archiso_pxe_http archiso_pxe_nfs archiso_kms block pcmcia filesystems keyboard"

Теперь обновите initramfs:

     (chroot) # mkinitcpio -p linux

Когда вы закончите, создайте список всех установленных пакетов, очистите кеш pacman и выйдите из chroot:

     (chroot) # LANG=C pacman -Sl | awk '/\[installed\]$/ {print $1 "/" $2 "-" $3}' > /pkglist.txt
     (chroot) # pacman -Scc
     (chroot) # exit

Если вы обновили ядро или initramfs, переместите их в систему и удалите резервные initramfs (установочный ISO не использует это):

     $ mv squashfs-root/boot/vmlinuz-linux ~/customiso/arch/boot/x86_64/vmlinuz
     $ mv squashfs-root/boot/initramfs-linux.img ~/customiso/arch/boot/x86_64/archiso.img
     $ rm squashfs-root/boot/initramfs-linux-fallback.img

Переместите список пакетов:

     $ mv squashfs-root/pkglist.txt ~/customiso/arch/pkglist.x86_64.txt

Теперь заново создайте `airootfs.sfs`:

     $ rm airootfs.sfs
     $ mksquashfs squashfs-root airootfs.sfs

Примечание: В ежемесячном установочном ISO используется параметр `-comp xz` для `mksquashfs`, чтобы значительно уменьшить размер, но это также занимает больше времени

Очистка:

     # rm -r squashfs-root

Теперь обновите контрольную сумму MD5 `airootfs.sfs`:

     $ md5sum airootfs.sfs > airootfs.md5

#### Редактирование системы i686

#### Изменение загрузочного образа EFI

Если вы обновили ядро или initramfs и хотите загрузиться в EFI-системах, обновите загрузочный образ EFI. Вам понадобится пакет dosfstools, поскольку загрузочный образ EFI является файловой системой `FAT16`.

     $ mkdir mnt
     # mount -t vfat -o loop ~/customiso/EFI/archiso/efiboot.img mnt
     # cp ~/customiso/arch/boot/x86_64/vmlinuz mnt/EFI/archiso/vmlinuz.efi
     # cp ~/customiso/arch/boot/x86_64/archiso.img mnt/EFI/archiso/archiso.img

Если вы видите ошибки `Нет места на устройстве`, вам может потребоваться изменить размер `efiboot.img`. Вы также можете создать новый `efiboot.img` и скопировать старые файлы (замените `50` на необходимый размер).

     $ dd if=/dev/zero bs=1M count=50 of=efiboot-new.img
     $ mkfs.fat -n "ARCHISO_EFI" efiboot-new.img
     $ mkdir new
     # mount -t fat -o loop efiboot-new.img new
     $ cp -r mnt/* new/
     # umount new mnt
     $ mv efiboot-new.img ~/customiso/EFI/archiso/efiboot.img

И используйте новый `efiboot.img`, как указано выше.

### Создание нового ISO

Создайте новый образ ISO с `genisoimage`, который является частью пакета cdrtools, в качестве символической ссылки на `mkisofs`.

    $ genisoimage -l -r -J -V "ARCH_201209" -b isolinux/isolinux.bin -no-emul-boot -boot-load-size 4 -boot-info-table -c isolinux/boot.cat -o ../arch-custom.iso ./

Примечание: Метка ISO должна оставаться такой же, как оригинальная метка (в данном случае `ARCH_201209`) для успешной загрузки образа.
Примечание: Варианты `-b` и `-c` ожидают пути относительно корня ISO

Полученный образ ISO загрузится только с CD, DVD или BD. Для загрузки с USB-накопителя или жесткого диска ему нужна функция isohybrid. Это может быть достигнуто путем постобработки ISO с помощью программы isohybrid, включенной в пакет syslinux. Официально версия установленного SYSLINUX должна быть такой же, как версия /isolinux/isolinux.bin в ISO. Неизвестно, существуют ли действительно несовместимые комбинации версий.

Альтернатива genisoimage plus isohybrid может быть получена из xorriso run mkarchiso.

    $ iso_label="ARCH_201209"
    $ xorriso -as mkisofs \
           -iso-level 3 \
           -full-iso9660-filenames \
           -volid "${iso_label}" \
           -eltorito-boot isolinux/isolinux.bin \
           -eltorito-catalog isolinux/boot.cat \
           -no-emul-boot -boot-load-size 4 -boot-info-table \
           -isohybrid-mbr ~/customiso/isolinux/isohdpfx.bin \
           -output arch-custom.iso \
           ~/customiso

Опция -isohybrid-mbr нуждается в файле шаблона MBR. Скорее всего, в исходном ISO уже есть такой файл /isolinux/isohdpfx.bin, который соответствует версии SYSLINUX, используемой в ISO. Только если этот файл отсутствует в скопированном содержимом ISO, он должен быть вырезан из исходного файла ISO-образа, прежде чем выполняется надстройка xorriso:

    $ dd if=/path/to/archISO bs=512 count=1 of=~/customiso/isolinux/isohdpfx.bin

Если исходный ISO поддерживает загрузку через EFI, это может быть активировано в новом ISO, вставив следующие опции между строками "-isohybrid-mbr ..." и "-output ...":

           -eltorito-alt-boot \
           -e EFI/archiso/efiboot.img \
           -no-emul-boot -isohybrid-gpt-basdat \

Файл /EFI/archiso/efiboot.img является файлом образа файловой системы FAT. Если в исходном ISO отсутствует, то в этом ISO не было поддержки EFI.

Вновь созданный образ ISO `arch-custom.iso` находится в домашнем каталоге. Вы можете записать образ ISO на USB-накопитель, как описано в USB-накопитель. В качестве альтернативы вы можете записать ISO-образ на CD, DVD или BD с помощью вашего предпочтительного программного обеспечения. В Arch, это описано в статье об записи образа ISO.

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

- http://www.knoppix.net/wiki/KnoppixRemasteringHowto
- http://syslinux.zytor.com/iso.php
- http://busybox.net/
- Linux Live Kit

Categories:

- Русский
- Installation process (Русский)
- Live Arch systems (Русский)