浅谈PXE自动化安装Centos系统

浅谈PXE自动化安装Centos系统

    • 实验:安装centos系统


PXE概念

  • PXE(preboot executeenvironment),预启动执行环境)是由Intel公司开发的技术,工作于C/S的网络模式,支持客户端通过网络从服务器下载映像,并支持客户端机器通过网络启动操作系统,在启动过程中,客户端需要从服务器分配IP地址、掩码、网关以及相关的配置文件路径,再用TFTP(trivial file transfer protocol)协议从服务器下载一个启动软件包到本机内存中执行,由这个启动软件包完成客户端的基本软件设置,从而引导预先安装在服务器中的终端操作系统,PXE可以引导多种操作系统,如:centos、redhat、windows 7等,因此PXE只是一种引导方式,将PC的启动从网卡启动。

PXE的工作过程:

  1. PXE客户端启动时选择或设置为从网卡启动,向本网络中的DHCP服务器申请IP信息,包括IP地址、掩码、网关等。
  2. DHCP 服务器返回分配给客户机的IP地址以及PXE文件的放置位置(该文件一般是放在一台TFTP服务器上)。
  3. PXE客户端向本网络中的TFTP服务器获取pxelinux.0 文件。
  4. PXE Client 取得pxelinux.0 文件后之执行该文件到内存。
  5. 根据pxelinux.0 的执行结果,通过TFTP服务器加载内核vmlinuz和文件系统init.image 。
  6. 进入安装画面, 此时可以通过选择HTTP、FTP、NFS 方式之一进行安装。

PXE工作原理如下图
浅谈PXE自动化安装Centos系统_第1张图片

实验:安装centos系统

准备工作
1. 在服务器端搭建HTTPD、TFTP (tftp-server,centos8)、syslinux dhcp
yum -y install httpd tftp-server syslinux dhcp
systemctl enable --now httpd tftp dhcp
systemctl start httpd tftp.service
注意: 因为dhcp还没有配置文件,所以暂时无法启动
ss -ntulp 查看80 69端口是否开放
2.准备yum源

  • 准备三个光驱挂载6、7、8的ISO光盘
* 扫描出光盘
[root@Centos7 ~]#echo "- - -" > /sys/class/scsi_host/host0/scan 
[root@Centos7 ~]#lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0  200G  0 disk 
├─sda1   8:1    0    1G  0 part /boot
├─sda2   8:2    0   50G  0 part /
├─sda3   8:3    0    2G  0 part [SWAP]
├─sda4   8:4    0    1K  0 part 
└─sda5   8:5    0  100G  0 part /data
sr0     11:0    1  4.3G  0 rom  
sr1     11:1    1  3.7G  0 rom  
sr2     11:2    1  6.7G  0 rom 
  • 创建目录并挂载
[root@Centos7 ~]#mkdir -pv /var/www/html/centos/{6,7,8}/isos/x86_64
[root@Centos7 ~]#mount /dev/sr0 /var/www/html/centos/7/isos/x86_64
mount: /dev/sr0 is write-protected, mounting read-only
[root@Centos7 ~]#mount /dev/sr1 /var/www/html/centos/6/isos/x86_64
mount: /dev/sr1 is write-protected, mounting read-only
[root@Centos7 ~]#mount /dev/sr2 /var/www/html/centos/8/isos/x86_64

3.准备ks文件

[root@Centos7 /var/www/html]#tree -L 4
.
├── centos
│   ├── 6
│   │   └── isos
│   │       └── x86_64
│   ├── 7
│   │   └── isos
│   │       └── x86_64
│   └── 8
│       └── isos
│           └── x86_64
└── ksdir
    ├── ks6.cfg
    ├── ks7.cfg
    └── ks8.cfg

11 directories, 3 file
[root@Centos7 /var/www/html/ksdir]#ll
total 12
-rw-r--r-- 1 root root 1235 Nov 13 10:38 ks6.cfg
-rw-r--r-- 1 root root 1434 Nov 13 10:25 ks7.cfg
-rw-r--r-- 1 root root 1742 Nov 13 12:59 ks8.cfg
// 配置三个系统ks文件
[root@Centos7 /var/www/html/ksdir]#vim ks6.cfg 
[root@Centos7 /var/www/html/ksdir]#vim ks7.cfg 
[root@Centos7 /var/www/html/ksdir]#vim ks8.cfg

4.配置PXE文件

[root@Centos7 ~]#rpm -ql tftp-server
/etc/xinetd.d/tftp
/usr/lib/systemd/system/tftp.service
/usr/lib/systemd/system/tftp.socket
/usr/sbin/in.tftpd
/usr/share/doc/tftp-server-5.2
/usr/share/doc/tftp-server-5.2/CHANGES
/usr/share/doc/tftp-server-5.2/README
/usr/share/doc/tftp-server-5.2/README.security
/usr/share/man/man8/in.tftpd.8.gz
/usr/share/man/man8/tftpd.8.gz
/var/lib/tftpboot
// 这三个文件是centos8 启动需要的
[root@Centos7 ~]#cp /var/www/html/centos/8/isos/x86_64/isolinux/{libutil.c32,ldlinux.c32,libcom32.c32} /var/lib/tftpboot/
cp /var/www/html/centos/7/isos/x86_64/isolinux/isolinux.cfg  /var/lib/tftpboot/pxelinux.cfg/default
//创建 复制内核文件
[root@Centos7 ~]#mkdir -pv /var/lib/tftpboot/{6..8}
[root@Centos7 ~]#cp /var/www/html/centos/8/isos/x86_64/isolinux/{initrd.img,vmlinuz} /var/lib/tftpboot/8/
[root@Centos7 ~]#cp /var/www/html/centos/7/isos/x86_64/isolinux/{initrd.img,vmlinuz} /var/lib/tftpboot/7/
[root@Centos7 ~]#cp /var/www/html/centos/6/isos/x86_64/isolinux/{initrd.img,vmlinuz} /var/lib/tftpboot/6/
[root@Centos7 /var/lib/tftpboot]#tree
.
├── 6
│   ├── initrd.img
│   └── vmlinuz
├── 7
│   ├── initrd.img
│   └── vmlinuz
├── 8
│   ├── initrd.img
│   └── vmlinuz
├── ldlinux.c32
├── libcom32.c32
├── libutil.c32
├── menu.c32
├── pxelinux.0
└── pxelinux.cfg
    └── default

4 directories, 12 files

5.创建安装菜单

// 编辑default文件
[root@Centos7 /var/lib/tftpboot/pxelinux.cfg]#vim default 
default menu.c32
label linux6
  menu label Install CentOS ^6mini
  kernel 6/vmlinuz
  append initrd=6/initrd.img ks=http://192.168.39.5/ksdir/ks6.cfg

label linux7
  menu label Install CentOS ^7mini
  kernel 7/vmlinuz
  append initrd=7/initrd.img ks=http://192.168.39.5/ksdir/ks7.cfg

label linux8
  menu label Install CentOS ^8mini
  kernel 8/vmlinuz
  append initrd=8/initrd.img ks=http://192.168.39.5/ksdir/ks8.cfg

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

配置DHCP

[root@Centos7 /etc/dhcp]#cp /usr/share/doc/dhcp*/dhcpd.conf.example dhcpd.conf 
cp: overwrite ‘dhcpd.conf’? y
option domain-name "test.org";
option domain-name-servers 180.76.76.76, 114.114.114.114;

subnet 192.168.39.0 netmask 255.255.255.0 {
  range 192.168.39.10 10.254.239.100;
  option routers 192.168.39.1;
  filename "pxelinux.0";
  next-server 192.168.39.5
}
// 检查语句,非常重要
[root@Centos7 /etc/dhcp]#dhcpd -t -cf /etc/dhcp/dhcpd.conf
Internet Systems Consortium DHCP Server 4.2.5
Copyright 2004-2013 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
Not searching LDAP since ldap-server, ldap-port and ldap-base-dn were not specified in the config file

// 注意DHCP服务器的地址要静态

[root@Centos7 /etc/dhcp]#vim /etc/sysconfig/network-scripts/ifcfg-ens33 
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO=static
DEFROUTE="yes"
NAME="eth0"
DEVICE="eth0"
ONBOOT="yes"
IPADDR=192.168.39.5
GATEWAY=192.168.39.1
NETMASK=255.255.255.0
DNS1=180.76.76.76

[root@Centos7 /etc/dhcp]#nmcli con reload 
[root@Centos7 /etc/dhcp]#nmcli con show
NAME                UUID                                  TYPE      DEVICE 
Wired connection 1  ff8d24f2-b45e-3726-aae6-6b9c52be552e  ethernet  eth0   
eth0                c96bc909-188e-ec64-3a96-6a90982b08ad  ethernet  --     
[root@Centos7 /etc/dhcp]#nmcli con up eth0
[root@Centos7 /etc/dhcp]#ip a
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:fb:1b:81 brd ff:ff:ff:ff:ff:ff
    inet 192.168.39.5/24 brd 192.168.39.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fefb:1b81/64 scope link 
       valid_lft forever preferred_lft forever
[root@Centos7 /etc/dhcp]#ping www.baidu.com
PING www.a.shifen.com (61.135.169.121) 56(84) bytes of data.
64 bytes from 61.135.169.121 (61.135.169.121): icmp_seq=1 ttl=128 time=3.80 ms

// 重启DHCPD服务
[root@Centos7 /etc/dhcp]#systemctl restart dhcpd

浅谈PXE自动化安装Centos系统_第2张图片
浅谈PXE自动化安装Centos系统_第3张图片
浅谈PXE自动化安装Centos系统_第4张图片
浅谈PXE自动化安装Centos系统_第5张图片

你可能感兴趣的:(浅谈PXE自动化安装Centos系统)