Linux 无盘工作站 Mini Howto

资讯 驱动中国 302 次阅读
分享 Q
作者:RobertNemkinbuci@math.klte.hu
译者:谢昆中HSIEHKun-Chung,(linuxer.bbs@cis.nctu.edu.tw)

v0.0.3版,1996年9月12日


--------------------------------------------------------------------------------
本文件在叙述如何设立一个无磁碟Linux机器。著作权为RobertNemkin所有。著作权条款依照GPL。我想要谢谢BelaKis将这份文件翻译成为英文。
--------------------------------------------------------------------------------

--------------------------------------------------------------------------------

1.修改

v0.0.3版1996年9月12日:一小部份的修改


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------

2.如何设立一个无磁碟的Linux机
本文件在叙述如何设立一个无磁碟Linux机器。有时候我们可能需要在一个既无硬碟亦无软碟机的个人电脑上执行Linux。如果有个网路,其他的Unix系统有著bootp,tftp,NFS伺服器,而我们又有一个eprom烧录机,那麽我们有办法在建立一个无任何磁碟机的Linux系统了。



--------------------------------------------------------------------------------

--------------------------------------------------------------------------------

3.相关文章

NFS-rootMiniHowto
LinuxNET-2/3-HOWTO由TerryDawson所写,94004531@postoffice.csu.edu.au
/usr/src/linux/README□於建构以及编译新核心


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------

4.硬体
在本文所提到的都是以下面的建构来做的

Sun-OS4.1.3做为启动伺服器
Slackware2.3+Linux1.2.8+wd8013网路卡
已使用中的乙太网路


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------

5.基本概念
基本概念如下:个人电脑会经由bootp协定从启动伺服器中来取得它的IP位址。用0.0.0.0为初始IP位址,而它的核心程式会经由tftp协定。

跳过区段的启动(经由路由器router)并不是个简单问题,所以,不是将伺服器以及无磁碟机的机器放置在同一个网路区段,就只有建构一个UDP辅助位址在你的router到伺服器的位址上。细节请参考你的router产器手册。
以下是我们的步骤


5.1设定个人电脑
取得nfsboot套件(可从你较喜欢的linuxmirror镜射站的/pub/Linux/system/Linux-boot目录取得)。它包含了一个给wd8013卡可直接烧录用的booteprom映像档。

还有其他方法可以准备个人电脑部份:

如果你的机器并不是没有磁碟的,那麽你可以使用小小的DOS程式或
含有同样套件的二进位软体映像档。
如果你选择的是第二者,你必须使用dd命令来将这个映像档写入一张软碟片□。
这个映像档包含了bootp以及tftp客户端程式。你也需要准备一个linux核心程式码,它含有nfs-root选项。

如果你使用最新的稳定核心程式,如linux-1.2.13,那麽你需要使用包含在nfsbootk套件内的patch修补核心程式。
参考patch(1)
如果你想要用最新的,但却不是很稳的linux-1.3.x系列核心,那麽你就需要建构nfs-root这选项。
随便你要不要建构区块设备(软碟机或硬碟机)的支援,但你必须建构tcp/ip支援、wd乙太网路卡支援、nfs档案系统支援。然後重新编译核心程式。


5.2在伺服器上设定bootpd
它可以在bootpd-2.4.tar.gz套件中找到(可从你较喜欢的linuxmirror镜射站的/pub/Linux/system/Network/boot.net目录内)。取得这个套件,编译并安装它。如果你其他的Unix机器也是用SlackwareLinux的,那麽标准的供应版本就有bootpd了,所以你可以跳过这部份。daemon可以直接发出命令来执行


--------------------------------------------------------------------------------

bootpd-s


--------------------------------------------------------------------------------

或是使用inetd,但你需修改:
/etc/inetd.conf在这些条列中移除#号

--------------------------------------------------------------------------------

#tftpdgramudpwaitroot/usr/sbin/in.tftpdtftpd/export
#bootpsdgramudpwaitroot/usr/sbin/in.bootpdbootpd


--------------------------------------------------------------------------------

在/etc/services中插入或是移除备注符号:

--------------------------------------------------------------------------------

bootps67/tcp#BOOTPserver
tftp69/udp#TFTPserver


--------------------------------------------------------------------------------

重新启动inetd,使用

--------------------------------------------------------------------------------

kill-HUP.


--------------------------------------------------------------------------------


5.3在伺服器上建构bootpd
由先,bootpd有个叫bootptab的建构档,它通常被放在/etc内。你必须修改它,加上你的无磁碟机器的闸道IP位址、dns伺服器,以及乙太网路位址(es)。□例如下/etc/bootptab:


--------------------------------------------------------------------------------


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:


--------------------------------------------------------------------------------

global.prof是host项目的一般样本,其中

sm栏包含子网路遮罩
ds栏包含网域名称伺服器的位址
gw栏包含内定闸道位址gateway
ht栏包含网路媒介硬体种类
bf栏包含启动档档名
之後,每一台机器应该有下面这行

首栏包含主机名称
hd栏包含启动档案的目录
全区样本应该被包含到tc栏,
ha栏包含乙太网路卡的硬体位址
ip栏包含被分配的的IP位址


5.4了解tftp
TFTP(TrivialFileTransferProtocol)是一个档案传输协定,就像ftp一样,但它比比较简化,因此可以容易地在EPROM□来编码。TFTP的使用方法有二种:

简单的tftp:表示客户端可以存取你的整个档案系统。虽然较简单但却开了一个安全大洞(任何人都可以经由tftp来拿到你的密码)。
安全的tftp:tftp伺服器会使用chroot.2系统呼叫来改变它自己的根目录。任何在新目录以外的事件都完全无法存取。因为chroot目录变成新的根目录,硬碟在bootptab整档时必须反应这个新的处境。例如:当我们使用不安全的tftp时,hd栏包含了启动目录的完整路径,:/export/root/machine1。当使用安全的tftp时,/export被当成根目录,而/export变成/,且hd栏就变成/root/machine1了。
几乎每一个Unix实作都包含tfpt伺服器,也许你并不需要自己安装一个。

5.5在远端伺服器上设定一个小型的Linux建构
这包含Slackware供应版内的a,ap,n,及x部份。要安装更多的套件也可以;但是上面的套件已足够一个无磁碟X终端机的需求了。首先你需要一个已在运转的Linux系统。在远端机器□找一个磁碟空间并export它成为可读写并挂上它到Linux机器的档案系统上的某一处(例如/mnt)。开始Linux设定并改变root选项从/变为/mnt。然後设立如上面所说的套件,如果你只是要执行一个无磁碟的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
forxinmachine2machine3;do
mkdir$x;cd$x
(cd../machine1;tarcf-*)|tarxvf-
done


--------------------------------------------------------------------------------

然後做下列的export:

/export/linux/usr唯读(对每个使用者)
/export/liunx/machine1只有对machine1有rw,root权利。
/export/liunx/machine2只有对machine2有rw,root权利。
/export/liunx/machine3只有对machine3有rw,root权利。
如下
下面□列是依照SunOs4.1.3的exports档案的语法来做
:

--------------------------------------------------------------------------------


#Thisfileis/etc/export
#forremotelinuxXterminalsbyBuci
#thislineisonlyonce
/export/root/usr-access=linuxnet
#theselinesonceforeveryhost
/export/root/machine1rw=machine1,root=machine1
/export/root/machine2rw=machine2,root=machine2
/export/root/machine3rw=machine3,root=machine3


--------------------------------------------------------------------------------

请不要忘了执行exportfs-a

5.6建构tftp伺服器

现在该是建构tftp伺服器的时候了。如果你不需要一个安全的tftp那很简单,因为你的客户端已经可以从/export目录来启动。

如果一个安全的tftp被采用,那麽你可以在/tftpboot目录下做个完整的/export/linux目录结构。(用一个实体核心程式及连结给其他机器的符号连结),或是让/export目录成为安全的tftpd的根目录。或者如果你有一另外的tftpboot目录,那麽,同样地,你只需要原来的目录结构,然後用一个实体核心程式来符号连结其他机器)。你可以执行下列命令来完成这个设定:


--------------------------------------------------------------------------------

mkdir-p/tftpboot/export/linux/machine1
cd/tftpboot/export/linux/machine1
cp/export/linux/machine1/.


--------------------------------------------------------------------------------

然後执行下面:



--------------------------------------------------------------------------------

mkdir-p/tftpboot/export/linux/machine2
cd../machine2
ln-s../machine2/


--------------------------------------------------------------------------------


5.7最後工作

最後,你必须插入


--------------------------------------------------------------------------------

/sbin/mountnfs_server:/export/linux/usr/usr


--------------------------------------------------------------------------------





--------------------------------------------------------------------------------

/export/linux//etc/rc.d/rc.S


--------------------------------------------------------------------------------

的第一行。在这□指的是machine1,machine2等等。



--------------------------------------------------------------------------------

--------------------------------------------------------------------------------

6.记忆体以及磁碟空间要求;速度
我只在Slackware2.3上测试过;对於其他的供应商(Linux)套件或版本,下面的数字可能会不同。

磁碟空间:28MB+6.5MB/每台机器
RAM:我在8MB上跑X,只需要4MBswap。我猜想,这个可以被建立-为每一部机器分别做-在/tmp□面,请不要忘了执行mkswap。
速度:我在一台有8Megs的486DX2/66机器上跑并无问题。


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------

7.可能的错误

我发现一个奇怪的错误:在/dev子目录□,SunOS搞错了设备名称,所以我被迫将这个子目录挂上一个有磁碟的Linux机器上来重新执行MAKEDEV。(原因是因为linuxnfs和SunOsnfs是不同的:两者都使用32位元在主要及次要设备名称,但是linux使用16位元宽度栏在两者上,SunOs则使用14位元宽度栏给主要设备,18位元宽给次要设备号码。)
当无磁碟linux被启动时,只有一个行径route会被放在tftp伺服器的行径表□,所以你需要设定正确的行径表。你有两种选择:
手动建构每一台机器的每一个rc.S。
或使用bootp客户端套件并写一个通用的设定命令手稿


--------------------------------------------------------------------------------

--------------------------------------------------------------------------------

8.本文件中的错误以及更详细的解说

正确引用相关的文件。
SunOs是以BSD为基础,所以需要包含SVR4(如Solaris)为基础的伺服器建构。
虽然Linux和SunOs都可以做为bootp/tftp伺服器,但是Linux会比较有用些。
更新这份文件到最新的etherboot套件。
指出核心程式版本1.2.13在nfsroot修补後与新的1.3.x版(此版已包含了nfs-root的修补)的不同处。
需要试试wd8013以外的其他乙太网路卡
包含bootpc的建构资讯,一个bootp客户端来设定正确的rooting表。
编排上或其他的错误:麻烦您告诉我一声,谢谢。buci@math.klte.hu

译者按:若您发现本文件内容有翻译不顺畅或错误的地方,请您来信告诉我,以做更正,谢谢。linuxer.bbs@cis.nctu.edu.tw。


--------------------------------------------------------------------------------
版权声明:本文由驱动中国整理发布,转载需注明出处与原文链接。如有疑问请联系 editor@qudong.com
本文价值 成为第一个评分的人
登录后为本文打分
网友评论0 条评论
正在回复 的评论取消
评论加载中…
🔐

登录后参与互动

评论、点赞均可赚积分
连续签到、邀请好友也有奖励 🎁

电脑端: 微信扫码登录 微信内: 一键登录

微信扫一扫

打开微信「扫一扫」,分享本文到朋友圈或好友