欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

CentOS 6下PXE+Kickstart无人值守安装操作系统

程序员文章站 2022-07-13 21:43:07
...

PXE的工作过程:
1.PXE Client 从自己的PXE网卡启动,向本网络中的DHCP服务器索取IP;
2.DHCP 服务器返回分配给客户机的IP 以及PXE文件的放置位置(该文件一般是放在一台TFTP服务器上) ;
3.PXE Client 向本网络中的TFTP服务器索取pxelinux.0 文件;
4.PXE Client 取得pxelinux.0 文件后之执行该文件;
5.根据pxelinux.0 的执行结果,通过TFTP服务器加载内核和文件系统 ;
6.进入安装画面, 此时可以通过选择HTTP、FTP、NFS 方式之一进行安装;

CentOS 6下PXE+Kickstart无人值守安装操作系统

系统环境:

  • 实验环境:VirtualBox5.0
  • 系统平台:CentOS release 6.7 (最小化安装)
  • 网络模式:Host Only
  • DHCP/TFTP/HTTP IP:192.168.55.101
  • SELINUX:disabled
  • 防火墙:关闭

一、服务器预配置

1.1 配置虚拟机联网方式

为了不影响已有网络DHCP的功能,我们使用Host Only的联网方式,在此需要新建一网卡,同时新网卡的DHCP功能需要禁用,宿主机IP使用192.168.55.1即可
CentOS 6下PXE+Kickstart无人值守安装操作系统

服务器在联网方式上同时需要启用Adapter 1: NAT/Bridge(确保可以联外网)和Adapter2: Host only(提供DHCP和HTTP服务)两种方式.
CentOS 6下PXE+Kickstart无人值守安装操作系统

1.2 配置静态IP

登录服务器后,设置eth1为静态IP。编辑/etc/sysconfig/network-scripts/ifcfg-eth1

BOOTPROTO=static
ONBOOT=yes
DEVICE=eth1
IPADDR=192.168.55.101
NETMASK=255.255.255.0
GATEWAY=192.168.55.1

1.3 启用eth1

ifdown eth1
ifup eth1

1.4 关闭Selinux和防火墙

setenforce 0
service iptables stop
chkconfig iptables off

1.5 修改YUM源为阿里云(可选)

yum install -y wget curl
curl https://git.oschina.net/pauldeng/scripts/raw/master/docker/aliyun-centos6-yum.sh | sh 

二、配置HTTP服务

2.1 安装HTTP服务

yum -y install httpd
rpm -qa|grep httpd

2.2 开启服务并设置开机启动

service httpd start
chkconfig httpd on

2.3 挂载ISO源

在虚拟机中选择好CentOS的安装源iso文件后执行以下操作

mkdir /media/CentOS
mount /dev/cdrom /media/CentOS

2.4 复制ISO源到/var/www/html

cp -r /media/CentOS/ /var/www/html/

三、配置DHCP服务

3.1安装DHCP服务

yum -y install dhcp

3.2 修改/etc/dhcp/dhcpd.conf 配置文件,内容如下

ddns-update-style interim; 
ignore client-updates;
filename "pxelinux.0";
next-server 192.168.55.101;
allow booting;
allow bootp;

subnet 192.168.55.0 netmask 255.255.255.0 {

        option routers                       192.168.55.1; 
        option subnet-mask              255.255.255.0;

        range dynamic-bootp 192.168.55.1 192.168.55.100; 
        default-lease-time 21600; 
        max-lease-time 43200;
}

3.3 修改/etc/sysconfig/dhcpd, 绑定DHCP服务到网卡

# Command line options here
DHCPDARGS=eth1

3.4 启动DHCP服务

service dhcpd start
chkconfig dhcpd on

四、配置TFTP

4.1 安装tftp-server

yum -y install tftp-server

4.2 启用tftp 服务

编辑/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 
        per_source              = 11 
        cps                     = 100 2 
        flags                   = IPv4 
}

将disable 设置为no

4.3 启动tftp服务

因为tftp服务是挂载在超级进程xinetd 下的,所以通过启动xinetd 来启动tftp服务。

service xinetd restart

设置开机启动xinetd

chkconfig xinetd on

五、配置PXE程序

5.1 安装syslinux

yum -y install syslinux

说明:syslinux是一个功能强大的引导加载程序,而且兼容各种介质。更加确切地说:SYSLINUX是一个小型的Linux操作系统,它的目的是简化首次安装Linux的时间,并建立修护或其它特殊用途的启动盘。

5.2 复制pxelinux.0 文件至/var/lib/tftpboot/ 文件夹中

cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

5.3 复制iso 镜像中的/image/pxeboot/initrd.img 和vmlinux 至/var/lib/tftpboot/

cp /var/www/html/CentOS/images/pxeboot/{initrd.img,vmlinuz} /var/lib/tftpboot/

5.4 复制iso 镜像中的/isolinux/*.msg 至/var/lib/tftpboot/

cp /var/www/html/CentOS/isolinux/*.msg /var/lib/tftpboot/

5.5 在/var/lib/tftpboot/ 中新建一个pxelinux.cfg目录

mkdir /var/lib/tftpboot/pxelinux.cfg

5.6 将iso 镜像中的/isolinux 目录中的isolinux.cfg复制到pxelinux.cfg目录中,同时更改文件名称为default

cp /var/www/html/CentOS/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
chmod 755  /var/lib/tftpboot/pxelinux.cfg/default

5.7 编辑 /var/lib/tftpboot/pxelinux.cfg/default,内容为

#default vesamenu.c32
default linux
#prompt 1
timeout 600

display boot.msg

menu background splash.jpg
menu title Welcome to CentOS 6.7!
menu color border 0 #ffffffff #00000000
menu color sel 7 #ffffffff #ff000000
menu color title 0 #ffffffff #00000000
menu color tabmsg 0 #ffffffff #00000000
menu color unsel 0 #ffffffff #00000000
menu color hotsel 0 #ff000000 #ffffffff
menu color hotkey 7 #ffffffff #ff000000
menu color scrollbar 0 #ffffffff #00000000

label linux
  menu label ^Install or upgrade an existing system
  menu default
  kernel vmlinuz
  append initrd=initrd.img ks=http://192.168.55.101/ks.cfg
label vesa
  menu label Install system with ^basic video driver
  kernel vmlinuz
  append initrd=initrd.img nomodeset
label rescue
  menu label ^Rescue installed system
  kernel vmlinuz
  append initrd=initrd.img rescue
label local
  menu label Boot from ^local drive
  localboot 0xffff
label memtest86
  menu label ^Memory test
  kernel memtest
  append -

说明:pxelinux.cfg/default是pxelinux的配置文件。Pxelinux会以IP地址的16进制表示来搜索配置文件,如果没找到去除最低一位继续找。如果所有匹配都失败,就使用default文件。
举例来说:192.168.0.15 16进制表示是 C0A8000F.它会搜索下面的配置文件,最先找到的会被使用。
pxelinux.cfg/C0A8000F
pxelinux.cfg/C0A8000
pxelinux.cfg/C0A800
pxelinux.cfg/C0A80
pxelinux.cfg/C0A8
pxelinux.cfg/C0A
pxelinux.cfg/C0
pxelinux.cfg/C
pxelinux.cfg/default

六、配置kickstart参数文件

可以借助system-config-kickstart这个工具生成kicksart的参数文件ks.cfg。我们这里直接贴上最终结果,保存在/var/www/html下:

#platform=x86, AMD64, or Intel EM64T 
#version=DEVEL 
# Firewall configuration 
firewall --disabled 
# Install OS instead of upgrade 
install 
# Use network installation 
url --url=http://192.168.55.101/CentOS/
#cdrom
# Root password 
rootpw password 
# System authorization information 
auth  --useshadow  --enablemd5 
# Use graphical install 
#graphical 
text
firstboot --disable 
# System keyboard 
keyboard us 
# System language 
lang en_US 
# SELinux configuration 
selinux --disabled 
# Installation logging level 
logging --level=info 
# Reboot after installation 
reboot 
# System timezone 
timezone  --isUtc Asia/Shanghai 
# Network information 
network  --bootproto=dhcp --device=eth0 --onboot=on 
# System bootloader configuration 
key --skip 
bootloader --append="rhgb quiet" --location=mbr --driveorder=sda 
# Clear the Master Boot Record 
zerombr 
# Partition clearing information 
clearpart --all --initlabel 
# Disk partitioning information 
part / --fstype="ext4" --size=4096 
part swap --fstype="swap" --size=1024 
part /home --fstype="ext4" --size=2048

%packages --nobase 
@core

%end

七、测试安装

新建一个新的虚拟机,网络选择之前创建的Host Only新网卡,启动顺序注意要是硬盘第一,网络第二
CentOS 6下PXE+Kickstart无人值守安装操作系统
启动虚拟机,正常情况会自动从DHCP服务器(192.168.56.101)获得IP和预安装系统进行自动安装。自此PXE+Kickstart 无人值守安装操作系统环境搭建完毕。