可擴展linux網絡啓動方案

本文介紹了利用Etherboot + NFS-ROOT + tmpfs實現可擴展Linux網絡啓動的方法。

啓動過程
linux網絡啓動過程可劃分爲兩個階段:
第一階段:下載內核
在這一階段中,客戶端必須有一段小小的網絡啓動自舉代碼。
在Linux中,這一段自舉代碼能夠由netboot或etherboot來生成。
自舉代碼要實現的兩個核心功能是:
網卡驅動功能:驅動客戶端的網卡,以便經過網絡收發數據。
交互引導功能:經過必定的用戶界面與用戶交互;
              使用適當的網絡協議從服務器獲取信息和下載數據;
      引導內核。
這一階段的流程是:
1. 客戶機開機並實現bios自檢後,把控制權交給etherboot。
2. etherboot利用DHCP協議,經過廣播找到DHCP服務器,並取得TFTP服務器的IP和映象文件名等信息。
3. etherboot顯示菜單,讓用戶選擇啓動參數和內核。
4. etherboot使用TFTP協議,從TFTP服務器下載映象文件。
5. etherboot從映象文件中解出linux內核,並把控制權交給內核。
第二階段:引導系統
1. linux內核啓動,並取得本身的ip及其它網絡配置信息。
2. linux內核mount上服務器提供的NFS根分區,並進行系統的初始化。


這種無盤系統,具備以下優勢:
建立和維護簡單而方便,擴展性和伸縮性好,通用性和適用範圍廣。

簡單步驟以下(假設您已具備Linux無盤啓動的初步知識):
一、在一臺普通的機子上安裝一個debian/woody系統,進行初步的系統配置。
二、將此係統完整的拷貝到服務器的目錄/croot下。
三、在服務器上配置運行nfsd。將/croot經過NFS共享:
#/etc/exports
/croot *(ro,no_root_squash)
四、在服務器上配置運行dhcpd,tftpd。
五、缺省的/etc,/var等目錄,客戶端須要擁有寫入權,所以須要在客戶端內存創建虛擬的文件系統。
   把/croot下的etc/,var/,root/等目錄精簡併打包,放在/croot/nfsboot/目錄下。
   系統啓動時下面的腳本會創建若干tmpfs文件系統,並把這些壓縮包解開還原到其中去。
六、在/croot/etc/init.d/下新建nfsboot.sh腳本文件,並創建連接
   ln -s /croot/etc/init.d/nfsboot.sh /croot/etc/rcS.d/S03nfsboot.sh
   使之能在系統啓動的初期自動執行。
七、編譯客戶端內核,分別使用etherboot及mknbi製做啓動軟盤及映像文件。

參考資料:
在198上你能找到所有的配置參考資料.好比:
ftp://202.38.73.198/diskless/src/         etherboot及mknbi源代碼
ftp://202.38.73.198/diskless/boot/          啓動無盤客戶端用
ftp://202.38.73.198/diskless/p_w_picpath/          這是我已作好的.nbi文件。
ftp://202.38.73.198/diskless/config/          各類配置文件樣板,僅供參考。
ftp://202.38.73.198/diskless/etherboot/ 已編譯好的各類etherboot啓動文件
(NFS) 202.38.73.198:/croot NFS-ROOT,整個系統都給你了噢。
(NFS) 202.38.73.198:/croot/etc/init.d/nfsboot.sh 網絡啓動初始化腳本,呵呵,本系統運行的關鍵之處。
(NFS) 202.38.73.198:/croot/nfsboot/     已打包的精簡版本/etc,/var等目錄
以上目錄亦可用http訪問。

附錄:
A. 編譯內核(2.4.x)時須要選上的options
__________________________________________________________________
# File systems

#  Virtual memory file system support
CONFIG_TMPFS=y
#  /dev file system support
CONFIG_DEVFS_FS=y
#  Automatically mount devfs at boot time
CONFIG_DEVFS_MOUNT=y

# Networking options

#  Kernel level IP autoconfiguration
CONFIG_IP_PNP=y
#  DHCP support
CONFIG_IP_PNP_DHCP=y

# Network File Systems

#  NFS file system support
CONFIG_NFS_FS=y
#  Provide NFSv3 client support
CONFIG_NFS_V3=y
#  Root file system on NFS
CONFIG_ROOT_NFS=y
__________________________________________________________________

B. 製作網絡啓動映像文件的簡單腳本
__________________________________________________________________
#!/bin/sh
IMAGE=nc
mknbi-linux --output=$IMAGE.nbi  --rootdir=rom --ip=rom vmlinuz \
&& cp $IMAGE.nbi /tftpboot/ \
&& echo success
__________________________________________________________________

C. 開設TFTP服務
很簡單,我用的是atftpd.

D. 開設DHCP服務
配置文件中添加以下內容,以支持無盤客戶端的啓動:
(其中的一部分請酌情修改)
__________________________________________________________________
# diskless options to support etherboot clients
# TODO: insert the following text into your dhcpd.conf

# Define options for Etherboot
option etherboot-magic      code 128 = string;
option etherboot-cmdline    code 129 = string;
option etherboot-motdline1  code 184 = string;
option etherboot-motdline2  code 185 = string;
option etherboot-motdline3  code 186 = string;
option etherboot-motdline4  code 187 = string;
option etherboot-motdline5  code 188 = string;
option etherboot-motdline6  code 189 = string;
option etherboot-motdline7  code 190 = string;
option etherboot-motdline8  code 191 = string;
option etherboot-menuparam  code 160 = string;
option etherboot-menuline1  code 192 = string;
option etherboot-menuline2  code 193 = string;
option etherboot-menuline3  code 194 = string;
option etherboot-menuline4  code 195 = string;
option etherboot-menuline5  code 196 = string;
option etherboot-menuline6  code 197 = string;
option etherboot-menuline7  code 198 = string;
option etherboot-menuline8  code 199 = string;
option etherboot-menuline9  code 200 = string;
option etherboot-menuline10 code 201 = string;
option etherboot-menuline11 code 202 = string;
option etherboot-menuline12 code 203 = string;
option etherboot-menuline13 code 204 = string;
option etherboot-menuline14 code 205 = string;
option etherboot-menuline15 code 206 = string;
option etherboot-menuline16 code 207 = string;

class "Etherboot" {
    match if substring (option vendor-class-identifier, 0, 9) = "Etherboot";

option etherboot-magic  = E4:45:74:68:00:00;
option vendor-encapsulated-options 3c:09:45:74:68:65:72:62:6f:6f:74:ff;

option root-path    "202.38.73.198:/croot,flags=hard,nolock,intr,v3";

option etherboot-cmdline   "ramdisk_size=204800";
option etherboot-menuparam "timeout=10:default=192";
option etherboot-motdline1 "Linux Remote Boot Service";

option etherboot-menuline1   "Linux WorkStation:::pc.nbi:";
option etherboot-menuline2   "Network Computer:::nc.nbi:";
option etherboot-menuline3   "Debian   2.2 Installation Disk:::debian.nbi:";
option etherboot-menuline4   "Redhat   7.3 Installation Disk:::redhat.nbi:";
option etherboot-menuline5   "Mandrake 8.2 Installation Disk:::mandrake.nbi:";
option etherboot-menuline6   "SuSE     8.0 Installation Disk:::suse.nbi:";
option etherboot-menuline7   "IBM Disk Manager:::dm.nbi:";
option etherboot-menuline8   "Windows 98 bootdisk:::win98.nbi:";
}
__________________________________________________________________

E. 配置NFS-ROOT,開設NFS服務
在/etc/exports文件中添加以下內容:
__________________________________________________________________
#/etc/exports
/croot 10.0.0.0/255.255.255.0(ro,no_root_squash)
__________________________________________________________________

F. 編寫啓動腳本
請自行修改腳本內容以適合本身的須要,
並將之連接到/etc/rcS.d/目錄中,以保證在系統初始化時被執行。
__________________________________________________________________
#!/bin/sh
# nfsboot.sh : boot from nfs-root.
# by WFG 2001.9.30

# setup dirs and packages
cd /

mount -n -t tmpfs tmpfs /tmp

mount -n -t tmpfs tmpfs /var
tar zxf /nfsboot/var.tgz

mount -n -t tmpfs tmpfs /etc
tar zxf /nfsboot/etc.tgz

mount -f /
mount -f /etc
mount -f /var
mount -f /tmp

mount -t tmpfs tmpfs /root
tar zxf /nfsboot/root.tgz

mount -t tmpfs tmpfs /home

mount -t proc  proc  /proc

chmod 755 /etc  /var  /home
chmod 700 /root
__________________________________________________________________

G. 測試運行
轉載自:http://blog.chinaunix.net/uid-7747097-id-2562073.html
相關文章
相關標籤/搜索