1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 【Linux】PXE+Kickstart无人值守安装系统

【Linux】PXE+Kickstart无人值守安装系统

时间:2024-03-11 09:57:30

相关推荐

【Linux】PXE+Kickstart无人值守安装系统

文章目录

前言一、简介二、配置DHCP三、TFTP四、SYSLinux服务程序五、vsftpd服务六、Kickstart应答文件七、自动安装系统八、总结

前言

本文来记录下PXE+Kickstart无人值守安装系统。

当需要安装OS的主机数量较多时,我们不可能通过U盘或光盘给这一台台主机去安装操作系统,这种太过消耗时间。

此时就可以部署PXE+Kickstart无人值守环境,来做到待安装主机一开机就自动去进行操作系统安装流程,明显地省时省力。

一、简介

一个完整的PXE+Kickstart无人值守环境,其涉及到的服务或技术有:PXE、TFTP、FTP(或HTTP)、DHCP和Kickstart。

PXE(Preboot eXecute Environment,预启动执行环境),让计算机通过网络来启动操作系统(计算机网卡需支持PXE技术,主板支持网络引导),主要用于在无人值守安装系统中引导客户端主机来安装Linux操作系统。

运行PXE协议需要设置DHCP服务端和TFTP服务端。DHCP Server会给PXE Client分配一个IP地址,由于是给PXE Client分配IP地址,所以需要在配置DHCP Server时增加相应的PXE配置。此外,PXE Client的ROM中,已存在TFTP Client,客户端直接可以通过TFTP协议到Server端下载相关文件。

PXE工作过程:

1)计算机启动,BIOS将PXE Client调入内存中执行;PXE Client启动,发送广播数据包寻找DHCP Server,找到后向其请求IP地址;

2)DHCP Server响应并返回分配给客户机的IP地址、TFTP Server地址和PXE文件(引导文件pxelinux.0)的存储位置(TFTP Server工作目录/var/lib/tftpboot/);

3)PXE Client通过TFTP客户端并根据地址信息向TFTP Server请求pxelinux.0文件,把该文件加载到内存中;

4)PXE Client取得pxelinux.0文件后执行该文件;

5)引导程序pxelinux.0通过TFTP Server查找配置文件(isolinux.cfg),并加载内核和文件系统;

6)配置文件包含了Kickstart应答文件路径,PXE Client通过该路径获取到ks.cfg文件,并在安装过程中自动应答相应选项;

7)系统安装完成,并根据配置进行重启。

这边放一张网上的图,本文中的这些Server服务,都是部署在同一台Server当中。

二、配置DHCP

DHCP服务是客户端与服务端通信的基础,所以需先在服务端安装DHCP服务,便于客户端来自动获取地址同时与服务端建立连通性:

[root@server ~]# yum install -y dhcp

配置DHCP服务,允许Bootp引导程序协议,目的是让局域网内暂时没有操作系统的主机也能获取到IP地址。

同时在配置文件中需要加载引导驱动文件pxelinux.0,是让客户端主机获取到IP地址后主动拉取引导驱动文件,自行进入下一步的安装过程。

# dhcp默认路径中的配置文件里是空的,需要去将模板拷贝一份过来[root@server ~]# cat /etc/dhcp/dhcpd.conf ## DHCP Server Configuration file.# see /usr/share/doc/dhcp*/dhcpd.conf.example# see dhcpd.conf(5) man page#[root@server ~]# [root@server ~]# cp -a /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf

对DHCP配置文件进行部分修改,保留下面内容即可,其他内容可注释掉:

[root@server ~]# vi /etc/dhcp/dhcpd.confallow booting;allow bootp;# 允许响应使用者查询subnet 192.168.112.0 netmask 255.255.255.0 {option subnet-mask 255.255.255.0;range 192.168.112.100 192.168.112.120;# 地址池,即分发的地址范围default-lease-time 21600;# 默认出租时间,秒max-lease-time 43200; # 最大出租时间next-server 192.168.112.11; # TFTP服务端IP地址filename "pxelinux.0"; # 引导文件位置,这边表示TFTP根目录(/var/lib/tftpboot/)下的pxelinux.0文件}[root@server ~]# systemctl start dhcpd[root@server ~]# ss -nulp | grep dhcpUNCONN00 *:67 *:* users:(("dhcpd",pid=5431,fd=8))

三、TFTP

由于当前的客户端主机没有完整的OS,也就不能完成FTP协议的验证,所以需要使用TFTP协议来帮助客户端获取引导及驱动文件。

TFTP是一种基于UDP协议的简单文件传输协议,其不需要进行用户认证便可获取到所需的文件资源。

TFTP作为一种精简的文件传输服务程序,其运行和关闭都是由xinetd网络守护进程服务来管理的。

Xinetd服务程序会同时监听系统的多个端口,然后根据用户请求的端口号调取相应的服务程序来响应用户的请求。

安装相关服务程序:

[root@server ~]# yum install -y xinetd[root@server ~]# yum install -y tftp-server

开启TFTP服务,只需要在xinetd服务程序的配置文件中把disable参数改成no即表示启用。

此外,TFTP服务默认使用的是UDP 69端口,所以需设置防火墙允许通过的相应策略。

[root@server ~]# vi /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 = dgramprotocol= udpwait= yesuser= rootserver = /usr/sbin/in.tftpdserver_args = -s /var/lib/tftpboot # TFTP根目录disable = no# 启用TFTPper_source = 11cps = 100 2flags = IPv4}[root@server ~]# systemctl restart xinetd# 防火墙设置放行策略[root@server ~]# firewall-cmd --permanent --add-port=69/udpsuccess[root@server ~]# firewall-cmd --reloadsuccess[root@server ~]# ss -nulp | grep 69UNCONN00 *:69 *:* users:(("xinetd",pid=4561,fd=5))[root@server ~]#

四、SYSLinux服务程序

SYSLinux是一个用于提供引导加载的服务程序。

[root@server ~]# yum install -y syslinux

引导文件pxelinux.0由软件包syslinux生成,文件目录为/usr/share/syslinux/

[root@server ~]# cd /var/lib/tftpboot/# 将引导文件pxelinux.0复制到TFTP根目录下[root@server tftpboot]# cp /usr/share/syslinux/pxelinux.0 .[root@server tftpboot]# ll总用量 28-rw-r--r--. 1 root root 26759 3月 2 14:07 pxelinux.0# 将安装镜像中自带的内核文件vmlinuz和初始文件initrd.img也复制到TFTP根目录下[root@server tftpboot]# cp /media/images/pxeboot/{vmlinuz,initrd.img} .[root@server tftpboot]# ll总用量 60548-rw-r--r--. 1 root root 84 3月 2 14:08 boot.msg-rw-r--r--. 1 root root 55073584 3月 2 14:08 initrd.img-rw-r--r--. 1 root root 26759 3月 2 14:07 pxelinux.0-rw-r--r--. 1 root root 153104 3月 2 14:08 vesamenu.c32-rwxr-xr-x. 1 root root 6734016 3月 2 14:08 vmlinuz# 新建pxelinux.cfg目录,将开机选项文件复制到该目录下,并重命名为default[root@server tftpboot]# mkdir pxelinux.cfg[root@server tftpboot]# cp /media/isolinux/isolinux.cfg pxelinux.cfg/default# 编辑开机选项菜单[root@server tftpboot]# vi pxelinux.cfg/default default linux-pxe # 设置默认值,开机自动进入的label选项label linux-pxemenu label ^PXE+KS Install CentOS 7kernel vmlinuz# 将默认的光盘镜像安装方式改为FTP文件传输方式,并指定FTP地址和Kickstart应答文件的获取路径append initrd=initrd.img inst.stage2=ftp://192.168.112.11 inst.ks=ftp://192.168.112.11/pub/ks.cfg quiet

五、vsftpd服务

使用文件传输协议FTP来传输完整的系统安装文件给客户端主机。

此处亦可使用HTTP来进行文件传输,本文只介绍FTP方式。

vsftpd是基于FTP协议的服务软件,安装vsftpd:

[root@server ~]# yum install -y vsftpd

启动vsftpd,同时挂载系统镜像,将镜像中的所有文件复制到FTP工作目录中,便于客户端来该目录查找获取安装程序:

[root@server ~]# systemctl start vsftpd[root@server ~]# mount /dev/sr0 /media/mount: /dev/sr0 写保护,将以只读方式挂载[root@server ~]# cp -r /media/* /var/ftp/

确认防火墙关闭状态或是放行FTP策略:

[root@server ~]# firewall-cmd --permanent --add-service=ftpsuccess[root@server ~]# firewall-cmd --reloadsuccess

SELinux Disabled关闭或者是放行FTP传输:

[root@server ~]# setsebool -P ftpd_connect_all_unreserved=on

这边对vsftpd不做配置,直接启动服务使用即可,因为vsftpd是默认允许匿名用户访问的。

六、Kickstart应答文件

Kickstart应答文件,包含了系统安装过程中需要配置的选项和参数信息,系统可以自动调取这个应答文件的内容,从而实现无人值守安装系统。

Kickstart文件的自定义生成,可参考:【Linux】自定义生成Kickstart(system-config-kickstart)

这边我就直接复制服务端/root/anaconda-ks.cfg文件,来作为Kickstart应答文件的模板。

将该文件复制到vsftpd服务程序的工作目录中,路径需与前文中开机菜单配置中的ks文件路径一致,确保系统能找到这个文件。

使用chmod命令给所有人添加可读权限,以保证客户端主机可以顺利获取到应答文件及其内容。

[root@server ~]# cp ~/anaconda-ks.cfg /var/ftp/pub/ks.cfg[root@server ~]# ll /var/ftp/pub/ks.cfg -rw-------. 1 root root 1259 3月 2 14:31 /var/ftp/pub/ks.cfg[root@server ~]# chmod +r /var/ftp/pub/ks.cfg [root@server ~]# ll /var/ftp/pub/ks.cfg -rw-r--r--. 1 root root 1259 3月 2 14:31 /var/ftp/pub/ks.cfg

对ks文件进行修改:

[root@server ~]# vi /var/ftp/pub/ks.cfg #version=DEVEL# System authorization informationauth --enableshadow --passalgo=sha512# Use CDROM installation media#cdromurl --url=ftp://192.168.112.11# 设置安装源为远端FTP(即/var/ftp/)# Use graphical install#graphicaltext# Run the Setup Agent on first bootfirstboot --enableignoredisk --only-use=sda# Keyboard layoutskeyboard --vckeymap=us --xlayouts='us'# System languagelang en_US.UTF-8# Network informationnetwork --bootproto=dhcp --device=ens33 --onboot=yes --ipv6=auto --activatenetwork --hostname=# Root passwordrootpw --iscrypted $6$Hwv1d9eYvmuxqFsP$K3XI5mRwVEQBIaAUR63/0.twU.Y18Lloj8LDgqQACUZmaTeBDZLE6H4MUvtKeHGSVe6lHrQJLhpbdxxISGWU1/# System servicesservices --disabled="chronyd"# System timezonetimezone Asia/Shanghai --isUtc --nontp# System bootloader configurationbootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sdaautopart --type=lvm# Partition clearing informationclearpart --all --initlabelreboot # 安装完成后,自动重启%packages@^minimal@corekexec-toolsnet-toolslrzszhttpd%end%postuseradd asdfvecho 123456 | passwd --stdin asdfv%end%addon com_redhat_kdump --enable --reserve-mb='auto'%end%anacondapwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notemptypwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyokpwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty%end

七、自动安装系统

到了这边,基本的环境配置就结束了,现在就是去实际应用测试一下。

创建虚拟机,选择稍后安装操作系统,后续的就是设置虚拟机名称、保存路径、磁盘大小等,这边就不一一放图了。

还有一个需要注意的点是,虚机的网络连接模式上,一定要与提供服务程序的虚机保持一致,即要同在一个局域网内,能够识别到。若是实际的物理环境,则也要先确保连通性正常。

虚机加电启动,系统首先去寻找DHCP服务端:

DHCP找到之后,后续进程执行:

我这边遇到了个报错:No space left on device

这个虚机当时硬盘有分了默认的20G,内存只给了500M,将虚机断电关闭。

重新分配内存,调整为1.5G,此时再次加电启动后,系统安装进程未再报错,一直执行安装过程,并最终完成安装后重启。

八、总结

本文介绍了PXE+Kickstart来实现无人值守安装Linux操作系统这一场景,步骤较多,但一遍捋下来会发现,这套环境中服务程序的配置,基本就是简单的启用、设置路径之类的,并不需要去深度探究配置这方面,因此难度不大。多测试个几次,会熟悉的。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。