本文基于CentOS7部署PXE服务进行网络安装CentOS7。
1、CentOS7系统环境
2、CentOS7系统镜像(官网下载/清华源)
~$ sudo yum install dhcp xinetd syslinux tftp-server httpd
...
将服务器的IP配置为192.168.0.1,让DHCP能够正常启动,TFTP,HTTP都是运行在这个IP上。
~$ sudo ip addr add 192.168.0.1/24 brd + dev ensxx # ensxx是网卡名称
~$ ip addr show # 查看网卡ip
编辑dhcp的配置文件/etc/dhcp/dhcpd.conf的内容:
~$ sudo vi /etc/dhcp/dhcpd.conf
#
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.example
# see dhcpd.conf(5) man page
#
# 1. 整体的环境设定
ddns-update-style none;
ignore client-updates;
default-lease-time 259200;
max-lease-time 518400;
option domain-name-servers 192.168.0.1;
# 上面是 DNS 的 IP 设定,这个设定值会修改客户端的 /etc/resolv.conf
# 2. 关于动态分配的 IP
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.100 192.168.100.200;
option routers 192.168.0.1;
option subnet-mask 255.255.255.0;
next-server 192.168.0.1;
# the configuration file for pxe boot
filename "centos7/pxelinux.0";
}
tftp是由xinetd管理的,所以需要配置 /etc/xinetd.d/tftp文件,这个文件中只需要改一个参数即可
~$ sudo vi /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 = no #将此值改为no,表明开启此服务
per_source = 11
cps = 100 2
flags = IPv4
}
首先将已经下载好的CentOS的ISO镜像文件挂载到一个目录中,然后复制可引导的、压缩的内核文件vmlinuz
,以及包含一些模块和安装文件系统的initrd
。因为安装过程中以http的方式提供镜像源,所以这里直接将镜像文件挂在到httpd访问目录中(/var/www/html)。
~$ sudo mkdir /var/www/html/centos7
~$ sudo mount -o loop CentOS7.iso /var/www/html/centos7/
复制vmlinuz
,和 initrd.img
到TFTP访问目录的centos7子目录中,因为以后会引导其它的系统,所以这里通过子目录将不同的系统区分开。
~$ sudo mkdir /var/lib/tftpboot/centos7
~$ sudo cp /var/www/html/centos7/images/pxeboot/initrd.img /var/lib/tftpboot/centos7/
~$ sudo cp /var/www/html/centos7/images/pxeboot/vmlinuz /var/lib/tftpboot/centos7/
vesamenu.c32
和menu.c32
是syslinux所拥有众多模块中的两个,它们的功能是制定启动器使用什么模式的背景。vesamenu.c32
图形模式,menu.c32
文本模式。我选择的是menu.c32
。
同时还需要pxelinux.0
文件,它对整个引导器的作用就如同内核对系统的作用,它可以解释default
文件(配置引导菜单文件)中的每个配置项,并根据配置项做出不同的反应。如等待的时间、启动器背景、启动菜单、内核引导等等。
需要将这两个文件复制到tftp的访问目录中:
~$ sudo cp /usr/share/syslinux/menu.c32 /var/lib/tftpboot/
~$ sudo cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
pxelinux
被执行后,它会扫描该目录下是否存在指定的配置文件,如果存在,则引用被指定的配置文件。
default
文件存放于pxelinux.cfg目录中,pxelinux
程序最后扫描的配置文件名就是default
。所以,把启动器配置项都写入该文件中。
所以就要建立pxelinux.cfg目录,并在此目录下建立default文件,编辑引导菜单。
~$ sudo mkdir /var/lib/tftpboot/pxelinux.cfg/
~$ sudo vi /var/lib/tftpboot/pxelinux.cfg/default
default文件内容为:
default menu.c32
prompt 0
timeout 300
ONTIMEOUT local
menu title ########## PXE Boot Menu ##########
label 1
menu label ^1) Install CentOS 7 x64 with HTTP
kernel centos7/vmlinuz
append initrd=centos7/initrd.img method=http://192.168.0.1/centos7 devfs=nomount
开启dhcpd, xinetd, tftp, http这些服务,在开启的时候没有发生错误,说明配置没问题。
~$ sudo systemctl start dhcpd.service
~$ sudo systemctl start xinetd.service
~$ sudo systemctl start tftp.service
~$ sudo systemctl start httpd.service
可以在浏览器输入192.168.0.1验证http是否运行正常
为了防止意外的发生可以关闭防火墙和selinux。
~$ sudo systemctl stop firewalld.service
~$ sudo setenforce 0
如果要通过MAC地址分配IP,可以编辑dhcp的配置文件/etc/dhcp/dhcpd.conf
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.100 192.168.0.200;
option routers 192.168.0.1;
}
host centos7 {
hardware ethernet 00:0C:29:C7:57:0C; # 客户端的mac地址
next-server 192.168.0.1;
fixed-address 192.168.0.125; # 分配给客户端的IP
filename "centos7/pxelinux.0";
}
1、启动要安装系统的电脑,在开机Log界面按F12选择从网络启动:(BIOS设置?自行解决!)
出现界面,选择“Install CentOS liunx 7”,回车继续:
2、如下界面,默认选择English,点击Continue继续:
3、主要配置界面有3个部分:
4、继续进行磁盘规划,(可按需自行规划):
设置成功再次返回用户界面,可以点击“user setting”创建用户。(建议新建一个管理员账号)
8、安装完成后,点击“reboot”重启系统。
~$ ip addr # 查看网卡
...
~$ sudo vi /etc/sysconfig/network-scripts/ifcfg-xxx # 编辑网卡配置文件
ONBOOT=yes # 网卡随系统启动, 默认为no
~$ sudo service network restart #重启网卡
~$ ping -c 4 www.baidu.com #测试网络