其实无盘的linux并没有十分困难,只是做的人不多而已。
这里我就介绍一下我的实现方法:
实现系统(RedHat 8.0+DHCPD+TFTP)
SYSLINUX =http://freshmeat.net/redir/syslinux/10177/url_tgz/syslinux-2.09.tar.gz
其实这与系统没有多大关系
安装服务器,这个服务器必须支持dhcpd(或PXE),tftpd,nfs这几个服务,这里要说的是必须要结合syslinux一齐用。
下载syslinux 编译后把pxelinux.0 拷贝到/tftpboot/, pxelinux.0 为启动文件.取得无盘工作站的网卡(MAC)
在dhcpd.conf中指定IP地址;
dhcpd文件例子:
####################################
deny unknown-clients;
option subnet-mask 255.0.0.0;
option broadcast-address 130.255.255.255;
option domain-name "";
option routers 129.0.0.254;
ddns-update-style none;
subnet 129.0.0.0 netmask 255.0.0.0 {
group {
host node1{
hardware ethernet 00:30:48:29:cb:96;
fixed-address 129.0.0.1;
filename "pxelinux.0";
option routers 129.0.0.254;
option domain-name "YY";
}
}
}
#######################################
在新建一个pxelinux.cfg目录,启动时服务器会在此目录找相应的无盘工作站的配置,文件的名称规则为IP地址的16进制的输出比如10:10:10:10 文件名为0a0a0a0a 若找不到系统会一步一步找0a0a0a00 - 0a0a0000 - 0a000000 - default 在找不到那就无法启动了.
此文件的格式:
########################
DEFAULT linux
PROMPT 0
LABEL linux
KERNEL vmlinuz
append ip=dhcp root=/dev/nd01 nfsroot=129.0.0.254:/tftpboot/node vga=normal
##########################
可以自己改变.此文件指定了 服务器为129.0.0.254 无盘工作站的文件系统在/tftpboot/node下下面是我写的建无盘站文件系统的shell程序
#############################
#!/bin/sh
mkdir=`which mkdir`
cp=`which cp`
mknod=`which mknod`
chmod=`which chmod`
rm=`which rm`
chattr=`which chattr`
mkdir /tftpboot/$1
cd /tftpboot/$1
echo -n "Copy directory bin ..."
cp -a /bin .
echo " OK"
echo -n "Copy directory dev ..."
cp -a /dev .
echo " OK"
echo -n "Make a node nd0 ..."
mknod dev/nd0 b 43 0
chmod 600 dev/nd0
echo " OK"
echo -n "Copy directory etc ..."
cp -a /etc .
echo " OK"
echo -n "create directory home ..."
mkdir home
echo " OK"
echo -n "Copy directory lib ..."
cp -a /lib .
echo " OK"
echo -n "clean modules of directory lib ..."
rm -rf lib/modules
echo " OK"
echo -n "create directory root ..."
mkdir root
echo " OK"
echo -n "copy directory sbin ..."
cp -a /sbin .
echo " OK"
#echo -n "link directory usr ..."
#ln -s /usr usr
#echo "OK"
echo -n "create directory var ..."
mkdir var
cd var
echo "Entering directory var "
echo -n "copy lib"
cp -a /var/lib .
echo -n " cache"
cp -a /var/cache .
echo -n " log"
cp -a /var/log .
echo -n " tmp"
cp -a /var/tmp .
echo -n " spool"
cp -a /var/spool .
echo -n " yp"
cp -a /var/yp .
cd ../
echo -n "leaving directory var"
echo " OK"
echo -n "create directory proc usr tmp ..."
mkdir proc usr tmp
echo " OK"
echo -n "change attribute of tmp ..."
chmod 777 tmp
echo " OK"
echo -n "create file fastboot and add +i attribute ... "
touch fastboot
chattr +i fastboot
echo " OK"
#######################
## change fstab ##########
编辑/tftpboot/node/etc/fstab
添加 nodeserver:/tftpboot/node / nfs rw 0 0
修改/etc/exports
添加/tftpboot/node node1(rw,async,no_root_squash)
启动nfs
再要修改的话,可以根据自己的需要删添.
这样服务系统算是搞定了, 接下去就要编译无盘工作站内核了
下载一个内核源文件,或者就去安装盘中找一个就可以了,安装后,进入/usr/src/SPRMS/中,看到内核的源程序,make menuconfig ,此时你可以考虑无盘工作站的需要,减少一些硬件的支持,但是你必须要选上nfsroot.
我找到了其他的安装方法,都不建议使用加载modules,但是你要加载了,好像也没有什么问题,而且可以增加许多功能.不过对资源占用很多,这要看你的观点了. 接下去就把编译好的内核文件 bzImage 拷贝到/tftpboot/下 改为vmlinuz或者你可以在/tftpboot/pxelinux.cfg/xxxxxxxx 中修改 kernel + 内核文件的名字.
这样,一个无盘工作站的系统基本没有问题了,无盘站选择网络启动,