GRUB PXEのnfsroot設定

GRUB PXEのnfsroot設定

こんにちは友達。しばらく前に同様の問題がありましたが、今は解決策に近づいています。私はtftp / pxeサーバーに簡単なグラブメニューを設定しました。クライアントがefiとレガシーモードでisoファイルを起動できることを願っています!そのため、SYSLINUXの代わりにGRUBを使用することにしました。しかし、今問題が発生しました。 initrdをロードするには、nfs共有をマウントする必要があります。そうですか?私はそれに数時間を費やしましたが、残念ながら少数の人々だけがこれを試みます。また、memtestのようなlinux16イメージの実行に問題はありません。何の問題もなくうまくいきます。

これはpxegrubから私のclonezillaライブisoファイルを起動するための現在のgrub.cfgメニュー項目です。

menuentry "Netroot" {
   echo 'Trying to boot via nfs ...'
   load_video
   insmod gzio
   if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
   insmod part_msdos
   insmod ext2
   echo 'Loading Linux ...'
   linux /programs/clonezilla/live/vmlinuz root=/dev/nfs netboot=nfs nfsroot=192.168.2.55:/var/lib/tftpboot/programs/clonezilla/live/ rw  quiet
   echo 'Loading initial ramdisk ...'
   initrd initrd.img
}

そして私のエクスポートファイル

/etc/export

/var/lib/tftpboot/programs/clonezilla/live 192.168.2.55/(rw,no_root_squash,sync,no_subtree_check)

残念ながら、正しいルートディレクトリを設定できないため、まだinitrdをロードできません。ここに問題がありますか?誰もがgrubを介して実行するのに役立ちますか? SYSLINUXの例をいくつか見つけましたが、grubで実行できますか?

DEFAULT ubuntu
LABEL ubuntu
KERNEL /vmlinux-4.8.17-040817-generic
APPEND ip=dhcp rw root=/dev/nfs nfsroot=192.168.1.254:/diskless/ubuntu/0185 raid=noautodetect quiet splash amdgpu.vm_fragment_size=9
INITRD /initrd.img-4.8.17-040817-generic

私はsyslinuxよりもグラブを好み、より進化しました。

誰かが私を助けることを願っています。私のnfs共有に問題があるのではないでしょうか?私は以前にそれらを使用したことがありません。

ベストアンサー1

いいえ、GRUBはNFSをまったくサポートしていません。

行にNFSマウントパラメータが含まれていても、linuxGRUBはそのパラメータに対して機能しません。カーネルが実際に起動すると、単にパラメータをLinuxカーネルに渡します。カーネルが起動してinitramfsを実行すると、これらのパラメータを使用してNFSマウントルートファイルシステムを設定します。

GRUBは、initrd.imgカーネルファイルのロードに使用するのとまったく同じメカニズムを使用してこのファイルをロードします。 「単純なtftp / pxe」ソリューションでは、メカニズムはTFTPである可能性が高いです。 (最新バージョンのUEFIもHTTPをサポートできますが、GRUBがUEFIのHTTP機能を使用できるかどうかはわかりません。)

GRUBは、カーネル、initramfs、および起動オプション文字列をPXEクライアントのRAMにロードし、システム制御をカーネルに渡します。 GRUBは追加の作業には関与しません。

レガシーPXEブートとUEFI PXEブートを処理するには、DHCPサーバーがPXEアーキテクチャオプションを読み取り、それを使用してPXEクライアントがレガシーかUEFIかを識別し、適切なブートファイルパスをレガシーPXEブートローダに渡す必要があります(たとえばgrub-mkimage --format=i386-pc-pxe) UEFIブートローダで作成された画像(たとえばgrub.efi)を使用しますgrub-mkimage --format=x86_64-efi

PXE経由でClonezilla Liveを起動するには、nfsrootオプションは必要ありません。代わりに、行linuxは次のようになります。

linux /programs/clonezilla/live/vmlinuz boot=live username=user union=overlay config components quiet noswap edd=on nomodeset nodmraid locales=en_US.UTF-8 keyboard-layouts=us ocs_live_run="ocs-live-general" ocs_live_extra_param="" ocs_live_batch=no net.ifnames=0 nosplash noprompt fetch=http://URI_path_on_your_server_containing/filesystem.squashfs

http://URI_path_on_your_server_containing/filesystem.squashfs明らかに、その部分をClonezilla initramfsがClonezillaファイルをダウンロードできるHTTPサーバーを指す実際のURLに置き換えますfilesystem.squashfs。 US以外のキーボードを好む場合でも、このkeyboard-layouts=usセクションを変更できます。オプション文字列は、もともと次のガイドラインに従って作成されました。

Clonezillaブートオプションリファレンス:

私はそれを既存のPXEブートでSYSLINUXとUEFIのiPXE.orgブートローダーで使用し、clonezilla-live-20191024-eoan-amd64.zipでテストしたときにうまくいきました。

おすすめ記事