使用 PXE (Preboot Execution Environment) 在局域网内批量安装 Linux 是一种常见的网络安装方法。这种方法允许你从网络服务器启动计算机并自动安装操作系统。
一、安装PXE服务端环境
安装 DHCP 服务器(在 Ubuntu 上使用 isc-dhcp-server)
sudo apt-get update
sudo apt-get install isc-dhcp-server
二、配置DHCP服务器
编辑 /etc/dhcp/dhcpd.conf
文件,添加 PXE 服务器的配置:
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.200;
option domain-name-servers 8.8.8.8;
option routers 192.168.1.1;
next-server 192.168.1.10; # PXE 服务器的 IP 地址
filename "pxelinux.0";
}
next-server
是 PXE 服务器的 IP 地址。filename
是 PXE 启动文件的名称。
三、重启DHCP服务:
sudo systemctl restart isc-dhcp-server
安装和配置 TFTP 服务器
1.1安装 TFTP 服务器(在 Ubuntu 上使用 tftpd-hpa
):
sudo apt-get install tftpd-hpa
1.2配置 TFTP 服务器: 编辑 /etc/default/tftpd-hpa
文件:
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/var/lib/tftpboot"
TFTP_ADDRESS=":69"
TFTP_OPTIONS="--secure"
1.3创建 TFTP 根目录并设置权限:
sudo mkdir -p /var/lib/tftpboot
sudo chmod -R 777 /var/lib/tftpboot
1.4创建 TFTP 根目录并设置权限:
sudo systemctl restart tftpd-hpa
四、配置 PXE 引导文件
1.1安装 syslinux(包含 PXE 启动文件):
sudo apt-get install syslinux
1.2复制 PXE 启动文件到 TFTP 目录:
sudo cp /usr/lib/syslinux/modules/bios/pxelinux.0 /var/lib/tftpboot/
sudo cp /usr/lib/syslinux/modules/bios/menu.c32 /var/lib/tftpboot/
sudo cp /usr/lib/syslinux/modules/bios/memdisk /var/lib/tftpboot/
如果出现以下提示
请检查 syslinux
已正确安装,或者找到pxelinux.0
文件通常位于 syslinux
的安装目录中。首先确认它是否存在于其他可能的路径中。
查找:
sudo find / -name pxelinux.0
如果在标准路径中找不到 pxelinux.0
文件,可以尝试安装 syslinux-common
,它可能会提供必要的文件:
sudo apt-get install syslinux-common
如果上述步骤都无法找到 pxelinux.0
,你可以从 syslinux
的源代码获取这些文件。以下是从源代码编译和获取 pxelinux.0
的简要步骤:
下载 syslinux
源代码:
wget https://www.kernel.org/pub/linux/utils/boot/syslinux/syslinux-6.03.tar.gz
解压源代码并编译:
tar -xzvf syslinux-6.03.tar.gz
cd syslinux-6.03
sudo make install
编译后,你应该能在 /usr/lib/syslinux/modules/bios/
或其他相关目录中找到 pxelinux.0
文件。
1.3创建 PXE 配置文件
创建 /var/lib/tftpboot/pxelinux.cfg
目录(如果尚不存在),然后在该目录下创建 default
文件:
sudo mkdir -p /var/lib/tftpboot/pxelinux.cfg
编辑 /var/lib/tftpboot/pxelinux.cfg/default
文件:
DEFAULT menu.c32
PROMPT 0
TIMEOUT 100
MENU TITLE PXE Boot Menu
LABEL Install Linux
MENU LABEL ^Install Linux
KERNEL linux
APPEND initrd=initrd.img
下载 Linux 内核和初始 RAM 磁盘(linux
和 initrd.img
),并将它们放到 TFTP 目录中
sudo cp /path/to/linux /var/lib/tftpboot/
sudo cp /path/to/initrd.img /var/lib/tftpboot/
五、测试安装
在使用vmware虚拟机进行测试时,内存不得小于2G否则会报错。
新建一个虚拟机,并选择稍后安装操作系统然后下一步下一步
启动客户端:
- 当计算机从网络启动时,它会通过 PXE 服务器下载引导文件。
- PXE 服务器会提供启动文件,启动安装程序,自动开始 Linux 的安装过程。
如出现以下状态请把网络连接改为桥接!
六、自动化安装(可选)
如果你希望在安装过程中自动化操作,可以创建一个预配置的 Kickstart 文件(用于 Red Hat 系列)或 Preseed 文件(用于 Debian 系列)来自动化安装过程。然后在 PXE 配置文件中指定这个自动化文件。
Kickstart 文件(Red Hat 系列):
LABEL linux
MENU LABEL ^Install Linux
KERNEL linux
APPEND initrd=initrd.img ks=http://192.168.1.12/kickstart.cfg
Preseed 文件(Debian 系列):
LABEL install
MENU LABEL ^Install Ubuntu
KERNEL ubuntu-installer/amd64/linux
APPEND vga=788 initrd=ubuntu-installer/amd64/initrd.gz auto=true priority=critical preseed/url=http://192.168.1.12/preseed.cfg
注意:上面的 IP 地址、文件路径和配置内容应根据你的实际环境进行调整。
通过这些步骤,你可以设置一个 PXE 服务器,在局域网内批量安装 Linux 系统。
再废话一句
如果出现编辑文件的时候权限不够请在前面加上
sudo nano
Comments NOTHING