Diskless Linux Mini Howto

Robert Nemkin buci@math.klte.hu

v0.0.3 12 Sep 1996

堀江誠一 shorie@ibm.net


この文書はディスク無しの Linux 機をどのように構成するかについて説明しま す。版権は Robert Nemkin に所属します。版権の扱いは GPL に従います。 こ の文書を英語に翻訳してくれた Bela Kis <bkis@cartan.math.klte.hu> に感 謝します。

注意: この文書はかなり以前に書かれたものなので、 いまどきの Linux 環境にはあてはまらない箇所があります。 (JF Project)

1. 変更点

2. ディスクなしの Linux 機を設定する方法

3. 関連文書

4. ハードウェア

5. 基本的な考え方

6. メモリ及びディスクの必要量。速度

7. 発生しうるエラー

8. 誤り、および将来に向けての文書の更新


1. 変更点

2. ディスクなしの Linux 機を設定する方法

この文書はディスク無しの Linux 機をどのように構成するのかを説明します。 Linux をフロッピーもハードディスクもないような機械で走らせなければなら ないことがあるかもしれません。ネットワークと、bootp や tftp や NFS サーバー を持った Unix 機、そして EPROM ライターがあれば、Linux をハードディスクも フロッピーディスクも無しで起動することができます。

3. 関連文書

4. ハードウェア

この文書に書いてある内容は以下の構成の機器で確認しています。

5. 基本的な考え方

基礎となる考え方は以下の通りです。PC は、IP アドレスをブートサーバーから bootp プロトコルによって入手します。この時、IP アドレスの初期値は 0.0.0.0 であり、カーネルは tftp プロトコルを用いて入手します。

セグメントを超えて(ルーターを通して)起動するというのは一筋縄 でいくことではありません。そこで、 サーバーとディスク無し機を同じネットワークセグメントに設定するか、サー バーの位置を特定するためにあなたのルーターのヘルパー UDP アドレスを設 定して下さい。詳しくはルーターの製品情報を参照してください

以上を行うには、以下の手続きを参照して下さい。

5.1 PC を設定する

まず、nfsブートパッケージを入手して下さい(手近な Linux ミラーサイトの the /pub/Linux/system/Linux-boot ディレクトリーに有ります)。このパッケー ジには WD8013 用の起動 EPROM イメージが有り、そのまま ROM ライターで焼くこと ができます。

PC の準備には他の方法もあります。

後者の場合、フロッピーに dd コマンドでイメージを書き込みます。

このイメージは bootp と tftp クライアントを持っています。他に、 Linux のカーネルを用意しなければなりません。このカーネルは nfs-root オプション付きで構築されていなければなりません。

フロッピーやハードディスクといったブロックデバイスをカーネルに取り込む必要は 有りません。しかし、TCP/IP 対応機能、WD Ethernet カード対応、 NFS ファ イルシステムへの対応機能は必須です。これらの機能を設定したら、 カーネルをコンパイルして下さい。

5.2 サーバー上に bootpd を設置する

bootpd は、bootpd-2.4.tar.gz に入っています(場所は、Linux ミラーサイトの /pub/Linux/system/Network/boot.net ディレクトリです)。パッケージを入 手したらコンパイルし、組み込んで下さい。もし、サーバー側の Unix が Slackware ならば、bootpd ははじめから組み込まれていますのでこの手順は無視してくだ さい。デーモンは、コマンドラインから起動することができます。


        bootpd -s

あるいは、inetd からも起動できます

5.3 サーバー上の bootpd の構成を行う

とにもかくにも、bootptab という名前のファイルを bootpd のために用意する ことから始めます。このファイルは普通は/etcに置かれます。構成を行うた めにこのファイルを編集してゲートウェイ、DNS サーバーの IP アドレス、およ びディスクレス機の Ethernet アドレスを記述しなければなりません。例を あげると:



global.prof:\
        :sm=255.255.255.0:\
        :ds=192.168.1.5:\
        :gw=192.168.1.19:\
        :ht=ethernet:\
        :bf=linux:
machine1:hd=/export/root/machine1:tc=global.prof:ha=0000c0863d7a:ip=192.168.1.140:
machine2:hd=/export/root/machine2:tc=global.prof:ha=0800110244e1:ip=192.168.1.141:
machine3:hd=/export/root/machine3:tc=global.prof:ha=0800110244de:ip=192.168.1.142:

ここで globa.prof は、ホスト記述用の雛形です(訳注:この後に続く 個々の機械に共通の事項を記述します)。また、

それぞれ記述します。この後、すべての機械(訳注:ディスクレス機)用に

それぞれ記述します。

5.4 tftp を理解する

TFTP (Trivial File Transfer Protocol)は FTP と同様なファイル転送プロト コルです。しかし、このプロトコルは EPROM に焼き込めるくらい単純化されて います。 TFTP には2つの用途が有ります

UnixであればほとんどすべてTFTPサーバーを持っています。多分、自分で 導入する必要はないでしょう。

5.5 遠隔サーバー上に最小構成の Linux を組む

Slackware ならばパッケージ a、ap、n および x などが使用されることでしょ う。もちろん、もっとインストールしてもかまいません。しかし、ディ スクレス X 端末ならば上記の構成でも十分です。導入を行うためには 実動状態にある Linux が必要です。リモートマシン(訳注:ディスクレス機に ブート機能を提供する機械。この場合は SunOS 機)上に、ある程度のディ スク領域を確保し、ネットワークから読み書きできるよう export します。 export したディレクトリを(訳注:実動状態の Linux 機の)適当な場所 (例えば /mnt)にマウントします。そうして、導入先を / ではなく /mnt として(訳注: Linux 機の)setup ユーティリティーを使 用します。そうして先にあげたパッケージを導入して下さい。ディスク レス機を一台しか使用しないならばこのままで結構です。もし、2台 以上の Linux 機をディスクレスとして使用したいなら、このままではだ めです。ファイルやディレクトリーの中にはディスクレス機毎に固有の 情報を持つものがあるためです。この問題は /usr(このディレクトリは 機械固有情報を持っていない)を別の場所に移動し、おのおののディス クレス機にサブディレクトリを用意することによって解決できます。 たとえば、/export/linux/machine1 が /mnt にマウントされている場合、 最初の設定の後、ディレクトリ構造は以下のようになっています。


/export/linux/machine1/bin
/export/linux/machine1/sbin
/export/linux/machine1/lib
/export/linux/machine1/etc
/export/linux/machine1/var
/export/linux/machine1/usr

変更後は、以下のようになります。


/export/linux/machine1/bin
/export/linux/machine1/sbin
/export/linux/machine1/lib
/export/linux/machine1/etc
/export/linux/machine1/var
/export/linux/usr

ここで、おのおののディスクレス機用にサブディレクトリを用意します。 ディスクレス機がそれぞれ machine1,、machine2、machine3 等と呼ばれていると 仮定します。この場合、それぞれのディスクレス機の設定用に次のような bash スクリプトを使えます。


        
        cd /export/linux
        for x in machine2 machine3 ; do
                mkdir $x; cd $x
                (cd ../machine1; tar cf - *) | tar xvf -
        done

Then do the following export:

そうして、以下の export を行います。

この作業を行うには以下の記述を見てください

書式は SunOS 4.1.3 の export ファイルのものです

        
# This file is /etc/export
# for remote linux X terminals by Buci
# this line is only once
/export/root/usr             -access=linuxnet
# these lines once for every host
/export/root/machine1       rw=machine1,root=machine1
/export/root/machine2       rw=machine2,root=machine2
/export/root/machine3       rw=machine3,root=machine3

exportfs -a を走らせることを忘れないで下さい。

5.6 tftp の構成を行う

さて、TFTP サーバーを構成する番です。secure TFTP を使う必要が無いので あれば話は簡単で、クライアントは /export ディレクトリーから起動します。

secure TFTPを使用する場合には、/tftpboot の下に /export/linux ディレクトリーを 作る(カーネルは一つ持ち、他のマシンようにはそのカーネルへの リンクを張る)か、/exportをsecure TFTP の起動ディレクトリーとします。あるいは、 別々の tftpboot ディレクトリを使用するな場合はカーネルを一つだけもち、 他のマシン用に(訳注:このカーネルへの)リンクをはります。設定を行うには 以下のように記述します。


      mkdir -p /tftpboot/export/linux/machine1
      cd /tftpboot/export/linux/machine1
      cp /export/linux/machine1/<name of the kernel> . 

Then type the following:

そして以下のように入力してください。


      mkdir -p /tftpboot/export/linux/machine2
      cd ../machine2 
      ln -s ../machine2/<name of the kernel> 

5.7 最後の作業

最後に、


   /sbin/mount nfs_server:/export/linux/usr /usr

を、


   /export/linux/<machinex>/etc/rc.d/rc.S

の先頭に追加します

ここで <machinex> は machine1、machine2、等をあらわします。

6. メモリ及びディスクの必要量。速度

Slackware 2.3 で試しただけです。他の配布やバージョンでは、以下の 数字は変化するでしょう。

7. 発生しうるエラー

8. 誤り、および将来に向けての文書の更新