ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
# KS文件和语法解析 [TOC] ## 1 ks说明 ### 1.1 ks文件说明 使用kickstart,只需事先定义好一个Kickstart自动应答配置文件ks.cfg(通常存放在安装服务器上),并让安装程序知道该配置文件的位置,在安装过程中安装程序就可以自己从该文件中读取安装配置,这样就避免了在安装过程中多次的人机交互,从而实现无人值守的自动化安装。 ### 1.2 生成kickstart配置文件的三种方法: * 方法1: 每安装好一台Centos机器,Centos安装程序都会创建一个kickstart配置文件,名字叫anaconda-ks.cfg位于/root/anaconda-ks.cfg ,记录真实安装配置。 * 方法2: Centos提供了一个图形化的kickstart配置工具。在任何一个安装好的Linux系统上运行该工具,就可以很容易地创建你自己的kickstart配置文件。 * 方法3: 阅读kickstart配置文件的手册。用任何一个文本编辑器都可以创建你自己的kickstart配置文件。 官方链接: https://access.redhat.com/documentation/zh-cn/red_hat_enterprise_linux/7/html/installation_guide/sect-kickstart-howto ### 1.3 kickstart文件语法检查 ```sh yum install pykickstart ksvalidator /var/www/html/ks_config/CentOS-7-ks.cfg ``` 请记住这个验证工具有其局限性。Kickstart 文件可能会很复杂;ksvalidator 可保证其语法正确,且该文件不包含淘汰的选项,但它无法保证安装会成功。它也不会尝试验证 Kickstart 文件的 %pre、%post 和 %packages 部分。 ### 1.4 root密码生成 1) python法 ```python python -c 'import crypt; print(crypt.crypt("123456"))' $6$mM/gpJHUs......AFcT3Q0CMJCqWk9d90 ``` 2) grub-crypt法 ``` grub-crypt Password: Retype password: $6$npM35T......PburyA/FFDbdeGvnUrWpWi. ``` ## 2 ks.cfg详解 ### 2.1 ks文件组成 1. 命令段 键盘类型,语言,安装方式等系统的配置,有必选项和可选项,如果缺少某项必选项,安装时会中断并提示用户选择此项的选项 2. 软件包段 以%packages开头,以%end结束,在安装过程中默认安装的软件包,安装软件时会自动分析依赖关系。 ``` @groupname:指定安装的包组 package_name:指定安装的包 -package_name:指定不安装的包 ``` 3. 脚本段(可选) 以%post开头,以%end结束,在安装完系统之后执行的相关Linux命令、脚本 以%pre开头,以%end结束,在安装完系统之前执行的相关Linux命令、脚本 ### 2. 关键字含义说明 1) 开始部分 ```sh # Kickstart Configurator for CentOS 7 by NOAH LUO install ``` 告知安装程序,这是一次全新安装,而不是升级upgrade。 2) 安装源部分 ```sh url --url="http://10.0.0.7/CentOS-6.7/" url --url ftp://<username>:<password>@<server>/<dir> nfs --server=nfsserver.example.com --dir=/tmp/install-tree ``` 通过FTP或HTTP或NFS从远程服务器上的安装树中安装。任选一即可 3) 模式语言键盘等 ```sh text 使用文本模式安装。 lang en_US.UTF-8 设置在安装过程中使用的语言以及系统的缺省语言。 keyboard us 设置系统键盘类型。 zerombr 清除mbr引导信息。 ``` 4) bootloader 系统引导配置 ```sh bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet" --location 指定引导记录被写入的位置.有效的值如下:mbr(缺省),partition,none。 --driveorder 指定在BIOS引导顺序中居首的驱动器。 --append= 指定内核参数.要指定多个参数,使用空格分隔它们。 ``` 5) network网络配置[客户机] ```sh network --bootproto=dhcp --device=eth0 --onboot=yes --noipv6 --hostname=CentOS7 --activate 或者 network --bootproto=static --device=eth0 --ip=10.0.0.201 --netmask=255.255.255.0 --gateway=10.0.0.201 --nameserver=10.0.0.202 --activate network --hostname=CentOS7 static方法要求在kickstart文件里输入所有的网络信息。 请注意所有配置信息都必须在一行上指定,或写两个newwork,不能使用反斜线来换行。 --ip= 被安装的机器的IP地址. --gateway IP地址格式的默认网关. --netmask 安装的系统的子网掩码. --hostname 安装的系统的主机名. --onboot 是否在引导时启用该设备. --noipv6 禁用此设备的IPv6. --nameserver 配置dns解析. ``` 6) 时区认证等 ```sh timezone --utc Asia/Shanghai authconfig --enableshadow --passalgo=sha512 rootpw --iscrypted $6$X20eRtuZhkHznTb4$dK0BJByOSA.....wJbAjVI5D6/ ``` 设置时区上海,设置认证方式,设置密码,密码非明文,用前文生成密码的方式生成 7) 分区相关 ```sh clearpart --all --initlabel --all 从系统中清除所有分区,--initlable 初始化磁盘标签 part /boot --fstype xfs --size 1024 part swap --size 1024 part / --fstype xfs --size 1 --grow 磁盘分区。 --fstype 为分区设置文件系统类型.有效的类型为ext2,ext3,swap, xfs和vfat。 --asprimary 强迫把分区分配为主分区,否则提示分区失败。 --size 以MB为单位的分区最小值.在此处指定一个整数值,如500.不加MB。 --grow 告诉分区使用所有可用空间(若有),或使用设置的最大值。 ``` 8) 其他信息 ```sh firstboot --disable selinux --disabled firewall --disabled logging --level=info reboot firstboot 负责协助配置redhat一些重要的信息。 selinux 关闭selinux。 firewall 关闭防火墙。 logging 设置日志级别。 reboot 设定安装完成后重启,也可以选择halt关机。 ``` 9) 包选装 ```sh %packages @^minimal @compat-libraries @debugging @development tree nmap sysstat lrzsz dos2unix telnet wget vim bash-completion %end ``` 10) 安装完成后操作 ```sh %post systemctl disable postfix.service %end ``` 可以调用优化脚本,对装完后的服务器进行初始优化