<CHAPTER ID="Specials">
<!-- <TITLE>Special Cases </TITLE> -->
<TITLE>特別なケース</TITLE>
<!-- <SECT1><TITLE>Laptops and PCMCIA Cards</TITLE> -->
<SECT1><TITLE>ラップトップ と PCMCIA カード</TITLE>
<PARA>
<!--
Using the current set of RPM's (and hopefully also .deb packages) putting 
openMosix on a laptop does not differ from other installation.
Actually the only issues you can run into are problems with autodiscovery and promiscious mode, as documented 
elsewhere in this HOWTO.
-->
現状の RPM パッケージ(とうまく行けば .deb パッケージでも)を使えば、openMosix 
をインストールする際にラップトップとそれ以外に相違はありません。
実際に稼動させるのに当たって唯一問題になるのは、自動探索とプロミキャスモード
です。説明はこの HOWTO の他のところにあります。
</para>
<para>
<!--
However this part might still come in handy when you want to compile 
openMosix on 
a laptop that requires PCMCIA support.  It has not been updated recently, but it might be helpful.
-->
しかしここでの説明は、PCMCIA のサポートが必要なラップトップで openMosix を
コンパイルしようとした時に便利であることにかわりありません。最近更新されて
はいませんが、助けにはなるでしょう。

</PARA>

<PARA>
 
     <!--
		 If you are installing openMosix on a Laptop, you will have to recompile
     the PCMCIA sources, because they are distributed as a separate
     package and not as kernel modules. On a Suse 7.1 machine, in theory, 
     this should work by 
     installing the packages and then running
		 -->
		 ラップトップで openMosix をインストールするなら、PCMCIA のソースを再
		 コンパイルしなければいけません。というのも、それは独立のパッケージとして
		 配布されており、カーネルモジュールではないからです。Suse 7.1 のマシン
		 では、パッケージを SuSE のマニュアル(独版で 358 頁)に従ってインストール
		 すれば理屈上は動くはずです。

<PROGRAMLISTING>
        rpm -ba /usr/src/packages/SPECS/pcmcia.spec
</PROGRAMLISTING>
	
     <!--
		 as described in the SuSE manual [on page 358 of the German
     edition]. However, the script tends to get confused by the
     location of the libraries of the vanilla version and the Mosix
     version, so after running the above line, you will have to go to
     the sources in /usr/src/kernel-modules/pcmcia and run 
		 -->
     しかしスクリプトは素のバージョンのライブラリ位置や Mosix のバージョン
     によって混乱してしまう傾向にあります。したがって上記の行を実行した後には、
     /usr/src/kernel-modules/pcmcia に移動して下記を起動してください。
<PROGRAMLISTING>
        make config
</PROGRAMLISTING>

     <!--
		 When prompted for the "Module install directory", change the
     default setting of "/lib/modules/2.2.19" to
		 -->
     「Module install directory」への指示になったら、デフォルトの設定である
      /lib/modules/2.2.19 から下記に変更してください。
<PROGRAMLISTING>
        /lib/modules/2.2.19-mosix
</PROGRAMLISTING>

     <!--
		 Then run "make" and "make install", which should put the pcmcia
     modules in /lib/modules/2.2.19-mosix/pcmcia . Note that you must be
     running the Mosix kernel before you recompile the pcmcia sources.
		 -->
		 設定した後に「make」と「make install」を実行すると、PCMCIA モジュール
		 が /lib/modules/2.2.19-mosix/pcmcia に入るはずです。ただしPCMCIA ソース
		 をコンパイルする前に、Mosix カーネル動かさなければいけません。

</PARA>
</SECT1>
<!-- <SECT1><TITLE>Disk-less nodes</TITLE> -->
<SECT1><TITLE>ディスクレス・ノード</TITLE>
<PARA>

<!--
At first you have to setup a DHCP-server which answers the DHCP-request
for an ip-address when a disk-less client boots. This DHCP-Server (i call it
master in this HOWTO) acts additional as an NFS-server which exports the
whole client-file-systems so the disk-less- cluster-nodes (i call them
slaves in this HOWTO) can grab this FS (file-system) for booting as soon as
it has its ip.  Just run a "normal"-MOSIX setup on the master-node. Be
sure you included NFS-server-support in your kernel-configuration. There
are two kinds (or maybe a lot more) types of NFS:
-->
まず DHCP サーバを設定してください。DHCP サーバはディスクレスクライアント
がブートする時に IP アドレスの要求に答えるからです。この DHCP サーバ
(この HOWTO ではマスターと呼びます)は NFS サーバとしても動作しており、
クライアントのファイルシステムすべてをエクスポートします。そして
ディスクレスノード(この HOWTO ではスレーブと呼びます)は、IP アドレスを
取得するとすぐ、この FS(ファイルシステム)をブートするために取り込みます。
ここで「通常の」MOSIX のセットアップをマスターノードで行います。カーネル
設定で NFS サーバのサポートを必ず設定してください。NFS には 2 種類
(もしかするともっとたくさん)あります。

<programlisting>
kernel-nfs
<!--
or
-->
か
nfs-daemon
</programlisting>
です。

<!--
It does not matter which one you use but my experiences shows to use
kernel-nfs in "older" kernels (like 2.2.18) and daemon-nfs in "newer"
ones.  The NFS in newer kernels sometimes does not work properly.  If your
master-node is running with the new MOSIX-kernel start with one file-system
as slave-node. Here the steps to create it: Calculate at least 300-500 MB
for each slave. Create an extra directory for the whole cluster-file-system
and make a symbolic-link to /tftpboot. (The /tftpboot-directory or link is
required because the slaves searches for a directory named
/tftpboot/ip-address-of-slave for booting. You can change this only by
editing the kernel-sources) Then create a directory named like the ip of
the first slave you want to configure, e.g.  mkdir /tftpboot/192.168.45.45
Depending on the space you have on the cluster-filesystem now copy the
whole filesystem from the master-node to the directory of the first slave.  
If you have less space just copy:
-->
どちらを利用してもかまいませんが、経験上古いカーネル(2.2.18 のような)では
kernel-nfs を、「新しい」カーネルでは daemon-nfs を使ってください。新しい
カーネルでは NFS がうまく動作しない場合があります。マスターノードが新しい
MOSIX カーネルで操作しているなら、スレーブノードとして 1 つのファイル
システムからはじめてください。順を追って行きましょう。スレーブには最低でも 
300 から 500 MBを見積もります。全クラスタ用のファイルシステム向けに追加の
ディレクトリを作成します。それを /tftpboot へシンボリックリンクしてください。
(/tftpboot ディレクトリ、もしくはそのリンクはスレーブがブートする際に
「/tftpboot/スレーブの IP アドレス」を検索するためです。これを変更する
にはカーネルソースを修正するしか方法がありません)。そして設定したいスレーブ
の IP アドレスのような名前のディレクトリを作成してください。例えば、
mkdir /tftpboot/192.168.45.45 というように。
クラスタファイルシステムを置く領域にもよりますが、マスターノードからすべての
ファイルシステムを最初のスレーブのディレクトリにコピーします。
領域が少なければ、下記だけをコピーしてください。

<programlisting>
/bin
/usr/bin
/usr/sbin
/etc
/var
</programlisting>

<!--
You can configure that the slave gets the rest per NFS later.
Be sure to create empty directories for the mount-points.
The filesystem-structure in /tftpboot/192.168.45.45/ has to be similar to 
/ on the master.
-->
スレーブが後で NFS を通じて残りのファイルシステムを取得できるように設定
できます。
マウントポイント用に空のディレクトリを必ず作成してください。
/tftpboot/192.168.45.45/ のファイルシステム構成は、マスターの / と同じで
なければいけません。

<programlisting>
/tftpboot/192.168.45.45/etc/HOSTNAME                    //insert the hostname of the slave
/tftpboot/192.168.45.45/etc/hosts                       //insert the hostname+ip of the slave
</programlisting>

<!--
Depending on your distribution you have to change the ip-configuration of 
the slave :
-->
ディストリビューションにもよりますが、スレーブの IP アドレスの設定を修正
しなければいけません。


<programlisting>
/tftpboot/192.168.45.45/etc/rc.config
/tftpboot/192.168.45.45/etc/sysconfig/network
/tftpboot/192.168.45.45/etc/sysconfig/network-scripts/ifcfg-eth0
</programlisting>

<!--
Change the ip-configuration for the slave as you like.
-->
スレーブの IP アドレスは自由に設定変更してください。

<!-- Edit the file -->
修正するファイルは下記の通り。

<programlisting>
/tftpboot/192.168.45.45/etc/fstab               //the FS the slave will get per NFScoresponding to
/etc/exports                                    //the FS the master will export to the slaves
</programlisting>

<!-- e.g. for a slave fstab: -->
たとえば、スレーブの fstab は下記のようになります。

<programlisting>
master:/tftpboot/192.168.88.222  /       nfs     hard,intr,rw    0 1
none    /proc   nfs     defaults        0 0
master:/root     /root   nfs     soft,intr,rw    0 2
master:/opt      /opt    nfs     soft,intr,ro    0 2
master:/usr/local        /usr/local      nfs     soft,intr,ro    0 2
master:/data/      /data nfs     soft,intr,rw    0 2
master:/usr/X11R6        /usr/X11R6      nfs     soft,intr,ro    0 2
master:/usr/share        /usr/share      nfs     soft,intr,ro    0 2
master:/usr/lib        /usr/lib      nfs     soft,intr,ro    0 2
master:/usr/include        /usr/include      nfs     soft,intr,ro    0 2
master:/cdrom        /cdrom      nfs     soft,intr,ro    0 2
master:/var/log  /var/log        nfs     soft,intr,rw    0 2
</programlisting>


<!-- e.g. for a master exports: -->
マスターの exports は下記のようになります。

<programlisting>
/tftpboot/192.168.45.45       	*(rw,no_all_squash,no_root_squash)
/usr/local  			*(rw,no_all_squash,no_root_squash)
/root			        *(rw,no_all_squash,no_root_squash)
/opt			        *(ro)
/data			        *(rw,no_all_squash,no_root_squash)
/usr/X11R6      		*(ro)
/usr/share		  	*(ro)
/usr/lib			*(ro)
/usr/include		      	*(ro)
/var/log		        *(rw,no_all_squash,no_root_squash)
/usr/src		        *(rw,no_all_squash,no_root_squash)
</programlisting>


<!--
If you mount /var/log (rw) from the NFS-server you have on central 
log-file! (it worked very well for me. just "tail -f /var/log/messages" on 
the master and you always know what is going on)
-->
NFS サーバから /var/log(rw) をマウントすると、ログファイルを集約できます
(私の場合はうまく行っています。マスター上で「tail -f /var/log/messages」
とするだけで、何が起こっているのかをいつも知ることができます)。

</para>
<para>

<!--
The cluster-filesystem for your first slave will be ready now. Configure
the slave-kernel now. If you have the same hardware on your cluster you
can reuse the configuration of the master-node. Change the configuration
for the slave like the following:
-->
これでクラスタファイルシステムを最初のスレーブで使う準備ができました。
次はスレーブのカーネルの設定をしましょう。クラスタで同じハードウェアを持って
いるなら、マスターノードの設定を流用できます。下記のようにスレーブ用に設定を
変更してください。

<programlisting>
CONFIG_IP_PNP_DHCP=y
<!-- and -->
と
CONFIG_ROOT_NFS=y
</programlisting>
です。

<!--
Use as less modules as possible (maybe no modules at all) because the 
configuration is a bit tricky.
Now (it is well described in the Beowulf-HOWTO) you have to create a 
nfsroot-device.
It is only used for patching the slave-kernel to boot from NFS.
-->
できるだけモジュールの数は少なくしてください(ことによるとモジュール
をまったく使わない)。設定が少々難しくなるからです。
次に(Beowulf-HOWTO でわかりやすく説明してあります) nfsroot デバイスを
作成しなければいけません。
これは スレーブが NFS でブートできるようにするためだけに利用されます。

<programlisting>
mknod /dev/nfsroot b 0 255
rdev bzImage /dev/nfsroot
</programlisting>

<!--
Here "bzImage" has to be your diskless-slave-kernel you find it in 
/usr/src/linux-version/arch/i386/boot after successful compilation.
-->
「bzImage」はディスクレスなスレーブのカーネルとならなければいけません。
コンパイルが成功していれば、/usr/src/linux-version/arch/i386/boot に
あります。

<!--
Then you have to change the root-device for that kernel
-->
そのカーネル用に root デバイスを変更してください。


<programlisting>
rdev -o 498 -R bzImage 0
</programlisting>

<!-- and copy the kernel to a floppy-disk -->
そのカーネルをフロッピーディスクにコピーしてください。
   
<programlisting>
dd if=bzImage of=/dev/fd0
</programlisting>

<!--
Now you are nearly ready! You just have to configure DHCP on the master. 
You need the MAC-address (hardware address) of the network card of your 
first slave.
-->
これで準備がほとんどできました。後はマスターの DHCP を設定しなければ
いけないだけです。
最初のスレーブのネットワークカードの MAC アドレス(ハードウェアアドレス)
か必要になります。
</PARA>
<PARA>

<!--
The easiest way to get this address is to boot the client with the already 
created boot-floppy (it will fail but it will tell you its MAC-address). If 
the kernel was configured alright for the slave the system should come up 
from the floppy, booting the diskless-kernel, detecting its network-card 
and sending an DHCP- and ARP request. It will tell you its hardware address 
during that moment! It looks like : 68:00:10:37:09:83.
-->
このアドレスを簡単に取得するには、作成済みのブートフロッピーでクライアント
をブートします(ブートには失敗しますが、MAC アドレスは分かります)。
カーネルがすべて間違いなくスレーブ用に設定されていれば、システムはフロッピー
から立ち上がり、ディスクレスのカーネルが起動し、ネットワークカードを認識し、
DHCP と ARP リクエストを送信します。その瞬間ハードウェアアドレスが分かります。
68:00:10:37:09:83 という感じです。
  
<!--
Edit the file /etc/dhcp.conf like the following sample:
-->
/etc/dhcp.conf を下記のサンプルのように修正してください。

<programlisting>
option subnet-mask 255.255.255.0;
default-lease-time 6000;
max-lease-time 72000;
subnet 192.168.45.0 netmask 255.255.255.0 {
     range 192.168.45.253 192.168.45.254;
     option broadcast-address 192.168.45.255;
     option routers 192.168.45.1;
}  
host firstslave
{
     hardware ethernet 68:00:10:37:09:83;
     fixed-address firstslave;
     server-name "master";
}
</programlisting>
  
<!--
Now you can start DHCP and NFS with their init scripts:
-->
これで init スクリプトで DHCP と NFS を起動できます。

<programlisting>
/etc/init.d/nfsserver start
/etc/init.d/dhcp start
</programlisting>
  
<!--
You got it!! It is (nearly) ready now!
-->
とうとうやりました。これで(ほとんど)準備完了です。
  </para>
<para>
<!--
Boot your first-slave with the boot-floppy (again). It should work now.
Shortly after recognizing its network-card the slave gets its ip-address 
from the DHCP-server and its root-filesystem (and the rest) per NFS.
-->
最初のスレーブをブートフロッピーで(再度)ブートしてください。もう使えるはず
です。
ネットワークカードを認識して後ほどなく、スレーブは IP アドレスを DHCP サーバ
から取得し、ルートファイルシステム(と残り)を NFS 経由で持ってきます。
  </para>
<para>
<!--
You should notice that modules included in the slave-kernel-config must 
exist on the
master too, because the slaves are mounting the /lib-directory from the 
master. So they
use the same modules (if any).
-->
スレーブのカーネル設定にあるモジュールは、マスター上にも存在しなければいけ
ない点に注意してください。理由はスレーブがマスターから /lib ディレクトリを
マウントするからです。したがって同じモジュールを使うことになります(あったと
したら)
  </para>
<para>
  
<!--
It will be easier to update or install additional libraries or 
applications if you mount
as much as possible from the master. On the other hand if all slaves have 
their own complete
filesystem in /tftpboot your cluster may be a bit faster because of not so 
many read/write
hits on the NFS-server.
-->
アップデートやライブラリもしくはアプリケーションを追加でインストールするには
マスターをできるだけマウントしておけば簡単になります。逆にスレーブすべてが
自身で完全なファイルシステムを /tftpboot に持っていれば、多少速くなります。
NFS サーバに対する読み書きが少なくなるからです。
  </para>
<para>
  
<!--
You have to add a .rhost file in /root (for user root) on each 
cluster-member which should look like this:
-->
クラスタのメンバーそれぞれの /root に .rhost を置いてください(root ユーザ用)。
下記のようになります。
<programlisting>  
node1   root
node2   root
node3   root
....
</programlisting>
  
<!--
You also have to enable remote-login per rsh in the /etc/inetd.conf. You 
should have these two lines in it
-->
また、rsh 経由でリモートログインできるように /etc/inetd.conf に rsh を必ず
いれてください。下記の 2 行になるはずです。
</para>
<para>
  
<!-- if your linux-distribution uses inetd: -->
inetd を利用している Linux ディストリビューションなら、

<programlisting>  
shell   stream  tcp     nowait  root    /bin/mosrun mosrun -l -z /usr/sbin/tcpd in.rshd -L
login   stream  tcp     nowait  root    /bin/mosrun mosrun -l -z /usr/sbin/tcpd in.rlogind
</programlisting>  


<!-- And for xinetd: -->
xinetd を利用しているなら、

<programlisting>  
service shell
{
socket_type     = stream
protocol        = tcp
wait            = no
user            = root
server          = /usr/sbin/in.rshd
server_args     = -L
}
service login
{
socket_type     = stream
protocol        = tcp
wait            = no
user            = root
server          = /usr/sbin/in.rlogind
server_args     = -n
}
</programlisting>
です。

  
<!--
You have to restart inetd afterwards so that it reads the new 
configuration.
-->
その後 inetd を再起動してください。そうすると新しい設定が読み込まれます。
 
<programlisting>  
/etc/init.d/inetd restart
</programlisting>  
  
<!-- or -->
もしくは、
  
<!--
There may be another switch in your distribution-configuration-utility 
where you can configure the security of the system. Change it to "enable 
remote root login". Do not use this in insecure environments!!! Use SSH 
instead of RSH! You can use MOSIXVIEW with RSH or SSH.
Configuring SSH for remote login without password is a bit tricky. Take a 
look at the "HOWTO use MOSIX/MOSIXVIEW with SSH?" at this website.
If you want to copy files to a node in this diskless-cluster you have now 
two possibilities. You can use rcp or scp for copying remote or you can 
use just cp and copy files on the master to the cluster-filesystem of one 
node. The following two commands are equal:
-->
ディストリビューション付属の設定ユーティリティには、システムのセキュリティを
変更する別の方法があるかもしれません。「リモート からの root でのログインを
許可する」に変更してください。安全ではない環境においては、使わないようにして
ください。rsh の変わりに ssh を使ってください。MOSIXVIEW では rsh か ssh が
使えます。
パスワードなしでリモートログインする ssh の設定は多少複雑になります。この Web 
サイトの「HOWTO use MOSIX/MOSIXVIEW with SSH?」を見てください。
ディスクレスクラスタのあるノードにファイルをコピーしたい場合、方法は 2 つあり
ます。rcp もしくは scp を使ってリモートにコピーするか、cp を使ってマスター上
のファイルをノードのクラスタファイルシステムにコピーするかです。下記の 2 つの
コマンドは同じです。

<programlisting>
rcp /etc/hosts 192.168.45.45./etc
cp /etc/hosts /tftpboot/192.168.45.45/etc/
</programlisting>

</para>
<Para>
<!--
Off course you can also reproduce these steps but use PXE boot rather than 
a floppy.  
-->
もちろん、このステップを繰り返してもかまいませんが、フロッピーよりも 
PXE(?)ブートを使ってください。

</PARA>
</SECT1>
<!-- 原文でコメントアウトしてあるので訳出しません。 -->
<!--
<SECT1><TITLE>Very large clusters</TITLE>
<PARA>
</PARA>
</SECT1>
-->
</CHAPTER>

