Назад | Перейти на главную страницу

Установка кикстарта с USB - расположение кикстарта

После успешного восстановления ISO-образа Fedora (для USB-накопителя) после добавления файла кикстарта (https://serverfault.com/questions/548405/), У меня возникла проблема с поиском файла кикстарта на USB-носителе.

Когда это делается с компакт-диска, вы можете просто запустить его, добавив этот параметр для загрузки:

linux ks=cdrom

Это запустит кикстарт (при условии, что файл кикстарта называется ks.cfg и находится в корне диска).

Очевидно, что для USB-накопителя все будет по-другому, поэтому, исходя из своих исследований, я предположил, что эта строка подойдет:

linux ks=hd:sdb1:/ks.cfg

Очевидно, это не работает. Я получаю сообщение об ошибке, что этот диск уже смонтирован и не может быть перемонтирован.

РЕДАКТИРОВАТЬ: фактическое сообщение об ошибке:

mount: /dev/sdb1 is already mounted or /run/install/tmpmnt0 busy
Warning: Can't get kickstart from /dev/sdb1:/ks.cfg

Чтобы проверить правильность синтаксиса, я поместил файл кикстарта на другой USB-накопитель и загрузил ту же команду, чтобы получить ks.cfg из нового местоположения:

linux ks=hd:sdc1:/ks.cfg

Это работает (при условии, что USB-накопители смонтированы по порядку, загрузка -> sdb1, кикстарт -> sdc1). Установка запустится и завершится без проблем. Очевидно, что использование двух перьевых дисководов несколько неприятно и ненадежно.

Есть ли способ обойти это?

Я смог решить эту проблему, выполнив следующие действия:

  • Поместите файл кикстарта вверху isolinux каталог и убедитесь, что он назван ks.cfg
  • мой isolinux.cfg файл выглядит так:

    label linux
      menu label ^Install CentOS 7
      kernel vmlinuz
      append initrd=initrd.img inst.ks=hd:LABEL=CentOS\x207\x20x86_64:/isolinux/ks.cfg inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 quiet
    

Использование метки диска при указании ks.cfg делает полученный ISO-образ более переносимым. (можно превратить в загрузочную флешку)

Я перепробовал все, но, похоже, только это работает: поместите ks.cfg внутрь initrd. Итак, приведенные ниже шаги извлекают initrd, добавляют туда ks.cfg и воссоздают его. Протестировано с CentOS7

Сначала смонтируйте исходный образ .iso на свой компьютер и скопируйте его содержимое в tmp /

Затем,

#Keep the original file
cp -ai tmp/isolinux/initrd.img initrd.img.orig
mkdir irmod
cd irmod

#Extract initrd in irmod/
xz -d < ../tmp/isolinux/initrd.img | cpio --extract --make-directories --no-absolute-filenames

#Add the ks.cfg in there
cp ../tmp/ks.cfg .

# Recreate the initrd.img inside isolinux/
find . | cpio -H newc --create | xz --format=lzma --compress --stdout > ../tmp/isolinux/initrd.img

#cleanup
cd ..
rm -r irmod

# Add  ks=file:/ks.cfg to the boot parameters in isolinux.cfg. you can do it by hand, this is an example for our own isolinux.cfg
sed -s -i 's|ks=.*ks\.cfg ksdevice=link|ks=file:/k1.cfg|' ../tmp/isolinux/isolinux.cfg ../isolinux.cfg

Затем приступайте к созданию изображения как обычно:

cd tmp/

imgname="inaccess-centos7-ks1-v1.iso"
xorriso -as mkisofs -R -J -V "CentOS 7 x86_64" -o "../${imgname}" \
        -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4  \
        -boot-info-table -isohybrid-mbr /usr/share/syslinux/isohdpfx.bin .
cd ..

Мой любимый метод - использовать UUID, потому что он стабильный.

Я использую два флеш-накопителя, первый с CentOS, второй с кикстартом. После сохранения кикстарта на втором флеш-накопителе я проверяю его UUID в Linux с помощью команды blkid: / dev / sdg1: UUID = "885E: 0BD1" TYPE = "vfat"

И после этого я использую его на странице установки: ks = hd: UUID = 885E: 0BD1: /ks.cfg

Это действительно работает!

Вы должны указать / sda1, потому что при загрузке с USB sda - это USB, sdb - это первый жесткий диск и т. Д.

Теперь у вас есть один раздел на USB-накопителе размером с ISO-образ. Просто создайте еще один раздел на USB-накопителе, используя оставшееся пространство, отформатируйте его и поместите туда свои файлы кикстарта.

UPD: попробуйте fdisk, поскольку parted похоже, не работает в этом случае.

UPD1: iso нужно обновлять с помощью xorriso

UPD2: посмотреть https://serverfault.com/a/551307/134234