linux ks脚本,kickstar-KS文件和语法解析

# KS文件和语法解析

[TOC]

## 1ks说明

### 1.1ks文件说明

使用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.3kickstart文件语法检查

```sh

yum install pykickstart

ksvalidator /var/www/html/ks_config/CentOS-7-ks.cfg

```

请记住这个验证工具有其局限性。Kickstart 文件可能会很复杂;ksvalidator 可保证其语法正确,且该文件不包含淘汰的选项,但它无法保证安装会成功。它也不会尝试验证 Kickstart 文件的 %pre、%post 和 %packages 部分。

### 1.4root密码生成

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.

```

## 2ks.cfg详解

### 2.1ks文件组成

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://:@/

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地址.

--gatewayIP地址格式的默认网关.

--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

```

可以调用优化脚本,对装完后的服务器进行初始优化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值