- 安装必须的包:
diskless
nfs-kernel-server
dhcp, dhcp3-server 或 rarpd,这里用的是dhcp3
mknbi
atftpd, tftpd等,这里用的是atftpd
% apt-get install diskless nfs-kernel-server dhcp3-server mknbi atftpd #这里为我们的选择
- 配置双网卡:
编辑/etc/network/interfaces:
-----------------------------------------------------------------------
auto lo eth0 eth1
iface lo inet loopback
iface eth0 inet static #对外网卡
address 210.45.66.???
netmask 255.255.255.0
broadcast 210.45.66.0
gateway 210.45.66.254
iface eth1 inet static #对内网卡
address 192.168.0.254
netmask 255.255.255.0
broadcast 192.168.0.255
#gateway 192.168.0.254 #此行需要注释掉,否则连接不到外网
-----------------------------------------------------------------------
- 建立必须的目录:
% mkdir /tmp/diskless #此目录要求为空的
% mkdir -p /var/lib/diskless/default
- 产生必要的基本系统文件的压缩包:
% diskless-createbasetgz /tmp/diskless sid http://debian.ustc.edu.cn/debian /var/lib/diskless/default/base.tgz
这里用的是sid,从http://debian.ustc.edu.cn/下载安装的,请按自己需要修改这一部分。
- 下载diskless-image到/var/lib/diskless/default,注意不要安装!
到ftp://debian.ustc.edu.cn/debian/pool/main/d/diskless选择合适的包,这里我选择的是diskless-image-simple_0.3.18.0.5_all.deb
- 用diskless-newimage生成客户端需要的NFS root镜像:
% cd /var/lib/diskless/default #放置base.tgz 和diskless-image##.deb的地方
% diskless-newimage /var/lib/diskless/default/root
在这个过程中要问一些IP地址等问题,非常简单,在此不多说
- 安装移除一些包:
% cp /etc/apt/sources.list root/etc/apt
% chroot /var/lib/diskless/default/root #这正是debian的优点,以后更新很方便
% vi /var/lib/diskless/default/root/etc/apt/sources.list #配置必要的sources.list,这里用的和服务端的一样,所以直接复制过来了
% dselect #选择必要的软件,比如rsh等
root下的文件是所有客户端公用的,其余一些必须私有的在下面的过程中配置。
- 利用diskless-newhost配置单个客户端:
% diskless-newhost /var/lib/diskless/default/root
简单回答一些关于机子名以及IP地址的问题即可
配置完后,修改/etc/hosts下面的让ip地址和节点名对应起来:
-----------------------------------------------------------------------
192.168.0.1 node1
192.168.0.2 node2
-----------------------------------------------------------------------
- 配置nfs文件共享:
修改/etc/exports以便客户端可以装载上面的那些文件并且共享/home等:
-----------------------------------------------------------------------
/home 192.168.0.0/255.255.255.0(rw,no_root_squash,async)
/usr/pgi 192.168.0.0/255.255.255.0(rw,no_root_squash,async)
#这里单独对pgi处理,是因为客户端也需要pgi一些库文件,pgi配置见后面
#无盘节点公共根目录
/var/lib/diskless/default/root 192.168.0.0/255.255.255.0(ro)
#无盘节点私有目录
/var/lib/diskless/default/192.168.0.1 192.168.0.1(rw,no_root_squash)
/var/lib/diskless/default/192.168.0.2 192.168.0.2(rw,no_root_squash)
-----------------------------------------------------------------------
修改/var/lib/diskless/default/root/etc/fstab:
-----------------------------------------------------------------------
/none /proc proc defaults 1 0
192.168.0.254:/var/lib/diskless/default/root / nfs defaults,nolock 0 1
192.168.0.254:/home/ /home/ nfs defaults,nolock 0 1
192.168.0.254:/usr/pgi/ /usr/pgi/ nfs defaults,nolock 0 1
-----------------------------------------------------------------------
- 编译支持nfs-root的客户端内核:
这里用的是2.6.7内核,make menuconfig时选定下面:
Device Drivers->Networking support->Networking options下的IP: kernel level autoconfiguration和IP: DHCP support
File systems->Network File Systems->NFS file system support和Root file system on NFS
注:这里如果前面的kernel level autoconfiguration没选上,不会出现Root file system on NFS选项
- 配置atftpd:
atftpd安装后,不需要另外的配置,只要把编译好的客户端内核放到atftpd的主目录/tftpboot下即可
- 配置dhcp3 (/etc/dhcp3/dhcpd.conf):
这里采用的是按照mac固定IP方法,相关部分如下:
-----------------------------------------------------------------------
host node1{
option root-path "192.168.0.254:/var/lib/diskless/default/root/,tcp";
hardware ethernet 00:01:02:96:25:92;
fixed-address 192.168.0.1;
}
host node2{
option root-path "192.168.0.254:/var/lib/diskless/default/root/,tcp";
hardware ethernet 00:01:02:98:92:c5;
fixed-address 192.168.0.2;
}
-----------------------------------------------------------------------
- 配置rsh不需要密码登录:
这里是用mpi做并行计算,所以必须配置不要密码,当然这里也可以用ssh代替rsh,个人口味而已
/etc/hosts.equiv:
-----------------------------------------------------------------------
+ node1
+ node2
-----------------------------------------------------------------------
以上配置服务器,允许的哪些客户端连接,这里还可配置具体哪个客户端的哪个用户连接,请man hosts.equiv
下面配置客户端的对应文件:
/var/lib/diskless/defualt/root/etc/hosts.equiv:
-----------------------------------------------------------------------
+
-----------------------------------------------------------------------
配置个人根目录下的.rhosts:
-----------------------------------------------------------------------
node1 UserName
node2 UserName
-----------------------------------------------------------------------
注:配置.rhosts权限为除了用户和root外其余帐户没有访问的权限,我的权限是-rw-------,这里如果不这么配置,rsh的时候还会出现输入密码的提示,切记!
在配置rsh过程中还出现过一个错误,rcmd: getaddrinfo: Temporary failure in name resolution
这是因为rsh等命令为了安全需要setuid,执行下面命令即可:
% chown root /usr/bin/rsh /usr/bin/rcp /usr/bin/rlogin
% chmod 4555 /usr/bin/rsh /usr/bin/rcp /usr/bin/rlogin
- 配置pgi f90编译器:
这个直接安装就成(注意选择服务器版),装完以后配置环境,这里为了所有用户都可以用,所以修改/etc/profile文件:
-----------------------------------------------------------------------
PGI=/usr/pgi
export PGI
PATH=$PGI/linux86/5.1/bin:$PATH
export PATH
export LD_LIBRARY_PATH=/usr/pgi/linux86/5.1/lib
MANPATH=$MANPATH:$PGI/man
export MANPATH
export LIBS="-L/usr/local/pgi/linux86/5.1/lib -lpgftnrtl -lpgc"
-----------------------------------------------------------------------
注:感觉intel的性能更好一点,配置类似,在此不多说。
- 配置mpich:
从这里下载http://www-unix.mcs.anl.gov/mpi/mpich/download.html
安装:
进入解压后的目录,按照需要执行类似下面的命令:
% ./configure --enable-debug -fc=pgf77 -f90=pgf90 --prefix=/usr/local/mpich
类似pgi的配置,修改/etc/profile文件:
-----------------------------------------------------------------------
export MPICH=/usr/local/mpich
export PATH=$MPICH/bin:$PATH
-----------------------------------------------------------------------
注:其实这里的mpich debian自带,可以按照安装一般包类似进行安装。