вытаскиваем официальный образ/ обновляем и запаковываем

Шаг 1. Копируем файлы ISO в рабочую папку Создадим рабочую директорию и скопируем туда файлы, чтобы их можно было редактировать:

mkdir ~/custom_iso cp -a /home/eva/original_iso_image/mnt/. ~/custom_iso/

Шаг 2. Распаковываем внутреннюю файловую систему у нас на вм 10гб озу и 6 вирт ядер Распакуем сжатый образ airootfs.sfs, где живет сама система Arch Linux:

mkdir ~/extracted_fs sudo unsquashfs -d ~/extracted_fs/rootfs ~/custom_iso/arch/x86_64/airootfs.sfs

Шаг 3. Обновляем ядро внутри образаТак как у вас в основной системе уже стоит ядро 7.0.10-arch1-1, мы можем просто скопировать готовые файлы ядра и модулей прямо из вашей рабочей системы внутрь распакованного образа. Это быстрее и надежнее, чем скачивать через pacman.

# 1. Копируем модули ядра вашей системы (7.0.10-arch1-1) внутрь образа sudo cp -a /usr/lib/modules/7.0.10-arch1-1 ~/extracted_fs/rootfs/usr/lib/modules/

# 2. Генерация файла initramfs

   Создаем файл инициализации для ядра 7.0.10-arch1-1 
 напрямую в корень вашей домашней папки:
 sudo mkinitcpio -k 7.0.10-arch1-1 -g /home/eva/initramfs-linux.img

# 3. Копируем само ядро и образ инициализации в загрузочную папку системы образа sudo cp /boot/vmlinuz-linux ~/extracted_fs/rootfs/boot/vmlinuz-linux sudo cp /home/eva/initramfs-linux.img ~/extracted_fs/rootfs/boot/initramfs-linux.img

Шаг 4. Обновляем ядро для загрузчика ISO Ядро на Arch ISO дублируется. Его также нужно обновить в папке самого загрузчика диска:

sudo cp /boot/vmlinuz-linux ~/custom_iso/arch/boot/x86_64/vmlinuz-linux sudo cp /home/eva/initramfs-linux.img ~/custom_iso/arch/boot/x86_64/initramfs-linux.img

изменено на это обновление из интернета #

ШАГ 4 (ИСПРАВЛЕННЫЙ)

# 1. Создаем папку кэша и сразу вложенную папку для базы данных mkdir -p /tmp/pacman-cache/db

# 2. Запускаем изолированный pacman sudo pacman -Syu –root /home/eva/extracted_fs/rootfs –cachedir /tmp/pacman-cache –dbpath /tmp/pacman-cache/db –noconfirm

sudo pacman -S linux linux-firmware –root /home/eva/extracted_fs/rootfs –cachedir /tmp/pacman-cache –dbpath /tmp/pacman-cache/db –needed –overwrite «*» –noconfirm

результате файл initramfs-linux.img внутри rootfs либо не создался, либо собрался битым. Если сейчас упаковать ISO, целевой сервер не сможет з агрузиться.Давайте исправим эту ошибку генерации initramfs на Шаге 4 прямой командой, открыв утилите доступ к системным потокам хоста. Выполните эту команду, чтобы принудительно и правильно пересобрать образ инициализации прямо внутри вашей папки rootfs:

sudo MODULEDIR=/home/eva/extracted_fs/rootfs/usr/lib/modules/7.0.10-arch1-1 mkinitcpio –config /home/eva/extracted_fs/rootfs/etc/mkinitcpio.conf –kernel 7.0.10-arch1-1 –generate /home/eva/extracted_fs/rootfs/boot/initramfs-linux.img

Мы явно указали mkinitcpio использовать файлы конфигурации и модули ядра 7.0.10 прямо из папки rootfs.Она запустится в контексте хоста tom1, без проблем прочитает /dev/stdin и сгенерирует идеальный, рабочий файл initramfs-linux.img прямо по нужному адресу.

tar -xOf /tmp/pacman-cache/linux-7.0.10.arch1-1-x86_64.pkg.tar.zst usr/lib/modules/7.0.10-arch1-1/vmlinuz | sudo tee /home/eva/extracted_fs/rootfs/boot/vmlinuz-linux > /dev/null

проверить что смонтированно, иначе sudo mount -o loop /home/eva/original_iso_image/archlinux-x86_64.iso /home/eva/original_iso_image/mnt

2. Копируем структуру в пустой конструктор custom_iso cp -a /home/eva/original_iso_image/mnt/. /home/eva/custom_iso/

3. Выполняем Шаг 5 (Теперь файлы ядра скопируются идеально) sudo cp /home/eva/extracted_fs/rootfs/boot/vmlinuz-linux /home/eva/custom_iso/arch/boot/x86_64/vmlinuz-linux sudo cp /home/eva/extracted_fs/rootfs/boot/initramfs-linux.img /home/eva/custom_iso/arch/boot/x86_64/initramfs-linux.img

Шаг 5. Собираем образ SquashFS обратно Удаляем старый сжатый образ и упаковываем измененную систему заново (это может занять пару минут):

sudo rm -f /home/eva/custom_iso/arch/x86_64/airootfs.sfs sudo mksquashfs /home/eva/extracted_fs/rootfs /home/eva/custom_iso/arch/x86_64/airootfs.sfs -comp xz

isohdpfx.bin не оказалось на диске Выполните команду для поиска :

find ~/custom_iso -name «isohdpfx.bin»

Отлично, файл isohdpfx.bin нашёлся прямо внутри вашего образа [archlinux.org]! Раз он лежит по пути /home/eva/custom_iso/boot/syslinux/isohdpfx.bin, мы просто скормим его утилите xorrisofs [archlinux.org].Выполните эту команду, и сборка наконец-то завершится успехом:

Шаг 6. Создаем финальный .iso файл Собираем всё обратно в загрузочный ISO-образ. Файл new_arch.iso появится в вашей домашней папке:

xorrisofs -joliet -rock -volid «ARCH_CUSTOM» -output /home/eva/new_arch.iso /home/eva/custom_iso

Шаг 7. Проверим версию ядра после обновления

sudo umount /home/eva/original_iso_image/mnt 2>/dev/null sudo mount -o loop ~/new_arch.iso /home/eva/original_iso_image/mnt file /home/eva/original_iso_image/mnt/arch/boot/x86_64/vmlinuz-linux

Проверка подтверждает: version 7.0.10-arch1-1. Вы успешно пересобрали ISO-образ, обновили ядро, укротили unsquashfs и победили капризные пути в xorriso без захламления основной системы.Теперь этот образ готов к использованию. Чтобы безопасно очистить временные файлы на виртуальной машине, которые занимают место, выполните:

sudo umount /home/eva/original_iso_image/mnt sudo rm -rf ~/custom_iso ~/extracted_fs ~/initramfs-linux.img

Шаг 8. # 1. Размонтируем старый образ, если он еще висит sudo umount /home/eva/original_iso_image/mnt 2>/dev/null

# 2. Монтируем ваш СВЕЖЕСОБРАННЫЙ new_arch.iso в папку mnt sudo mount -o loop /home/eva/new_arch.iso /home/eva/original_iso_image/mnt

# 3. Считываем метаданные ядра напрямую из нового образа file /home/eva/original_iso_image/mnt/arch/boot/x86_64/vmlinuz-linux

Шаг 9. Вытащить образ в Windows