Linux的Kickstart深度学习

        一般我们传统的安装操作系统的方式:光盘安装,U盘安装,网络安装 。而Kickstart是一种无人值守的安装方式,它的工作原理是提前定义好了linux安装过程的配置文件,这个配置文件通常为ks.cfg。有了这个文件,可以让Linux在安装过程中按照我们预先定义的要求进行自动化安装,同时对于部署大量主机也非常方便。

        PXE(preboot execute environment,预启动执行环境)工作于Client/Server的网络模式,支持通过网络从远端服务器下载镜像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端(客户端)基本软件设置,从而引导安装操作系统。

     

   pxe可以引导多种操作系统。严格来说,PXE并不是一种安装方式,而是一种引导方式
    进行PXE安装的必要条件是在要安装的计算机中必须包含一个PXE支持的网卡(NIC),即网卡中必须要有PXE Client,PXE Client在网卡的ROM中
    当计算机引导时,BIOS把PXE Client调入内存中执行,然后由PXE Client将放置在远端的文件通过网络下载到本地运行
    #使用PXE引导需要设置DHCP服务器和TFTP服务器#
    DHCP服务器会给PXE Client分配一个IP地址,由于是给PXE Client分配IP地址,所以在配置DHCP服务器时需要增加相应的PXE设置
    此外,在PXE Client的ROM中,已经存在TFTP Client,那么它就可以通过TFTP协议到TFTP Server 上下载所需的文件了

  PXE的引导过程:

1、PXE Client端通过PXE BootROM(自启动芯片)(BIOS里面的PXE固件)广播一个DHCP discover包

2、支持PXE的DHCP服务器返回分配给客户机的IP以及启动文件的放置位置

3、PXE Client会向本网络中的TFTP服务器索取pxelinux.0(引导文件)、pxelinux.cfg/default(启动菜单配置文件)、vmlinuz(可执行的linux内核,负责安排所有的硬件启动)和initrd.img(驱动程序模块)文件

5、pxe client由TFTP从服务端下载启动安装程序所必需的文件(pxelinux.0、pxelinux.cfg/default)后,会根据default文件中定义的引导顺序,加载内核和文件系统

6、这些启动资源其实就是最小的操作系统,这个最小操作系统在装载了网络驱动和TCP/IP协议栈之后,就可以通过HTTP、FTP、NFS方式进行安装

而配置PXE需要下载DHCP,xinetd,tftp-server三个服务器

DHCP                        动态主机配置协议,为客户端分配IP地址
xinetd                      监视网络请求的守护进程,根据请求调用相应的服务进程来处理连接请求
                                  #例如FTP、Telnet、SSH等就适合使用xinetd模式
tftp-server                 简单文件传输协议,用于向客户端提供安装引导相关的文件
                                  #udp的69号端口
vsftpd                      为客户端提供系统安装时所需的文件
syslinux                    产生pxelinux.0文件
system-config-kickstart     用于生成kickstart配置文件

PXE+Kickstart
PXE:            自动引导
Kickstart:      协议 规定了安装系统的时候从配置文件读取安装步骤
ks.cfg:         定义了安装软件,磁盘划分,网络配置,主机名配置,用户配置,语言

安装的软件:
DHCP:     提供PXE client的IP,并且告诉客户端 启动文件的位置pxelinux.0    #DHCP
PXE client启动后,首先要做的就是获取IP,拿到启动文件的位置
PXE Client获取到IP,以及从TFTP服务器上获取到启动文件                     #TFTP
PXE Client还会向TFTP获取: pxelinux.cfg/default 启动菜单
PXE Client还会向TFTP获取:可以执行的linux内核vmlinuz
PXE Client还会向TFTP获取: initrd.img
PXE Client还会获取vesamenu.c32: 图形化的

安装DHCP并配置

dhcp    --- 不仅动态分配ip,还要提供启动文件的位置
    ①filename: 客户端要下载的文件名
    ②next-server:文件放在哪个服务器下

[root@localhost ~]# cat /etc/dhcp/dhcpd.conf 
#
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp-server/dhcpd.conf.example
#   see dhcpd.conf(5) man page
#
ddns-update-style none;            #忽略域名更新
ignore client-updates;             #忽略ip的更新
default-lease-time 600;            #默认ip租期
max-lesae-time7200;                #ip的最大租期

subnet 192.168.220.0 netmask 255.255.255.0 {                #ip网段
	option routers 192.168.220.2;                           #ip网关
	option domain-name-servers 114.114.114.114;             #dns地址
	range dynamic-bootp 192.168.220.70 192.168.220.80;      #ip范围
	filename "pxelinux.0";                                  #获取文件名字
	next-server 192.168.220.138;                            #服务端(写本机ip)
}

安装tftp

[root@localhost ~]# yum install tftp tftp-server xinetd -y

//在xinetd中配置tftp,启动xinetd,它会在/etc/xinetd.d/对应的配置文件中找寻tftp
//tftp的配置文件就写了xinetd的启动服务配置
[root@localhost ~]# cd /etc/xinetd.d/
[root@localhost xinetd.d]# vim tftp
[root@localhost xinetd.d]# cat tftp 
service tftp
{ 
        protocol = udp                          #udp协议
        port = 69                               #69号端口
        socket_type = dgram                     #文件类型
        wait = yes                              #是否等待
        user = root                             #root用户
        server = /usr/sbin/in.tftpd             #tftp的位置
        server_args = -u root -s /tftproot      #tftp提供的服务位置
        disable = no                            #开启服务
}

//然后重启xinetd服务
systemctl restart xinetd

//尝试tftp本地ip
tftp 192.168.220.138

syslinux拷贝

//安装syslinux 
[root@localhost /]# yum install syslinux -y

//拷贝的第一个文件: pxelinux.0
[root@localhost /]# cd /usr/share/syslinux    
[root@localhost syslinux]# cp pxelinux.0   /tftproot

//挂载光盘到/mnt
[root@localhost /]# mount /dev/sr0 /mnt

//拷贝驱动程序,可执行内核
[root@localhost /]# cd /mnt 
[root@localhost mnt]# cd images/pxeboot
[root@localhost pxeboot]# cp initrd.img vmlinuz /tftproot
[root@localhost pxeboot]# pwd
/mnt/images/pxeboot

//此时到/tftproot下查看
[root@localhost pxeboot]# cd /tftproot/
[root@localhost tftproot]# ll
total 73704
-r--r--r--. 1 root root 66509268 Jan  5 15:27 initrd.img
-rw-r--r--. 1 root root    42376 Jan  5 15:21 pxelinux.0
-r-xr-xr-x. 1 root root  8913760 Jan  5 15:27 vmlinuz

//尝试创建mkdir文件
[root@localhost tftproot]# mkdir pxelinux.cfg

//拷贝启动菜单文件,从光盘下
[root@localhost tftproot]# cd /mnt/
[root@localhost mnt]# ls
AppStream  EFI   extra_files.json  images    media.repo               RPM-GPG-KEY-redhat-release
BaseOS     EULA  GPL               isolinux  RPM-GPG-KEY-redhat-beta  TRANS.TBL
[root@localhost mnt]# cd isolinux/
[root@localhost isolinux]# ls
boot.cat  grub.conf   isolinux.bin  ldlinux.c32   libutil.c32  splash.png  vesamenu.c32
boot.msg  initrd.img  isolinux.cfg  libcom32.c32  memtest      TRANS.TBL   vmlinuz
[root@localhost isolinux]# cp isolinux.cfg  /tftproot/pxelinux.cfg/default
[root@localhost isolinux]# cp vesamenu.c32 /tftproot/

[root@localhost ~]# cd /usr/share/syslinux/
[root@localhost syslinux]# ls
altmbr.bin     dir.c32       ifcpu64.c32         lfs.c32       meminfo.c32   syslinux64.exe
altmbr_c.bin   disk.c32      ifcpu.c32           libcom32.c32  menu.c32      syslinux.c32
altmbr_f.bin   dmi.c32       ifmemdsk.c32        libgpl.c32    pci.c32       syslinux.com
cat.c32        dmitest.c32   ifplop.c32          liblua.c32    pcitest.c32   syslinux.exe
chain.c32      dosutil       isohdpfx.bin        libmenu.c32   pmload.c32    vesa.c32
cmd.c32        elf.c32       isohdpfx_c.bin      libutil.c32   poweroff.c32  vesainfo.c32
cmenu.c32      ethersel.c32  isohdpfx_f.bin      linux.c32     prdhcp.c32    vesamenu.c32
config.c32     gfxboot.c32   isohdppx.bin        lpxelinux.0   pwd.c32       vpdtest.c32
cptime.c32     gptmbr.bin    isohdppx_c.bin      ls.c32        pxechn.c32    whichsys.c32
cpu.c32        gptmbr_c.bin  isohdppx_f.bin      lua.c32       pxelinux.0    zzjson.c32
cpuid.c32      gptmbr_f.bin  isolinux.bin        mboot.c32     reboot.c32
cpuidtest.c32  gpxecmd.c32   isolinux-debug.bin  mbr.bin       rosh.c32
debug.c32      hdt.c32       kbdmap.c32          mbr_c.bin     sanboot.c32
dhcp.c32       hexdump.c32   kontron_wdt.c32     mbr_f.bin     sdi.c32
diag           host.c32      ldlinux.c32         memdisk       sysdump.c32
[root@localhost syslinux]# cp ldlinux.c32  /tftproot/

//此时tree查看tftproot下的文件
[root@localhost /]# tree tftproot/
tftproot/
├── initrd.img
├── ldlinux.c32
├── pxelinux.0
├── pxelinux.cfg
│   └── default
├── vesamenu.c32
└── vmlinuz

使用vsftpd下载镜像

//下载vstfpd服务
[root@localhost /]# yum install vsftpd -y

//安装之后去配置 启用匿名用户 
[root@localhost /]# cd /etc/vsftpd/
[root@localhost vsftpd]# vim vsftpd.conf 
anonymous_enable=YES

//重启vstpd服务
[root@localhost /]# systemctl restart vsftpd
    #此时需要保证可以可以虚拟登录

//此时更改挂载点目录,到虚拟目录/var/ftp/pub,来作为我们存储镜像的目录

#先去解挂载:
[root@localhost /]# umount /mnt
#把镜像挂载到
[root@localhost /]# /var/ftp/pub:mount /dev/sr0 /var/ftp/pub

配置:

[root@localhost ~]# cd /var/ftp
[root@localhost ftp]#vim ks.cfg
        //一定要在这个位置下进行vim ks.cfs 负责服务端无法正常保存

# 只对nvme0n1这个磁盘进行分区
ignoredisk --only-use=nvme0n1
#自动分区
autopart --type=lvm
# 对nvme0n1 进行清理以及初始化
clearpart --all --initlabel --drives=nvme0n1 
# 图像化
graphical
# 重启
reboot
# 这块儿是需要变化的:ftp://192.168.2220.138/pub/AppStream作为我们的仓库
repo --name="AppStream" --baseurl=ftp://192.168.220.138/pub/AppStream
#192.168.233.138的ftp的pub目录加载镜像
url --url="ftp://192.168.220.138/pub"
#键盘设置
keyboard --vckeymap=us --xlayouts='us'
# 禁用firstboot,要是Setup Agent
firstboot --disable
# 语言设置
lang en_US.UTF-8
# 网络使用dhcp, ens160 
network --bootproto=dhcp --device=ens160 --ipv6=auto --activate
#主机名设置
network --hostname=localhost
#root用户密码设置
rootpw --plaintext root
#图形化界面登录
xconfig --startxonboot
#启用chronyd服务
services --enabled="chronyd"
# 时区
timezone Asia/Shanghai --isUtc
#普通用户 ---使用的是root   密码在/etc/shadow
user --group=pxe --name=pxe --password=$6$767s1H3t8Sp7KEq6$.zPBBy7nAUB3gFmFs7KLqRN1W5qeTIjOAAnQ/DwcAyRRLjKXvkGObaMSQ/bOgeuBD/9bG0T6fwTsEHD.utiJI1 --iscrypted --gecos="pxe"
软件安装:
%packages

@^graphical-server-environment
kexec-tools
tree
curl
httpd
dhcp-server
xinetd
%end

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

%end



//关闭防火墙和selinux!!!

重新选择一个虚拟机:此时已经可以自动装机

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值