Diskless Remote Boot in Linux (DRBL) - for Redhat

[版權說明] [作者列表] [前言] [安裝] [致謝] [參考網址]

修改日期Dec/6/2002

精簡版

2002年9月10「自由軟體教學平台與網管研討會」講義



一、版權說明

本文版權屬於全體作者所有,且以 GNU FDL 授權合約發佈。在遵守 GNU
FDL 授權合約的情況下,您可以複製、散佈,以及修改本文件。唯請保持
作者列表的完整,若您修改過此份文件,也請在作者列表中加入您的大名。

同時請注意本文件沒有任何擔保,若因本文件而產生任何直接或間接的損
失,本文作者群均不負任何法律及道義上的責任。

二、作者列表

Steven Shiau (jhshiau@nchc.gov.tw)
K. L. Huang (c00hkl00@nchc.gov.tw)
H. T. Wang (c00wht00@nchc.gov.tw)

三、前言

最近遇到一些朋友、學校與公司在大量使用Linux機器的時候,遇到一個很大的問題,就是機器的管理與架設,一來人力有限,二來故障除錯太耗時。因此小弟就將往日在PC Cluster上使用diskless, remote boot的經驗在此野人獻曝一下。對學校的訓練教室教學而言,使用這個方式的好處在於系統管理者只需照顧到server部分,對於clients就比較不用花時間。由於硬碟目前幾乎是PC最容易故障的部分,如果使用diskless的方式,只有server有硬碟,這樣可以減少一些不必要的困擾。
目前這樣的環境在高速電腦中心的PC 教室測試過,一台Celeron 450 + 512 MB的 server,供給30台左右的client都可以很順利的使用(詳細硬體規格見附件一)。此外,我們也實際到台北縣新莊福營國中的電腦教室實際測試,1台P-III 600+768MB的的server,供給35台左右的clients,使用情形也相當不錯。有了這兩個經驗之後,小弟可以很有信心的將架設的方式詳細說明,相信可以省卻您不少摸索的時間。

另外,值得一提的是,很多朋友問我,已經有LTSP這樣得東西了,為何還要為何要再做一個DRBL? 基本上,LTSP是集中使用伺服器上資源,而DRBL採用的是分散式的作法。DRBL所要求的server是中階的電腦,一台CPU 500MHZ左右的server搭配fast ethernet 的交換器就可以供目前台灣中小學電腦教室40台學生的電腦使用。同樣的配備,如果使用LTSP,可能只能供10台學生電腦使用。


四、Diskless Remote boot in Linux (DRBL) 的安裝
第一部份 Server的Linux安裝
    1. 這部分很多文件都有,請直接參考這個網址即可。要注意的是,對中小學的訓練教室而言,中文環境是不可或缺的,然而目前Redhat 7.3的中文還是有一些瑕疵,因此建議安裝完Redhat 7.3之後,在依照以下幾個文件(文件一網址一網址二)來做中文的修正。當然您也可以直接安裝CLE Gaga 20020625的套件,這套基本上是依照Redhat 7.3更改的。然而小弟實測的時候,卻發現實際執行的時候,client端非常的慢,好像網路的performance不是很好,不知道問題在哪...如果有哪位仁兄知道,請告知小弟。
    2. 安裝好Linux之後,記得確認這些套件要安裝,包含
第二部份 remote boot的安裝

這部分當然還是安裝在server上,只是這些服務是提供給client用的。要安裝dhcp server以及tftp server,然後還要製作client machine remote boot所需要的kernel在server上建置client所需要的檔案系統製作client端(也就是學生用的機器)的開機片設定server上的網路(包含對內,對外)

  1. 編輯/etc/dhcpd.conf
-----------------------
00:10:5A:5C:BB:E3
00:10:5A:5C:BB:A4
00:10:5A:5C:BB:F5
-----------------------
然後執行"dhcpd.pl mac.txt node vmlinuz.etherboot drbl",這幾個參數的意思分別是mac_address.txt client的hostname etherboot_kernel_nbi_name client的nisdomain。(有些參數的意思後面會用到,您可先照用)

這裡我們預設eth0是跑private IP,也就是所有的clients是透過eth0與server連結。eth1是server對外的網路。
執行後會產生兩個檔:dhcpd.conf與hosts,請將檔案放在/etc下。然後將/etc/sysconfig/dhcpd的"DHCPDARGS=ethx"改為您dhcpd服務所連接的網路卡 (例如DHCPDARGS=eth1).
  1. 執行"service dhcpd start"來啟動dhcpd
  1. 執行"rpm -ivh tftp-server-0.28-2.i386.rpm;
  2. 編輯/etc/xinetd.d/tftp 
  3. 執行"service xinetd restart"來重新啟動

/tftpboot/node001 192.168.0.1(rw,no_root_squash)
/usr 192.168.0.1(ro,no_root_squash)
/home 192.168.0.1(rw,no_root_squash)

/tftpboot/node002 192.168.0.2(rw,no_root_squash)
/usr 192.168.0.2(ro,no_root_squash)
/home 192.168.0.2(rw,no_root_squash)
...
 
  1. FIXME 取得最新的kernel,基本的核心編譯可以參考這裡。請先執行"make mrproper"來清除之前make後可能殘留下來的檔案。這裡要配合您的client所需要的硬體來選擇,包含CPU type,音效卡等等.由於是要remote boot,所以這裡有幾個選項一定要選取
in Networking options: check
[*] IP: kernel level autoconfiguration
[*] IP: DHCP support
[*] IP: BOOTP support
[ ] IP: RARP support <--- not necessary
File system, -> Network File Systems --->, check
<*> NFS file system support
             [*] Provide NFSv3 client support
             [*] Root file system on NFS
  1. 將所產生的bzImage用mknbi-linux做Tag,讓etherboot可以remote boot使用
  1. 這部份要先注意到,如果您的client與server的硬體架構是一樣的話,那就可以直接借用server已經有的filesystem.但是如果兩者的主機板和CPU差別太大的話,例如server是Athlon 1.33GHz的CPU搭配socket A的主機板,而client是AMD K6-2 350MHz的CPU搭配socket 7的主機板,有兩個方式解決,一個就是將kernel以及glibc的差異改掉,另一個就是先找一台client來安裝Linux,然後再放到server的/tftpboot下來供其他client機器來使用.以免因為硬體架構的差別太大而造成client無法使用filesystem.(筆者曾經因為這樣的困擾,搞了好久,最後才發覺是這個問題).
  2. 基本上建置client的檔案系統,主要就是在/tftpboot下建一個目錄(例如是node001),然後將所需要檔案,包含dev, etc, lib, bin, sbin等等放到/tftpboot/node001下.當然有些部份可以將server的用NFS分享給client,但是有些目錄卻是基於安全以及好管理的考量,每個client自己要有一份.作法如下: