栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

PXE安装流程

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

PXE安装流程

verbose工具:vmware

Linux版本:release V10 (SP1) /(Tercel)-x86_64-Build20/20210518

一、PXE介绍

PXE 即预启动执行环境。其提供了一种使用网络接口启动计算机的机制。这种机制让计算机的启动可以不依赖本地数据存储设备或本地已安装的操作系统。

二、PXE网络引导安装Linux操作系统

对于PXE服务器来说,其必须具有dhcp服务器、tftp服务器、http服务器。

DHCP服务器的作用是为PXE client指定其所在的子网,为其指定网关等信息,并分配给client一个ip地址。同时,告诉客户端tftp服务器的地址以及指定tftp下的pxelinux.0文件。

TFTP服务器的作用是回应客户端的下载请求,将一些必要的文件发送给客户端。

HTTP服务器的主要作用则是配置软件源,供客户端下载安装。

dhcp服务器地址tftp、http服务器地址
192.168.30.137192.168.30.138
三、配置步骤

基础准备:
①、关闭防火墙

systemctl stop firewalld		#临时关闭
systemctl disable firewalld		#设置开机不自启
systemctl status firewalld		#查看防火墙状态

②、永久关闭selinux

vim /etc/sysconfig/selinux		#修改selinux配置文件
SELINUX=disabled				#修改SELINUX,修改完后请重启以生效
getenforce
#查看selinux状态 
3.1、安装配置DHCP

安装dhcp服务

yum install dhcp-server -y

修改配置文件

vim /etc/dhcp/dhcpd.conf

内容如下

option domain-name-servers 222.88.88.88,222.85.85.85;	#设置默认DNS服务器

ddns-update-style interim;
ignore client-updates;

filename "pxelinux.0";	#指定
next-server 192.168.30.138;	#指定tftp服务器地址

#定义子网
subnet 192.168.30.0 netmask 255.255.255.0 {
        option routers 192.168.30.2;	#默认网关
        option subnet-mask 255.255.255.0;	#默认子网掩码
        range dynamic-bootp 192.168.30.10 192.168.30.200;	#dhcp服务器给client自动分配ip的范围
        default-lease-time 21600;
        max-lease-time 43200;
}

保存,然后启动dhcp服务

systemctl start dhcpd.service		#启动dhcp服务
systemctl enable dhcpd.service		#设置开机启动
systemctl status dhcpd.service		#查看dhcp服务状态
3.2、安装配置tftp

参考文档:

链接:

步骤如下:

sudo dnf makecache -y
sudo dnf install tftp-server -y
sudo cp -v /usr/lib/systemd/system/tftp.service /etc/systemd/system/tftp-server.service
sudo cp -v /usr/lib/systemd/system/tftp.socket /etc/systemd/system/tftp-server.socket
sudo vi /etc/systemd/system/tftp-server.service
# Change Requires=tftp.socket to Requires=tftp-server.socket, 
# change ExecStart=/usr/sbin/in.tftpd -s /var/lib/tftpboot to ExecStart=/usr/sbin/in.tftpd -c -p -s /var/lib/tftpboot 
# change Also=tftp.socket to Also=tftp-server.socket.
# You also have to add a new line WantedBy=multi-user.target after the [Install] line.

如下

[Unit]
Description=Tftp Server
Requires=tftp-server.socket
documentation=man:in.tftpd

[Service]
ExecStart=/usr/sbin/in.tftpd -c -p -s /var/lib/tftpboot 
StandardInput=socket

[Install]
WantedBy=multi-user.target
Also=tftp-server.socket

sudo vi /etc/systemd/system/tftp-server.socket
#You have to add a new line BindIPv6only=both after the ListenDatagram=69 line.

如下

[Unit]
Description=Tftp Server Activation Socket

[Socket]
ListenDatagram=69
BindIPv6only=both

[Install]
WantedBy=sockets.target

sudo systemctl status tftp-server.service
sudo systemctl start tftp-server.service
sudo systemctl enable tftp-server.service
sudo systemctl status tftp-server.service
sudo setsebool -P tftp_anon_write 1
sudo yum install -y python-policycoreutils
sudo chmod 777 /var/lib/tftpboot
# sudo systemctl start firewalld 这个此处开通后面需要关掉,不然页面http访问不了
sudo firewall-cmd --add-service=tftp --permanent
sudo firewall-cmd --reload
nmcli
sudo systemctl stop firewalld
#显示当前ip
sudo dnf install -y tftp
#测试
cd /etc
tftp 当前ip
tftp> status
tftp> verbose
tftp> put fstab
sudo tftp 当前ip
tftp> get hosts

3.3、安装syslinux与拷贝操作

tftp服务器

yum install syslinux -y

拷贝引导加载程序pxelinux.0到/var/lib/tftpboot

cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

挂载Kylin的iso

mount /dev/sr0 /media/		#你也可以将iso保存到虚拟机,然后再挂载。

在var/lib/tftpboot下创建一个名为pxelinux.cfg的目录

mkdir  /var/lib/tftpboot/pxelinux.cfg

复制镜像文件中的安装菜单文件到上一步创建的目录下,并重命名为default

cp /media/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default

配置default

vim /var/lib/tftpboot/pxelinux.cfg/default

内容如下

default vesamenu.c32
prompt 1
timeout 60

display boot.msg

label linux
  menu label ^Install Kylin-0158 in Graphical Mode
  menu default
  kernel vmlinuz
  append initrd=initrd.img ip=dhcp inst.repo=http://192.168.30.138/kylin ks=http://192.168.30.138/ks.cfg

label vesa
  menu label Install Kylin-0158 with ^basic video driver
  kernel vmlinuz
  append initrd=initrd.img ip=dhcp inst.xdriver=vesa nomodeset inst.repo=http://192.168.30.138/kylin ks=http://192.168.30.138/ks.cfg

label rescue
  menu label ^Rescue installed system
  kernel vmlinuz
  append initrd=initrd.img rescue

label local
  menu label Boot from ^local drive
  localboot 0xffff

复制镜像文件中的图形化安装菜单到TFTP目录下

cp /media/isolinux/vesamenu.c32 /var/lib/tftpboot

复制镜像文件中的Linux引导加载模块到TFTP根目录下

cp /media/images/pxeboot/initrd.img /var/lib/tftpboot/

复制镜像文件中的压缩内核到TFTP根目录下

cp /media/images/pxeboot/vmlinuz /var/lib/tftpboot/

复制boot.msg到TFTP根目录

cp /media/isolinux/boot.msg /var/lib/tftpboot/

复制ldlinux.c32到TFTP根目录

cp /media/isolinux/ldlinux.c32 /var/lib/tftpboot/

复制libcom32.c32到TFTP根目录

cp /media/isolinux/libcom32.c32 /var/lib/tftpboot/
cp /media/isolinux/libutil.c32 /var/lib/tftpboot/
3.4、安装http
yum install httpd.x86_64 -y

启动http服务

systemctl start httpd.service 
systemctl enable httpd.service
systemctl status httpd.service
3.5、配置kylin安装源与ks.cfg文件

创建目录/var/www/html/kylin

mkdir -p /var/www/html/kylin

将kylin镜像内的所有文件拷贝到/var/www/html/kylin

cp -r /media/* /var/www/html/kylin/

打开浏览器访问192.168.30.138/kylin,能正常访问。
复制一份ks.cfg模板

cp /root/anaconda-ks.cfg /var/www/html/ks.cfg

设置权限,以便client可以读

chmod o+r /var/www/html/ks.cfg

编辑ks.cfg文件

vim /var/www/html/ks.cfg 

在cdrom下增加url

# Use CDROM installation media
cdrom
url --url=http://192.168.30.138/kylin
四、开始新机器安装
    不选择ISO,完成后直接开启虚拟机不可以使用1核1G,启动不起来
五、脚本实现使用http的 DHCP服务器
#!/bin/bash

TFTP_SERVER_IP=192.168.30.138
SUBNET=192.168.30.0
NETMASK=255.255.255.0
ROUTER=192.168.30.2
DHCP_RANGE_LOW=192.168.30.10
DHCP_RANGE_HIGH=192.168.30.200

yum install dhcp-server -y
cat > /etc/dhcp/dhcpd.conf <<-EOF
option domain-name-servers 222.88.88.88,222.85.85.85;	#设置默认DNS服务器

ddns-update-style interim;
ignore client-updates;

filename "pxelinux.0";	#指定
next-server $TFTP_SERVER_IP;	#指定tftp服务器地址

#定义子网
subnet $SUBNET netmask $NETMASK {
option routers $ROUTER;	#默认网关
option subnet-mask $NETMASK;	#默认子网掩码
range dynamic-bootp $DHCP_RANGE_LOW $DHCP_RANGE_HIGH;	#dhcp服务器给client自动分配ip的范围
default-lease-time 21600;
max-lease-time 43200;
}
EOF
systemctl start dhcpd.service		#启动dhcp服务
systemctl enable dhcpd.service		#设置开机启动
TFTP服务器
#!/bin/bash

TFTP_SERVER_IP=192.168.30.138
SUBNET=192.168.30.0
NETMASK=255.255.255.0
ROUTER=192.168.30.2
DHCP_RANGE_LOW=192.168.30.10
DHCP_RANGE_HIGH=192.168.30.200

sudo dnf makecache -y
sudo dnf install tftp-server -y
sudo cp -v /usr/lib/systemd/system/tftp.service /etc/systemd/system/tftp-server.service
sudo cp -v /usr/lib/systemd/system/tftp.socket /etc/systemd/system/tftp-server.socket

cat > /etc/systemd/system/tftp-server.service <<-EOF
[Unit]
Description=Tftp Server
Requires=tftp-server.socket
documentation=man:in.tftpd

[Service]
ExecStart=/usr/sbin/in.tftpd -c -p -s /var/lib/tftpboot 
StandardInput=socket

[Install]
WantedBy=multi-user.target
Also=tftp-server.socket
EOF

cat > /etc/systemd/system/tftp-server.socket <<-EOF
[Unit]
Description=Tftp Server Activation Socket

[Socket]
ListenDatagram=69
BindIPv6Only=both

[Install]
WantedBy=sockets.target
EOF

sudo systemctl start tftp-server.service
sudo systemctl enable tftp-server.service
sudo setsebool -P tftp_anon_write 1
sudo yum install -y python-policycoreutils
sudo chmod 777 /var/lib/tftpboot
# sudo systemctl start firewalld 这个此处开通后面需要关掉,不然页面http访问不了
sudo firewall-cmd --add-service=tftp --permanent
sudo firewall-cmd --reload
sudo systemctl stop firewalld
#显示当前ip
sudo dnf install -y tftp
yum install syslinux -y
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
mount /dev/sr0 /media/
mkdir  /var/lib/tftpboot/pxelinux.cfg
cp /media/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default

cat > /var/lib/tftpboot/pxelinux.cfg/default <<-EOF
default vesamenu.c32
prompt 1
timeout 60

display boot.msg

label linux
  menu label ^Install Kylin-0158 in Graphical Mode
  menu default
  kernel vmlinuz
  append initrd=initrd.img ip=dhcp inst.repo=http://$TFTP_SERVER_IP/kylin ks=http://$TFTP_SERVER_IP/ks.cfg

label vesa
  menu label Install Kylin-0158 with ^basic video driver
  kernel vmlinuz
  append initrd=initrd.img ip=dhcp inst.xdriver=vesa nomodeset inst.repo=http://$TFTP_SERVER_IP/kylin ks=http://$TFTP_SERVER_IP/ks.cfg

label rescue
  menu label ^Rescue installed system
  kernel vmlinuz
  append initrd=initrd.img rescue

label local
  menu label Boot from ^local drive
  localboot 0xffff
EOF

cp /media/isolinux/vesamenu.c32 /var/lib/tftpboot
cp /media/images/pxeboot/initrd.img /var/lib/tftpboot/
cp /media/images/pxeboot/vmlinuz /var/lib/tftpboot/
cp /media/isolinux/boot.msg /var/lib/tftpboot/
cp /media/isolinux/ldlinux.c32 /var/lib/tftpboot/
cp /media/isolinux/libcom32.c32 /var/lib/tftpboot/
cp /media/isolinux/libutil.c32 /var/lib/tftpboot/
yum install httpd.x86_64 -y
systemctl start httpd.service 
systemctl enable httpd.service
mkdir -p /var/www/html/kylin
echo "开始复制media,请等待..."
cp -r /media/* /var/www/html/kylin/
cp /root/anaconda-ks.cfg /var/www/html/ks.cfg
chmod o+r /var/www/html/ks.cfg
sed -i "10iurl --url=http://$TFTP_SERVER_IP/kylin/" /var/www/html/ks.cfg

edia/isolinux/ldlinux.c32 /var/lib/tftpboot/
cp /media/isolinux/libcom32.c32 /var/lib/tftpboot/
cp /media/isolinux/libutil.c32 /var/lib/tftpboot/
yum install httpd.x86_64 -y
systemctl start httpd.service
systemctl enable httpd.service
mkdir -p /var/www/html/kylin
echo “开始复制media,请等待…”
cp -r /media/* /var/www/html/kylin/
cp /root/anaconda-ks.cfg /var/www/html/ks.cfg
chmod o+r /var/www/html/ks.cfg
sed -i “10iurl --url=http://$TFTP_SERVER_IP/kylin/” /var/www/html/ks.cfg

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/757436.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号