Сборка образов Gentoo для загрузки через PXE


Ответы

Скрипт сборки

# Скачиваем образ
mkdir -p iso
pushd iso
   if [ ! -f install-amd64-minimal-20170907.iso ]
   then
       wget http://mirror.yandex.ru/gentoo-distfiles/releases/amd64/autobuilds/20170907/install-amd64-minimal-20170907.is
o
   fi
popd

# Монтируем образ и распаковываем необходимые файлы
mkdir -p mnt
mount -o loop iso/install-amd64-minimal-20170907.iso mnt/

cp mnt/isolinux/gentoo ./gentoo/gentoo-20170907-x86_64.kernel
cp mnt/isolinux/gentoo.igz ./
cp mnt/image.squashfs ./

umount mnt

# Применяем патч для init и собираем образ
mkdir igz
pushd igz
   xzcat ../gentoo.igz | cpio -idv &>/dev/null

   cp init init.orig
   patch < ../gentoo-20170907-x86_64-init.patch

   mkdir -p mnt/cdrom
   mv ../image.squashfs mnt/cdrom/

   find | cpio -o -H newc | xz -v --check=crc32 --x86 --lzma2 > ../gentoo/gentoo-20170907-x86_64.igz
popd

# Удаляем мусор
rm -rf igz mnt gentoo.igz
# Скачиваем образ
mkdir -p iso
pushd iso
   if [ ! -f install-x86-minimal-20170411.iso ]
   then
       wget http://mirror.yandex.ru/gentoo-distfiles/releases/x86/autobuilds/20170411/install-x86-minimal-20170411.iso
   fi
popd

# Монтируем образ и распаковываем необходимые файлы
mkdir -p mnt
mount -o loop iso/install-x86-minimal-20170411.iso mnt/

cp mnt/isolinux/gentoo ./gentoo/gentoo-20170411-x86.kernel
cp mnt/isolinux/gentoo.igz ./
cp mnt/image.squashfs ./

umount mnt

# Применяем патч для init и собираем образ
mkdir igz
pushd igz
   xzcat ../gentoo.igz | cpio -idv &>/dev/null

   cp init init.orig
   patch < ../gentoo-20170411-x86-init.patch

   mkdir -p mnt/cdrom
   mv ../image.squashfs mnt/cdrom/

   find | cpio -o -H newc | xz -v --check=crc32 --x86 --lzma2 > ../gentoo/gentoo-20170411-x86.igz
popd

# Удаляем мусор
rm -rf igz mnt gentoo.igz

Патчи:

Конфигурация для iPXE

:gentoo_20170907_x86_64
kernel {{ request.url_root }}images/gentoo/gentoo-20170907-x86_64.kernel
initrd {{ request.url_root }}images/gentoo/gentoo-20170907-x86_64.igz
imgargs gentoo-20170907-x86_64.kernel root=/dev/ram0 init=/linuxrc loop=/image.squashfs cdroot real_root=/ dokeymap vga=788 nodhcp
boot || goto gentoo
goto gentoo

:gentoo_20170411_x86
kernel {{ request.url_root }}images/gentoo/gentoo-20170411-x86.kernel
initrd {{ request.url_root }}images/gentoo/gentoo-20170411-x86.igz
imgargs gentoo-20170411-x86.kernel root=/dev/ram0 init=/linuxrc loop=/image.squashfs cdroot real_root=/ dokeymap vga=788 nodhcp
boot || goto gentoo
goto gentoo

Возможно будут интересны и другие вопросы
© RemiZOffAlex