Kickstart文件剖析

 kickstart文件是一个简单的文本文件,它包含了一个项目列表,每个项目由一个关键字来识别。

创建kickstart文件注意:

  • 每节必须按顺序指定.除非特别申明,每节内的项目则不必按序排列.小节的顺序为:

          命令部分,这里应该包括必需的选项.
           %packages部分,这部分选择需要安装的软件包.
           %pre和%post部分,这两个部分可以按任何顺序排列而且不是必需的.前者是预安装脚本,后者是系统安装完成后脚本

  • 不必需的项目可以被省略.
  • 如果忽略任何必需的项目,安装程序会提示用户输入相关的项目的选择,就象用户在典型的安装过程中所遇到的一样.一旦用户进行了选择,安装会以非交互的方式(unattended)继续(除非找到另外一个没有指定的项目).
  • 以井号("#")开头的行被当作注释行并被忽略.

kickstart 升级,下列项目是必需的:

  • 语言
  • 安装方法
  • 设备规格(如果这个设备是在安装过程中所需要的)
  • 键盘设置
  • upgrade 关键字
  • 引导装载程序配置
  • 如果任何其他的项目被指定为upgrade,这些项目将被忽略(注意这包括了软件包选择).

以下为一个Centos7示列:

复制代码
[root@master ~]# cat anaconda-ks.cfg 
#version=DEVEL
# System authorization information

auth --enableshadow --passalgo=sha512
#1.auth或者authconfig :验证选项
#    --useshadow或者--enableshadow启用shadow文件来验证
#    --passalgo=sha512使用sha512算法

# Use CDROM installation media
cdrom
# Use graphical install
graphical
# Run the Setup Agent on first boot
firstboot --enable
ignoredisk --only-use=sda
# Keyboard layouts
keyboard --vckeymap=cn --xlayouts='cn'
3.keyboard:指定键盘类型,一般使用美式键盘"keyboard us",新版的kickstart的格式有所变化,但也支持"keyboard us"这样的老格式

# System language
lang zh_CN.UTF-8
4.lang:指定语言,如"lang en_US.UTF-8"5.rootpw:设置root用户的密码
    --iscrypted:使用加密密码,可以使用MD5,SHA-256,sha-512等。
        如:rootpw  --iscrypted $6$kxEBpy0HqHiY2Tsx$FTAqbjHs6x0VruChfYKxVeKLlxPuY0LXK7RxAVdu3uUivGclMUEz.i4ARlsMpqe1bf379uEgWOSFqGtZxqrwg.
        其中SHA-512位的加密密码在CentOS 6上可以使用"grub-crypt --sha-512"生成,CentOS7上可以使用python等工具来生成,如下:
        python -c 'import crypt,getpass;pw=getpass.getpass();print(crypt.crypt(pw) if (pw==getpass.getpass("Confirm: ")) else exit())' 


# Network information
network  --bootproto=dhcp --device=ens33 --onboot=off --ipv6=auto --no-activate
network  --hostname=localhost.localdomain

# Root password
rootpw --iscrypted $6$q56FOJKUUpSACRTf$/zzM8JLXd/xeJgJn27qfNU9a52qzPECWrz4/90IpdCZ3wHNDDknJCQqhLwv6YR7lUl2qWhypUw.XGcBzmdpZt1
# System services
services --enabled="chronyd"
# System timezone
timezone Asia/Shanghai --isUtc
# System bootloader configuration
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
2.bootloader: 指定如何安装引导程序,要求必须已选择分区、已选择引导程序、已选择软件包,如果没选择将会停止而不会询问
    --location=mbr 指定引导程序的位置,默认为mbr,还可以指定none或者包含bootloader的引导块所在分区
    --driveorder=sda 指定grub安装在哪个分区以及指定寻找顺序,--driverorder=sda sdc sdb
    --append="crashkernel=auto rhgb quiet" 指定内核参数

# Partition clearing information
clearpart --none --initlabel
# Disk partitioning information
part /boot --fstype="xfs" --ondisk=sda --size=250
part pv.253 --fstype="lvmpv" --ondisk=sda --size=20229
volgroup centos --pesize=4096 pv.253
logvol swap  --fstype="swap" --size=1000 --name=swap --vgname=centos
logvol /  --fstype="xfs" --size=19225 --name=root --vgname=centos

%packages
@^minimal
@core
chrony
kexec-tools

%end

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

%end

%anaconda
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
%end
复制代码
复制代码
【可选的选项】:
1
.selinux:设置selinux,值为enforcing,permissice,disable之一 2.autostep: 交互式,和interactive类似 3.interactive: 使用kickstart文件指定的参数交互式安装,但仍会给出每一步的选择项,如果直接下一步就使用kickstart参数 4.cmdline:在完全非交互的命令行模式下进行安装 5.driverdisk:指定驱动程序所在位置 drvierdisk --source= 6.firewall:设置firewall --disable禁用防火墙 7.firstboot: --disable:安装后第一次启动默认会给出很多需要手动配置的界面,禁用它 8.graphical:在图形模式下根据kickstart执行安装,默认该选项 9.text:文本模式下根据kickstart执行安装(既然使用kickstart了,当然建议选择使用纯文本模式而不是图形模式了) 9.1 skipx:不安装图形工具 10.halt/reboot:安装完成后关机还是reboot,默认是halt 11.ignoredisk:指定忽略的磁盘 12.install/upgrade:指定是安装还是升级系统 对于install,还必须指定下面几种安装方式之一: cdrom:指定从第一个光盘驱动器安装 harddrive:指定从本地硬盘安装,要求硬盘必须是vfat或者ext2文件系统格式 --biospart:指定从bios类型的分区来安装,如82文件系统类型号的分区 --partition:从某个分区安装 --dir:指定从包含install-tree(安装树)的目录安装 例如:harddrive --partition=hdb2 --dir=/tmp/install-tree nfs:指定从nfs路径安装 --server:指定nfs服务器主机名或IP --dir:指定包含install-tree的目录 --opts:指定挂载NFS的mount选项 如:nfs --server=172.16.10.10 --dir=/export_path url:指定从ftp、http、https安装 例如:url --url ftp://172.16.10.10 13.loggin:指定安装过程中的错误日志位置 --host:指定日志将发送到那台主机上 --port:如果远程主机的rsyslog使用非默认端口,则应该指定该端口选项 --levle:指定日志级别 14.network:为系统配置网络信息,并在安装过程中激活该网络设备。可多次使用network指令,例如既设置网络,又设置主机名 --bootproto:dhcp或static;对于static则必须指定IP地址、子网掩码、网关和DNS --device:网卡名,可以使用eth0类似的名称来指定 --hostname:指定主机名 --onboot:是否在引导系统时启用指定的设备 如: network --bootproto=static --ip=192.168.100.2 --netmask=255.255.255.0 --gateway=192.168.100.254 --nameserver=8.8.8.8 network --bootproto=dhcp --device=eth0 --noipv6 network --hostname=node1.xuexi.com 15.autopart: 自动创建几个分区:大于1G的根分区,250M的boot分区和swap分区 16.zerombr:清除磁盘的mbr 17.clearpart: 在安装系统前清除分区,如果指定该选项则必须指定正确 --all:清除所有分区 --Linux:清除Linux分区 --none:不清除分区 --initlabel:创建标签,对于没有MBR或者GPT的新硬盘,该选项是必须的 --drivers=sdb:清除指定的分区 所以,clearpart --all --initlabel是常见的方式 18.part:创建分区 --asprimary:强制指定为主分区 --grow:使用所有可用空间,即为其分配所有剩余空间。对于根分区至少需要3G空间(即使是--grow,也还是需要指定--size) --ondisk:指定在哪块磁盘上创建分区。如果有多块磁盘,则需要指定在哪块磁盘上创建哪个分区,只有一块硬盘时可以省略该选项 如: #part /boot --fstype=ext4 --asprimary --size=200 #boot分区200-250M足以 #part swap --fstype=swap --asprimary --size=2048 #part / --fstype=ext4 --grow --asprimary --size=2000 LVM的分区方法: part /boot --fstype ext4 --size=100 part swap --fstype=swap --size=2048 part pv26 --size=100 --grow volgroup VG00 --pesize=32768 pv26 logvol / --fstype ext4 --name=LVroot --vgname=VG00 --size=29984 logvol /data --fstype ext4 --name=LVdata --vgname=VG00 --size=100 --grow 19.repo:指定除自带的yum源外的其他yum源,可以指定多行yum源(既然是第一次装系统,基本都不会去加这项) 如:repo --name="CentOS" --baseurl=cdrom:sr0 --cost=100 20.services:设置默认运行级别下开机自启动的服务 --disable --enable disable先处理enable后处理 如services --disable auditd,cups,atd 21.timezone:指定时区 如:Asia/Shanghai 22.user:在系统中生成一个新用户 --name:指定用户名 --groups:指定辅助组,非默认组 --homedir:用户家目录,如果不指定则默认为/home/<username> --password:该用户的密码,如果不指定或省略则创建后该用户处于锁定状态 --shell:用户的shell,不指定则默认 --uid:用户UID,不指定则自动分配一个非系统用户的UID 23.key:输入序列号,只在RedHat中有,CentOS系统没有该项 --skip 跳过key选项 【kickstart软件包或包组选项】 使用"%packages"表示该段内容,@表示选择的包组,最前面使用横杠表示取反,即不选择的包或包组。 @base和@core两个包组总是被默认选择,所以不必在%packages中指定它们

[root@localhost /]# cat ~/anaconda-ks.cfg
#version=DEVEL
# System authorization information
auth --useshadow --enablemd5   (--useshadow或者--enableshadow启用shadow文件来验证。--enablemd5使用md5算法)

# Install OS instead of upgrade  (安装操作系统而不是升级)
install
# Use CDROM installation media    (使用CDROM安装介质)
cdrom
# Use graphical install  (使用图型安装)
graphical
# Firewall configuration  (设置防火墙)
firewall --enabled
firstboot --disable    (安装后第一次启动默认会给出很多需要手动配置的界面,禁止它)
ignoredisk --only-use=sda  (指定忽略的硬盘)
# Keyboard layouts
# old format: keyboard us
# new format:
keyboard --vckeymap=us --xlayouts='us'  (指定键盘类型,一般使用美式键盘)

# System language    (系统语言)
lang en_US.UTF-8

# Network information
network --bootproto=dhcp --device=link --activate  (--bootproto=dhcp  为dhcp或static,对于static则必须指定IP地址、子网掩码、网关和DNS。--device=link。)

network --hostname=localhost.localdomain    (主机名)
# Reboot after installation   (安装后新重启)
reboot
# Root password  (root密码)
rootpw --iscrypted $1$qpLCHyKc$tpgPpfZdmb/8lGsunfGWk/
# System services  (设置默认运行级别下开机自启动的服务)

services --enabled="chronyd"
# System timezone    (指定时区)

timezone America/Los_Angeles --isUtc
# X Window System configuration information
xconfig --startxonboot
# System bootloader configuration

指定如何安装引导程序,要求必须已选择分区、已选择引导程序、已选择软件包,如果没选择将会停止而不会询问

    --location=mbr 指定引导程序的位置,默认为mbr,还可以指定none或者包含bootloader的引导块所在分区
    --driveorder=sda 指定grub安装在哪个分区以及指定寻找顺序,--driverorder=sda sdc sdb
    --append="crashkernel=auto rhgb quiet" 指定内核参数)

bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
# Clear the Master Boot Record   (清除主引导记录)
zerombr
# Partition clearing information  (分区清除信息)
clearpart --all --initlabel
# Disk partitioning information  (创建分区)

part /boot --fstype="xfs" --size=300
part swap --fstype="swap" --size=1024
part / --fstype="xfs" --size=8915

%post   (系统安装完成后脚本)
/usr/sbin/adduser carlos
/usr/sbin/usermod -p '$1$qpLCHyKc$tpgPpfZdmb/8lGsunfGWk/' carlos
/usr/bin/chfn -f "Centos" carlos
mv /etc/rc.d/rc.local /etc/rc.d/rc.local.00
echo '#!/bin/bash' > /etc/rc.d/rc.local
ln -s ../rc.local /etc/rc.d/rc5.d/S99rclocal
chmod 755 /etc/rc.d/rc.local
echo 'mkdir -p /var/log/vmware' >> /etc/rc.d/rc.local
echo 'exec 1> /var/log/vmware/rc.local.log' >> /etc/rc.d/rc.local
echo 'exec 2>&1' >> /etc/rc.d/rc.local
echo 'set -x' >> /etc/rc.d/rc.local
echo 'echo Installing Open VM Tools' >> /etc/rc.d/rc.local
echo 'set -x' >> /etc/rc.d/rc.local
echo '/bin/eject sr0 || /bin/true' >> /etc/rc.d/rc.local
echo '/bin/eject sr1 || /bin/true' >> /etc/rc.d/rc.local
echo '/bin/vmware-rpctool' \'guest.upgrader_send_cmd_line_args --default\' >> /etc/rc.d/rc.local
echo '/bin/vmware-rpctool' \'upgrader.setGuestFileRoot /tmp\' >> /etc/rc.d/rc.local
echo '/bin/vmware-rpctool' \'toolinstall.installerActive 1\' >> /etc/rc.d/rc.local
echo '/bin/vmware-rpctool' \'toolinstall.installerActive 100\' >> /etc/rc.d/rc.local
echo 'rm -f /etc/rc.d/rc.local' >> /etc/rc.d/rc.local
echo 'rm -f /etc/rc.d/rc5.d/S99rclocal' >> /etc/rc.d/rc.local
echo 'mv /etc/rc.d/rc.local.00 /etc/rc.d/rc.local' >> /etc/rc.d/rc.local
/bin/echo done
%end

%packages    (这部分选择需要安装的软件包)
@base
@core
@desktop-debugging
@dial-up
@directory-client
@fonts
@gnome-desktop
@guest-desktop-agents
@input-methods
@internet-browser
@java-platform
@multimedia
@network-file-system-client
@print-client
@x11
binutils
chrony
ftp
gcc
kernel-devel
kexec-tools
make
open-vm-tools
patch
python

%end

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

%end

复制代码

 

设置firewall
posted @   星火撩原  阅读(490)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示

目录导航