Remastering the Install ISO (Русский)
Ремастеринг официального установочного ISO образа Arch Linux не является необходимым для большинства приложений. Однако, это может быть желательно в некоторых случаях.
- Основное оборудование не поддерживается базовой установкой. (Редко)
- Установка на машине, не поддерживающей интернет.
- Развертывание Arch Linux на многих аналогичных машинах, требующих такой же процедуры установки.
Поскольку эти ISO являются загрузочными, они также могут использоваться для восстановления системы, тестирования, демонстрации проектов и т.д.
Contents
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
Настройка
Редактирование системы x86_64
Перейдите в каталог системы x86_64:
$ cd ~/customiso/arch/x86_64
Unsquash airootfs.sfs
(для squashfs-root
):
$ unsquashfs airootfs.sfs
Если вам необходимо запустить mkinitcpio
без arch-chroot
, тогда нужно временно скопировать ядро:
$ cp ../boot/x86_64/vmlinuz squashfs-root/boot/vmlinuz-linux
Теперь вы можете изменить содержимое системы в squashfs-root
. Вы также можете сделать chroot в эту систему для установки пакетов и т.д.:
# arch-chroot squashfs-root /bin/bash
Чтобы иметь возможность устанавливать пакеты, вы должны инициализировать pacman keyring:
(chroot) # pacman-key --init (chroot) # pacman-key --populate archlinux
Если обновлено ядро или 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
Очистка:
# 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 загрузится только с 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.