前幾天不小心蓋了間電腦教室,所以做個簡單的紀錄。這玩意是個好東西,不但可以大量推 image 到各系統上,也可以直接當作一台重灌伺服器來用。
DRBL Server 自己會帶 DHCP Server,先發 IP 給同區網內所有電腦,再透過 Clonezilla Server 把所有 image 推出去。所以網路結構很簡單,把 Server 跟教室內其他電腦都用 Switch 串在一起就好了。
**如果上層還有 Router 請先拔掉,避免主機的 DHCP Server 和 Router 的 DHCP Server 打架。**
由於 DRBL Server 建置過程中會抓一些套件下來,因此要有兩張網卡,一張對 WAN 一張對 LAN,網路上很多做法都是單個實體網卡建兩個虛擬的 interface,不過我個人測試好像不太成功,最保守的作法就是直接手機接 USB 網路分享給 DRBL Server 作為暫時的 WAN 就好了。
步驟 1:安裝 Ubuntu Server
---------------------
安裝過程應該就不用解釋,狂點下一步即可。對於初學者來說,建議先上 Ubuntu Desktop 版本,如果你對 Linux 很熟,就直上 Ubuntu Server 吧!
- DRBL Server 會將 image 放在 /tftpboot 上,建議安裝時另外切個 partition 來放。
步驟 2:安裝 DRBL Server
-------------------
開始前,先確認自己的網卡設定沒問題,理論上要有兩張網卡,一張對 WAN、一張對 LAN:
```
$ ip addr
```
確定沒問題後,就可以進行安裝。
- 切換到 root:
```
$ sudo su root
```
**注意:以下操作將會在 root 底下執行**
- 安裝 DRBL 金鑰:
```
$ wget -q http://drbl.nchc.org.tw/GPG-KEY-DRBL -O- | sudo apt-key add -
```
- 加入 repo:
```
$ vim /etc/apt/sources.list
```
在最後面加入這行:
```
deb http://free.nchc.org.tw/drbl-core drbl stable
```
- 更新 repo 後安裝:
```
$ apt-get update
$ apt-get install drbl
```
步驟 3:初始化設定
----------
```
$ sudo drblsrv -i
```
再來就是問答題了。
> \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*,
> 你是否要安裝一些網路安裝的開機檔案使得用戶端的電腦可以透過網路安裝Linux (RedHat Linux, Fedora Core, MandrakeLinux以及Debian)到本身的硬碟中? (假如你的用戶端電腦 有硬碟,而你又有可能會需要安裝作業系統,建議選擇Y)
> \[y/N\]
> \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*,
**選 N**
> \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*,
> 你的 DRBL 用戶端的電腦是否要使用序列終端機(Serial Console)? 如果你不清楚什麼序列終端機的話,就回答"N",否則有可能造成用戶端電腦螢幕無法顯示! \[y/N\]
> \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*,
**選 N**
> \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*,
> 你是否要升級你的作業系統?\[y/N\]
> \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*,
**選 Y**
> \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*,
> 在資料庫中尋找最新的 kernel ...
> 在資料庫中,最新的核心是 linux-image-x.x.x-xx-generic
> 有兩個可用的核心給用戶端電腦用,你要選擇哪一個?
> \[1\]: kernel x.x.x-xx-generic x86\_64 (來自於這台DRBL伺服器)
> \[2\]: linux-image-x.x.x-xx-generic (來自於apt的儲藏庫)
> \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*.
**選 1**,這邊基本上選 (來自於這台DRBL伺服器) 的選項就可以了
步驟 4:設定教室環境
-----------
```
$ sudo drblpush -i
```
> \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
> 提示! 當有yes/no選項的時候,預設的值是大寫的字母。例如 (y/N), 預設值是 "N", 當你按 "Enter"的時候,程式使用的值就是 "N"。如果你不確認選用那個好的時候,直接按"Enter"鍵是一個保險的方式。
> \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
> 正在搜尋DRBL伺服器中已經安裝的相關程式...這個可能需要幾分鐘...
> 完成尋找DRBL伺服器所需的相關程式.
> \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
> ------------------------------------------------------
> 這是一個交談模式,在設定DRBL環境的過程中,您必須提供相關資料
> ------------------------------------------------------
> 請輸入網域名稱(DNS domain),例如drbl.sf.net:
\[drbl.org\] **(按enter跳過)**
> ------------------------------------------------------
> 請輸入NIS/YP網域名稱:
\[penguinzilla\] **(按enter跳過)**
> ------------------------------------------------------
> 請輸入用戶端電腦名稱的前置字元:
> 這個前置字元是用來搭配流水編號自動產生用戶端電腦名稱,如果你有部份或是全部機器不想使用這個自動產生的電腦名稱,想要自己指定用戶端電腦名稱,現在可以先按Ctrl-C中斷此程式,編輯/etc/drbl/client-ip-hostname後,再執行此程式。
\[drbl-server\] **(按enter跳過)**
> ------------------------------------------------------
> eth0: IP address 10.0.0.1, netmask 255.255.255.0
> eth1: IP address 99.99.99.99, netmask 255.255.255.0
> 在你的系統上找到已經設定好的乙太網路埠有: eth0, eth1
> ------------------------------------------------------
> 沒有找到這台伺服器的公開IP位址,哪個網路連接埠是這台伺服器用來連接到外部網際網路,而不是給DRBL環境使用的?
> 這台伺服器有的乙太網路埠: eth0 (10.0.0.1), eth1(99.99.99.99)
\[eth1\] **這邊不要照抄,選擇接到 WAN 的那張網卡**
> \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
> 現在我們可以收集用戶端電腦網卡卡號(MAC Adrees)!
> 透過這個收集的步驟可以幫助您的DRBL環境讓用戶端電腦每次開機都拿到相同的IP, 如果您沒有用戶端電腦網卡卡號的紀錄檔時,你現在就應該做!
> 如果您已經有用戶端電腦網卡卡號時,您也可以把那些卡號依序,分組後,一行一行填在檔案 中(檔案的數目就是您DRBL分流網路卡的張數),那麼,這個步驟您就可以略過. 這個步驟就是幫您做偵測卡號,然後存到檔案中,省去您抄錄卡號的時間與可能造成的打字錯誤.!
> 用戶端電腦的網卡卡號(MAC Adrees)將會依照您用戶端電腦開機的順序依序被紀錄下來. 所收集到的網路卡卡號將會依照用戶端電腦連到DRBL伺服器的網路卡來給檔名,存下來的檔名如macadr-eth1.txt, macadr-eth2.txt... 請先將用戶端的電腦設定為由網路開機(etherboot或是PXE),並依照您想要排列的順序開機!
> 你是否要收集用戶端的網卡卡號 ?
\[y/N\] **選 Y**
這時將會進入等待收集的狀態,請把所有學生機都打開,進 BIOS 並選擇 PXE 開機,這時候學生機抓不到 image 無法開機是正常的,因為 DRBL Server 只是要收集各台學生機的 MAC Address,並不會發 image 出去。
這邊可以選 1 查看收集狀態,基本上只要台數對就沒問題。收集完畢後直接選 2 跳出就好。
> \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
> 你是否要讓DRBL伺服器的DHCP服務每次都發相同的IP給用戶端電腦(要使用此選項,您必須 已經收集好用戶端電腦的網卡卡號(MAC Adrees)(如前述的步驟)並且存在檔案中),這是針對連接到DRBL伺服器網路連接埠 eth0 ?
\[y/N\] **選 Y**
這邊也可以選擇不發固定 IP,直接給個 range 讓 DRBL 的 DHCP Server 發動態 IP 就好,但為了避免學生機要不到 IP 我會習慣給固定 IP。
> \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
> 這個網域的用戶端電腦中,起始的IP 4組數字中,最後一組數字的起始值是(也就是IP a.b.c.d的d的起始值) ? 這是針對連接到DRBL伺服器網路連接埠 eth0.
\[1\] **輸入 11,依照各教室規定設置。**
> \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
> 你設定的檔名是 "macadr-eth0.txt".
> 這個檔中用戶端的電腦數目是 5.
> 我們將設定這些用戶端電腦的IP為,這是針對連接到DRBL伺服器網路連接埠 eth0 為: 10.0.0.11 - 10.0.0.15
> 接受 ?
\[Y/n\] **選 Y**
> \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
> 你的DRBL環境配置: \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
> NIC NIC IP Clients
> +-----------------------------+
> | DRBL SERVER |
> | |
> | +-- \[eth1\] 99.99.99.99 +- to WAN
> | |
> | +-- \[eth0\] 10.0.0.1 +- to clients group eth0 \[ 5 clients, their IP
> | | from 10.0.0.11 - 10.0.0.15\]
> +-----------------------------+
> \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
> Total clients: 5
> \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
> 按"Enter"鍵來繼續...
**(按enter)**
> ------------------------------------------------------
> 本系統中,有3種模式可以提供無碟的Linux服務給用戶端使用:
> \[0\] 完全DRBL模式(Full DRBL mode),每個用戶端都有自己的/etc與/var (基於NFS).
> \[1\] 單一系統印象檔模式(DRBL SSI, single system image) , 每個用戶端都使用tmpfs(以記憶體來當虛擬磁碟)的/etc與/var。此模式中,DRBL伺服器的負載與所需要的硬碟空間會少一些。但是請注意!在這個模式中,(a)用戶端電腦的記憶體建議至少要256MB以上,(b)用戶端電腦的系統設定檔並不會回存到伺服器中。所有開機後的系統設定只會使用一次然後關機後就消失。此外,如果你有修改過任何範本機器的設定檔(也就是位於/tftpboot/nodes下的設定檔),你要再執行drbl-gen-ssi-files來產生新的tarball範本檔於/tftpboot/node\_root/drbl\_ssi/中,(c) 如果你要針對某些用戶端設定一些特別的檔案,可以參考/tftpboot/node\_root/drbl\_ssi/clients/00\_README。
> \[2\] 不要提供無碟Linux服務給用戶端使用.
> 你要選用哪一個模式?
\[0\] **選 0**
> ------------------------------------------------------
> 本系統中,Clonezilla再生龍有4個模式可以選用:
> \[0\] 完全模式(Full clonezilla mode),每個用戶端都有自己的/etc與/var (基於NFS).
> \[1\] 再生龍盒模式(Clonezilla box mode), 每個用戶端都使用tmpfs(以記憶體來當虛擬磁碟)的/etc與/var。此模式中,Clonezilla伺服器的負載與所需要的硬碟空間會少一些。但是請注意!這個模式中,用戶端電腦的系統設定檔並不會回存到伺服器中。所有開機後的系統設定只會使用一次然後關機後就消失!
> \[2\] 我不要使用再生龍.
> \[3\] 使用Clonezilla live當作用戶端做clonezilla工作時候的作業系統(測試中).
> 你要選用哪一個模式?
\[0\] **選 3**
> \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
> 使用來那哪個分類的Clonezilla live?
> \[0\]: 穩定版 (Debian-based)
> \[1\]: 測試版 (Debian-based)
> \[2\]: 穩定替代版 (Ubuntu-based)
> \[3\]: 測試的替代版 (Ubuntu-based)
> 若不確認, 選 \[2\]: 穩定替代版
\[2\] **選 2**
> \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
> 當使用Clonezilla live來執行Clonezilla的工作時,用戶端的CPU架構要選用那一種?
> \[0\]: i386
> \[1\]: amd64
> 如果不確認,請選用i386.
\[0\] **選 1**
> \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
> 用戶端執行Clonezilla的工作時,選用的CPU架構是: amd64
> ------------------------------------------------------
> 使用再生龍的時候,你要把印象檔存在此台機器的那個目錄中(請用絕對路徑,並且不要指定在/mnt/, /media/ 或是/tmp/下)?
\[/home/partimag\] **(按enter)**
> ------------------------------------------------------
> 如果你的用戶端的電腦有硬碟,其中有置換分割區(swap partition)或是可以寫的檔案系統,你是否要使用該置換分割區或是在上面產生一個置換檔來做虛擬記憶體,
> 以便用戶端的電腦可以使用需要更多記憶體的程式? (這個步驟不會毀損硬碟中原來的資料)
\[Y/n\] **(按enter)**
> \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
> 確定要產生一個置換檔在用戶端電腦的硬碟中!
> -----------------------------------------------------
> 置換檔要用多少硬碟空間(Megabytes)?
> 我們將會試著配置您指定的置換空間大小,但是如果可寫的空間不夠的話,我們只會取可用空間的60%.
\[128\] **(按enter)**
> ------------------------------------------------------
> 用戶端開機後要進入何種模式?
> "1" 為圖形模式(預設),
> "2" 為文字模式.
\[1\] **(按enter)**
\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
> ------------------------------------------------------
> 用戶端開機後圖形模式您可以選擇登入的種類:
> (0)一般登入, (1)自動登入, (2)限時登入
\[0\] **怕學生手殘不小心進入無碟系統,選 1**
> 你是否要讓程式用亂數產生用戶端自動登入的密碼?
\[Y/n\] **(按enter)**
**其他問題往下 Enter 到底就好。看到以下訊息就代表成功了:**
> DRBL伺服器已經就緒! 現在請設定用戶端電腦由PXE開機(參考4步安裝法的第四步驟)。打開用戶端電腦,然後開始享用DRBL吧!PS. drblpush存了一個設定檔在/etc/drbl/drblpush.conf。因此下次如果你要使用同樣的設定檔方式來重新執行一次drblpush,可以這樣執行: drblpush -c /etc/drbl/drblpush.conf
至此,DRBL + Clonezilla Server 已經建置完畢。