📄 00000001.htm
字号:
<HTML><HEAD> <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>发信人: singer (歌者), 信区: Linux <BR>标 题: 作无盘工作站的方法 <BR>发信站: BBS 水木清华站 (Wed Dec 8 12:46:51 1999) WWW-POST <BR> <BR>作无盘工作站的方法
<BR>
<BR>最近有些网友问作无盘工作站的的方法,我刚刚作完,有一些心得贴出来供大家参考。用 <BR>的系
<BR>统是rh6.1。
<BR>
<BR>作无盘工作站需要客户端和服务器端两方面的工作,下面分别叙述。
<BR>
<BR>无盘工作站客户端
<BR>
<BR>这部分的主要任务是做一个EPROM的启动文件,还包括一个处理linux内核的工具 <BR>mknbi-linux。
<BR>有两个package可以用,etherboot和netboot, etherboot对网卡型号有要求,支持的网 <BR>卡种类
<BR>不算少但不是全部,但基本上最常用的网卡都支持,比如3c503/507/509/905b,
<BR>NE1000/2000/PCIne2000,Intel eepro等等。Netboot可以用ndis或pktdrv,这些在随卡 <BR>带的驱
<BR>动盘上一般都有,所以什么卡都能用。但这仅限于网络启动,Linux内核启动之后不支持 <BR>的还是
<BR>不支持。所以对网卡的要求是Linux能识别。
<BR>
<BR>以下所述适用于etherboot;
<BR>
<BR>1. 展开etherboot,进入src-32,编辑Config。有许多选项可以让你做多重启动、显示信 <BR>
<BR>息、询问口令之类的事情,但是唯一需要的是用bootp代替dhcp,即在Config中定义
<BR>-DNO_DHCP_SUPPORT。因为在服务器端我们打算用bootp,所以这是必须的,否则启动时会 <BR>
<BR>因为寻找dhcp server又找不到启动不了。如果你准备在服务器端使用dhcp,那么这一步 <BR>
<BR>就不需要了。
<BR>
<BR>2. make。对每种网卡都会生成两个文件 .rom和 .lzrom,后者是压缩过的。
<BR>
<BR>3. 使用软盘启动验证所作的启动ROM没问题,假设你用的网卡是ne2000兼容的:
<BR>
<BR>cat ../src/floppyload.bin ne.lzrom > /dev/fd0
<BR>
<BR>用软盘启动,应该能探测到你的网卡并发出bootp请求。如果一切OK,你就可以把ROM文件 <BR>
<BR>烧到EPROM里了。
<BR>
<BR>4. cd ../netboot*;make;make install。make如果出错,解决办法是把系统中的bcc改 <BR>
<BR>名,然后将gcc连接成bcc,再重新make。最后在系统中会增加一个程序mknbi-linux,是 <BR>
<BR>用来处理linux内核的,在服务器端设置部分会讲它的用法。
<BR>
<BR>客户端的工作完成了。
<BR>
<BR>服务器端:
<BR>
<BR>假设你的无盘工作站ip为10.0.0.1; 机器名为dc1.subnet.net,另一台无盘工作站ip为
<BR>10.0.0.2,机器名为dc2.subnet.net, 服务器ip为10.0.0.254,名为server.subnet.net。 <BR>
<BR>
<BR>1. 修改/etc/hosts,增加dc1.subnet.net,dc2.subnet.net
<BR>
<BR>2. 取得bootp-2.x.x,展开后注意把带的各种patch都打上。然后make; make install
<BR>
<BR>3. 建立/etc/bootptab,like this
<BR>------------------------------------------------------------------------
<BR> global.prof:\
<BR> :sm=255.255.255.0:\
<BR> :bf=/tftpboot/vmlinuz.nb:
<BR> dc1:tc=global.prof:ha=0000c0863d7a:ip=10.0.0.1:
<BR> dc2:tc=global.prof:ha=0800110244e1:ip=10.0.0.2:
<BR> ---------------------------------------------------------------------
<BR>ha用无盘工作站网卡的MAC地址代替。
<BR>
<BR>4. 修改inetd.conf,去掉bootpd和tftpd的#号,like this
<BR>---------------------------------------------------------
<BR>tftp dgram udp wait root /usr/sbin/tcpd tftpd –s /tftpboot
<BR>bootps dgram udp wait root /usr/sbin/tcpd bootpd -i
<BR>----------------------------------------------------------
<BR>kill –HUP `cat /var/run/inetd.pif`
<BR>
<BR>5. 建立/tftpboot/10.0.0.1,cd /tftpboot/10.0.0.1,
<BR>(cd /; tar cpf – lib sbin bin var etc dev)| tar xpf –
<BR>mkdir usr; mkdir tmp; chmod 1777 tmp; mkdir home;mkdir root; mkdir proc; <BR>
<BR>mkdir mnt
<BR>
<BR>6. touch fastboot; chattr +i fastboot
<BR>(fstab 中 / 和 /usr 的最后一项设成0,也许不需要这一步了,但我没试过)
<BR>
<BR>以下是一个shell script,可用于自动执行以上操作。
<BR>----------------------------------------------------------
<BR> #!/bin/sh
<BR> if [ $# != 1 ]
<BR> then
<BR> echo Usage: $0 client-IP-addr
<BR> exit 1
<BR> fi
<BR>
<BR> cd /
<BR>
<BR> umask 022
<BR>
<BR> mkdir -p /tftpboot/$1
<BR>
<BR> # just make these ones
<BR> for d in home mnt proc tmp usr
<BR> do
<BR> mkdir /tftpboot/$1/$d
<BR> done
<BR>
<BR> chmod 1777 /tftpboot/$1/tmp
<BR>
<BR> touch /tftpboot/$1/fastboot
<BR> chattr +i /tftpboot/$1/fastboot
<BR>
<BR> # copy these ones
<BR> (cd /; tar cpf - bin lib sbin dev etc var) | (cd /tftpboot/$1; tar <BR>xpf -)
<BR>------------------------------------------------------------------------------ <BR>-
<BR>7. 删除var下一切不需要的东西, 减小空间。删除lib/modules下一切不需要的模块。
<BR>
<BR>8. 修改etc/sysconfig/network,etc/sysconfig/network-scripts/ifcfg-eth0,
<BR>etc/fstab,etc/conf.module
<BR>fstab中指明root在服务器server上,like this
<BR>---------------------------------------------------
<BR>server:/tftpboot/10.0.0.1 / nfs default 0 0
<BR>server:/usr /usr nfs default 0 0
<BR>----------------------------------------------------
<BR>
<BR>9. 配置etc/rc.d/rc3.d,关掉一切不需要的网络服务。
<BR>
<BR>10. 删除etc/rc.d/rc6.d/K??network。
<BR>
<BR>11. 修改etc/rc.d/rc.sysinit,寻找“mount –a –t nonfs,smbfs…"改成
<BR>“mount.–a –t nosmbfs…"
<BR>
<BR>12. mkdir /tftpboot/10.0.0.2; cd /tftpboot/10.0.0.2;
<BR>(cd ../10.0.0.1; tar cpf - *) | tar xpf –
<BR>
<BR>13. 修改etc/sysconfig/network,etc/sysconfig/network-scripts/ifcfg-eth0,
<BR>etc/fstab,etc/conf.module
<BR>
<BR>14. cd /etc; vi exports;
<BR>-----------------------------------------------------------------------------
<BR> <BR>/usr dc*.subnet.net(ro)
<BR>/tftpboot/10.0.0.1 dc1.subnet.net(rw,no_root_squash)
<BR>/tftpboot/10.0.0.2 dc2.subnet.net(rw,no_root_squash)
<BR>-----------------------------------------------------------------------------
<BR> <BR>exportfs –a
<BR>
<BR>15. 编译一个新内核,必须包含以下特性:
<BR>NFS filesystem 支持
<BR>Root on NFS 支持
<BR>Bootp 支持
<BR>无盘工作站所用的网卡型号支持
<BR>
<BR>编译出新内核之后,用mknbi-linux处理,
<BR> mknbi-linux bzImage vmlinuz.nb
<BR>
<BR>将vmlinuz.nb放在/tftpboot下即可。
<BR>
<BR>服务器端的工作就完成了。
<BR>
<BR>注意事项:
<BR>1. 如果你打算在服务器端用dhcp,需要自己配置,参看dhcp的文档。
<BR>2. Rh6.1自带一个bootparamd,也应该能完成同样的工作,但manual中语焉不详,不知该 <BR>如
<BR>何设置。
<BR>3. 服务器端 / 和 /usr 最好单独分区。
<BR>4. etherboot的文档上说对有些网卡比如PCI NE2000兼容网卡,可能需要调整Makefile中 <BR>的
<BR>vendor信息和ID信息,我没试过。
<BR>
<BR>启动你的无盘工作站,一切无误的话,它应该顺利起来。启动过程中如果有一些地方 <BR>failed,
<BR>可以在起来之后在无盘工作站上按一般方法设置。
<BR> <BR> <BR>-- <BR>※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: 162.105.183.185] <BR><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -