ハードドライブからRAMへのカスタムCentOS 7 Live ISO起動

ハードドライブからRAMへのカスタムCentOS 7 Live ISO起動

仮想化されていないサーバーの内部ハードドライブに配置し、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などを起動したりするなど、目標を達成するための別の方法を試す方が良いでしょうか?

関連情報