如何对 Linux 机器进行无盘启动如何对 Linux 机器进行无盘启动如何对 Linux 机器进行无盘启动如何对 Linux 机器进行无盘启动
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何对 Linux 机器进行无盘启动

无盘启动意味着客户端计算机在启动操作系统时没有任何磁盘存储。在这种情况下,计算机可以通过网络从远程 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

复制引导程序 ROM。


$ 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/tftpboot/vmlinuz

现在是时候将整个根文件系统复制到 /nfsroot 了。

假设 tgat 您使用的是全新的 Ubuntu 服务器安装,您只需将服务器文件系统克隆到 NFS 根目录。


$ sudo cp -ax / /nfsroot

然后使用文本编辑器打开 /nfsroot/etc/fstab 以添加以下行。


/dev/nfs       /               nfs    defaults          1       1

目录 /var/lib/tftpboot 应具有全局读/写权限。否则客户端将无法从网络启动。


$ sudo chmod -R 777 /var/lib/tftpboot

最后,为了避免服务器上的任何错误配置,我建议对运行 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 配置中的启动顺序优先级。

如果客户端启动成功,则您的无盘环境已准备就绪。您可以添加一台或多台客户端计算机,而无需进行任何更改。

©2015-2025 艾丽卡 support@alaica.com