如何无盘启动Linux

8f6c03268a296f4bef02678deef09017 的头像

·

·

·

32,073 次阅读

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

无盘计算机的优势

想象一下你的办公室内有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
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中国 荣誉推出

8 条回复

  1. 微博评论 的头像
    微博评论

    一般发行版都支持吧?

    来自武汉
  2. 微博评论 的头像
    微博评论

    做Linux网吧么[偷笑]

  3. 微博评论 的头像
    微博评论

    你说的这是网吧?

    来自太原
  4. 微博评论 的头像
    微博评论

    mark一下,

    来自太原
  5. snowhawkyrf 的头像
    snowhawkyrf

    给力的文章!

  6.  的头像
    匿名

    正需要无盘的相关资料,太感谢了。

    来自南宁
  7.  的头像
    匿名

    N年前win就实现并用与网吧了

    来自上海
  8. 来自广东深圳的 Chrome 44.0|Windows 7 用户 的头像
    来自广东深圳的 Chrome 44.0|Windows 7 用户

    很好,很详细。

    来自深圳

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注