PXE 网络安装 CentOS 7,BIOS(Legacy) 和 UEFI 启动都支持

您所在的位置:网站首页 pxe引导rom要开启吗 PXE 网络安装 CentOS 7,BIOS(Legacy) 和 UEFI 启动都支持

PXE 网络安装 CentOS 7,BIOS(Legacy) 和 UEFI 启动都支持

2023-08-22 10:46| 来源: 网络整理| 查看: 265

CentOS 7 配置 PXE+Kickstart 实现网络安装(无人值守)

网络安装至少需要两个系统:

服务器 - 运行 DHCP服务器、TFTP 服务器从服务器提供引导文件,同时 HTTP、FTP 或者 NFS 服务器托管安装映射。客户端 - 要安装系统的机器。安装开始时,客户端会查询 DHCP 服务器,从 TFTP 服务器中获取引导文件,并从 HTTP、FTP 或者 NFS 服务器下载安装映象。 配置网络引导

网络引导配置步骤在不同的系统中有所不同,具体看要安装 Linux 的系统是使用 BIOS 还是UEFI。

配置防火墙 # 关闭并禁用防火墙 [root@localhost ~]# systemctl stop firewalld [root@localhost ~]# systemctl disable firewalld Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service. Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service. # 在防火墙中允许某服务的连接(本次不使用此方式) [root@localhost ~]# firewall-cmd --add-service=tftp 配置SELinux # 查看SELinux状态 [root@localhost ~]# getenforce Enforcing # 设置SELinux为permissive模式,1 是Enfocing模式 [root@localhost ~]# setenforce 0 [root@localhost ~]# getenforce Permissive # 彻底禁用SELinux [root@localhost ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config 配置Yum仓库

使用ISO镜像搭建本地仓库,提升安装软件包的速度。

# ISO文件挂载 [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 /etc/yum.repos.d /etc/yum.repos.d_bak [root@localhost ~]# rm -f /etc/yum.repos.d/* # yum配置文件 [root@localhost ~]# cat /etc/yum.repos.d/local.repo [development] name=local baseurl=file:///media/ gpgcheck=0 [root@localhost ~]# yum makecache 安装配置HTTP服务 [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服务提供安装源,也可以通过FTP服务提供 # 将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 安装配置TFTP服务 [root@localhost ~]# yum install -y tftp-server # 在 /etc/xinet.d/tftp 配置文件中,将 disabled 参数从 yes 改为 no [root@localhost ~]# vim /etc/xinetd.d/tftp [root@localhost ~]# cat /etc/xinetd.d/tftp # default: off # description: The tftp server serves files using the trivial file transfer \ # protocol. The tftp protocol is often used to boot diskless \ # workstations, download configuration files to network-aware printers, \ # and to start the installation process for some operating systems. service tftp { socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /var/lib/tftpboot disable = no per_source = 11 cps = 100 2 flags = IPv4 } # 启动服务 [root@localhost ~]# systemctl start tftp [root@localhost ~]# systemctl enable tftp Created symlink from /etc/systemd/system/sockets.target.wants/tftp.socket to /usr/lib/systemd/system/tftp.socket. [root@localhost ~]# systemctl status tftp 安装配置DHCP服务 [root@localhost ~]# yum install -y dhcp # subnet字段为局部设置,优先级高于全局。option在全局和局部都可设置 [root@localhost ~]# cat /etc/dhcp/dhcpd.conf # 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 192.168.22.0 netmask 255.255.255.0 { option routers 192.168.22.2; # 网关 range 192.168.22.190 192.168.22.199; # 可分配的起始IP~结束IP class "pxeclients" { match if substring (option vendor-class-identifier, 0, 9) = "PXEClient"; next-server 192.168.22.132; # 提供引导文件的服务器IP地址,即tftp服务器地址 if option architecture-type = 00:07 { filename "uefi/shim.efi"; # 采用shim打包的EFI引导映象 } else { filename "pxelinux/pxelinux.0"; # SYSLINUX打包的BIOS引导映像 } } } # 启动服务并设置开机自启 [root@localhost ~]# systemctl start dhcpd.service [root@localhost ~]# systemctl enable dhcpd.service Created symlink from /etc/systemd/system/multi-user.target.wants/dhcpd.service to /usr/lib/systemd/system/dhcpd.service. [root@localhost ~]# systemctl status dhcpd.service 为使用BIOS(Legacy)的机器配置

需要软件包 SYSLINUX 中的 pxelinux.0 文件

[root@localhost ~]# cp /media/Packages/syslinux-4.05-15.el7.x86_64.rpm ./ # 提取软件包 [root@localhost ~]# rpm2cpio syslinux-4.05-15.el7.x86_64.rpm | cpio -dimv [root@localhost ~]# ls -lrt usr/share/syslinux/pxelinux.0 -rw-r--r--. 1 root root 26759 10月 31 2018 usr/share/syslinux/pxelinux.0

在 tftpboot 中创建 pxelinux 目录,并将 pxelinux.0 复制到该目录中

[root@localhost ~]# mkdir /var/lib/tftpboot/pxelinux [root@localhost ~]# cp usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/pxelinux

在 pxelinux/ 目录中创建目录 pxelinux.cfg,添加名为 default 的配置文件

[root@localhost ~]# mkdir /var/lib/tftpboot/pxelinux/pxelinux.cfg # 可根据/media/isolinux/isolinux.cfg修改 ## 设置背景图片,如 menu background splash.png,要将splash.png文件放在pxelinux目录下 ## 设置菜单风格,如 default vesamenu.c32,要将vesamenu.c32文件放在pxelinux目录下 ## 这里直接指定从哪个label启动,省去了进入菜单的时间 [root@localhost ~]# vim /var/lib/tftpboot/pxelinux/pxelinux.cfg/default default linux prompt 1 timeout 600 label linux menu label ^Install system kernel vmlinuz append initrd=initrd.img ip=dhcp inst.repo=http://192.168.22.132/centos7.6 inst.ks=http://192.168.22.132/ks.cfg

将引导映像复制到 pxelinux/ 目录下

[root@localhost ~]# cp /media/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/pxelinux/ [root@localhost ~]# tree /var/lib/tftpboot/pxelinux/ /var/lib/tftpboot/pxelinux/ ├── initrd.img ├── pxelinux.0 ├── pxelinux.cfg │ └── default └── vmlinuz

重新载入已运行服务 tftp、xinetd 和 dhcp

[root@localhost ~]# systemctl daemon-reload [root@localhost ~]# systemctl restart tftp httpd dhcpd # 将用到的服务设置为开机自启(已设置过请忽略) [root@localhost ~]# systemctl enable tftp httpd dhcpd 为使用UEFI的机器配置

需要软件包 shim 中的 shim.efi 文件,和软件包 grub2-efi 的 grubx64.efi 文件

[root@localhost ~]# cp /media/Packages/shim-x64-15-1.el7.centos.x86_64.rpm ./ [root@localhost ~]# cp /media/Packages/grub2-efi-x64-2.02-0.76.el7.centos.x86_64.rpm ./ # 提取软件包 [root@localhost ~]# rpm2cpio shim-x64-15-1.el7.centos.x86_64.rpm | cpio -dimv [root@localhost ~]# rpm2cpio grub2-efi-x64-2.02-0.76.el7.centos.x86_64.rpm | cpio -dimv [root@localhost ~]# ls -l boot/efi/EFI/centos/shim.efi -rwx------. 1 root root 1205224 11月 10 2018 boot/efi/EFI/centos/shim.efi [root@localhost ~]# ls -l boot/efi/EFI/centos/grubx64.efi -rwx------. 1 root root 1090976 11月 9 2018 boot/efi/EFI/centos/grubx64.efi

在 tftpboot/ 目录中创建 uefi/ 目录,并将 EFI 引导映像复制到该目录下

[root@localhost ~]# mkdir /var/lib/tftpboot/uefi [root@localhost ~]# cp boot/efi/EFI/centos/shim.efi /var/lib/tftpboot/uefi/ [root@localhost ~]# cp boot/efi/EFI/centos/grubx64.efi /var/lib/tftpboot/uefi/ [root@localhost ~]# chmod 644 /var/lib/tftpboot/uefi/shim.efi [root@localhost ~]# chmod 644 /var/lib/tftpboot/uefi/grubx64.efi

在 uefi/ 目录中添加名为 grub.cfg 的配置文件

# 可根据/media/EFI/BOOT/grub.cfg修改 [root@localhost ~]# vim /var/lib/tftpboot/uefi/grub.cfg set timeout=10 menuentry 'RHEL 7' { linuxefi uefi/vmlinuz ip=dhcp inst.repo=http://192.168.22.132/centos7.6 inst.ks=http://192.168.22.132/ks_uefi.cfg initrdefi uefi/initrd.img }

将 pxeboot 引导映像复制到 uefi/ 目录下

[root@localhost ~]# cp /media/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/uefi/ [root@localhost ~]# tree /var/lib/tftpboot/uefi/ /var/lib/tftpboot/uefi/ ├── grub.cfg ├── grubx64.efi ├── initrd.img ├── shim.efi └── vmlinuz

重新载入已运行服务 tftp、xinetd 和 dhcp

[root@localhost ~]# systemctl daemon-reload [root@localhost ~]# systemctl restart tftp httpd dhcpd # 将用到的服务设置为开机自启(已设置过请忽略) [root@localhost ~]# systemctl enable tftp httpd dhcpd 创建Kickstart应答文件 # 操作系统安装后,root家目录下有应答文件anaconda-ks.cfg,可根据要安装的机器情况修改该文件 [root@localhost ~]# cp anaconda-ks.cfg /var/www/html/ks.cfg [root@localhost ~]# chmod +r /var/www/html/ks.cfg [root@localhost ~]# ls -l /var/www/html/ total 4 -rw-r--r--. 1 root root 1618 Aug 11 11:23 ks.cfg drwxr-xr-x. 8 root root 254 Aug 11 10:49 media # 验证 Kickstart 文件,pykickstart 软件包提供的 ksvalidator 命令 [root@localhost ~]# yum install pykickstart [root@localhost ~]# ksvalidator ks.cfg

也可以在线编辑,如果有红帽客户门户网站帐户,则可以使用 https://access.redhat.com/labs/kickstartconfig/ 中的 Kickstart Configuration Tool 完成基本配置,并下载得到的 Kickstart 文件。

使用 ksverdiff 命令显示两本版本间 Kickstart 语法的不同。

# -f 指定要比较的第一个发行本,-t 指定要比较的最后一个发行本。 [root@localhost ~]# ksverdiff -f RHEL6 -t RHEL7 使用system-config-kickstart生成应答文件

system-config-kickstart是一款图形化工具,需要桌面环境或X11服务

# 安装system-config-kickstart [root@localhost ~]# yum install -y system-config-kickstart # 启动system-config-kickstart [root@localhost ~]# system-config-kickstart 安装X11 # 服务端安装X11服务,需要重新登录自动生成.Xauthority文件 [root@localhost ~]# yum install -y xorg-x11-xauth # 中文字体(可选) [root@localhost ~]# yum install -y google-noto-sans-fonts wqy-unibit-fonts wqy-zenhei-fonts 安装图形界面(不建议) [root@localhost ~]# yum groups list Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile Available Environment Groups: Minimal Install Compute Node Infrastructure Server File and Print Server Basic Web Server Virtualization Host Server with GUI GNOME Desktop KDE Plasma Workspaces Development and Creative Workstation Installed Groups: Legacy UNIX Compatibility System Administration Tools Available Groups: Compatibility Libraries Console Internet Tools Development Tools Graphical Administration Tools Scientific Support Security Tools Smart Card Support System Management Done [root@localhost ~]# yum groupinstall -y "Server with GUI" [root@localhost ~]# cat /etc/inittab # 查看默认运行级别 [root@localhost ~]# systemctl get-default # 设置图形化为默认 [root@localhost ~]# systemctl set-default graphical.target # startx命令切换到图形界面 问题

软件包选择时,出现“由于下载软件包失败, 软件包选择被禁止”错误

修改Yum配置文件 local.repo,自定义标识源改为 [development]

安装时出现 “no space left on device” 错误

PXE装机内存最少要2G

参考 Red Hat Enterprise Linux 7 安装指南


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3