カスタムキックスタートファイル(USBメディアに転送)を使用し、grubに適切なパラメータを追加してRed Hat Linux 7.4用のインストールイメージを構築しようとしていますが、ks=
これを行う方法はわかりません。
私が試したことは次のとおりです。
dd if=rhel-server-7.4-x86_64-dvd.iso of=/dev/sdb
これにより起動可能なUSBスティックが作成されますが、もちろんキックスタートファイルはありません。
次に、ISOの内容を一時ファイルにコピーし、ISOの内容を追加してks.cfg
grub構成を変更し、それを使用してgenisoimage
新しいイメージを再作成しました。
genisoimage \
-untranslated-filenames \
-rational-rock \
-v \
-translation-table \
-input-charset "default" \
-J \
-joliet-long \
$VOLLABELARGS
-b isolinux/isolinux.bin \
-c isolinux/boot.cat \
-no-emul-boot \
-boot-load-size 4 \
-boot-info-table \
-eltorito-alt-boot \
-efi-boot images/efiboot.img \
-no-emul-boot \
-o $THISDIR/$VOLLABEL.iso \
これはRed Hat独自のRHEL 6ガイドラインに基づいています。もちろん私はRHEL 7を使用しています。これは BIOS ブートでは正常に動作しますが、UEFI システムで試してみると、結果のイメージは「互換性がない」として拒否されます。
結果の画像も元のRHEL ISOよりはるかに大きい。
確認してみると元のxorriso
画像とたくさん違うことが確認されました。isohybrid
ある程度役に立ちますが、イメージを起動可能にするのに十分ではありません。
xorriso -report
Red Hat ISOの出力:
xorriso -indev rhel-server-7.4-x86_64-dvd.iso -report_el_torito cmd
-volid 'RHEL-7.4 Server.x86_64'
-volume_date uuid '2017071101014600'
-boot_image isolinux system_area=--interval:imported_iso:0s-15s:zero_mbrpt,zero_gpt:'rhel-server-7.4-x86_64-boot.iso'
-boot_image any partition_cyl_align=on
-boot_image any partition_offset=0
-boot_image any partition_hd_cyl=64
-boot_image any partition_sec_hd=32
-boot_image any iso_mbr_part_type=0x00
-boot_image any cat_path='/isolinux/boot.cat'
-boot_image isolinux bin_path='/isolinux/isolinux.bin'
-boot_image any platform_id=0x00
-boot_image any emul_type=no_emulation
-boot_image any load_size=2048
-boot_image any boot_info_table=on
-boot_image any next
-boot_image any efi_path='/images/efiboot.img'
-boot_image any platform_id=0xef
-boot_image any emul_type=no_emulation
-boot_image any load_size=9211904
-boot_image isolinux partition_entry=gpt_basdat
xorriso
私の画像への出力:
xorriso -indev myimage.iso -report_el_torito cmd
-volid '"MYIMAGE"'
-volume_date uuid '2018011923504500'
-boot_image isolinux system_area=--interval:imported_iso:0s-15s:zero_mbrpt:'MYIMAGE.iso'
-boot_image any partition_cyl_align=on
-boot_image any partition_offset=0
-boot_image any partition_hd_cyl=64
-boot_image any partition_sec_hd=32
-boot_image any iso_mbr_part_type=0x17
-boot_image any cat_path='/isolinux/boot.cat'
-boot_image isolinux bin_path='/isolinux/isolinux.bin'
-boot_image any platform_id=0x00
-boot_image any emul_type=no_emulation
-boot_image any load_size=2048
-boot_image any boot_info_table=on
-boot_image any next
-boot_image any efi_path='/images/efiboot.img'
-boot_image any platform_id=0xef
-boot_image any emul_type=no_emulation
-boot_image any load_size=9211904
2つを比較すると、Red HatにはGPTに関するいくつかの項目がありますが、私の画像がありません。
他のアプローチも見ましたが、間違った方向に行っているかどうかはわかりません。
lorax/livemedia-creatorを使用してください。指示が混乱していることがわかりました。ライブイメージの構築に使用されているようですが、Anacondaを呼び出す方法がわかりません。
USBスティックを標準の3パーティションハードドライブとしてフォーマットします。しかし、起動可能にする方法がわかりません。
私が望むことを達成するための最良/最も簡単な方法は何ですか?
私の要求:
- Linux コマンドラインでなければなりません。このプロセスをスクリプトで作成したいと思います。
- イメージファイルを作成する必要があり、可能であればUSBスクリプトに直接書きたくありません。
- root以外のユーザーとして実行できる必要があります。
イメージファイルはCD / DVDの起動をサポートする必要はありません。
答え1
これで手順が完了しました。 @ありがとう。トーマス・シュミット貴重なヒント。
これが完全なプロセスです。
概要
元のRed Hat DVDで3つのファイルを変更する必要があります。
isolinux/isolinux.cfg
EFI/BOOT/grub.cfg
images/efiboot.img
使用するボリュームラベルを決定します。ボリュームラベルは14文字未満でなければなりません。
その後、genisoimage
そのボリュームラベルで新しいISOをビルドし、isohybrid --uefi
UEFIと互換性があり、implantisomd5
正しいチェックサムを更新するために使用されます。
段階的に
このスクリプトは私が書いたが、私たちの状況にぴったりなので、投稿する必要はありません。
- オリジナルのRed Hat DVDを使用してインストールします
fuseiso
。 - 環境変数を
VOLUMELABEL
目的のボリュームラベルに設定します。 - 変更する必要がある3つのファイルを別の場所にコピーします。
isolinux.cfg
ファイルを編集します。このファイルは BIOS ブートに使用されます。
isolinux.cfg
ファイルを編集してappend
:で始まる最初の2行にパラメータを追加しますks=hd:LABEL=$VOLUMELABEL:/ks.cfg
。inst.stage2
読み取り可能な場所(おそらく4つの場所)でこのパラメータを更新しますinst.stage2=hd:LABEL=$VOLUMELABEL
。menu default
画像がデフォルト値Install
に設定されるようにこの項目を削除することもできますTest & Install
。
grub.cfg
ファイルを編集します。このファイルは EFI ブートに使用されます。このファイル(およびその中のすべての項目EFI/BOOT
)は2回存在します。一度は通常のDVDイメージに、もう1つはefiboot.img
ファイル内に存在します。
- で始まる最初の2行に同じパラメータを追加します
linuxefi
。 inst.stage2
読み取り可能な場所(おそらく4つの場所)でこのパラメータを更新しますinst.stage2=hd:LABEL=$VOLUMELABEL
。search
重要だが見落としやすい内容:inで始まる行も編集してくださいgrub.cfg
。
efiboot.img
ファイルを編集します。実際にはEFIが有効になります。
- ファイルのコピーをマウントします
efiboot.img
。残念ながら、私はこれを行う方法を見つけることができませんでした。fusermount
したがって、これを行うにはroot権限が必要です。 - 変更した内容を以下のファイル
grub.cfg
にコピーしてくださいefiboot.img
EFI/BOOT
- ファイルのコピーを削除します
efiboot.img
。
これでISOイメージを作成できます。
パラメータはgenisoimage
位置を区別します。重要:元のマウントされたISOファイル(にマウントされている)に基づいて画像に基づいて、$TMPDIR
3-m
つの修正ファイルを除いて、移行ポイントを使用して修正とキックスタートファイルを画像に挿入しました。私の画像からカタログプラグインも削除しました。
genisoimage \
-untranslated-filenames \
-graft-points \
-rational-rock \
-v \
-translation-table \
-input-charset "default" \
-J \
-joliet-long \
-V $VOLLABEL -A $VOLLABEL -volset $VOLLABEL \
-b isolinux/isolinux.bin \
-c isolinux/boot.cat \
-no-emul-boot \
-boot-load-size 4 \
-boot-info-table \
-eltorito-alt-boot \
-efi-boot images/efiboot.img \
-no-emul-boot \
-quiet \
-o $THISDIR/$VOLLABEL.iso \
-m $TMPDIR/EFI/BOOT/grub.cfg \
-m $TMPDIR/isolinux/isolinux.cfg \
-m $TMPDIR/images/efiboot.img \
-m addons \
$TMPDIR \
EFI/BOOT/grub.cfg=$TMPGRAFT/grub.cfg \
isolinux/isolinux.cfg=$TMPGRAFT/isolinux.cfg \
images/efiboot.img=$TMPGRAFT/efiboot.img \
$KICKSTARTFILE=$KICKSTARTDIR/$KICKSTARTFILE
isohybrid --uefi
次に、次を使用しますimplantisomd5
。
isohybrid --uefi $THISDIR/$VOLUMELABEL.iso
implantisomd5 $THISDIR/$VOLUMELABEL.iso
答え2
これがジェニソイメージリメイクに比べて原作が持つ決定的な利点かもしれない。
-boot_image isolinux partition_entry=gpt_basdat
genisoimageはEFI用のパーティションテーブルを作成できません。 (違いを見るには、「/sbin/fdisk -l」で両方のISOを確認してください。)実際には、0xefタイプのMBRパーティションが必要です。しかし、伝統的なアプローチは、無効で無駄なGPTを追加することです。
パーティションテーブルを取得する1つの方法は、genisoimageの後に実行することです。
isohybrid --uefi $THISDIR/$VOLLABEL.iso
このプログラムはSYSLINUXソースコードから派生しました。同じソースディストリビューションのバージョンを使用するか、「isolinux.bin」のgit cloneを使用する必要があります。
他のディストリビューションでは、xorrisoのmkisofsエミュレーションと、このxorrisoコマンドで通知する起動オプションを使用します。
xorriso -indev rhel-server-7.4-x86_64-dvd.iso -report_el_torito as_mkisofs
-isohybrid-mbrオプションには長いアドレスがあります。
--interval:imported_iso:0s-15s:zero_mbrpt,zero_gpt:'rhel-server-7.4-x86_64-boot.iso
これにより、xorrisoに元のISOの最初の32KiBをMBRテンプレートと追加のシステム領域として使用するように指示します。通常、これはわずか432バイトのSYSLINUXファイル「isohdpfx.bin」です。最初の432バイトを直接コピーして「mbr.bin」に置き換えることができます。
dd if=rhel-server-7.4-x86_64-dvd.iso bs=432 count=1 of=mbr.bin
答え3
xorriso
他の依存関係なしにローカルで使用できる方法を探しています。カダミアクの答えは正しいです。唯一の違いは7段階で、次のことを反映する必要があります。
xorriso \
-indev "$ISO_SRC" \
-boot_image any replay \
-map "$SCRIPTS" /"$SCRIPTS" \
-map "$FILES" / \
-outdev "$ISO_DST"
順序が重要なので、-boot_image any replay
後で指定すると、-map
マッピングされたディレクトリがデフォルトのISOコンテンツで上書きされます。
私のGitHubリポジトリへのリンクは次のとおりです。これには、UEFI専用システムのUSBメディアにキックスタートファイルを挿入するbashスクリプトが含まれています。
答え4
これでRHEL / CentOSとFedora ISOで動作するより簡単な方法があります。これは、lorax
RHELとFedoraが最初にISOを構築するために使用したプロジェクトの一部であるためです。マキシソ。しかし、私はFedora 32でのみテストしました。
テスト中にバグが見つかりました。ソースISOがUEFIとMacから起動可能な場合、新しいISOはMacおよびレガシーBIOSシステムでのみ起動します。に固定今回の広報まだリリースされていませんが、mkksiso
残りをインストールした場合は別途ダウンロードできる簡単なPythonスクリプトです。lorax
これでキックスタートの注入が非常に簡単になりました。
sudo dnf install lorax
wget -cN https://raw.githubusercontent.com/weldr/lorax/master/src/sbin/mkksiso
chmod +x mkksiso
sudo ./mkksiso -V MyNewVolumeID path/to/kickstart path/to/orig.iso path/to/
たとえば、参照してください。https://github.com/michel-slm/luks-kickstarts/blob/master/rebuild.sh