PXE+KickStart自动化安装Linux系统

 PXE+kickstart模式自动安装系统
 PXE介绍
预启动执行环境(Preboot eXecution Environment,PXE)也被称为预执行环境,提供了一种使用网络接口(Network Interface)启动计算机的机制。这种机制让计算机的启动可以不依赖本地数据存储设备(如硬盘)或本地已安装的操作系统
 Kickstart介绍
kickstart是一个定义了Linux安装过程的配置文件,比如要在系统中使用的时区、如何对驱动器进行分区、或者应该安装哪些软件包。有了这个文件可以解放双手,让Linux安装过程按照我们预先定义的要求进行自动化安装,同时部署大量主机时十分有用。一般centos系统安装后,会在root目录下生成一个名为anaconda-ks.cfg的kickstart配置文件。
 PXE+kickstart模式原理
1、网卡上的pxe芯片有512字节,存放DHCP和TFTP的客户端
2、启动计算机选择网卡启动
3、pxe上的dhcp客户端会向dhcp服务器,申请IP地址
4、dhcp服务器分配给他IP地址,同时通过以下字段,告诉pxe,TFTP的地址和它的下载的文件
1)next-server 10.1.1.31
2)filename “pxelinux.0”
5、pxelinux.0告诉pxe要下载的配置文件是pxelinux.cfg目录下面的default
6、pxe下载并依据配置文件的内容下载启动必须的文件,并通过ks.cfg开始系统安装
 PXE+kickstart模式准备工作
配置服务,(比喻dhcp、tftp、httpd)
在dhcp和tftp配置文件中添加各个客户端机器的信息
创建自动化部署文件(kickstart:ks.cfg)
将安装媒介解压到http、ftp、nfs存储库中
 安装http、tftp、dhcp等服务
 配置epel源

[root@pxe-kickstart-31 ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
--2019-11-16 00:57:25--  http://mirrors.aliyun.com/repo/epel-6.repo
Resolving mirrors.aliyun.com... 183.60.228.243, 113.96.109.99, 113.96.150.248, ...
Connecting to mirrors.aliyun.com|183.60.228.243|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 664 [application/octet-stream]
Saving to: “/etc/yum.repos.d/epel.repo”
100%[=======================================================================>] 664         --.-K/s   in 0s      
2019-11-16 00:57:30 (41.1 MB/s) - “/etc/yum.repos.d/epel.repo” saved [664/664]

 Yum安装httpd、tftp-server、sync、openssl-devel、system-config-kickstart、xinetd
注意:xinetd在centos6中就是tftp服务

yum install -y httpd dhcp tftp-server system-config-kickstart xinetd sync openssl

 配置dhcp服务
修改配置文件,添加下面红色部分内容

[root@pxe-kickstart-31 ~]# cat /etc/dhcp/dhcpd.conf 
#
##DHCP Server Configuration file.
#see /usr/share/doc/dhcp*/dhcpd.conf.sample
#see 'man 5 dhcpd.conf'
#
subnet 10.1.1.0 netmask 255.255.255.0 {
  range 10.1.1.130 10.1.1.140;
  option routers 10.1.1.2;
  option broadcast-address 10.1.1.255;
  default-lease-time 86400;
  max-lease-time 864000;
  next-server    10.1.1.31;
  filename    "pxelinux.0";
}

名词解释:
Subnet:当前局域网网段
Netmask:当前局域网网段掩码
Range:能分配的地址池
option routers:网关
next-server :tftp共享文件地址(nfs、ftp等)
filename:需加载pxe文件名
 配置tftp服务
修改tftp服务配置文件,如下:

[root@pxe-kickstart-31 ~]# 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
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
}
	名词解释:
	Disable:默认是yes就是关闭状态;no为开启状态

 添加内核和系统信息等到/var/lib/tftpboot目录下
 挂载虚拟系统盘至/mnt/目录下

[root@pxe-kickstart-31 ~]# mkdir /var/www/html/centos-6.8-x86_64
[root@pxe-kickstart-31 ~]# mount /dev/cdrom /var/www/html/centos-6.8-x86_64/
mount: block device /dev/sr0 is write-protected, mounting read-only

 添加内核和系统到/var/lib/tftpboot目录下,提供给新设备下载

[root@pxe-kickstart-31 ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
[root@pxe-kickstart-31 ~]# ls /var/www/html/centos-6.8-x86_64/isolinux/
boot.cat  grub.conf   isolinux.bin  memtest     TRANS.TBL     vmlinuz
boot.msg  initrd.img  isolinux.cfg  splash.jpg  vesamenu.c32
[root@pxe-kickstart-31 ~]# cp /var/www/html/centos-6.8-x86_64/isolinux/vesamenu.c32 /var/lib/tftpboot/
[root@pxe-kickstart-31 ~]# cp /var/www/html/centos-6.8-x86_64/isolinux/vmlinuz /var/lib/tftpboot/
[root@pxe-kickstart-31 ~]# cp /var/www/html/centos-6.8-x86_64/isolinux/initrd.img /var/lib/tftpboot/
[root@pxe-kickstart-31 ~]# cp /var/www/html/centos-6.8-x86_64/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/
[root@pxe-kickstart-31 ~]# cp /var/www/html/centos-6.8-x86_64/isolinux/boot.msg /var/lib/tftpboot/
文件介绍:
pxelinux.0:pxelinux启动程序(网口系统启动程序)
vmlinuz:内核文件(Kernel)
initrd.img:辅助内核完成系统启动
isolinux.cfg:设定默认启动的内核和操作系统
boot.msg:无关紧要

 修改pxe配置文件

[root@pxe-kickstart-31 ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
[root@pxe-kickstart-31 ~]# cat /var/lib/tftpboot/pxelinux.cfg/default
default vesamenu.c32   ##默认启动选项,对应var/www/html/centos-6.8-
##x86_64/isolinux/vesamenu.c32
#prompt 1             ##是否启动选项
timeout 600            ##在没有选择的时候等待的时间单位0.1秒
display boot.msg
………………
label ks
  			menu label [ks]
  			kernel vmlinuz
  			append initrd=initrd.img ks=http://10.1.1.31/ks.cfg
label linux
  			menu label [local]
  			menu default
  			kernel vmlinuz
  			append initrd=initrd.img
	…………………………
		名称介绍:
		Label:一个Label代表着一个选项
		menu label:选项注释
		menu default:设置为默认选项
		kernel vmlinuz:内核
		ks=http://10.1.1.31/ks.cfg:指定ks.cfg文件路径
		initrd=initrd.img:指定initrd.img

 创建ks.cfg文件(就是大家常说的kickstart应答文件)

[root@pxe-kickstart-31 ~]# vim /var/www/html/ks.cfg
注意:一定要放在/var/www/html/目录下,因为在/var/lib/tftpboot/pxelinux.cfg/default指定了路径,而且在这个文件中也要指定路径

 使用openssl生产密码(新安装的系统登录密码“qaz123”)

[root@pxe-kickstart-31 ~]# openssl passwd -1 -salt '1234' 'qaz123' ##生产密码作为root登录使用,把这个密码复制到ks.cfg文件中rootpw  --iscrypted行
$1$1234$0pbznOh8eQPo.9RflsYMF0
[root@pxe-kickstart-31 ~]# cat /var/www/html/ks.cfg 
##Kickstart Configurator for CentOS 6.7
install
url --url="http://10.1.1.31/centos-6.8-x86_64/"
text
lang en_US.UTF-8
keyboard us
zerombr
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
network --bootproto=dhcp --device=eth0 --onboot=yes --noipv6 --hostname=CentOS6.8
timezone --utc Asia/Shanghai
authconfig --enableshadow --passalgo=sha512
rootpw  --iscrypted $1$1234$0pbznOh8eQPo.9RflsYMF0
clearpart --all --initlabel
part /boot --fstype=ext4 --asprimary --size=200
part swap --size=1024
part / --fstype=ext4 --grow --asprimary --size=200
firstboot --disable
selinux --disabled
firewall --disabled
logging --level=info
reboot
%packages
@base
@compat-libraries
@debugging
@development
tree
nmap
sysstat
lrzsz
dos2unix
telnet
%end

名称解释:
关键字 含义

install 告知安装程序,这是一次全新安装,而不是升级upgrade。 url --url="
" 通过FTP或HTTP从远程服务器上的安装树中安装。 url --url=“http://10.0.0.7/CentOS-6.7/”
url --url ftp://:@/

nfs 从指定的NFS服务器安装。
nfs --server=nfsserver.example.com --dir=/tmp/install-tree
text 使用文本模式安装。 lang 设置在安装过程中使用的语言以及系统的缺省语言。lang en_US.UTF-8
keyboard 设置系统键盘类型。keyboard us zerombr 清除mbr引导信息。 bootloader 系统引导相关配置。
bootloader --location=mbr --driveorder=sda --append=“crashkernel=auto
rhgb quiet”
–location=,指定引导记录被写入的位置.有效的值如下:mbr(缺省),partition(在包含内核的分区的第一个扇区安装引导装载程序)或none(不安装引导装载程序)。
–driveorder,指定在BIOS引导顺序中居首的驱动器。
–append=,指定内核参数.要指定多个参数,使用空格分隔它们。 network 为通过网络的kickstart安装以及所安装的系统配置联网信息。 network --bootproto=dhcp
–device=eth0 --onboot=yes --noipv6 --hostname=CentOS6
–bootproto=[dhcp/bootp/static]中的一种,缺省值是dhcp。bootp和dhcp被认为是相同的。 static方法要求在kickstart文件里输入所有的网络信息。 network --bootproto=static
–ip=10.0.0.100 --netmask=255.255.255.0 --gateway=10.0.0.2 --nameserver=10.0.0.2 请注意所有配置信息都必须在一行上指定,不能使用反斜线来换行。
–ip=,要安装的机器的IP地址.
–gateway=,IP地址格式的默认网关.
–netmask=,安装的系统的子网掩码.
–hostname=,安装的系统的主机名.
–onboot=,是否在引导时启用该设备.
–noipv6=,禁用此设备的IPv6.
–nameserver=,配置dns解析. timezone 设置系统时区。timezone --utc Asia/Shanghai authconfig 系统认证信息。authconfig --enableshadow --passalgo=sha512
设置密码加密方式为sha512 启用shadow文件。 rootpw root密码 clearpart 清空分区。clearpart
–all --initlabel
–all 从系统中清除所有分区,–initlable 初始化磁盘标签 part 磁盘分区。 part /boot --fstype=ext4 --asprimary --size=200 part swap --size=1024 part / --fstype=ext4 --grow --asprimary --size=200
–fstype=,为分区设置文件系统类型.有效的类型为ext2,ext3,swap和vfat。
–asprimary,强迫把分区分配为主分区,否则提示分区失败。
–size=,以MB为单位的分区最小值.在此处指定一个整数值,如500.不要在数字后面加MB。
–grow,告诉分区使用所有可用空间(若有),或使用设置的最大值。 firstboot 负责协助配置redhat一些重要的信息。 firstboot --disable selinux 关闭selinux。selinux --disabled
firewall 关闭防火墙。firewall --disabled logging 设置日志级别。logging --level=info
reboot 设定安装完成后重启,此选项必须存在,不然kickstart显示一条消息,并等待用户按任意键后才重新引导,也可以选择halt关机。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值