仮想化されていないサーバーの内部ハードドライブに配置し、UEFI環境でブートローダ(grubなど)を使用してRAMから起動できるCentOS 7のカスタムパッケージを作成しようとしています。
要点は、ハードディスクからRAMに起動できる単一のパッケージ(ISO、initramfsなど)を作成することで、すべての起動が保証されることです。事前定義されたオペレーティングシステムロードされます。これは、ハードドライブにリダイレクトされるログファイルを除いて、変更された設定やファイルが(永久に)保存されないことを意味します。 RAMの量は問題ではありません。
必要:1) OSはRhel/Fedora/CentOSです。 2)OSはハードドライブにインストールされず、RAMにロードされます(例:tmpfs)。 3)OSは起動時に単一のファイル/パッケージから起動します。
私が今まで試したこと: VMware仮想マシンを使用してCentOS 7の最小カスタムLive ISOイメージを作成しました。起動スクリプト画像の設定と内容を定義して使用してください。livecd - クリエイター実際のLive ISOを作成します。
また、ハードドライブから起動するCentOSベースのライブISOを取得できることを確認するためにテストするために、公式のCentOS-7-x86_64-LiveKDE-1810 ISOをダウンロードしました。
これら2つのISOインストール後の作業一般的なサーバーハードウェアだけでなく、VMware仮想マシンのCD / DVDドライブからも起動できます。
私が経験したエラー: さまざまなカーネルパラメータを使用してさまざまな種類のグルーブメニュー項目を試しても、これらのISOの1つを内蔵ハードドライブから起動できませんでした。問題がISOファイルにあるのか、grubメニュー項目のカーネルパラメータにあるのか、またはその両方にあるのかわかりません。
私が試したメニュー項目の例とその項目を見つけたURLは次のとおりです。
http://man7.org/linux/man-pages/man7/dracut.cmdline.7.html
#iso-scan/filename
#Using iso-scan/filename with a Fedora/Red Hat/CentOS Live iso should
#just work by copying the original kernel cmdline parameters
menuentry 'Custom Centos7 {
insmod iso9660
insmod loopback
set isolabel='live_ks-x86-201902131038'
set isofile='livecd-live_ks-201902131038.iso'
loopback loop (hd0,gpt3)/images/$isofile
linuxefi (loop)/isolinux/vmlinuz0 boot=isolinux iso-scan/filename=$isofile root=live:LABEL=$isolabel rd.live.image
initrdefi (loop)/isolinux/initrd0.img
}
上記のメニュー項目を使用すると、起動時に次のメッセージが表示されます。 "dracut-initqueue[409]: /sbin/iso-scan: line 37: rmdir: command not find. これが何を意味するのか分かりません。
たとえば、次の変更を加えてLiveKDE ISOを使用して上記の操作を試した場合:
set isolabel='CentOS-7-x86_64-LiveKDE-1810' set isofile='CentOS-7-x86_64-LiveKDE-1810.iso'
エラーが発生しました: "dracut-initqueue[749]: マウント: ファイルシステムタイプを指定する必要があります。"この状況は、rootfstype を使用してファイルシステムタイプを指定しても持続します。たとえば、次のようになります。
linuxefi (loop)/isolinux/vmlinuz0 boot=isolinux iso-scan/filename=$isofile root=live:LABEL=$isolabel rd.live.image rootfstype=auto
私もここで別のアイテムを試しました。 https://gist.github.com/Pysis868/27203177bdef15fbb70c
menuentry "CentOS 7 test" {
set isolabel='live_ks-x86-201902131038'
set isofile="/images/livecd-live_ks-201902131038.iso"
loopback loop (hd0,gpt3)$isofile
linuxefi (loop)/isolinux/vmlinuz0 noeject inst.stage2=hd:LABEL=UNJEB:$isolabel
initrdefi (loop)/isolinux/initrd0.img
また、上記の作業を試しました。
linuxefi (loop)/isolinux/vmlinuz0 noeject inst.stage2=hd:LABEL=UNJEB:/$isofile
しかし、どちらも次のような失敗文で終わります。 「ルートを切り替えることができませんでした。指定されたスイッチのルートパス/ sysrootがオペレーティングシステムツリーとして表示されず、オペレーティングシステムのリリースファイルがありません。」これが何を言っているのか分からないので、os-releaseファイルをどこで確認するのかわかりません。
ラベリングエラーが非常に一般的であることを読んだので、ISOラベルが正しいことを確認するためにlosstupとblkidを使用しました。たとえば、次のようになります。
sudo losetup loop8 /boot/images/livecd-live_ks-201902131038.iso
sudo blkid /dev/loop8
私が確認した他の投稿:
ハードドライブに保存されているISOファイルから起動するには?
https://www.centos.org/forums/viewtopic.php?t=55412
質問: 問題は、問題がISO、カーネルパラメータ、またはその両方にあるかどうかわからないことです。テストして再現できるCentOS 7 Live ISOで動作するカーネルパラメータを持っている人はいますか?それとも、initrd0.imgファイルで確認または変更できるものがありますか?
また、livecd-creatorがisolinuxをISO用のブートローダとして使用していることを知って、syslinuxなどの他のブートローダを試してみるかと思いましたが、まだテストする時間がありませんでした。
それとも、initramfsに必要なすべてのパッケージを追加し、それを使用したり、squashfsなどを起動したりするなど、目標を達成するための別の方法を試す方が良いでしょうか?