Linux 之 Kickstart

Linux 系统安装类型

本章开始之前,先了解一下 Linux 系统安装类型:

1、手动安装

  • 图形化界面安装
  • 命令行界面安装

2、自动安装

  • 图形化、命令行界面的安装

  • 利用kickstart文件脚本加载安装配置信息,安装方式可以为:

本地 CDROM
磁盘驱动器
FTP
HTTP
NFS

注意:Linux 的安装程序是由 Anaconda 程序提供,其中 kickstart 只是其安装方法的一种,大多的场景可以利用 PXE 架构方法,实现全自动安装部署方案。

Anaconda 简介

多数安装程序都遵循一个固定的路径:必须先选择语言,然后配置网络、安装类型、分区等。在给定时刻通常只有一种进行方式。

Anaconda 是 Red Hat、CentOS、Fedora 等 Linux 的安装管理程序。它可以提供文本、图形等安装管理方式,并支持 Kickstart 等脚本提供自动安装的功能。Anaconda 支持许多启动参数,熟悉这些参数可为安装带来很多方便。该程序是把位于光盘或其他源上的数据包,根据设置安装到主机上的一个程序;为实现该定制安装,其提供一个定制界面,可以实现交互式界面供用户选择配置(如选择语言,键盘,时区等信息)。

Anaconda 详细的介绍安装,参考一下链接:
https://zhuanlan.zhihu.com/p/32925500

kickstart

Kickstart 是一个利用 Anconda 工具实现服务器自动化安装的方法;通过生成的 kickstart 配置文件 ks.cfg,服务器安装可以实现从裸机到全功能服务的的非交互式(无人值守式)安装配置。

使用kickstart优势:

流线化自动化的安装;
快速大量的裸机部署;
强制建立的一致性(软件包,分区,配置,监控,安全性);
减少人为的部署失误。

使用Kickstart方法安装的过程:

  1. 创建一个kickstart文件 ;
  2. 创建有kickstart文件的引导介质或者使这个文件在网络上可用;
  3. 筹备一个安装树;
  4. 开始ks安装:anconda自身启动 -->选取ks安装模式–> 从ks文件读取配置 --> 最后安装

如果使用的是小型cdrom安装方式,为了读取网络安装树做的引导,可以将ks文件放置到光盘上,在光盘isolinux/isolinux.cfg文件中,配置append后添加 ks=cdrom:/ks.cfg(需要将ks.cfg文件放到cdrom的根目录下)

Kickstart文件的配置方法

  • vim
  • system-config-kickstart

kickstart的配置文件格式

  1. 命令部分(必选项)
  • 配置系统的属性及安装中的各种必要设置信息,如语言、键盘类型、时区等信息。
  1. 设定需要安装的软件包及包组,Anaconda会自动解决依赖关系
  • 使用%packages指明开始,%end指明结束.包组以@开始标明,软件名可以直接写,但每个之间需要换行
  1. 安装前脚本
  • 使用%pre指明开始,%end指明结束,将每个命令写一行
  1. 安装后脚本
  • 使用%post指明开始,%end指明结束,将每个命令写一行

Kickstart文件参数说明

  • Install
  • 可选,指明此次是全新安装
  • cdrom
  • 可选,指明安装源为本地的光驱
  • url
  • 可选,指明安装源为远程的ftp、http方式安装
  • url --url ftp://:@install.example.com/iso
  • url --url http://install.example.com/iso
  • url —url=http://172.16.0.1/cobbler/ks_mirror/Centos-6.7-x86_64
  • harddrive
  • 可选,指明安装源为本地的硬盘
  • harddrive --partition=/dev/sdb2 --dir=/data/iso
  • nfs
  • 可选,指明安装源为NFS服务
  • nfs --server=192.168.1.254 --dir=/data/iso
  • bootloader
  • 设定bootloader安装选项
  • bootloader --location=mbr --append=“rhgb quiet”
    –driveorder=sda,sdb

–append= 可以指定内核参数
–driveorder= 设定设备BIOS中的开机设备启动顺序
–location= 设定引导记录的位置; mbr:默认值;partition:将boot loader安装于包含kernel的分区超级快

  • clearpart
  • 在建立新分区前清空系统上原有的分区表,默认不删除分区
  • clearpart --all
  • clearpart --drives=hda,hdb --all --initlabel

-all 擦除系统上原有所有分区;
–drives 删除指定驱动器上的分区
–initlabel 初始化磁盘卷标为系统架构的默认卷标
–linux 擦除所有的linux分区
–none(default)不移除任何分区

  • zerombr
  • 可选,清除mbr信息,会同时清空系统原有分区表
  • drivedisk
  • 可选,如果使用特殊存储方式时,需要指定驱动程序盘位置以便加载存储驱动

1、将驱动盘拷贝到本地硬盘某分区根目录:
drivedisk [ --type= ]

2、 也可以指定一个网络位置加载驱动程序盘
drivedisk --source=ftp://path/to/drive.img
drivedisk --source=http://path/to/drive.img
drivedisk --source=nfs:host://path/to/drive.img

  • firewall
  • 可选,配置防火墙选项
  • firewall --enable --trust eth0 --trust eth1 --port=80:tcp
  • firewall —service=ssh :表示启用防火墙,但行了ssh
  • firewall —disabled

–enable 拒绝外部发起的任何主动连接;
–disable 不配置任何iptables防御规则;
–trust 指定完全信任网卡设备;
–port 使用port:protocol格式指定可以通过防火墙的服务;

  • selinux
  • 可选,配置selinux选项,默认选项为enforcing
  • selinux [ --disabled|–enforcing|–premissive ]
  • reboot
  • 可选,在系统成功安装完成后默认自动重启系统(kickstart方法时);在装系统完成后,会提示按任意键进行重启;在配置中没有指明其他方法时,默认完成就会reboot
  • halt
  • 可选,在系统安装完成后关机,默认为reboot
  • graphical
  • 可选,安装时使用图形化界面,默认为graphical
  • text
  • 可选,安装时使用文本方式界面安装,默认为graphical
  • key
  • 设置一个安装码,用于获取redhat的官方支持服务
  • --skip,表示跳过key设置,如果不设备会跳到交互模式,让用户选择
  • keyboard
  • 设置键盘类型,一般为us
  • keyboard us
  • lang
  • 设置系统语言,默认为en_US
  • lang en_US
  • timezone
  • 设置系统时区
  • timezone Asia/Shanghai
  • auth
  • 设置系统的认证方式
  • auth --useshadow --passalgo=sha512
  • rootpw
  • 设置root的密码
  • rootpw abcde123
  • rootpw rootpw --iscrypted 1 1 1iRHppr42$VMesh73wBqhUTjKp6OYOD.

可以使用 openssl passwd -1 -salt openssl rand -hex 4生成加密的密码串

  • network
  • 设置主机的网络,在远程安装的模式下,必须指定
  • [ ]
  • network —onboot no —device eth0 —bootproto dhcp —noipv6
  • service
  • 可选,设置禁用或允许列出的服务
  • services --disabled autid,cups,smartd,nfslock

–disabled 设置服务为禁用
–enabled 启动服务

  • part
  • 设置磁盘分区
 part /boot --fstype="ext4" --size=200
  part pv.008 --size=10240
  volgroup vg0 --pesize=8192 pv.008
  logvol / --fstype=ext4 --name=root --vgname=vg0 --size=1024
  logvol swap --name=swap --vgname=vg0 --size=1024
  logvol /usr --fstype=ext4 --name=usr --vgname=vg0 --size=1024
  logvol /var --fstype=ext4 --name=var --vgname=vg0 --size=2048
  
  
  part  |swap|pv.id|rdid.id  options
  mntpoint:挂载点,是在创建普通分区时指定新分区挂载位置的项;挂载点需要格式正确
  swap: 创建swap分区;
  raid.id:  表示创建的分区类型为raid型;必须用id号进行唯一区别;
  pv.id:  表示所创建的分区类型为LVM型;必须用唯一id号进行区别;
  --size=  设置分区的最小值,默认单位为M,但是不能写单位;
  --grow  让分区自动增长利用可用的磁盘空间,或是增长到设置的maxsize值;
  --maxsize 设置分区自动增长(grow)时的最大容量值,以M为单位,但不能写单位;
  --onpart=/--usepart=     设置使用原有的分区;
  --noformat    设置不格式化指定的分区,在跟—onpart一同使用时,可以避免删除原有分区上的数据,在新安装的系统中保留使用数据;
  --asprimary    强制制定该分区为主分区;若指定失败,分区会失败,导致安装停止;
  --fstype=    新增普通分区时指定分区的类型,可以为ext2、ext3、ext4、swap、vfat及hfs;
  --ondisk=/--ondrive=     设定该分区创建在一个具体的磁盘上;
  --start   指定分区以磁盘上那个磁道开始;需要跟--ondisk参数一块使用;
  --end    指定分区以磁盘上那个磁道结束;需要跟上述两个参数一起使用;
  --recommended:让系统自行决定分区的大小;在创建swap分区时,若RAM<2G,则分区大小为2*RAM;若RAM>=2G时,分区大小为RAM+2G;
  --bytes-pre-inode=    指定分区格式化时inode的大小;默认值为4096
  --fsoptions=    指定创建fstab文件时该分区挂载参数项;

  例:
   part  /boot  --fstype=“ext3” --size=100
   part  swap  --fstype=“swap” –size=512  
   part  /  --bytes-pre-inode=4096  --fstype=“ext4”--size=10000
   part  /data    --onpart=/dev/sdb1  --noformat
   part  raid.100  --size=2000
   part  pv.100     --size=1000

使用软件定制kickstart文件

1、yum install system-config-kickstart
2、system-config-kickstart

Centos 6.7光盘isolinux下文件及作用:

  • vmlinuz
  • 内核文件
  • initrad.img
  • 虚根文件系统映像
  • isolinux.cfg
  • Linux内核引导参数配置文件,定义了启动界面的相关信息,如超时时间(毫秒)、背景颜色、title、内核及虚根的文件位置
  • splash.jpg
  • 定义了引导界面的图片
  • isolinux.bin
  • boot.cat
  • boot.msg : 引导时的各种提示信息文件
  • grub.conf
  • mem.test

以小型光盘引导读取远程文件服务器安装树,完成系统自动化安装

    1、复制光盘中的isolinux目录到myboot目录下
    2、把制作好的ks文件放到isolinux同级目录,名为ks.cfg
    3、修改isolinux/isolinux.cfg文件中的append行后添加 ks=cdrom:/ks.cfg
    4、退出myboot目录,执行如下命令:
        mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "Centos 6 x86_64 Boot" -c isolinux/boot.cat -b isolinux/isolinux.bin -o /root/boot.iso /root/myboot/
        
    5、完成后,加载boot.iso即可以完成安装。
    
    ks.cfg配置实例如下:
        # Kickstart file automatically generated by anaconda.

        #version=DEVEL
        install
        url --url="http://172.16.0.1/cobbler/ks_mirror/CentOS-6.7-x86_64/"
        text
        lang en_US.UTF-8
        keyboard us
        network --onboot no --device eth0 --bootproto dhcp --noipv6
        rootpw  --iscrypted $6$yhbmeil2c47tl6x6$BPp9Qcl2kB8u2gJ0GG/RMFwf6Bm98eiFIi4qy7mEcVN.8Dm6gN0ICwK9ibfuv8EkdKinEuuHmS3I6O2EgFw2O/
        firewall --service=ssh
        authconfig --enableshadow --passalgo=sha512
        selinux --enforcing
        timezone --utc Asia/Shanghai
        bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
        # The following is the partition information you requested
        # Note that any partitions you deleted are not expressed
        # here so unless you clear all partitions first, this is
        # not guaranteed to work
        clearpart --all

        part /boot --fstype=ext4 --size=500
        part pv.008002 --grow --size=10240

        volgroup vg_zhenping --pesize=4096 pv.008002
        logvol / --fstype=ext4 --name=lv_root --vgname=vg_zhenping --grow --size=1024 --maxsize=5120
        logvol swap --name=lv_swap --vgname=vg_zhenping --grow --size=1984 --maxsize=1024

        #repo --name="CentOS"  --baseurl=http://172.16.0.1/fedora-epel/6/x86_64/ --cost=100

        %packages
        @core
        @server-policy
        @workstation-policy
        %end

kickstart部署步骤流程图

Linux 之 Kickstart_第1张图片

参考

https://www.jianshu.com/p/e5f296fdf051
https://access.redhat.com/documentation/zh-cn/red_hat_enterprise_linux/7/html/installation_guide/sect-kickstart-syntax

你可能感兴趣的:(操作系统)