1、所需软件套件
(1)os:redhat 7.4镜像文件
(2)dhcp服务器
(3)tftp server服务器
(4)nfs服务搭建
注意:
- ~redhat 7.4默认开启防火墙,导致装os的服务器pxe无法引导
- ~通过步骤3中配置服务,第四步中,可以选httpd或者nfs都可以使用,但是ubuntu系统的镜像为live表示代表只能线上安装,所以只能用httpd服务安装
- ~注意ubuntu系统的vmlinuz和initrd.img文件命名
- ~cy(长杨系统)在grub.cfg配置文件夹中配置不能为镜像路径,需要在共享文件夹中创建文件夹,然后将镜像内容复制到文件夹中
2、通过yum安装所需软件
2.1搭建yum服务器
安装好redhat7.4后,通过配置yum 服务可以很容易安装以上套件
配置yum服务只需要编辑/etc/yum.repos.d/xxx.repo文件,配置步骤如下:
(1)挂载安装光盘
mount /dev/cdrom /mnt
(2)编辑/etc/yum.repos.d/xxx.repo文件
用编辑器打开/etc/yum.repos.d/xxx.repo文件,把如下内容复制进去
[cdrom] name=cdrom baseurl=file:///mnt/ enabled=1 gpgcheck=0
(3)保存退出后,执行yum repolist all
2.2通过yum安装软件
(1)安装dhcp服务器软件
yum install dhcp
(2)安装tftp服务及其xinetd服务
yum install tftp xinetd tftp-server
(3)安装nfs服务(或者http服务)
yum install nfs-utils rpcbind (http)
3、配置各个服务
3.1 配置dhcp服务器
3.1.1 配置业务网口固定ip,这个网口作为pxe服务网口,pxe文件和dhcp都是走这个网口出去
如果是eth0,则编辑/etc/sysconfig/network-scripts/ifcfg-eth0文件
该文件内容为加入以下内容
device=eth0 bootproto=none(需要改) nm_controlled=no: onboot=yes type=ethernet ipaddr=9.43.3.1(需要改) netmask=255.255.0.0(需要改) gateway=9.43.0.1(需要改) ipv6init=no userctl=no
保存退出后用命令systemctl restart network重启网络。
3.1.2 编辑dhcp配置文件 /etc/dhcp/dhcpd.conf
(1 arm机器或者x86单uefi可以如下配置,在该文件中加入如下内容(指定主机启动文件中是tftp服务指定的文件夹,下面需要在/var/lib/tftpboot/文件夹创建uefi文件夹)
ddns-update-style none;
ignore client-updates; #忽略客户端更新此参数只在服务器端使用
#定义作用域指定子网网络号必须与dhcp服务器网络号相同
subnet 9.43.0.0 netmask 255.255.0.0 { #注意9.43.0.0,不是指定的主机ip
option routers 9.43.0.1;
option subnet-mask 255.255.0.0;
option domain-name-servers 9.43.3.1;
range dynamic-bootp 9.43.3.100 9.43.200.250; #指定动态ip地址范围
filename "uefi/shim.efi"; #指定了主机启动文件
default-lease-time 359200;
max-lease-time 800000; #指dhcp client端的地址租借期限
next-server 9.43.3.1; #指定主机启动文件从哪个地址的服务器上获取
log-facility local4; #分离dhcp服务日志
}(2 x86同时配置uefi和legacy模式的dhcpd文件配置如下:(指定主机启动文件中是tftp服务指定的文件夹,下面需要在/var/lib/tftpboot/文件夹创建uefi和pxelinux文件夹)
#
# dhcp server configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.example
# see dhcpd.conf(5) man page
#
option space pxelinux;
option pxelinux.magic code 208 = string;
option pxelinux.configfile code 209 = text;
option pxelinux.pathprefix code 210 = text;
option pxelinux.reboottime code 211 = unsigned integer 32;
option architecture-type code 93 = unsigned integer 16;
subnet 9.43.0.0 netmask 255.255.0.0 {
option routers 9.43.0.1;
range 9.43.3.100 9.43.200.250;
class "pxeclients" {
match if substring (option vendor-class-identifier, 0, 9) = "pxeclient";
next-server 9.43.3.1;
if option architecture-type = 00:07 {
filename "uefi/shim.efi";
} else {
filename "pxelinux/pxelinux.0";
}
}
}保存退出后用命令systemctl restart dhcpd,检查下是否能够启动服务。
用命令chkconfig dhcpd on,开机启动dhcp服务
将dhcp服务的日志信息从系统的日志服务中分离
- vi /etc/rsyslog.conf 修改日志服务的主配置文件为如下所示:
*.info;mail.none;authpriv.none;cron.none;local4.none /var/log/messages local4.* /var/log/dhcp.log
- 文件/var/log/dhcp.log会自动生成
3.2 配置tftp服务
编辑/etc/xinetd.d/tftp文件,删除原文件内容然后添加如下内容
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot/ -u nobody #tftp根目录
disable = no #将yes改成no是启用
per_source =11
cps =100 2
flags = ipv4
}修改/etc/sysconfig/selinux文件
selinux=disabled (系统默认是enforcing,要改成disabled)
设置tftp服务开机启动chkconfig tftp on,然后执行/etc/init.d/xinetd restart 启动。
注: 更改tftp服务根目录,如果在/etc/xinetd.d/tftp配置文件更改无效,
可以在/usr/lib/systemd/system/tftp.service文件修改,systemctl daemon-reload启用配置 (修改的内容为tftp的根目录)
3.3 配置共享文件夹(安装源)
(1)配置nfs服务
安装好nfs后要启动相关软件,需要启动服务
chkconfig nfs on chkconfig rpcbind on
配置nfs只涉及一个文件/etc/exports,在里面添加要共享的目录及其一些相关设置
我们需要共享/redhat目录可以在exports文件添加如下内容
/redhat/ *(root_squash,crossmnt)
编辑好该文件后要重新启动nfs服务命令如下:service nfs restart
验证nfs是否成功共享文件:
showmount –e localhost 如果有如下输出则nfs成功共享文件 [root@wurenzhishou ~]# showmount -e localhost export list for localhost: /redhat * [root@wurenzhishou ~]#
(2)配置httpd服务
安装好httpd服务后
[root@localhost ~]# yum install -y httpd # 启动http服务 [root@localhost ~]# systemctl start httpd # 设置开机启动 [root@localhost ~]# systemctl enable httpd created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service. # 系统通过网络安装时需要指定安装源,这里使用http服务提供安装源 # 将iso文件挂载后复制到/var/www/html目录即可 [root@localhost ~]# mount -o loop,ro -t iso9660 centos-7-x86_64-dvd-1810.iso /media # cdrom光盘挂载(根据自己的情况二选一) [root@localhost ~]# mount /dev/cdrom /media [root@localhost ~]# cp -r /media /var/www/html/centos7.6
备注:
修改httpd服务默认文件夹路径,修改/etc/httpd/conf/httpd.conf文件,将里面的documentroot “/var/www/html”修改为想要修改的路径,如/redhat,再修改<directory “/var/www/html”>改为想要的路径,重启httpd服务即可httpd -t查看状态,如果有ah00558报错,修改/etc/httpd/conf/httpd.conf文件的第95行取消注释,改为servername localhost:80
4 、配置支持pxe启动
4.1 挂载安装源(nfs方法配置)
创建共享目录/redhat
mkdir /redhat
挂载redhat7.4的安装源iso到/mnt/目录。
光驱挂载方式:mount /dev/sr0 /mnt/
之后把整个镜像放到/redhel/目录下
4.2 配置uefi 启动和legacy启动设置
(1)进入在tftpboot目录下创建一个uefi目录,上述步骤已经提及
cd /var/lib/tftpboot/ mkdir -p uefi(uefi模式) pxelinux/pxelinux.0(legacy模式)
(2)解压shim文件并拷贝shim.ufi启动文件到/vat/lib/tftpboot/uefi目录下。
cp /mnt/packages/shim-x64-12-1.el7.centos.x86_64.rpm /tmp/ cp /mnt/packages/grub2-efi-x64-2.02-0.76.el7.centos.x86_64.rpm /tmp/ cd /tmp rpm2cpio shim-x64-12-1.el7.aarch64.rpm |cpio -idmv rpm2cpio grub2-efi-x64-2.02-0.76.el7.centos.x86_64.rpm |cpio -idmv cp /tmp/boot/efi/efi/redhat/shim.efi /var/lib/tftpboot/uefi/(uefi模式) cp /tmp/boot/efi/efi/redhat/grubx64.efi /var/lib/tftpboot/uefi/(uefi模式) cp /tmp/boot/efi/efi/redhat/shim.efi /var/lib/tftpboot/pxelinux/ (legacy模式) cp /tmp/boot/efi/efi/redhat/grubx64.efi /var/lib/tftpboot/pxelinux/ (legacy模式)
(3)拷贝安装源中的相应文件到/var/lib/tftpboot/uefi/目录下。
cp /mnt/images/pxeboot/vmlinuz /var/lib/tftpboot/uefi/ cp /mnt/images/pxeboot/initrd.img /var/lib/tftpboot/uefi/
(4.1)uefi创建grub.cfg引导文件。(注意中文空格和中文字符)
cd /var/lib/tftpboot/uefi/ vi grub.cfg
(编辑内容如下)
set timeout=60
menuentry 'redhat 7' {
linuxefi uefi/vmlinuz ip=dhcp inst.repo=nfs:9.43.3.1:/redhat/rhel-server-7.9-x86_64-dvd.iso
inst.resolution=1024x768
initrdefi uefi/initrd.img
}备注:inst.repo 为安装源路径,inst.resolution设置分辨率,ip=dhcp设置dhcp动态ip。
如果后续需要配置别的系统,可以如下配置
menuentry 'centos 7.8' {
linuxefi uefi/centos7.8/vmlinuz ip=dhcp inst.repo=nfs:9.43.3.1:/redhat/centos-7-x86_64-everything-2003.iso
inst.resolution=1024x768
initrdefi uefi/centosl7.8/initrd.img在uefi文件夹中创建对应文件夹即可
(4.2)legacy创建default引导文件。(注意中文空格和中文字符)
cd /var/lib/tftpboot/pxelinux/pxelinux.cfg/ vi default
(编辑内容如下)
default linux prompt 1 timeout 600 label rhel7.9 menu label ^install system kernel rhel7.9/vmlinuz append initrd=rhel7.9/initrd.img ip=dhcp inst.repo=nfs:9.43.3.1:/redhat/rhel-server-7.9-x86_64-dvd.iso
执行下面两个命令查看有这些文件
[root@localhost ~]# tree /var/lib/tftpboot/uefi/
• /var/lib/tftpboot/uefi/
• ├── grub.cfg
• ├── grubx64.efi
• ├── initrd.img
• ├── shim.efi
• └── vmlinuz
[root@localhost ~]# tree /var/lib/tftpboot/pxelinux/
• /var/lib/tftpboot/pxelinux/
• ├── initrd.img
• ├── pxelinux.0
• ├── pxelinux.cfg
• │ └── default
• └── vmlinuz最后在个文件夹中执行命令chmod 777 *
至此pxe搭建完成。
后续添加系统到pxe服务器中:
1、nfs只需要把镜像放在/redhat/文件夹中,httpd需要把镜像放在/var/www/html/文件夹中(默认没有修改路径的情况下)
2、修改grub.cfg和pxelinux.cfg/default文件
3、在uefi文件夹中和pxelinux文件夹中创建对应系统名文件夹,将os的vmlinuz和initrd.img文件放进去
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论