Linux Tips | |
PXEでディスクレス・クライアントを実現するには 北浦訓行 |
PXE(Preboot eXecution Environment)は、Intelが開発したネットワークブートの規格である。PXEを利用すると「PXEネットワークブート用サーバを構築するには」および「PXEネットワークブートでLinuxをインストールするには」の方法で光ディスクドライブが接続されていないPCでも、ネットワークブートでLinuxをインストールできる。
さらに、PXEサーバにクライアントのファイルを用意すれば、ハードディスクを搭載していないPC(ディスクレスPC)でもLinuxを使用できる。ここでは、Fedora Core 6(FC6)でPXEサーバを構築して、ディスクレス・クライアントを実現する方法を紹介する。
まず、サーバ上に保存するクライアントのファイルを用意する。稼働しているLinux(ここでは、FC6)を用意して、そこから全ファイルをコピーするのが一番簡単な方法だ。ただし、ディスクレス・クライアント用に「busybox-anaconda」というファイルをインストールする必要がある。FC6の場合、yumコマンドでインストール可能だ。
# yum install busybox-anaconda |
次に、PXEサーバ側の作業を行う。
ディスクレス・クライアントのサーバとなるPXEサーバには、DHCP、TFTP、NFSの各サーバプログラムが必要となる。また、PXEサーバ「syslinux」とネットワークブートの設定ツール「system-config-netboot」もインストールする。
上記のプログラムがインストールされていない場合は、yumコマンドでインストールする(注)。
注:TFTPサーバは、system-config-netbootのインストール時にインストールされる。 |
# yum install dhcp |
そして、以下の方法でsyslinuxがインストール済みかどうかを確認する。
$ rpm -qa | grep syslinux |
syslinuxという項目が表示されない場合は、yumコマンドでインストールする。
インストールが完了したら各種設定を行う。TFTPサーバは、xinetd経由で起動される。FC6の場合、デフォルトでは起動しないため、/etc/xinetd.d/tftpを以下のように修正する。
service tftp |
修正したら、xinetdを起動する(起動している場合は再起動)。
# service xinetd restart |
そして、クライアントのファイルを格納するディレクトリを/tftpbootの下に作成して、ファイルをPXEサーバ上にコピーする。ここでは、/tftpboot/fc6/rootという名前にした(注)。
注:クライアントのファイルを格納するディレクトリ名は、最初が/tftpbootで、最後がrootでなければならない。このルールに従わないと、後述するsystem-config-netbootでの設定が行えない。 |
# mkdir -p /tftpboot/fc6/root |
次に、DHCPの設定を行う。/etc/dhcpd.confに以下の記述を追加する。
allow booting; |
修正したらdhcpdを起動する(起動している場合は再起動)。
# service dhcpd restart |
続いて、NFSの設定を行う。/etc/exportsに以下の記述を追加する。ちなみに、この時点では/tftpboot/fc6/shapshotは存在しないが、後でsystem-config-netbootによって作成される。
/tftpboot/fc6/root 192.168.0.0/255.255.255.0(ro,sync,no_root_squash) |
修正したらnfsを起動する(起動している場合は再起動)。
# service nfs restart |
次に、/tftpboot/fc6/snapshotというディレクトリを作成して、そこにfiles.customというファイルを作成する。
# mkdir -p /tftpboot/fc6/snapshot |
追加する内容は以下のとおりだ。これで/homeディレクトリが書き込み可能になり、GNOMEなどが起動可能になる。
/home/ |
PXEサーバでは、クライアントのファイルは原則として書き込み禁止である。しかし、書き込み禁止にしているとLinuxの動作に影響を与えるファイルも存在するため、一部のファイルやサブディレクトリを書き込み可能なサブディレクトリ(ここでは/tftpboot/fc6/snapshot)に置くことになる。そのファイルやサブディレクトリを指定しているのが、/tftpboot/fc6/snapshot/filesというファイルだ。しかし、このファイルの変更は禁止されているため、追加設定は/tftpboot/fc6/snapshot/files.customに記述する。なお、この時点では/tftpboot/fc6/snapshot/filesは作成されていないが、後述するsystem-config-netbootを設定することで自動的に作成される。
次に、system-config-netbootでPXEサーバの設定を行う。GNOMEメニューの[システム]メニューの[管理]−[サーバー設定]−[Network Booting Service]を選択すると、[初めてのFruid]というウィンドウが表示される。
[初めてのFruid]ウィンドウ |
[ディスクレス]ボタンをクリックすると、[ディスクレス環境の更新]というウィザード形式のダイアログボックスが表示されるので、[進む]ボタンをクリックする。
[ディスクレス識別子]の項目に[名前]と[説明]を入力する。この[名前]は、クライアント起動用のイメージファイルを保存するサブディレクトリ名として使用される。
[ディスクレス識別子]を設定するダイアログボックス |
[進む]ボタンをクリックすると、[NFS情報を入力します。]という画面が表示される。[サーバーIPアドレス]には、PXEサーバのIPアドレスを入力。[ディレクトリ]には、クライアントのファイルを保存したディレクトリ名を入力する。
[NFS情報を入力します。]という画面 |
[進む]ボタンをクリックすると、[ディスクレスクライアント用のカーネルを選択します。]という画面が表示される。ここでは、使用するカーネル(最新のものをお勧めする)を選択する。
[ディスクレスクライアント用のカーネルを選択します。]という画面 |
[進む]ボタンをクリックすると、[ディスクレス環境設定の完了]という画面が表示されるので[適用]ボタンをクリックし、[新規]ウィンドウを表示する。このダイアログボックスで設定する項目は[ホスト名またはIPアドレス/サブネット]と[スナップショット名]だ。
[ホスト名またはIPアドレス/サブネット]には、クライアントのホスト名かIPアドレス、もしくは接続しているネットワークのサブネットを指定する。ホスト名またはIPアドレスを指定すると、保存可能なデータ(スナップショット)がクライアントごとに保存される。サブネットを指定すると、接続を許可されたクライアントが同じスナップショットを使用することになる(ここでは、サブネットを指定した)。
[スナップショット名]には、クライアントから読み書き可能なファイルを保存するディレクトリ名を指定する。
設定が完了したら、[Generate]チェックボックスがオンになっていることを確認して、[OK]ボタンをクリックする。
[新規]ウィンドウ |
サーバの設定が完了すると、画面に[ネットワークインストールとディスクレス環境]ウィンドウが現れ、登録したホスト名が表示される。
ホスト名が表示された[ネットワークインストールとディスクレス環境]ウィンドウ |
次に、クライアントが起動する際に使用する設定ファイル(カーネルの場所などが記述されている)を変更して、各クライアント用のシンボリックリンクを作成する。
# cd /tftpboot/linux-install/pxelinux.cfg |
今回は、system-config-netbootで[ホスト名またはIPアドレス/サブネット]にサブネットを指定した。そのため、/tftpboot/linux-install/pxelinux.cfg/FFFFFF00というファイルが作成されている。これが、カーネルの場所などが記述されたファイルだ。
このファイルのappendの行に「ramdisk_blocksize=1024」を追加する。この設定を行わないと、クライアントの起動時にKernel Panicが発生する。
default FC6-PXE |
そして、接続するクライアントのNICのMacアドレスを調べる。例えば、Macアドレスが「00-0c-29-f0-d8-a9」の場合には、先頭に「01-」を付けて、以下のようにシンボリックリンクを作成する。
# ln -s FFFFFF00 01-00-0c-29-f0-d8-a9 |
クライアント起動用のイメージファイルにmount.nfsを追加する。この作業を行わないと、クライアントがNFSでのマウントに失敗する。編集方法は「ブート用のイメージファイルを編集するには」を参照のこと。念のため、作業用のディレクトリにinitrd.imgをコピーする。一連の手順は以下のとおりだ。
# cp /tftpboot/linux-install/FC6-PXE/initrd.img /tmp |
以上でPXEサーバの準備は完了だ。クライアントを起動して、BIOS設定でネットワークブートを最優先にすると、自動的にPXEサーバに接続してFC6が起動する。
Linux Tips Index |
Linux Squareフォーラム Linux Tipsカテゴリ別インデックス |
|
- 【 pidof 】コマンド――コマンド名からプロセスIDを探す (2017/7/27)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、コマンド名からプロセスIDを探す「pidof」コマンドです。 - Linuxの「ジョブコントロール」をマスターしよう (2017/7/21)
今回は、コマンドライン環境でのジョブコントロールを試してみましょう。X環境を持たないサーバ管理やリモート接続時に役立つ操作です - 【 pidstat 】コマンド――プロセスのリソース使用量を表示する (2017/7/21)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、プロセスごとのCPUの使用率やI/Oデバイスの使用状況を表示する「pidstat」コマンドです。 - 【 iostat 】コマンド――I/Oデバイスの使用状況を表示する (2017/7/20)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、I/Oデバイスの使用状況を表示する「iostat」コマンドです。
|
|