Linux 无盘工作站 Mini Howto
| 作者: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。
本文价值
★★★★★
—
成为第一个评分的人
登录后为本文打分
评论加载中…