PXE自动安装Linux
PXE全称是:Preboot Excution Environment 预启动执行环境是由Intel公司研发的基于Client/Server的网络模式,支持远程主机通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统 PXE可以引导和安装Windows,linux等多种操作系统。(本次使用虚拟机操作,工具是 VM15,Centos7)
操作要求
1.环境准备
2.安装所需的必要软件包并开启对应的服务
3.准备安装源
4.准备自动应答文件,并放到可以被访问到的地方
5.配置DHCP服务并启动
6.将必要的文件复制到相关目录
7.修改启动菜单,以及一些其他的配置文件
8.启动测试
环境准备
本次实验准备两个虚拟机,一个实验用,一个配置为DHCP服务器。
将两台虚拟机网卡配置为仅主机模式(主要是和外网隔离,以面影响实体机的DHCP服务)。
关闭VMware的DHCP服务。
给服务器分配一个IP地址,地址建议为静态地址。配置文件如下:
TYPE=Ethernet
BOOTPROTO=static
IPADDR=192.168.11.2
PREFIX=24
GATEWAY=192.168.11.1
NAME=ens33
DEVICE=ens33
ONBOOT=yes
编辑Win下的虚拟网卡配置以便和虚拟机可以通信
安装所需的必要软件包并开启对应的服务
出于方便,软件安装全部使用yum进行安装
执行以下命令安装相关软件并启动服务:
yum install httpd dhcp syslinux tftp-server
systemctl start httpd tftp.socket
systemctl enable dhcpd tftp.socket httpd
准备安装源
此次实验我们通过HTTP作为安装源,所以,只要将我们准备好的安装镜像挂载到HTTP目录下可以访问即可。具体目录是/var/www/html/ 为了方便扩展还可以在此目录下建立几个文件夹,以存放不同版本的系统文件。
具体实现:
1.使用mkdir -p /var/www/html/Centos/7创建文件夹
2.将光盘挂载到/var/www/html/Centos/7目录下
3.在/etc/fstab文件中添加自动挂载信息,通常为
/etc/sr0 /var/www/html/Centos/7 iso9660 default 0 0
4.使用df -h确认挂载信息
5.在主机使用浏览器访问http://192.168.11.2/Centos/7 确认可以看到挂载的安装文件
准备自动应答文件
自动应答文件是整个环节相当重要的部分(其实每一部分都很很重要)自动应答文件的生成可以通过在图形界面下安装system-config-kickstart包使用这个工具在图形界面下生成,或者,系统安装完成后默认在root家目录有一个叫anaconda-ks.cfg的文件,也可以直接修改这个文件。由于图形界面比较简单,这里直接修改anaconda-ks.cfg文件。其中以#开头的行表示注释,如果你没有修改过此文件中的内容,那么应该内容如下(中文为后加):
#platform=86, AMD64, or Intel EM64T
#version=DEVEL
#System authorization information
auth --useshadow --passalgo=sha512
#Install OS instead of upgrade
install
#Use CDROM installation media
cdrom
#Use text mode install
text
#Firewall configuration
firewall --disabled
firstboot --disable
ignoredisk --only-use=sda
#Keyboard layouts
#old format: keyboard us
#new format:
keyboard --vckeymap=us --xlayouts=’’
#System language
lang en_US.UTF-8
#Network information
network --bootproto=dhcp --device=ens33 --onboot=off --ipv6=auto --no-activate
network --hostname=localhost.localdomain
#Reboot after installation
reboot
#Root password
rootpw --iscrypted 1 1 1HwDDpzbI$JcacPj2.QTbRQgNWUP8hr1
#SELinux configuration
selinux --disabled
#System services
services --enabled=“chronyd”
#Do not configure the X Window System
skipx
#System timezone
timezone Asia/Shanghai
#System bootloader configuration
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
#Clear the Master Boot Record
#zerombr
#Partition clearing information
#clearpart --all --initlabel
#Disk partitioning information
#以下三行是分区信息,注意根据自己的情况进行修改。size单位是MB
#part swap --fstype=“swap” --size=2048
#part / --fstype=“xfs” --size=20480
#part /boot --fstype=“xfs” --size=1024
%packages
@core
%end
%addon com_redhat_kdump --enable --reserve-mb=‘auto’
%end
看起来很多内容,也有可能有很多不一样,不过没有关系,许多内容并不需要理解,需要改的地方并不多
大概以下几项修改就可以了:
1.安装介质即把cdrom改为以下内容
url --url=“http://192.168.11.2/centos/7/”
2.防火墙和SELinux根据自己的需要选择开启或关闭
3.如果没有zerombr和clearpart --all --initlabel,手动添加如果前面有#,去掉
4.去掉分区信息前的#
5.根据自己的需要选择需要安装的包,最小化只有一个core即可
6.将文件保存之后放到可以被HTTP访问到的地方,如/var/www/html/,确保文件权限为644
7.在主机访问http://192.168.11.2/anaconda-ks.cfg 如果可以成功访问,说明此步骤OK
配置DHCP服务器
默认情况下DHCP服务在安装完成之后配置文件是空的,也因此DHCP服务必须进行一定的配置才可以启动,DHCP的服务配置文件路径是:/etc/dhcp/dhcpd.conf,通过一个示例来看一下配置文件的 格式
网段:服务器可以分配的地址的网段,可以指定多个
掩码:网段对应的掩码
默认租期:以秒为单位默认的IP地址的租期
最长租期:客户端可以请求一个租期,此项设定用于对此进行限制以秒为单位
地址池:服务器在可分配网段中可以分配的IP地址的范围
DNS:用于客户机从DHCP服务器获取的DNS地址
如下一个示例:
option domain-name-servers 114.114.114.114
default-lease-time 600;
max-lease-time 7200;
subnet 192.168.11.0 netmask 255.255.255.0
{
next-server 192.168.11.2;
filename “pxelinux.0”;
range 192.168.11.3 192.168.11.124;
}
接下来使用systemctl start dhcpd启动dhcp服务
将相关文件复制到TFTP共享目录
TFTP的共享目录在/var/lib/tftpboot/下,考虑到灵活性依旧可以给不同版本的系统单独的目录
这里创建一个7的目录
复制光盘目录中isolinux下的initrd.img和vmlinuz到/var/lib/tftpboot/7目录下
在共享目录下创建一个名为pxelinux.cfg的文件夹并将光盘目录中isolinux下的isolinux.cfg复制到pxelinux.cfg目录下并且命名为default
将/usr/share/syslinux/menu.c32复制到/var/lib/tftpboot目录下,此文件是菜单背景文件
将/usr/share/syslinux/pxelinux.0复制到/var/lib/tftpboot目录下
最后一步
修改default文件,从光盘复制过来的文件有很多内容,不够大部分我们并不需要,参考下面的内容就可以了
#就是刚才复制到菜单文件
default menu.c32
#超时时间,就是菜单倒计时
timeout 600
display boot.msg
#启动菜单的具体配置
#menu label 用来指定菜单名称,可以自定义,^符号用来确定光标位置,
#同时其后的字母也是调到对应菜单的快捷键
#kernel指定内核文件路径,由于我们放在了文件夹中所以路径是7/vmlinuz
#指定initrd的路径,以及ks应答文件文件的路径
#务必确保应答文件可以访问
label linux
menu label ^Install CentOS 7
kernel 7/vmlinuz
append initrd=7/initrd.img ks=http://192.168.11.2/anaconda-ks.cfg
#本地硬盘启动
#menu default表示此项菜单为默认菜单,由于自动安装的风险,建议将本地启动作为默认启动
label local
menu default
menu label Boot from ^local drive
localboot 0xffff
menu end
启动测试
将另一台虚拟机网卡同样配置为仅主机,网卡使用自动获取IP。
最后,确认安装源,以及应答文件可以访问,且default文件中路径配置正确。
确认防火墙以及SELinux处于关闭状态。确认无误的话就可以开机进行测试了。
本文章为转载,本人缺乏相关知识,主要按照操作流程做了一遍,进行了学习。