PXE服务器 裸机安装操作系统的方法:光盘安装、U盘安装、PXE网络安装、从硬盘直接安装

PXE:是预启动执行环境的缩写(preboot execute environment)。是intel公司推出的一款通过网络来引导操作系统的协议。广泛应用于网吧无盘系统。只需要将无盘服务器维护好,就能保证网络中的无盘工作站(客户机)的系统能正常运行。

PXE本讲目标: 用centos7系统部署一台PXE服务器,实现通过PXE网络来给PXE客户端手动或自动安装centos7操作系统

PXE服务器需要的支撑软件:DHCP、TFTP、syslinux(提供pxe引导程序文件pxelinux.0)、文件共享(nfs、ftp、http、samba)等

PXE服务器和客户机的工作过程: 1.PXE客户机发出DHCP请求,向服务器申请IP地址。 2.DHCP服务器响应PXE客户机的请求,自动从IP地址池中分配一个IP地址给PXE客户机,并且告知PXE客户机TFTP(简单文件传输协议)服务器的IP地址和PXE引导程序文件pxelinux.0。 3.PXE客户机向TFTP服务器发起获取pxelinux.0引导程序文件的请求。 4.TFTP服务器响应PXE客户机的请求,将其共享的pxelinux.0文件传输给PXE客户机。 5.PXE客户机通过网络来启动到系统安装主界面。 6.PXE客户机向文件共享服务器发起获取centos或windows系统安装文件的请求。 7.文件共享服务响应PXE客户机的请求,将共享的系统安装文件传输给PXE客户机。 8.PXE客户机进入到安装提示向导界面,用户需要手动来完成系统的操作。

kickstart自动化系统安装: 在PXE服务器上用vim或kcikstart工具创建一个系统自动安装的应答文件ks.cfg,并用文件共享服务来共享ks.cfg文件。ks.cfg自动应答文件中是记录的安装操作步骤。客户机在进入安装界面时会自动根据ks.cfg文件中的内容来完成安装操作。

PXE中各服务器软件的功能: DHCP:用来给PXE客户机自动分配TCP/IP设置(包括IP地址、子网掩码、网关、DNS等)。告知PXE客户机“TFTP服务器的IP地址和PXE启动文件名”。

TFTP:是一个迷你的FTP共享协议软件,用来给PXE客户机提供网络启动的引导程序文件pxelinux.0。

syslinux:用来提供pxelinux.0网络引导程序文件。

文件共享:可以是vsftpd、nfs、samba、http等软件来实现文件共享。用来给PXE客户机提供系统安装文件。

PXE服务器的部署: 关闭selinux和防火墙: setenforce 0 && getenforce systemctl stop firewalld && systemctl disable firewalld

部署DHCP服务器 1.查软件是否已安装:rpm -q dhcp 2.安装dhcp服务器软件:yum install -y dhcp 3.查配置文件列表:rpm -qc dhcp /etc/dhcp/dhcpd.conf *是dhcp服务器的主配置文件(实现DHCP的ipv4功能) /etc/dhcp/dhcpd6.conf 是dhcp服务器的主配置文件(实现DHCP的ipv4功能) /etc/openldap/schema/dhcp.schema /etc/sysconfig/dhcpd 是dhcp服务器的辅助配置文件(用于多网卡环境) /var/lib/dhcpd/dhcpd.leases 是dhcp服务器的租约文件(记录客户机从服务器获取的IP地址信息) /var/lib/dhcpd/dhcpd6.leases 4.编辑dhcpd.conf配置文件 rpm -qc dhcp cat /etc/dhcp/dhcpd.conf cat /usr/share/doc/dhcp/dhcpd.conf.example vim /etc/dhcp/dhcpd.conf subnet 192.168.11.0 netmask 255.255.255.0 { range 192.168.11.26 192.168.11.30; option domain-name-servers 8.8.8.8; option domain-name "qf.com"; option routers 192.168.11.2; option broadcast-address 192.168.11.255; default-lease-time 6000; max-lease-time 72000; next-server 192.168.11.11; filename "pxelinux.0"; } 定义网络地址和子网掩码 指定IP地址池的范围(起始和截止IP) 域名解析服务器的IP地址 域名 网关IP地址 广播地址 默认租约时间 最大租约时间 TFTP服务器的IP地址 PXE引导程序文件名

5.启动dhcpd服务,允许服务开机自动启动。 systemctl restart dhcpd systemctl enable dhcpd systemctl status dhcpd netstat -atunlp | grep :67 重启dhcpd服务 允许dhcpd服务开机自动启动 查dhcpd服务状态 查67号端口的网络进程序

PXE客户机测试: 1.在VMware虚拟机软件中新建一台名称为PXE0的centos7_64位系统的虚拟机。 2.给PXE0虚拟机的内存设置成1324M。 3.给PXE0虚拟机创建一个名称为“NOS”的快照。 4.启动PXE0虚拟机,会发现它自动获到了IP地址,并卡在了下图的界面。

部署tftp-server服务器 1.查软件是否已安装:rpm -q tftp-server 2.安装tftp-server服务器软件:yum install -y tftp-server 3.查配置文件列表:rpm -qc tftp-server /etc/xinetd.d/tftp 4.编辑tftp配置文件 cat /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 disable = yes per_source = 11 cps = 100 2 flags = IPv4 } tftp服务的设置

套接字类型为dgram 协议类型为udp协议 允许等待 用户为root用户 服务器程序文件名 文件共享的主目录 将此行的yes(禁用)改为no(启用)

标识为IPv4

5.启动tftp服务,允许服务开机自动启动。 systemctl restart tftp systemctl enable tftp systemctl status tftp netstat -atulp | grep tftp netstat -atunlp | grep :69 重启tftp服务 允许tftp服务开机自动启动 查tftp服务状态 查网络进程中关于tftp关键字的信息 查网络进程中关于69号端口关键字的信息

6.安装提供pxelinux.0的syslinux软件,共享pxe引导程序文件。 rpm -q syslinux mlocate yum install -y syslinux mlocate updatedb locate pxelinux.0 查软件是否已安装 安装指定的软件 更新locate文件查找数据库 查找pxelinux.0文件 共享指定的文件到/var/lib/tftpboot目录中 cd /var/lib/tftpboot cp -v /usr/share/syslinux/pxelinux.0 ./ df -hT cp -v /dvd/isolinux/* ./ mkdir -v pxelinux.cfg cp -v isolinux.cfg pxelinux.cfg/default 切换到tftp-server的默认共享目录 复制指定的文件到当前目录中 查看磁盘空间使用状态 复制光盘挂载点目录中指定的文件到当前目录中 在当前目录中创建pxelinux.cfg目录 复制指定的文件到指定目录中并改名为default

/var/lib/tftpboot目录中的文件功能简介: /var/lib/tftpboot ├── boot.cat ├── boot.msg ├── grub.conf ├── initrd.img ├── isolinux.bin ├── isolinux.cfg ├── memtest ├── pxelinux.0 ├── pxelinux.cfg │   └── default ├── splash.png ├── TRANS.TBL ├── vesamenu.c32 └── vmlinuz tftp服务的默认共享目录

linux系统镜像文件(即迷你版的linux系统)

pxe的引导程序文件 pxe启动菜单的配置文件目录 PXE启动菜单(即centos的安装界面菜单) 安装界面的黑色背景图片

pxe的32位菜单管理程序 pxe启动的linux内核文件

PXE客户机测试: 重启PXE0虚拟机,会发现它自动获到了IP地址,并卡在了下图的界面。

文件共享服务器部署 可用软件:vsftpd、nfs、samba、httpd

以vsftpd为例来部署: 1.查软件是否已安装:rpm -q vsftpd 2.安装tftp-server服务器软件:yum install -y vsftpd 3.查配置文件列表:rpm -qc vsftpd 4.启动vsftpd服务,允许开机自动启动服务 systemctl restart vsftpd systemctl enable vsftpd systemctl status vsftpd netstat -atunlp | grep :21 或 lsof -i :21

5.共享centos7的系统镜像到/var/ftp/dvd目录 mkdir -v /var/ftp/dvd mount /dev/sr0 /var/ftp/dvd

6.修改/var/lib/tftpboot/pxelinux.cfg/default启动菜单文件内容 vim /var/lib/tftpboot/pxelinux.cfg/default 修改内容如下 61 label linux 62 menu label ^Install CentOS 7 63 kernel vmlinuz 64 append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 quiet 找到此行 修改64行内容为append initrd=initrd.img method=ftp://192.168.11.11/dvd

PXE客户机测试: 1.重启PXE0虚拟机,等待自动进入系统安装菜单界面。 2.在安装菜单界面用方向键选择第1个菜单,按Tab键显示菜单的内容,此时可以看到如下图所示的内容。

3.在第1个菜单界面上直接按回车键,等待安装程序的启动,直到进入下图所示的界面。

kickstart自动安装功能 采用kickstart自动应答程序来实现系统的自动化安装(即静默安装)

方法:使用kickstart程序或vim来创建ks.cfg自动应答文件。用文件共享服务来共享ks.cfg自动应答文件。

技巧:linux系统在安装时会自动生成一个anaconda-ks.cfg配置文件,文件位于/root目录中,anaconda-ks.cfg里面记录的就是用户在安装系统时所做的操作(选择语言环境、硬盘分区、安装的软件包、网卡IP设置、主机名、root用户密码、新建普通用户等)。

具体实施: 1.修改/root/anaconda-ks.cfg权限为644,复制/root/anaconda-ks.cfg到/var/ftp/ks目录中。 cd chmod -v 644 anaconda-ks.cfg mkdir -v /var/ftp/ks cp -v anaconda-ks.cfg /var/ftp/ks/ks.cfg vim anaconda-ks.cfg 修改cdrom注释不注释都可以,改IP地址为192.168.11.20

2.修改/var/lib/tftpboot/pxelinux.0/default启动菜单文件 vim /var/lib/tftpboot/pxelinux.cfg/default
61 label linux 标签为linux 62 menu label ^Install CentOS 7 菜单标签为Install CentOS 7 63 menu default 添加此行,设置为默认菜单 64 kernel vmlinuz 指定系统内核文件名为vmlinuz文件 修改64行内容为append initrd=initrd.img method=ftp://192.168.11.11/dvd ks=ftp://192.168.11.11/ks/ks.cfg 66 #menu default 用#号注释掉此行 说明:ks=是指定ks.cfg自动安装应答文件的功能选项。

3.修改/var/ftp/ks/ks.cfg文件内容。 cat /var/ftp/ks/ks.cfg 查看ks.cfg自动应答文件 #version=DEVEL系统版本号为DEVEL开发版

System authorization information系统认证信息,即指定系统密码加密方式为sha512加密算法

auth --enableshadow --passalgo=sha512

Use CDROM installation media使用CDROM光盘安装媒体

cdrom

Use graphical install使用图形安装界面进行系统安装,此处可用graphical图形、也可用text文本方式。

graphical

Run the Setup Agent on first boot运行设置代理在第1次启动时

firstboot --enable ignoredisk --only-use=sda

Keyboard layouts键盘布局

keyboard --vckeymap=cn --xlayouts='cn'

System language系统语言环境

lang zh_CN.UTF-8

Network information网络信息,包括IP地址获取方式(static或dhcp)、网关、device网卡设备名、nameserver域名解析服务器IP地址、netmask子网掩码、IPv6的IP地址等。

network --bootproto=static --device=ens33 --gateway=192.168.11.2 --ip=192.168.11.11 --nameserver=114.114.114.114,8.8.8.8 --netmask=255.255.255.0 --ipv6=auto --activate network --hostname=localhost.localdomain

Root password――指定root用户的登录密码,是加密后的密码

rootpw --iscrypted $6$6vsqEcQaDu/y9CkV$1ZSy74HR1mxG.i0xBiUALwywaWCx2zgbWx5QRbJ2Nskck.29C2UxjXIr5jM6LatiaKtip7nvnQ2B5xrype.pA.

System services系统服务,以下是允许chronyd网络时间服务开机自动启动

services --enabled="chronyd"

System timezone系统时区,新建普通用户jin并设置登录密码

timezone Asia/Shanghai --isUtc user --groups=wheel --name=jin --password=$6$MHU28rsP7sGGkw7s$JaqYHxDXAHmQaEHS33Py7kvnrKtfMnFp8HqlGw3xy6PAo1dtkxeKOGpi2Yg9UqXJqDLnTjsBkauRekkPYycvt/ --iscrypted --gecos="jin"

X Window System configuration information――x window系统配置

xconfig --startxonboot

System bootloader configuration系统引导程序配置

bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda

Partition clearing information分区表清除信息

clearpart --none --initlabel

Disk partitioning information磁盘分区表信息

#创建名称为pv.157这个PV,在sda硬盘上,容量大小为50175兆 part pv.157 --fstype="lvmpv" --ondisk=sda --size=50175 #创建/boot分区,文件系统类型为xfs,在sda硬盘上,容量大小为1024兆 part /boot --fstype="xfs" --ondisk=sda --size=1024 #创建名称为centos的VG卷组,PE大小为4096K,在pv.157这个PV中创建 volgroup centos --pesize=4096 pv.157 #创建/根的逻辑卷,文件系统类型为xfs,最大容量为51200兆,初始容量大小为1024兆,逻辑卷名称为root,组卷名称为centos logvol / --fstype="xfs" --grow --maxsize=51200 --size=1024 --name=root --vgname=centos logvol swap --fstype="swap" --size=2048 --name=swap --vgname=centos

#设置需要安装的软件包和软件包分组 %packages @^gnome-desktop-environment @base @core @desktop-debugging @dial-up @directory-client @fonts @gnome-desktop @guest-agents @guest-desktop-agents @input-methods @internet-browser @java-platform @multimedia @network-file-system-client @networkmanager-submodules @print-client @x11 chrony kexec-tools

%end

%addon com_redhat_kdump --enable --reserve-mb='auto'

%end

%anaconda pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty %end

采用kickstart软件来生成ks.cfg自动应答文件。 yum search kickstart 搜索kickstart关键字的软件 yum install -y system-config-kickstart 安装kickstart软件包 system-config-kickstart 启动kickstart配置程序,如下图所示:

问题:上左图中的“软件包选择”界面会出现下图所示的错误:问题的原因是yum源的repo文件中的“仓库标识”必须用[development]

修改yum源配置文件: vim /etc/yum.repos.d/local.repo 文件内容如下 [development] name=centos 7.5 linux baseurl=file:///dvd enabled=1 gpgcheck=0

修改yum源配置文件之后,再次执行system-config-kickstart看“软件包选择”功能的结果图: