無盤啟動意味著一臺客戶端電腦在啟動操作系統(tǒng)時(shí)沒有任何的磁盤存儲介質(zhì)。在這種情形之下,電腦能夠通過網(wǎng)絡(luò)從遠(yuǎn)程N(yùn)FS服務(wù)器上加載內(nèi)核和根文件系統(tǒng)。在這過程中可能會用到多種不同的方法來從NFS服務(wù)器上加載內(nèi)核和根文件系統(tǒng):RARP,BOOTP或是DHCP協(xié)議。在這個指導(dǎo)教程中,我會使用BOOTP/DHCP協(xié)議,因?yàn)樗鼈兡軌虮淮蠖鄶?shù)的網(wǎng)卡所支持。

無盤計(jì)算機(jī)的優(yōu)勢
想象一下你的辦公室內(nèi)有30臺電腦,每一臺都需要使用相同的應(yīng)用程序。如果你作為管理這些電腦的管理員,你會怎么做?如果你在每一臺電腦上安裝應(yīng)用程序,那只是在浪費(fèi)你的時(shí)間。另一方面來說,一套無盤系統(tǒng)就能解決你的問題。有了一套無盤系統(tǒng),你只需在中央NFS服務(wù)器上安裝需要的程序,然后通過網(wǎng)絡(luò)啟動這30臺客戶機(jī)即可。
需要什么
兩臺或更多的裝備有支持DHCP協(xié)議的網(wǎng)卡的Linux電腦。這些將扮演NFS服務(wù)器角色的電腦應(yīng)當(dāng)配有硬盤,其它客戶機(jī)不需要任何的硬盤。服務(wù)器和客戶機(jī)需要連接到同一個本地網(wǎng)絡(luò)之內(nèi)。
設(shè)置一個無盤系統(tǒng)共需要五步。
- 安裝所需的包
- 配置TFTP服務(wù)器
- 配置DHCP服務(wù)器
- 配置NFS服務(wù)器
- 啟動無盤客戶機(jī)
在這個指導(dǎo)教程中,我假設(shè)作為啟動服務(wù)器的電腦運(yùn)行的是 Ubuntu。如何你正在使用其它的Linux發(fā)行版,原理是一樣的。
第一步:安裝所需的包
像下面這樣使用 apt-get 命令來安裝所有需要的包。
- $ sudo apt-get install dhcp3-server tftpd-hpa syslinux nfs-kernel-server initramfs-tools
第二步:配置TFTP服務(wù)器
TFTP服務(wù)器是一個小型FTP服務(wù)器,需要用它來在本地網(wǎng)絡(luò)中的客戶機(jī)和服務(wù)器之間自動傳輸啟動文件。
向/etc/default/tftpd-hpa中添加以下行:
- RUN_DAEMON="yes"
- OPTIONS="-l -s /var/lib/tftpboot/"
接著,創(chuàng)建一個啟動文件夾。
- $ sudo mkdir -p /var/lib/tftpboot/pxelinux.cfg
復(fù)制引導(dǎo)程序鏡像。
- $ sudo cp /usr/lib/syslinux/pxelinux.0 /var/lib/tftpboot
像下面這樣創(chuàng)建一個默認(rèn)啟動配置文件。
- $ sudo vi /tftpboot/pxelinux.cfg/default
- LABEL Ubuntu
- KERNEL vmlinuz
- APPEND root=/dev/nfs initrd=initrd.img nfsroot=10.10.101.1:/nfsroot ip=dhcp rw
注意:
- "root=/dev/nfs"表示服務(wù)器上的網(wǎng)絡(luò)文件系統(tǒng)(不需要修改)。
- "initrd=initrd.img"是一個用于系統(tǒng)啟動的啟動腳本。
- "nfsroot=10.10.101.1/nfsroot"指明了服務(wù)器的IP地址以及NFS共享文件夾的名稱。用你的服務(wù)器地址來替換掉IP地址。
- "ip=dhcp"表示客戶端電腦使用DHCP尋址方案。
- "rw"表示NFS共享是可讀/可寫的。
最后,重啟TFTPD服務(wù)。
- sudo /etc/init.d/tftpd-hpa restart
第三步:配置DHCP服務(wù)
你還需要在NFS服務(wù)器上配置DHCP服務(wù)來允許使用/var/lib/tftpboot/pxelinux.0啟動。假設(shè)你在使用10.10.101.0作為子網(wǎng),你的配置可能看起來像下面這樣子。
- $ sudo vi /etc/dhcp3/dhcpd.conf
- allow booting;
- allow bootp;
-
- subnet 10.10.101.0 netmask 255.255.255.0 {
- range 10.10.101.2 10.10.101.254;
- option broadcast-address 10.10.101.255;
- option routers 10.10.101.1;
- filename "/pxelinux.0";
- }
然后重啟DHCP服務(wù)。
- $ sudo service isc-dhcp-server restart
第四步:配置NFS服務(wù)器
創(chuàng)建一個保存客戶機(jī)根文件系統(tǒng)目錄的文件夾。
- $ sudo mkdir /nfsroot
接著,設(shè)置NFS服務(wù)器導(dǎo)出客戶機(jī)根文件系統(tǒng)。向/etc/exports添加以下行來實(shí)現(xiàn)。
- /nfsroot *(rw,no_root_squash,async,insecure,no_subtree_check)
運(yùn)行下列命令來重新載入修改過的/etc/exports。
- $ sudo exportfs -rv
默認(rèn)情況下,Ubuntu在initrd鏡像中不提供網(wǎng)絡(luò)啟動支持。因此你需要創(chuàng)建一個新的initrd.img文件。首先添加下列行到/etc/initramfs-tools/initramfs.conf中。
- BOOT=nfs
- MODULES=netboot
然后運(yùn)行下列命令來創(chuàng)建一個新的initrd.img。
- $ sudo mkinitramfs -o /var/lib/tftpboot/initrd.img
將新的內(nèi)核鏡像文件復(fù)制到/var/lib/tftpboot中。
- $ sudo cp /boot/vmlinuz-`uname -r` /var/lib/tfftpboot/vmlinuz
是時(shí)候?qū)⒄麄€根文件系統(tǒng)拷貝到/nfsroot中了。
假設(shè)您使用的是一個全新的Ubuntu服務(wù)器安裝,你只需將文件系統(tǒng)拷貝到NFS的根之中。
- $ sudo cp -ax / /nfsroot
然后通過文本編輯器打開/nfsroot/etc/fstab 并添加以下行。
- /dev/nfs / nfs defaults 1 1
文件夾/var/lib/tftpboot應(yīng)擁有全局讀寫權(quán)限。否則客戶機(jī)無法從網(wǎng)絡(luò)啟動。
- $ sudo chmod -R 777 /var/lib/tfftpboot
最后,為了避免任何服務(wù)器設(shè)置出現(xiàn)錯誤,我推薦對運(yùn)行DHCP服務(wù)的網(wǎng)卡使用靜態(tài)IP。舉個例子,如果網(wǎng)卡名為eth0,你的/etc/network/interfaces中的配置應(yīng)該看起來像這樣:
- iface eth0 inet static
- address 10.10.101.1
- netmask 255.255.255.0
- broadcast 10.10.101.255
- network 10.10.101.0
第五步:啟動無盤客戶機(jī)
在您完成了服務(wù)器上的配置之后,從網(wǎng)絡(luò)啟動你的客戶機(jī)。要從網(wǎng)絡(luò)啟動一般你只需修改BIOS設(shè)置中的啟動優(yōu)先順序即可。
如果客戶機(jī)啟動成功,您的無盤環(huán)境就配置好了。無需做任何修改就可以任意添加一臺或多臺客戶端電腦。
via: http:///2014/06/diskless-boot-linux-machine.html
譯者:alim0x 校對:Caroline |