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

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