无盘启动意味着一台客户端电脑在启动操作系统时没有任何的磁盘存储介质。在这种情形之下,电脑能够通过网络从远程NFS服务器上加载内核和根文件系统。在这过程中可能会用到多种不同的方法来从NFS服务器上加载内核和根文件系统:RARP,BOOTP或是DHCP协议。在这个指导教程中,我会使用BOOTP/DHCP协议,因为它们能够被大多数的网卡所支持。
无盘计算机的优势想象一下你的办公室内有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