Как создать собственный ISO-образ в CentOS

20

Я пытаюсь создать собственный ISO-образ, который бы устанавливал минимально необходимые RPMS вместе с некоторыми собственными написанными RPM моего приложения. А также хочет выполнить некоторые шаги после установки, такие как настройка моего приложения, настройка VPN и т. д.

Я видел некоторые ссылки в Google, но они указывают на создание репо и ISO с подключенного диска или ISO-образа.

Спасибо Рамеш

Рамеш Кумар
источник
Вы также можете использовать Redhat
Kickstart

Ответы:

46
  1. Создайте каталог для монтирования вашего источника.

    mkdir /tmp/bootiso
    
  2. Цикл монтирования исходного ISO, который вы модифицируете. (Скачать с Red Hat / CentOS.)

    mount -o loop /path/to/some.iso /tmp/bootiso
    
  3. Создайте рабочий каталог для ваших настроенных носителей.

    mkdir /tmp/bootisoks
    
  4. Скопируйте исходный носитель в рабочий каталог.

    cp -r /tmp/bootiso/* /tmp/bootisoks/
    
  5. Размонтируйте исходный ISO и удалите каталог.

    umount /tmp/bootiso && rmdir /tmp/bootiso
    
  6. Измените права на рабочий каталог.

    chmod -R u+w /tmp/bootisoks
    
  7. Скопируйте сценарий Kickstart, который был изменен для пакетов и %postв рабочий каталог.

    cp /path/to/someks.cfg /tmp/bootisoks/isolinux/ks.cfg
    
  8. Скопируйте все дополнительные RPM в структуру каталогов и обновите метаданные.

    cp /path/to/*.rpm /tmp/bootisoks/Packages/.
    cd /tmp/bootisoks/Packages && createrepo -dpo .. .
    
  9. Добавьте кикстарт в параметры загрузки.

    sed -i 's/append\ initrd\=initrd.img/append initrd=initrd.img\ ks\=cdrom:\/ks.cfg/' /tmp/bootisoks/isolinux/isolinux.cfg
    
  10. Создайте новый файл ISO.

    cd /tmp/bootisoks && \ 
    mkisofs -o /tmp/boot.iso -b isolinux.bin -c boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -V "CentOS 7 x86_64" -R -J -v -T isolinux/. .
    
  11. (Необязательно) Используйте, isohybridесли хотите, чтобы ddфайл ISO загружался с USB-ключа.

    isohybrid /tmp/boot.iso
    
  12. Добавьте контрольную сумму MD5 (чтобы разрешить тестирование носителя).

    implantisomd5 /tmp/boot.iso
    

Если вам нужна дополнительная помощь в создании сценария Kickstart , я предлагаю начать с официальной документации Red Hat.

Аарон Копли
источник
1
Возможно, вы пропустили или испортили шаг 4, тогда?
Аарон Копли
3
@AaronCopley да, вы, вероятно, правы. Я также нашел это: github.com/joyent/mi-centos-7, который помог мне.
Сиванн
1
На шаге 9 я считаю, что вы должны указать последний параметр. (точка), чтобы указать текущий каталог. Странное поведение по умолчанию, но без этого mkisofs создает iso-файл, который содержит только файлы из верхнего каталога и не содержит подкаталогов и далее.
hshib
2
У меня также была проблема с шагом 4. При использовании команды «cp» он не копирует скрытые файлы .discinfo и .treeinfo. Без них созданный iso завершается ошибкой во время установки, сообщая, что «CD / ROM not found».
hshib
1
Вы можете скопировать все с помощью одной команды с помощью - "cp -r / tmp / bootiso /. / Tmp / bootisoks /" (это немного сложно - обратите внимание, один. После / tmp / bootiso /)
hshib