Linux中國

如何無盤啟動Linux

無盤計算機的優勢

想像一下你的辦公室內有30台電腦,每一台都需要使用相同的應用程序。如果你作為管理這些電腦的管理員,你會怎麼做?如果你在每一台電腦上安裝應用程序,那只是在浪費你的時間。另一方面來說,一套無盤系統就能解決你的問題。有了一套無盤系統,你只需在中央NFS伺服器上安裝需要的程序,然後通過網路啟動這30台客戶機即可。

需要什麼

兩台或更多的裝備有支持DHCP協議的網卡的Linux電腦。這些將扮演NFS伺服器角色的電腦應當配有硬碟,其它客戶機不需要任何的硬碟。伺服器和客戶機需要連接到同一個本地網路之內。

設置一個無盤系統共需要五步。

  1. 安裝所需的包
  2. 配置TFTP伺服器
  3. 配置DHCP伺服器
  4. 配置NFS伺服器
  5. 啟動無盤客戶機

在這個指導教程中,我假設作為啟動伺服器的電腦運行的是 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

譯者:alim0x 校對:Caroline

本文由 LCTT 原創翻譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國