pxe linux7,centos 7.4部署PXE+kickstart无人值守安装CentOS 7.2

1、关于PXE

Preboot Execution Environment翻译过来就是预启动执行环境;简称PXE;传统安装操作系统的方法是CDROM或U盘引导,而PXE技术解决的是从网络引导安装系统,当然PXE技术不是什么新技术了,是Intel和Microsoft在1998年定义的更大PC98规范的一部分。有关PXE规范的详细文档

2、pxe引导相关角色说明

PXE作用: 引导装机

Kickstart作用: 将安装系统的过程中通过ks.cfg文件中的配置信息,实现自动安装配置达到无人值守自动安装;

TFTP: 支持PXE 引导的网卡中从tftp服务器端下载pxelinux.0文件、vmlinuz、initrd.img等内核引导文件;

DHCP: PXE引导过程中获首先获取IP地址,并提供pxelinux.0文件位置;

HTTP: 用于下载ks.cfg以及系统镜像文件

通用的无人值守做法如下:

通过一台没有系统的裸机网卡支持pxe协议,开机后从dhcp服务器获取ip和pxelinux.0文件并从tftp服务器上加载相关内核引导文件;同时下载 kickstart的cfg配置文件,指定系统镜像文件位置加载安装,从而实现无人值守安装!

如图(图片来自于网络):

3、满足Kickstart安装系统的需求

1) 网卡必须支持PXE引导;

2) 客户端需要有与Kickstart 通信的IP地址,这里一般都是通过DHCP自动分配IP地址来实现;

3) 提供引导所需的文件,内核文件,内核镜像文件等,此时一般通过tftp-server等实现;

4) kickstart文件,它主要实现自动化安装的过程,比如配置主机名、添加用户、安装系统后相关操作;

5) 提供安装源,一般就是NFS/ftp/httpd等;

99bbed1cabd174ed9973f8de4adf488a.png

0fa35d4b39a59b8c14fdec7dc6dc120e.png

77c15e0c67d36469f85fc146b338388f.png

(1).Client向PXE Server上的DHCP发送IP地址请求消息,DHCP检测Client是否合法(主要是检测Client的网卡MAC地址),如果合法则返回Client的IP地址,同时将pxe环境下的Boot loader文件pxelinux.0的位置信息传送给Client。

(2).Client向PXE Server上的TFTP请求pxelinux.0,TFTP接收到消息之后再向Client发送pxelinux.0大小信息,试探Client是否满意,当TFTP收到Client发回的同意大小信息之后,正式向Client发送pxelinux.0。

(3).Client执行接收到的pxelinux.0文件。

(4).Client向TFTP请求pxelinux.cfg文件(其实它是目录,里面放置的是是启动菜单,即grub的配置文件),TFTP将配置文件发回Client,继而Client根据配置文件执行后续操作。

(5).Client向TFTP发送Linux内核请求信息,TFTP接收到消息之后将内核文件发送给Client。

(6).Client向TFTP发送根文件请求信息,TFTP接收到消息之后返回Linux根文件系统。

(7).Client加载Linux内核(启动参数已经在4中的配置文件中设置好了)。

(8).Client通过nfs/ftp/http下载系统安装文件进行安装。如果在4中的配置文件指定了kickstart路径,则会根据此文件自动应答安装系统。

一、环境准备vmware station虚拟机

网卡NAT模式

IP地址:192.168.153.11

所需要的服务器都安装在同一台服务器上

1、虚拟机挂载7.2的ISO文件

mount /dev/cdrom /mnt/

2、关闭防火墙

systemctl stop firewalld

systemctl disable firewalld

3、关闭selinux

setenforce 0

改配置文件

二、DHCP服务器[root@localhost ~]# yum -y install dhcp

[root@localhost ~]# cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.bak_$(date +%Y-%m-%d-%H-%M)

[root@localhost ~]# cat /etc/dhcp/dhcpd.conf

default-lease-time 600;

max-lease-time 7200;

log-facility local7;

subnet 192.168.153.0 netmask 255.255.255.0 {

option routers 192.168.153.2;

option subnet-mask 255.255.255.0;

option domain-name-servers 192.168.153.2;

option time-offset -18000; # Eastern Standard Time

range dynamic-bootp 192.168.153.200 192.168.153.220;

default-lease-time 21600;

max-lease-time 43200;

next-server 192.168.153.11;

filename "pxelinux.0";

}

注意:多网卡的时候绑定网卡启动dhcp服务,不是多网卡不用理会这步。

[root@localhost ~]# cat /usr/lib/systemd/system/dhcpd.service

[Unit]

Description=DHCPv4 Server Daemon

Documentation=man:dhcpd(8) man:dhcpd.conf(5)

Wants=network-online.target

After=network-online.target

After=time-sync.target

[Service]

Type=notify

ExecStart=/usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid eno33554984

[Install]

WantedBy=multi-user.target

[root@localhost ~]#systemctl start dhcpd.service

[root@localhost ~]#systemctl enable dhcpd.service

[root@localhost ~]#ss -tunl | grep ":67" #验证是否运行成功

三、TFTP服务器[root@localhost ~]#yum install -y tftp-server xinetd  syslinux

[root@localhost ~]#vim /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

}

[root@localhost ~]#cp -rf /usr/share/syslinux/* /var/lib/tftpboot

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

[root@localhost ~]#mkdir /var/lib/tftpboot/pxelinux.cfg

[root@localhost ~]#mkdir /var/lib/tftpboot/centos7

[root@localhost ~]#cp /mnt/images/pxeboot/vmlinuz /var/lib/tftpboot/centos7

[root@localhost ~]#cp /mnt/images/pxeboot/initrd.img /var/lib/tftpboot/centos7

[root@localhost ~]#touch /var/lib/tftpboot/pxelinux.cfg/default

[root@localhost ~]#chmod 755 /var/lib/tftpboot/pxelinux.cfg/default

[root@localhost ~]# cat /var/lib/tftpboot/pxelinux.cfg/default

default menu.c32

prompt 1

timeout 30

menu title ########## GXM-PXE Boot Menu ##########

label linux

menu label Install CentOS 7.2 x86_64

menudefault

kernel centos7/vmlinuz

append initrd=centos7/initrd.img text inst.repo=http://192.168.153.11/CentOS-7.2-x86_64 ks=http://192.168.153.11/CentOS-7.2-x86_64/CentOS-7.2-x86_64.cfg

[root@localhost ~]#systemctl start xinetd

[root@localhost ~]#systemctl enable xinetd

[root@localhost ~]#systemctl start tftp

[root@localhost ~]#systemctl enable tftp

[root@localhost ~]#netstat -tulnp | grep xinetd

备注:可以设置多个label。

四、HTTP服务器(也可以用NFS或FTP)[root@localhost ~]#yum install -y httpd createrepo

[root@localhost ~]#mkdir /var/www/html/CentOS-7.2-x86_64

[root@localhost ~]#cp -a /mnt/* /var/www/html/CentOS-7.2-x86_64/

[root@localhost ~]#cat /var/www/html/CentOS-7.2-x86_64/CentOS-7.2-x86_64.cfg

#version=DEVEL

# System authorization information

auth --enableshadow --passalgo=sha512

# Install OS instead of upgrade

install

# Use network installation

url --url=http://192.168.153.11/CentOS-7.2-x86_64

# Use graphical install

graphical

# Run the Setup Agent on first boot

firstboot --enable

ignoredisk --only-use=sda

# Keyboard layouts

keyboard --vckeymap=us --xlayouts='us'

# System language

lang en_US.UTF-8

# Network information

network --bootproto=dhcp --device=eno16777736 --onboot=yes --ipv6=auto

network --hostname=localhost.localdomain

# Root password

rootpw --iscrypted $1$password$7ZK8mMeLGXxbNPeJEFJOU0

# System timezone

timezone Asia/Shanghai --isUtc

# System bootloader configuration

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

autopart --type=lvm

# Partition clearing information

clearpart --none --initlabel

%packages

@^minimal

@core

kexec-tools

vim

wget

httpd

lrzsz

net-tools

%end

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

%end

selinux --disabled

reboot

备注1:

也可以用图形化配置生成ks文件,步骤如下:

安装Kickstart:yum -y install system-config-kickstart

在桌面环境下配置Kickstart:system-config-kickstart

备注2:

ks的配置文件中rootpw密码可以使用明文,也可以使用加密过的值。

比如明文密码是:123456,对应加密后的密码是:$1$password$7ZK8mMeLGXxbNPeJEFJOU0

那这个密码是怎么生成的呢,其实和生成linux操作系统的密码shadow一样,命令如下:

perl -e 'print crypt("123456",q($1$password)),"\n"'

当使用特殊字符时,例如@$符时需要在前面加上\,例:\@\$,否则加密字符串会错误

其中123456为要给用户设置的密码,$1$password字符串是自定义字符串,shadow里一般用$1$后面跟8个字符这种格式。[root@localhost ~]#createrepo -pdo /var/www/html/CentOS-7.2-x86_64/ /var/www/html/CentOS-7.2-x86_64/

[root@localhost ~]#createrepo -g `ls /var/www/html/CentOS-7.2-x86_64/repodata/*-comps.xml` /var/www/html/CentOS-7.2-x86_64/

[root@localhost ~]#systemctl start httpd.service

[root@localhost ~]#systemctl enable httpd.service

[root@localhost ~]#curl --head http://192.168.153.11/CentOS-7.2-x86_64/CentOS-7.2-x86_64.cfg #验证是否可以访问,可以则返回200

五、创建虚拟机,选择NAT网卡,有必要可以关闭vmnet8的dhcp功能。如下图表示成功。

b28eb9684522f398bddcbaf20e525d29.png

备注:centos 6只需要修改配置文件即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值