LinuxディストリビューションISOを使用したPXEインストールの設定

LinuxディストリビューションISOを使用したPXEインストールの設定

私の家のLANに

  • ルーター/スイッチ、DHCPサーバーでもあります
  • デスクトップ
  • USBで起動しない(非常に古い)ラップトップ

PXEを使用してこのラップトップに(32ビット)Linuxディストリビューションをインストールしたいと思います。

(私が知る限り)2つの質問があります。

  1. 私が見たページでは、この作業について説明しました(例:この問題ウェブサイト)すべて私のコンピュータにDHCPサーバーを設定する必要があると言います。すでに別のDHCPサーバーがあることを除いては問題ありません。ラップトップは他のサーバーを好まないでしょうか?

  2. 起動可能な32ビットISOが動作しますか?

  3. ディストリビューションにインストールされているISOのどのファイルがどこにコピーされるのか、どうすればわかりますか?

注:もう少し具体的にインストールしてみましょう。Linuxライト

ベストアンサー1

気づくLinux Liteの独自のドキュメントでUSBから起動できない場合は、PLoPブートマネージャを使用することをお勧めします。:PLoPはCDやフロッピーディスクからもブートできるブートマネージャで、基本的なUSBストレージサポート機能が内蔵されています。

https://www.plop.at/en/bootmanager/download.html

https://www.howtogeek.com/howto/16822/boot-from-a-usb-drive-even-if-your-BIOS-wont-let-you/

私はBIOSがUSBをサポートしていない古いシステムからUSBベースのインストールを起動するためにそれを使用しました。

ただし、PXE を使用する場合は、PXE 起動の完全なイベント順序は次のとおりです。

  1. PXE BIOS拡張(または最新のシステムのUEFIファームウェア用の内蔵ネットワークドライバ)はネットワークカードを有効にし、いくつかの特別な識別子を追加したDHCP要求を発行します。

    • (PXEオプションvendor-class-identifier#60)単語で始まりPXEClient、使用されているプロセッサアーキテクチャを識別するコードを含む文字列に設定されます。これはオプションで、さまざまな種類のクライアントにカスタマイズされたPXEブートソリューションを提供するために使用できますが、簡単な設定ではDHCPサーバーはそれを上書きできます。
    • DHCP要求は、クライアントがDHCPオプション#66と#67の値(TFTPサーバー名と起動ファイルクライアントは別々にロードする必要があります。
  2. DHCP サーバーには、実際に TFTP サーバー名とブートファイル名を提供する 2 つの方法があります。上記のDHCPオプションを使用することも、DHCPをBootPと逆互換するため、前のBootPフィールドを使用してDHCPに情報を提供することもできnext-serverますbootfile-name。パケット。

(一部のPXE BIOS拡張はバグがある可能性があり、そのうちの1つのみがサポートされています。DHCPオプション#67を使用しているがBootPレガシースタイルを使用している場合は、ブートファイル名に0バイトを追加するPXEファームウェアを見たことがあります。識別するには、Wiresharkを使用するか、tcpdump実際のDHCPおよびTFTP要求と応答を調べる必要があります。

  1. PXE BIOS 拡張は DHCP 応答を使用してネットワークインターフェイスを設定し、指定された TFTP サーバから指定されたファイルをダウンロードし、ファイルを実行します。原則として、その後に発生するすべての作業は、このファイルのプログラムコード(PXEブートローダ)によって完全に制御されます。実際、今日のLinuxで最も一般的な2つのPXEブートローダは次のとおりです。PXELinuxSYSLINUXシリーズまたはPXE。どちらも基本的にネットワーク構成から始まり、別の特殊識別子を使用して別のDHCP要求を発行します。これにより、DHCPサーバーは他のDHCPオプションを使用してPXEブートローダーにブートローダー構成ファイルをロードする場所を通知できます。

    • PXELINUX の場合、これはオプションです。追加のオプションがない場合は、ブートローダ自体をロードする同じTFTPサーバーから構成をダウンロードしようとします。たとえば、PXELINUXをダウンロードするためのTFTPパスがある場合は、その設定を/pxe/pxelinux.0ダウンロードしようとします/pxe/pxelinux.cfg/default
    • iPXEの場合は、DHCPオプションを使用して設定ファイルの名前を指定する必要がありますが、iPXEにはHTTPのサポートが組み込まれているため、一般的なHTTP URLをDHCPオプションの値として受け入れることができます。
  2. ブートローダ設定ファイルには、クールなブートメニューの定義が含まれている場合があります。また、ブートローダに特定のLinuxカーネルとinitrd / initramfsファイルをロードするように指示することもできます。負荷がディスクではなくネットワークを介して実行されることを除いて、通常のGRUBのように機能します。ブートローダ設定ファイルには、GRUB 設定と同様に、Linux カーネルの起動オプションを含めることができます。ネットワークインストールシナリオでは、通常、ブートオプションを使用して、インストーラがISOイメージまたはその内容を見つける必要がある場所を指定する必要があります。最新のディストリビューションでは、このオプションの値は通常HTTP URL形式を取ります。

  3. PXEブートローダがカーネルファイルとinitramfsファイルをクライアントコンピュータのRAMに正常にロードすると、そのタスクは完了します。つまり、Linuxカーネルを起動し、initramfsコンテンツとカーネルブートオプションを渡し、カーネルが変換したときにブートローダを上書きします。システムを16ビット互換モードから真の32ビット保護モードに変更し、仮想メモリマップを独自の要件に合わせて再配置します。 Linux NIC ドライバはドライバの起動時にネットワーク アダプタをリセットするため、通常は IP アドレス設定が失われます。 (最新のUEFIシステムはすでに64ビット保護モードで起動されていますが、UEFIにはセキュリティ起動に関する独自の問題があります。)

  4. ネットワークベースのインストールを提供するほとんどのディストリビューションでは、initramfsには独自のDHCPクライアントが含まれているため、ブートスクリプトはネットワークアドレスパラメータを取得するためにDHCP要求を(再)作成します。その後、initramfsのインストーラの最初の部分が起動し、カーネルブートパラメータで指定されたURLに接続して独自の追加部分をダウンロードし、最後にオペレーティングシステムのインストールプロセスを開始します。

あなたの質問に:

1.)必要なDHCPオプション値をクライアントに提供するようにルーターのDHCPサーバーを構成できる場合は、2番目のDHCPサーバーは必要ありません。そうですね。同じネットワークに調整されていない 2 つの DHCP サーバーがある場合、状況はランダムで複雑になります。

2.)ISO内のインストーラはネットワークベースのインストールをサポートする必要があります。

3.)デフォルトでは、カーネルファイルとinitramfsファイルの2つのファイルを見つける必要があります。おそらく、ISOイメージの最も一般的な32ビットLinuxブートローダはISOLINUXSYSLINUXファミリです。単にファイルを読み込んisolinux.cfgだりsyslinux.cfg設定したり、カーネルとinitramfsのファイルパスと必要な起動オプションを見つけて、それをネットワーク設定のブートローダの選択にコピーするだけです。一部のディストリビューションは、特にネットワーク起動用に別々のカーネル+ initramfsセットを提供します。 ISOの内容でimages/netboot同じ名前または類似のディレクトリを探します。

これらのファイルを取得するために使用されるTFTPパス名を指定するので、デフォルトで必要な場所にファイルを配置できます。ただし、単純に保ち、選択したTFTPサーバーのデフォルトの「TFTPルート」ディレクトリに配置したい場合があります。

正しいカーネルファイルとinitramfsファイルをクライアントに渡す作業を完了したら、ISOコンテンツの残りの部分を提供する方法を理解するだけです。通常、ISOまたは抽出されたコンテンツ(またはループマウントISOイメージ)をWebサーバーの便利な場所に配置し、ISO URLを指定するカーネルブートオプションをPXEブートローダに追加することで設定されます。

  • 最新のRHEL / CentOS / Fedoraとそのレプリカの場合、必要なカーネルブートオプションは次のとおりです。ip=dhcp inst.stage2=http://some.www.server/root/of/ISO
  • Debian / Ubuntuには、インストーラinitramfsがディストリビューdeb.debian.orgションのストレージサーバー(githubなど)に直接接続するのに十分な機能があるため、発信接続が許可されている場合は完全なISOがまったく必要ない場合があります。

おすすめ記事