web-dev-qa-db-ja.com

NFS rootfsでUEFIクライアントをPXEブートする方法は?

UEFIクライアントをPXEブートしようとしています。 BIOSクライアントの現在のセットアップでは、pxelinux.0とpxelinux.cfg/defaultを次のように使用しています。

DEFAULT vmlinuz-3.8.0-25-generic
APPEND initrd=initrd.img-3.8.0-25-generic root=/dev/nfs nfsroot=10.17.76.1:/var/lib/tribble/ephemeral ip=dhcp ro nomodeset

しかし、私はUEFIパーティで同じことをするのに苦労しています。なぜなら、取れるアプローチは非常に多く、良いドキュメントはほとんどないからです。

これに続いて EFIでのnetboot mini.isoのPXEブートのガイド で、インストーラーでPXEブートできましたが、これまでのところ、これらの指示をユースケースに適合させる方法がわかりませんでした。

だから私が望んでいることがいくつかあります:

  1. UEFIクライアントのPXEブートに推奨されるブートローダーは何ですか?

  2. 上記のブートローダーを使用して、rootfsがNFSでエクスポートされているUEFIクライアントをPXEブートする実際の例を教えてください。

  3. pxeおよびpxecmdgrubモジュールを参照する多くのチュートリアルを見てきました。しかし、それらはUbuntu 13.04には存在しません...それらは非推奨です。もしそうなら、それらを置き換えるものは何ですか?

私が検討しているオプション:

  • syslinux.efi を使用します

  • elilo を使用します

  • grub2 を使用します

  • Linux EFIスタブローダー を使用します(ハードコードされたブートパラメーターを使用して独自のカーネルをコンパイルする必要があるため、少し苦労します)。

このオプションの海では、Ubuntuによって引き続き十分にサポートされる低リスクのソリューションを見つけることを望んでいます。

5
jderose

ELILOを使用してネットブートする方法

EFIをネットブートする方法は?

EFIにnetbootセッションを開始させるために追加のソフトウェアは必要ありません。 EDIマシンは、UNDI/PXEプロトコルをサポートするネットワークアダプターがあれば、PXE/DHCPセッションを開始するように構成できます。最近のほとんどのカードには、このようなサポートがあります。

ネットブートを有効にするには、EFIブートマネージャーのメンテナンスメニューに移動し、「ブートオプションを追加する」必要があります。画面には、起動するデバイスのリストが表示されます。少なくとも1つは次の形式である必要があります。

Load File [Acpi(PNP0A03,0)/Pci(5|0)/Mac(00D0B7A6FC25)]

イーサネットカード(Macアドレス)を表します。そのようなオプションがない場合は、マシンにネットワークアダプタがないか、オプションROMにUND​​I/PXEサポートがないことを意味します。

このオプションを選択して、たとえば「netboot」などの論理名を付ける必要があります。次に、メンテナンスメニューを終了して、メインメニューに戻ります。これで、新しいブートメニューオプションができました。 「netboot」を選択すると、EFIはPXE/DCHP検出要求を開始し、IPアドレスを取得するサーバーを探します。

サーバー側では、標準のDHCPサーバーを使用できます。

PXEを使用したネットブート

EFIには、PXEのサポートが組み込まれています。実際、有効なPXEサーバーが見つからない場合は、最初にPXEを試行し、次にデフォルトでDHCPを試行します。

Linux/ia32から入手可能なPXEサーバーパッケージがありますが、このパッケージにはEFI側と通信するために必要な拡張機能がありません。

Eliloを標準のDHCPではなくPXEで動作させるための特別なオプションやコンパイル時フラグは必要ありません。ネットブートすると、eliloはPXEまたはDHCPを介してダウンロードされたかどうかを自動的に検出し、後続のファイルがどのように要求されるかを示します。

Internet Software Consortiumが開発した特別なバージョンのDHCPDサーバー( http://www.isc.org )とPXE拡張機能を追加する特別なパッチが必要です。残念ながら、バージョン3.0xxの時点では、パッチはまだ公式ツリーに組み込まれていません。 dhcpdサーバーのバージョン3.1で表示されるはずです。

いずれにせよ、eliloパッケージには、パッチで提供される拡張機能を使用してPXE対応DHCPサーバーの/etc/dhcpd.confファイルを構成する方法の簡単な例が含まれています。 examples/dhcpd-pxe.confで確認できます。構文は、標準のdhcpdサーバーとは大きく異なります。

留意すべき重要な要素は、eliloがさまざまなファイルを要求するために使用するPXEレイヤーです。

Layer 0 : to get the name of the boot loader (elilo.efi)
Layer 1 : to get the name of the elilo config file
Layer 2 : to get the name of the kernel image

これらのレイヤーには重要な違いがあります。最初の2つ(0,1)は体系的に要求されますが、最後の1つは構成ファイルが見つからない場合にのみ使用されます。実際のファイルはまだTFTP経由でダウンロードされます。したがって、TFTPサーバーも構成する必要があります(詳細については、前のセクションを参照してください)。

設定ファイルの取得

このモードでは、eliloはPXEレイヤー1を使用して、使用する構成ファイルを取得します。したがって、これはサーバー側で設定する必要があります。 Eliloは、構成ファイルを探すときに次のシーケンスを使用します。

- use the name provide by the PXE server Layer 1 or

- elilo-ia64.conf/elilo-ia32.conf/elilo-x86_64 or

- elilo.conf

Elilo.confファイルのサンプル

chooser=textmenu
default=install
delay=20
Prompt

message=boot-screens/elilo_menu.msg
f1=boot-screens/general.msg
f2=boot-screens/params.msg

relocatable

image=vmlinuz
    label=install
    description="Install"
    initrd=initrd.gz
    append="--"
    read-only

image=vmlinuz
    label=expert
    description="Install [Expert mode]"
    initrd=initrd.gz
    append="priority=low --"
    read-only

image=vmlinuz
    label=rescue
    description="Rescue"
    initrd=initrd.gz
    append="rescue/enable=true --"
    read-only

もう一つ

boot=/dev/sda1
delay=30
timeout=50
default=Gentoo
append="console=ttyS0,9600"
Prompt

image=/vmlinuz
    label=Gentoo
    root=/dev/sda2
    read-only

image=/vmlinuz.old
    label=Gentoo.old
    root=/dev/sda2
    read-only

elilo.confLinux用EFIブートローダーの管理:ELILOの使用 もご覧ください

エリロは最初の試合で停止します。 PXEを使用する場合、eliloは、DHCPの場合のように割り当てられたIPアドレスにちなんで名付けられた構成ファイルをダウンロードしようとしません。これを行うにはPXEサーバー構成に十分な柔軟性があるからです。

カーネルイメージの取得

構成ファイルがない場合、eliloはPXEレイヤー2から返されたカーネル名を使用します。そこで指定されていない場合は、デフォルトで「vmlinux」が使用されます。

初期RAMディスクの取得

Ramdiskのファイル名は、構成ファイルから取得する必要があります。 Eliloは、PXEレイヤーを使用してデフォルト名を要求しません。

IPアドレス情報の取得

Eliloがネットブートされると、ネットワークファイルシステムモジュールは、DHCPサーバーから受信した情報でいくつかのelilo変数を初期化します。少なくとも、IPアドレスを受信しました。

次の情報は、以下に示す変数に保存されます。

assigned IP address -> %I
assigned netmask    -> %M
assigned domainname -> %D
assigned gateway    -> %G

これらの変数を使用して、カーネルに渡されるコマンドライン引数を動的に調整できます。

詳細については、 PXE Linuxおよび PXEブートの実装 を参照してください。

ソース: HP

4
Mitch

「目覚める」質問としてのみ意味されます:

これらのクライアントのUEFIは強制的に必要ですか? -

各クライアントでUEFIを無効にして、それらでEFIのみを有効にすることはできませんか? -

おそらく、grub2を使用してすべてのインストールを起動する方が簡単でしょう。

UEFIを使用したデュアルブートは、たとえばUEFIブートではなく、EFIブートにBIOS設定を調整することを検討できます。 Windows 7またはWindows 8。

0
dschinn1001