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