Centos7-PXE自动安装系统部署

一、PXE简介

对与运维人员来说,如何安装操作系统想必并不陌生;但当我们面对大量需要安装系统的环境时,自动化安装系统就成了一项必备的技能;下面就让我们一起走进PXE这项批量自动化安装操作系统的技术吧。

PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端基本软件设置,从而引导预先安装在服务器中的终端操作系统。PXE可以引导和安装Windows,linux等多种操作系统。

工作原理:

(1) Client向PXE Server上的DHCP发送IP地址请求消息,DHCP检测Client是 否合法(主要是检测Client的网卡MAC地址),如果合法则返回Client的 IP地址,同时将启动文件pxelinux.0的位置信息一并传送给Client
(2) Client向PXE Server上的TFTP发送获取pxelinux.0请求消息,TFTP接收 到消息之后再向Client发送pxelinux.0大小信息,试探Client是否满意,当 TFTP收到Client发回的同意大小信息之后,正式向Client发送pxelinux.0
(3) Client执行接收到的pxelinux.0文件
(4) Client向TFTP Server发送针对本机的配置信息文件(在TFTP 服务的 pxelinux.cfg目录下),TFTP将配置文件发回Client,继而Client根据配 置文件执行后续操作。
(5) Client向TFTP发送Linux内核请求信息,TFTP接收到消息之后将内核文件 发送给Client  Client向TFTP发送根文件请求信息,TFTP接收到消息之后返回Linux根文 件系统
(6) Client启动Linux内核
(7) Client下载安装源文件,读取自动化安装脚本

 

 

二、系统环境介绍

[root@centos-pxe ~]# hostnamectl
   Static hostname: centos-pxe
         Icon name: computer-vm
           Chassis: vm
        Machine ID: 6f77c9d820f543cfa504e66735016f42
           Boot ID: f1f784b4d24f476d8d120d93e7d376bf
    Virtualization: vmware
  Operating System: CentOS Linux 7 (Core)
       CPE OS Name: cpe:/o:centos:centos:7
            Kernel: Linux 3.10.0-1160.99.1.el7.x86_64
      Architecture: x86-64

所使用的系统镜像:

 CentOS-7-x86_64-Everything-2009.iso

https://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-Everything-2009.iso?spm=a2c6h.25603864.0.0.734f6aeaIwlXqB

CentOS-Stream-8-x86_64-latest-dvd1.iso

https://mirrors.aliyun.com/centos/8-stream/isos/x86_64/CentOS-Stream-8-x86_64-latest-dvd1.iso?spm=a2c6h.25603864.0.0.79963584CAKhRY

关闭selinux

sed -i 's/^SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

 重启系统之后查看

[root@centos-pxe ~]# sestatus
SELinux status:                 disabled

 三、安装配置dhcp

1、安装dhcp服务

[root@centos-pxe ~]# yum install -y dhcp

 2、配置

修改配置文件如下:
vim /etc/dhcp/dhcpd.conf
subnet  192.168.100.0  netmask 255.255.255.0 {                #指定为哪个网段分配网络参数
      option subnet-mask    255.255.255.0;                    #设置子网掩码
      option domain-name-servers  223.5.5.5,223.6.6.6;        #设置分配给客户端的DNS服务器地址
      range 192.168.100.201 192.168.100.254;                #设置准备为客户端分配的IP地址范围
      default-lease-time    21600;                            # 地址租赁时间 600秒后失效
      max-lease-time       43200;
      next-server         192.168.100.100;                    # 下一个要访问的地址,就是tftp地址。
      filename           "pxelinux.0";                        #要访问tftp上哪一个文件。
}
重启dhcp服务,并设为开机自启
systemctl restart  dhcpd.service
systemctl enable  dhcpd.service
 
在防火墙开放dhcp服务
firewall-cmd --permanent --zone=public --add-service=dhcp
 
重启firewalld使配置生效
systemctl restart firewalld
 
查看服务端口
ss -tulanp|grep -w 67

 三、安装并TFTP文件共享服务,并进行配置

1、安装

yum  install  -y tftp tftp-server  xinetd  syslinux 

 2、配置

修改tftp服务配置文件
vim /etc/xinetd.d/tftp

service tftp
{
	socket_type		= dgram
	protocol		= udp						# TFTP默认使用UDP协议
	wait			= no						# no表示客户机可以多台一起连接,yes表示客户机只能一台一台连接
	user			= root
	server			= /usr/sbin/in.tftpd		
	server_args		= -s /var/lib/tftpboot		# 指定TFTP根目录(引导文件的存储路径)
	disable			= no						# no表示开启TFTP服务
	per_source		= 11
	cps			= 100 2
	flags			= IPv4
}

重启xinetd服务并设为开机自启
 
systemctl restart xinetd.service
systemctl enable xinetd.service
systemctl start tftp.service 
systemctl enable tftp.service 
在防火墙开放tftp服务
 
firewall-cmd --permanent --zone=public --add-service=tftp
 
重启firewalld使配置生效
systemctl restart firewalld

 四、准备pxe文件

PXE服务器上tftp服务要准备的启动文件如下:

pxe启动文件:/var/lib/tftpboot目录中的文件列如下

pxelinux.0   启动的引导程序。在系统中安装syslinux软件后得到的。(查:updatedb;locate  pxelinux.0)

pxelinux.cfg/default   启动时的菜单文件,相当于grub.conf。从系统光盘的isolinux/isolinux.cfg复制得到。

vmlinuz    内核文件,从系统光盘的pxeboot/vmlinuz复制得到

initrd.img  系统映像文件,从系统光盘的pxeboot/initrd.img复制得到

*.msg    消息文件,从系统光盘的isolinux/*.msg复制得到。

vesamenu.c32   grub菜单的32位管理程序。从系统光盘的isolinux/ vesamenu.c32复制得到。

splash.jpg  grub界面的背景图片。从系统光盘的isolinux/ splash.jpg复制得到。

1、挂载centos镜像

创建挂载目录
mkdir /{dvd,dvd1}
 
将centos7镜像挂载到/dvd目录,将centos8镜像挂载到/dvd目录
[root@centos-pxe ~]# mount CentOS-7-x86_64-Everything-2009.iso /dvd
mount: /dev/loop0 写保护,将以只读方式挂载

[root@centos-pxe ~]# mount CentOS-Stream-8-x86_64-latest-dvd1.iso /dvd1
mount: /dev/loop0 写保护,将以只读方式挂载

df -hT
文件系统                类型      容量  已用  可用 已用% 挂载点
devtmpfs                devtmpfs  1.9G     0  1.9G    0% /dev
tmpfs                   tmpfs     1.9G     0  1.9G    0% /dev/shm
tmpfs                   tmpfs     1.9G   12M  1.9G    1% /run
tmpfs                   tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/mapper/centos-root xfs       196G   23G  174G   12% /
/dev/sda1               xfs       2.0G  197M  1.8G   10% /boot
tmpfs                   tmpfs     378M     0  378M    0% /run/user/0
/dev/loop0              iso9660   9.5G  9.5G     0  100% /dvd
/dev/loop1              iso9660    11G   11G     0  100% /dvd1

 
说明:如果系统内没有镜像文件,可以上传或下载一个镜像文件进行挂载

2、进入/var/lib/tftpboot目录,复制一些PXE启动需要的文件

进入/var/lib/tftpboot目录
cd  /var/lib/tftpboot

[root@centos-pxe /var/lib/tftpboot]# cp  -v  /usr/share/syslinux/pxelinux.0   ./
"/usr/share/syslinux/pxelinux.0" -> "./pxelinux.0"

复制/dvd1/isolinux/* 下的所有文件到当前目录
[root@centos-pxe /var/lib/tftpboot]# cp  -v  /dvd/isolinux/*   ./
"/dvd/isolinux/boot.cat" -> "./boot.cat"
"/dvd/isolinux/boot.msg" -> "./boot.msg"
"/dvd/isolinux/grub.conf" -> "./grub.conf"
"/dvd/isolinux/initrd.img" -> "./initrd.img"
"/dvd/isolinux/isolinux.bin" -> "./isolinux.bin"
"/dvd/isolinux/isolinux.cfg" -> "./isolinux.cfg"
"/dvd/isolinux/memtest" -> "./memtest"
"/dvd/isolinux/splash.png" -> "./splash.png"
"/dvd/isolinux/TRANS.TBL" -> "./TRANS.TBL"
"/dvd/isolinux/vesamenu.c32" -> "./vesamenu.c32"
"/dvd/isolinux/vmlinuz" -> "./vmlinuz"

cp -rp /dvd1/isolinux/{ldlinux.c32,libcom32.c32,libutil.c32} /var/lib/tftpboot/

创建centos7和centos8目录
mkdir {centos7,centos8}

将initrd.img,vmlinuz移动到centos7目录下
mv {initrd.img,vmlinuz} centos7

复制centos8镜像中的initrd.img,vmlinuz文件到centos8目录下
cp /dvd1/isolinux/{initrd.img,vmlinuz} centos8/

[root@centos-pxe /var/lib/tftpboot]# tree ./
./
├── beijing1.png
├── beijing.png
├── boot.cat
├── boot.msg
├── centos7
│   ├── initrd.img
│   └── vmlinuz
├── centos8
│   ├── initrd.img
│   └── vmlinuz
├── grub.conf
├── isolinux.bin
├── ldlinux.c32
├── libcom32.c32
├── libutil.c32
├── memtest
├── pxelinux.0
├── pxelinux.cfg
│   └── default
├── splash.png
├── TRANS.TBL
└── vesamenu.c32

3 directories, 19 files


创建pxelinux.cfg目录
[root@centos-pxe /var/lib/tftpboot]# mkdir  -v  pxelinux.cfg
mkdir: 已创建目录 "pxelinux.cfg"

将isolinux.cfg文件移动到pxelinux.cfg目录下并从命名为default
mv  isolinux.cfg  pxelinux.cfg/default

 五、、编辑default文件

编辑default文件
vim /var/lib/tftpboot/pxelinux.cfg/default

default vesamenu.c32
# timout时间是引导时等待用户手动选择的时间,设为1可直接引导,单位为1/10秒。
timeout 600

display boot.msg

# Clear the screen when exiting the menu, instead of leaving the menu displayed.
# For vesamenu, this means the graphical background is still displayed without
# the menu itself for as long as the screen remains in graphics mode.
menu clear
# 菜单背景图片、标题、颜色。
#指定背景图片,要求是640*480像素的文件,可以使用windowsPC上画图打开重设图片大小调整像素
menu background splash.png
#menu title CentOS 7
menu title ======== Welcome to Install the Centos System ========
menu vshift 8
menu rows 18
menu margin 8
#menu hidden
menu helpmsgrow 15
menu tabmsgrow 13

# Border Area
menu color border * #00000000 #00000000 none

# Selected item
menu color sel 0 #ffffffff #00000000 none

# Title bar
menu color title 0 #ff7ba3d0 #00000000 none

# Press [Tab] message
menu color tabmsg 0 #ff3a6496 #00000000 none

# Unselected menu item
menu color unsel 0 #84b8ffff #00000000 none

# Selected hotkey
menu color hotsel 0 #84b8ffff #00000000 none

# Unselected hotkey
menu color hotkey 0 #ffffffff #00000000 none

# Help text
menu color help 0 #ffffffff #00000000 none

# A scrollbar of some type? Not sure.
menu color scrollbar 0 #ffffffff #ff355594 none

# Timeout msg
menu color timeout 0 #ffffffff #00000000 none
menu color timeout_msg 0 #ffffffff #00000000 none

# Command prompt text
menu color cmdmark 0 #84b8ffff #00000000 none
menu color cmdline 0 #ffffffff #00000000 none

# Do not display the actual menu unless the user presses a key. All that is displayed is a timeout message.

menu tabmsg Press Tab for full configuration options on menu items.

menu separator # insert an empty line
menu separator # insert an empty line

label Centos7
  menu label ^Install CentOS-7-x86_64-Everything_Server_2009
  kernel centos7/vmlinuz
  append initrd=centos7/initrd.img ks=http://192.168.100.100/ks/centos7_server_ks.cfg

label Centos7
  menu label ^Install CentOS-7-x86_64-Everything_Desktop_2009
  kernel centos7/vmlinuz
  append initrd=centos7/initrd.img ks=http://192.168.100.100/ks/centos7_desktop_ks.cfg

label Centos7
  menu label ^Install CentOS-7-x86_64-Everything_Minimal_2009
  kernel centos7/vmlinuz
  append initrd=centos7/initrd.img ks=http://192.168.100.100/ks/centos7_minimal_ks.cfg

label Centos8
  menu label ^Install CentOS-Stream-8-x86_64-latest_Server
  kernel centos8/vmlinuz
  append initrd=centos8/initrd.img inst.repo=http://192.168.100.100/os8 inst.ks=http://192.168.100.100/ks/centos8_server_ks.cfg

label Centos8
  menu label ^Install CentOS-Stream-8-x86_64-latest_Desktop
  kernel centos8/vmlinuz
  append initrd=centos8/initrd.img inst.repo=http://192.168.100.100/os8 inst.ks=http://192.168.100.100/ks/centos8_desktop_ks.cfg

label Centos8
  menu label ^Install CentOS-Stream-8-x86_64-latest_Minimal
  kernel centos8/vmlinuz
  append initrd=centos8/initrd.img inst.repo=http://192.168.100.100/os8 inst.ks=http://192.168.100.100/ks/centos8_minimal_ks.cfg

#本地磁盘引导
label local
  menu label Boot from ^local drive
  localboot 0xffff

六、安装Nginx服务,并配置使其显示目录文件列表

 1、安装nginx

yum install -y nginx

 2、修改Nginx服务配置文件,使其显示目录列表

修改Nginx服务配置文件,使其显示目录列表
 
找到http模块,修改如下
[root@centos-pxe ~]# vim /etc/nginx/nginx.conf
[root@centos-pxe ~]# grep -Ev '^$|#' /etc/nginx/nginx.conf
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
include /usr/share/nginx/modules/*.conf;
events {
    worker_connections 1024;
}
http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  /var/log/nginx/access.log  main;
    sendfile            on;							#自动显示目录
    tcp_nopush          on;							#人性化方式显示文件大小否则以byte显示
    tcp_nodelay         on;							#按服务器时间显示,否则以gmt时间显示
    keepalive_timeout   65;
    types_hash_max_size 4096;
    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;
	autoindex on;										
	autoindex_exact_size off;						#默认为on,显示出文件的确切大小,单位是bytes。改为off后,显示出文件的大概大小,单位是kB或者MB或者GB							
	autoindex_localtime on;							#默认为off,显示的文件时间为GMT时间。改为on后,显示的文件时间为文件的服务器时间							
	    server_names_hash_bucket_size 128;
    client_header_buffer_size 32k;
    large_client_header_buffers 4 32k;
    client_max_body_size 8m;
    limit_conn_zone  $binary_remote_addr zone=one:10m;
    gzip  on;
    gzip_min_length  1k;
    gzip_buffers     4 16k;
    gzip_http_version 1.0;
    gzip_comp_level 2;
    gzip_types       text/plain application/x-javascript text/css application/xml;
    gzip_vary on;
    log_format  wwwlogs  '$remote_addr - $remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for';
    include /etc/nginx/conf.d/*.conf;
    server {
        listen       80;
        listen       [::]:80;
        server_name  _;
        root         /var/www/html;        #更改主目录
        include /etc/nginx/default.d/*.conf;
        error_page 404 /404.html;
        location = /404.html {
        }
        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
        }
    }
}


检查语法是否正确
[root@centos-pxe ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

重启nginx服务并设为开机自启
[root@centos-pxe ~]# systemctl restart nginx.service
[root@centos-pxe ~]# systemctl enable nginx.service
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.

防火墙开放nginx服务
[root@centos-pxe ~]# firewall-cmd --permanent --zone=public --add-service=http
success
[root@centos-pxe ~]# systemctl restart firewalld
[root@centos-pxe ~]# 

 七、准备centos安装源

在/var/www/html/下创建os7,os8,ks,file,scripts目录
目录说明:
os7目录存放centos7镜像文件
os8目录存放centos8镜像文件
ks目录存放ks应答文件
file目录用于存放安装系统后替换Linux的配置文件
scripts目录存放脚本文件

[root@centos-pxe ~]# mkdir -p /var/www/html/{os7,os8,ks,file,scpripts}
[root@centos-pxe ~]# ls /var/www/html/
file  ks  os7  os8  scpripts
[root@centos-pxe ~]# 

将上面挂载的centos7和centos8镜像文件全部复制到os7和OS8目录下
[root@centos-pxe ~]# cp -rf /dvd/* /var/www/html/os7/
[root@centos-pxe ~]# cp -rf /dvd1/* /var/www/html/os8/
之后卸载挂载的镜像文件
[root@centos-pxe ~]# umount /dvd
[root@centos-pxe ~]# umount /dvd1

重启nginx服务并使用web访问查看
[root@centos-pxe ~]# systemctl restart nginx.service

八、准备ks应答文件

说明:

生成kickstart配置文件的三种方法:

方法1、 每安装好一台Centos机器,Centos安装程序都会创建一个kickstart配置文件,记录你的真实安装配置。如果你希望实现和某系统类似的安装,可以基于该系统的kickstart配置文件来生成你自己的kickstart配置文件。(生成的文件名字叫anaconda-ks.cfg位于/root/anaconda-ks.cfg)

方法2、Centos提供了一个图形化的kickstart配置工具。在任何一个安装好的Linux系统上运行该工具,就可以很容易地创建你自己的kickstart配置文件。kickstart配置工具命令为redhat-config-kickstart(RHEL3)或system-config-kickstart(RHEL4,RHEL5).网上有很多用CentOS桌面版生成ks文件的文章,如果有现成的系统就没什么可说。但没有现成的,也没有必要去用桌面版,命令行也很简单。

方法3、阅读kickstart配置文件的手册。用任何一个文本编辑器都可以创建你自己的kickstart配置文件。

 

1、准备centos7_server_ks.cfg 应答文件

将根目录下的anaconda-ks.cfg复制到/var/www/html/ks目录下,并重命名为centos7_server_ks.cfg 
cp anaconda-ks.cfg /var/www/html/ks/centos7_server_ks.cfg 

 2、ks.cfg说明:

[root@centos-pxe ~]# cat /var/www/html/ks/centos7_server_ks.cfg 
#指定系统安装还是更新
#version=DEVEL
install
# System authorization information
auth --enableshadow --passalgo=sha512
# Use CDROM installation media

#cdrom
#通过网络安装时,安装文件的位置
url --url=http://192.168.100.100/os7
# Use graphical install
#graphical
#txt界面安装,或者text指定字符界面安装
text
# Run the Setup Agent on first boot
#禁用快速引导
firstboot --disabled
#关闭selinux
selinux --disabled
#重启
reboot
#指定安装在哪块硬盘上
ignoredisk --only-use=sda
# Keyboard layouts
#指定键盘布局
keyboard --vckeymap=cn --xlayouts='cn'
# System language
#系统语言
lang zh_CN.UTF-8

# Network information
#网络配置
#network  --bootproto=static --device=ens33 --gateway=192.168.100.1 --ip=192.168.100.253 --nameserver=223.5.5.5,223.6.6.6 --netmask=255.255.255.0 --ipv6=auto --activate
#network  --bootproto=static --device=ens34 --ip=192.168.200.10 --netmask=255.255.255.0 --ipv6=auto --activate
network --bootproto=dhcp --device=ens33 --noipv6
network --bootproto=dhcp --device=ens34 --noipv6
#设置主机名
network  --hostname=localhost.localdomain
# Root password
#指定root用户的密码
#rootpw --iscrypted $6$cdH.JrO3DnDYZ6cw$u40xRZIhZBVpMewHkH17NbzIQvDdI9zyNCMD/Wfa2VPChjlx8Iz8/gFxAbaIjF.tP7gEzPe1Ewy0rPQ4WchyG1
rootpw --plaintext 086530
# System services
#开启chronyd服务
services --enabled="chronyd"
# System timezone
#设置时区
timezone Asia/Shanghai --isUtc
# System bootloader configuration
#系统引导加载程序配置 
bootloader --append="crashkernel=auto" --location=mbr --boot-drive=sda
#清除主引导记录
zerombr
# Partition clearing information
#清空所有分区
clearpart --all --initlabel
# Disk partitioning information
设为为LVM分区
part /boot --fstype="xfs" --ondisk=sda --size=2048
part pv.252 --fstype="lvmpv" --ondisk=sda --grow 
volgroup centos --pesize=4096 pv.252
logvol swap  --fstype="swap" --size=2048 --name=swap --vgname=centos
logvol /  --fstype="xfs" --grow --size=100 --name=root --vgname=centos
#安装的包组%packages开头,%end结尾。通过 @ 指定软件包组,通过 @^ 指定环境组。
%packages
@^infrastructure-server-environment
@base
@core
chrony
kexec-tools

%end
#配置kdump大小
%addon com_redhat_kdump --enable --reserve-mb='auto'

%end
#%anaconda指定 password 策略,以 %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

#通过 %pre 指定在磁盘分区前要执行的脚本,通过 %post 指定系统安装完成后要执行的脚本。这些模块都需要 %end 结束。一般不配置%pre。%post用的比较多
%post --interpreter=/bin/bash
wget -O /etc/profile http://192.168.100.100/file/centos7/profile
wget -O /etc/vimrc http://192.168.100.100/file/centos7/vimrc
wget -P /tmp/  http://192.168.100.100/scripts/sys_opt_7.sh
/bin/bash /tmp/sys_opt_7.sh
%end

 

关键字                 含义
install               告知安装程序,这是一次全新安装,而不是升级upgrade。
url --url=" "         通过FTP或HTTP从远程服务器上的安装树中安装。
url --url="http://10.0.0.7/CentOS-6.7/"
url --url ftp://<username>:<password>@<server>/<dir>
nfs                   从指定的NFS服务器安装。
nfs --server=nfsserver.example.com --dir=/tmp/install-tree
graphical    安装过程开启图形
text         安装过程使用文本模式安装。
lang         设置在安装过程中使用的语言以及系统的缺省语言。lang en_US.UTF-8
keyboard     设置系统键盘类型。keyboard us
zerombr      清除mbr引导信息。
bootloader   系统引导相关配置。
 
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
--location=,指定引导记录被写入的位置.有效的值如下:mbr(缺省),partition(在包含内核的分区的第一个扇区安装引导装载程序)或none(不安装引导装载程序)。
--driveorder,指定在BIOS引导顺序中居首的驱动器。
--append=,指定内核参数.要指定多个参数,使用空格分隔它们。
 
network 为通过网络的kickstart安装以及所安装的系统配置联网信息。
network --bootproto=dhcp --device=eth0 --onboot=yes --noipv6 --hostname=CentOS6
--bootproto=[dhcp/bootp/static]中的一种,缺省值是dhcp。bootp和dhcp被认为是相同的。
static方法要求在kickstart文件里输入所有的网络信息。
network --bootproto=static --ip=10.0.0.100 --netmask=255.255.255.0 --gateway=10.0.0.2 --nameserver=10.0.0.2
请注意所有配置信息都必须在一行上指定,不能使用反斜线来换行。
--ip=,要安装的机器的IP地址.
--gateway=,IP地址格式的默认网关.
--netmask=,安装的系统的子网掩码.
--hostname=,安装的系统的主机名.
--onboot=,是否在引导时启用该设备.
--noipv6=,禁用此设备的IPv6.
--nameserver=,配置dns解析.
 
timezone    设置系统时区。timezone --utc Asia/Shanghai
authconfig  系统认证信息。authconfig --enableshadow --passalgo=sha512
设置密码加密方式为sha512 启用shadow文件。
rootpw  --iscrypted  root密码
clearpart   清空分区。clearpart --all --initlabel
--all   从系统中清除所有分区,--initlable 初始化磁盘标签
part    磁盘分区。分区要注意不能分的太大了,要结合自己实际硬盘情况,不然安装的时候会报错
part /boot --fstype=ext4 --asprimary --size=2048   # 设置启动分区
part swap --size=1024       # 设置交换分区
part / --fstype=ext4 --grow --asprimary --size=20000   # 设置根分区
--fstype=,为分区设置文件系统类型.有效的类型为ext2,ext3,swap和vfat。
--asprimary,强迫把分区分配为主分区,否则提示分区失败。
--size=,以MB为单位的分区最小值.在此处指定一个整数值,如500.不要在数字后面加MB。
--grow,告诉分区使用所有可用空间(若有),或使用设置的最大值。
firstboot   负责协助配置redhat一些重要的信息。
firstboot   --disable
selinux     关闭selinux。selinux --disabled
firewall    关闭防火墙。firewall --disabled
logging     设置日志级别。logging --level=info
reboot      设定安装完成后重启,此选项必须存在,不然kickstart显示一条消息,并等待用户按任意键后才重新引导,也可以选择halt关机。
 
%pre  --interpreter=/bin/bash       系统安装前自动执行的脚本 执行脚本需要指定解释器-默认支持shell
  执行的shell脚本
%end
 
%post --interpreter=/bin/bash        系统安装后自动执行的脚本 执行脚本需要指定解释器-默认支持shell
  执行的shell脚本
%end

扩展-kickstart命令选项 

autopart(可选)
            自动创建分区,大于1GB的根分区(/),交换分区和适合于不同体系结构的引导分区.一个或多个缺省分区的大小可以用part指令重新定义.
 
ignoredisk(可选)
            导致安装程序忽略指定的磁盘.如果使用自动分区并希望忽略某些磁盘的话,这就很有用.
                    例如,没有ignoredisk,如要试图在SAN-cluster系统里部署,kickstart就会失败,因为安装程序检测到SAN不返回分区表的被动路径(passive path).
            如果有磁盘的多个路径时,ignoredisk选项也有用处.
            语法是:
                    ignoredisk --drives=drive1,drive2,...
                    这里driveN是sda,sdb... hda等等中的一个.
 
autostep(可选)
和interactive相似,除了它进入下一屏幕,它通常用于调试.
            --autoscreenshot,安装过程中的每一步都截屏并在安装完成后把图片复制到/root/anaconda-screenshots.这对于制作文档很有用.
 
auth或authconfig(必需)
            为系统设置验证选项.这和在安装后运行的authconfig命令相似.在缺省情况下,密码通常被加密但不使用影子文件(shadowed).
            --enablemd5,每个用户口令都使用md5加密.
            --enablenis,启用NIS支持.在缺省情况下,--enablenis使用在网络上找到的域.域应该总是用--nisdomain=选项手工设置.
            --nisdomain=,用在NIS服务的NIS域名.
            --nisserver=,用来提供NIS服务的服务器(默认通过广播).
            --useshadow或--enableshadow,使用屏蔽口令.
            --enableldap,在/etc/nsswitch.conf启用LDAP支持,允许系统从LDAP目录获取用户的信息(UIDs,主目录,shell 等等).要使用这个选项,必须安装nss_ldap软件包.也必须用--ldapserver=和--ldapbasedn=指定服务器和base DN(distinguished name).
            --enableldapauth,把LDAP作为一个验证方法使用.这启用了用于验证和更改密码的使用LDAP目录的pam_ldap模块.要使用这个选项,必须安装nss_ldap软件包.也必须用--ldapserver=和--ldapbasedn=指定服务器和base DN.
            --ldapserver=,如果指定了--enableldap或--enableldapauth,使用这个选项来指定所使用的LDAP服务器的名字.这个选项在/etc/ldap.conf文件里设定.
            --ldapbasedn=,如果指定了--enableldap或--enableldapauth,使用这个选项来指定用户信息存放的LDAP目录树里的DN.这个选项在/etc/ldap.conf文件里设置.
            --enableldaptls,使用TLS(传输层安全)查寻.该选项允许LDAP在验证前向LDAP服务器发送加密的用户名和口令.
            --enablekrb5,使用Kerberos 5验证用户.Kerberos自己不知道主目录,UID或shell.如果启用了Kerberos,必须启用LDAP,NIS,Hesiod或者使用/usr/sbin/useradd命令来使这个工作站获知用户的帐号.如果使用这个选项,必须安装pam_krb5软件包.
            --krb5realm=,工作站所属的Kerberos 5领域.
            --krb5kdc=,为领域请求提供服务的KDC.如果的领域内有多个KDC,使用逗号(,)来分隔它们.
            --krb5adminserver=,领域内还运行kadmind的KDC.该服务器处理改变口令以及其它管理请求.如果有不止一个KDC,该服务器必须是主KDC.
            --enablehesiod,启用Hesiod支持来查找用户主目录,UID 和 shell.在网络中设置和使用 Hesiod 的更多信息,可以在 glibc 软件包里包括的 /usr/share/doc/glibc-2.x.x/README.hesiod里找到.Hesiod是使用DNS记录来存储用户,组和其他信息的 DNS 的扩展.
            --hesiodlhs,Hesiod LHS("left-hand side")选项在/etc/hesiod.conf里设置.Hesiod 库使用这个选项来决定查找信息时搜索DNS的名字,类似于LDAP对 base DN的使用.
            --hesiodrhs,Hesiod RHS("right-hand side")选项在/etc/hesiod.conf里设置.Hesiod 库使用这个选项来决定查找信息时搜索DNS的名字,类似于LDAP对base DN的使用.
            --enablesmbauth,启用对SMB服务器(典型的是Samba或Windows服务器)的用户验证.SMB验证支持不知道主目录,UID 或 shell.如果启用SMB,必须通过启用LDAP,NIS,Hesiod或者用/usr/sbin/useradd命令来使用户帐号为工作站所知.要使用这个选项,必须安装pam_smb软件包.
            --smbservers=,用来做SMB验证的服务器名称.要指定不止一个服务器,用逗号(,)来分隔它们.
            --smbworkgroup=,SMB服务器的工作组名称.
            --enablecache,启用nscd服务.nscd服务缓存用户,组和其他类型的信息.如果选择在网络上用NIS,LDAP或hesiod分发用户和组的信息,缓存就尤其有用.
 
bootloader(必需)
            指定引导装载程序怎样被安装.对于安装和升级,这个选项都是必需的.
            --append=,指定内核参数.要指定多个参数,使用空格分隔它们.
                    例如:bootloader --location=mbr --append="hdd=ide-scsi ide=nodma"
            --driveorder,指定在BIOS引导顺序中居首的驱动器.
                    例如:bootloader --driveorder=sda,hda
            --location=,指定引导记录被写入的位置.有效的值如下:mbr(缺省),partition(在包含内核的分区的第一个扇区安装引导装载程序)或none(不安装引导装载程序).
            --password=,如果使用GRUB,把GRUB引导装载程序的密码设置到这个选项指定的位置.这应该被用来限制对可以传入任意内核参数的GRUB shell的访问.
            --md5pass=,如果使用GRUB,这和--password=类似,只是密码已经被加密.
            --upgrade,升级现存的引导装载程序配置,保留其中原有的项目.该选项仅可用于升级.
clearpart(可选)
            在创建新分区之前,从系统上删除分区.默认不会删除任何分区.
            注:如果使用了clearpart命令,--onpart命令就不能够用在逻辑分区上.
            --all,删除系统上所有分区.
            --drives=,指定从哪个驱动器上清除分区.
                    例如,下面的命令清除了主IDE控制器上的前两个驱动器上所有分区
                    clearpart --drives=hda,hdb --all
            --initlabel,根据不同体系结构把磁盘标签初始化为缺省设置(例如,msdos用于x86而gpt用于Itanium).当安装到一个崭新的硬盘时,这很有用,安装程序不会询问是否应该初始化磁盘标签.
            --linux,删除所有Linux分区.
            --none(缺省),不要删除任何分区.
 
cmdline(可选)
            在完全的非交互式的命令行模式下进行安装.任何交互式的提示都会终止安装.这个模式对于有x3270控制台的IBM System z系统很有用.
 
device(可选)
            在多数的PCI系统里,安装程序会正确地自动探测以太网卡和SCSI卡.然而,在老的系统和某些PCI系统里,kickstart需要提示来找到正确的设备.device命令用来告诉安装程序安装额外的模块,它有着这样的格式:
            device <type><moduleName> --opts=<options>
            <type>,用scsi或eth代替
            <moduleName>,使用应该被安装的内核模块的名称来替换.
            --opts=,传递给内核模块的选项.注意,如果把选项放在引号里,可以传递多个选项.
                    例如:--opts="aic152x=0x340 io=11"
 
driverdisk(可选)
            可以在kickstart安装过程中使用驱动软盘.必须把驱动软盘的内容复制到系统的硬盘分区的根目录下.然后必须使用driverdisk 命令来告诉安装程序到哪去寻找驱动磁盘.
            driverdisk <partition> [--type=<fstype>]
            另外,也可以为驱动程序盘指定一个网络位置:
            driverdisk --source=ftp://path/to/dd.img
            driverdisk --source=http://path/to/dd.img
            driverdisk --source=nfs:host:/path/to/img
                    <partition>,包含驱动程序盘的分区.
                    --type=,文件系统类型(如:vfat,ext2,ext3).
 
firewall(可选)
            这个选项对应安装程序里的「防火墙配置」屏幕:
            firewall --enabled|--disabled [--trust=] <device> [--port=]
            --enabled或者--enable,拒绝不是答复输出请求如DNS答复或DHCP请求的进入连接.如果需要使用在这个机器上运行的服务,可以选择允许指定的服务穿过防火墙.
            --disabled或--disable,不要配置任何iptables规则.
            --trust=,在此列出设备,如eth0,这允许所有经由这个设备的数据包通过防火墙.如果需要列出多个设备,使用--trust eth0 --trust eth1.不要使用以逗号分隔的格式,如--trust eth0, eth1.
            <incoming>,使用以下服务中的一个或多个来替换,从而允许指定的服务穿过防火墙.
                    --ssh
                    --telnet
                    --smtp
                    --http
                    --ftp
            --port=,可以用端口:协议(port:protocal)格式指定允许通过防火墙的端口.
                    例如,如果想允许IMAP通过的防火墙,可以指定imap:tcp.还可以具体指定端口号码,要允许UDP分组在端口1234通过防火墙,输入1234:udp.要指定多个端口,用逗号将它们隔开.
 
firstboot(可选)
            决定是否在系统第一次引导时启动"设置代理".如果启用,firstboot软件包必须被安装.如果不指定,这个选项是缺省为禁用的.
            --enable或--enabled,系统第一次引导时,启动"设置代理".
            --disable或--disabled,系统第一次引导时,不启动"设置代理".
            --reconfig,在系统引导时在重配置(reconfiguration)模式下启用"设置代理".这个模式启用了语言,鼠标,键盘,根密码,安全级别,时区和缺省网络配置之外的选项.
 
halt(可选)
            在成功地完成安装后关闭系统.这和手工安装相似,手工安装的anaconda会显示一条信息并等待用户按任意键来重启系统.在kickstart安装过程中,如果没有指定完成方法(completion method),将缺省使用reboot选项.
            halt选项基本和shutdown -h命令相同.
            关于其他的完成方法,请参考kickstart的poweroff,reboot和shutdown选项.
 
graphical(可选)
            在图形模式下执行kickstart安装.kickstart安装默认在图形模式下安装.
 
install(可选)
            告诉系统来安装全新的系统而不是在现有系统上升级.这是缺省的模式.必须指定安装的类型,如cdrom,harddrive,nfs或url(FTP 或HTTP安装).install命令和安装方法命令必须处于不同的行上.
 
cdrom
            从系统上的第一个光盘驱动器中安装.
 
harddrive
            从本地驱动器的vfat或ext2格式的红帽安装树来安装.
            --biospart=,从BIOS分区来安装(如82).
            --partition=,从分区安装(如sdb2).
            --dir=,包含安装树的variant目录的目录.
                    例如:harddrive --partition=hdb2 --dir=/tmp/install-tree
 
nfs
            从指定的NFS服务器安装.
                    --server=,要从中安装的服务器(主机名或IP).
                    --dir=,包含安装树的variant目录的目录.
                    --opts=,用于挂载NFS输出的Mount选项(可选).
                            例如:nfs --server=nfsserver.example.com --dir=/tmp/install-tree
 
url
            通过FTP或HTTP从远程服务器上的安装树中安装.
                    例如:url --url http://<server>/<dir>
                    或:url --url ftp://<username>:<password>@<server>/<dir>
 
ignore disk(可选)
            用来指定在分区,格式化和清除时anaconda不应该访问的磁盘.这个命令有一个必需的参数,就是用逗号隔开的需要忽略的驱动器列表.
            例如:ignoredisk --drives=[disk1,disk2,...]
 
interactive(可选)
            在安装过程中使用kickstart文件里提供的信息,但允许检查和修改给定的值.将遇到安装程序的每个屏幕以及kickstart文件里给出的值.通过点击"下一步"接受给定的值或是改变值后点击"下一步"继续.请参考autostep命令.
 
iscsi(可选)
            issci --ipaddr= [options].
            --target
            --port=
            --user=
            --password=
 
iscsiname(可选)
 
key(可选)
            指定安装密钥,它在软件包选择和获取支持时设别系统的时候是必需的.这个命令是红帽企业Linux-specific,它对Fedora来说没有意义并且会被忽略.
            --skip,跳过输入密钥.通常,如果没有key命令,anaconda将暂停并提示输入密钥.如果没有密钥或不想提供它,这个选项允许继续自动化安装.
 
keyboard(必需)
            设置系统键盘类型.这里是 i386,Itanium,和 Alpha 机器上可用键盘的列表:
            be-latin1, bg, br-abnt2, cf, cz-lat2, cz-us-qwertz, de, de-latin1,
            de-latin1-nodeadkeys, dk, dk-latin1, dvorak, es, et, fi, fi-latin1,
            fr, fr-latin0, fr-latin1, fr-pc, fr_CH, fr_CH-latin1, gr, hu, hu101,
            is-latin1, it, it-ibm, it2, jp106, la-latin1, mk-utf, no, no-latin1,
            pl, pt-latin1, ro_win, ru, ru-cp1251, ru-ms, ru1, ru2,  ru_win,
            se-latin1, sg, sg-latin1, sk-qwerty, slovene, speakup,  speakup-lt,
            sv-latin1, sg, sg-latin1, sk-querty, slovene, trq, ua,  uk, us, us-acentos
            文件/usr/lib/python2.2/site-packages/rhpl/keyboard_models.py 也包含这个列表而且是 rhpl 软件包的一部分.
 
lang(必需)
            设置在安装过程中使用的语言以及系统的缺省语言.例如,要把语言设置为英语,kickstart文件应该包含下面的一行:
            lang en_US
            文件/usr/share/system-config-language/locale-list里每一行的第一个字段提供了一个有效语言代码的列表,它是system-config-language软件包的一部分.
            文本模式的安装过程不支持某些语言(主要是中文,日语,韩文和印度的语言).如果用lang命令指定这些语言中的一种,安装过程仍然会使用英语,但是系统会缺省使用指定的语言.
 
langsupport(不赞成)
            langsupport关键字已经被取消而且使用它将导致屏幕出现错误信息及终止安装.作为代替,应该在kickstart文件里的%packages 部分列出所支持的语言的支持软件包组.例如,要支持法语,应该把下面的语句加入到
            %packages:
            @french-support
 
logvol(可选)
            使用以下语法来为逻辑卷管理(LVM)创建逻辑卷:
            logvol <mntpoint> --vgname=<name> --size=<size> --name=<name><options>
            这些选项如下所示:
            --noformat,使用一个现存的逻辑卷,不进行格式化.
            --useexisting,使用一个现存的逻辑卷,重新格式化它.
            --fstype=,为逻辑卷设置文件系统类型.合法值有:ext2,ext3,swap和vfat.
            --fsoptions=,为逻辑卷设置文件系统类型.合法值有:ext2,ext3,swap和vfat.
            --bytes-per-inode=,指定在逻辑卷上创建的文件系统的节点的大小.因为并不是所有的文件系统都支持这个选项,所以在其他情况下它都被忽略.
            --grow=,告诉逻辑卷使用所有可用空间(若有),或使用设置的最大值.
            --maxsize=,当逻辑卷被设置为可扩充时,以MB为单位的分区最大值.在这里指定一个整数值,不要在数字后加MB.
            --recommended=,自动决定逻辑卷的大小.
            --percent=,用卷组里可用空间的百分比来指定逻辑卷的大小.
            首先创建分区,然后创建逻辑卷组,再创建逻辑卷.
                    例如:
                    part pv.01 --size 3000
                    volgroup myvg pv.01
                    logvol / --vgname=myvg --size=2000 --name=rootvol
 
logging(可选)
            这个命令控制安装过程中anaconda的错误日志.它对安装好的系统没有影响.
            --host=,发送日志信息到给定的远程主机,这个主机必须运行配置为可接受远程日志的syslogd进程.
     --port=,如果远程的syslogd进程没有使用缺省端口,这个选项必须被指定.
            --level=,debug,info,warning,error或critical中的一个.
            指定tty3上显示的信息的最小级别.然而,无论这个级别怎么设置,所有的信息仍将发送到日志文件.
 
mediacheck(可选)
            如果指定的话,anaconda将在安装介质上运行mediacheck.这个命令只适用于交互式的安装,所以缺省是禁用的.
 
monitor(可选)
            如果monitor命令没有指定,anaconda将使用X来自动检测的显示器设置.请在手工配置显示器之前尝试这个命令.
            --hsync=,指定显示器的水平频率.
            --vsync=,指定显示器的垂直频率.
            --monitor=,使用指定的显示器;显示器的名字应该在hwdata软件包里的/usr/share/hwdata/MonitorsDB列表上.这个显示器的列表也可以在Kickstart Configurator的X配置屏幕上找到.如果提供了--hsync或--vsync,它将被忽略.如果没有提供显示器信息,安装程序将自动探测显示器.
            --noprobe=,不要试图探测显示器.
 
mouse(已取消)
            mouse 关键字已经被取消,使用它将导致屏幕出现错误信息并终止安装.
 
network(可选)
            为系统配置网络信息.如果 kickstart安装不要求联网(换句话说,不从NFS,HTTP或FTP安装),就不需要为系统配置网络.如果安装要求联网而kickstart文件里没有提供网络信息,安装程序会假定从eth0通过动态IP地址(BOOTP/DHCP)来安装,并配置安装完的系统动态决定IP地址.network选项为通过网络的kickstart安装以及所安装的系统配置联网信息.
            --bootproto=,dhcp,bootp或static中的一种,缺省值是dhcp.bootp和dhcp被认为是相同的.
                    static方法要求在kickstart文件里输入所有的网络信息.顾名思义,这些信息是静态的且在安装过程中和安装后所有.静态网络的设置行更为复杂,因为必须包括所有的网络配置信息.必须指定IP地址,网络,网关和命名服务器.
                    例如("\"表示连续的行):
                    network --bootproto=static --ip=10.0.2.15 --netmask=255.255.255.0 \
                    --gateway=10.0.2.254 --nameserver=10.0.2.1
                    如果使用静态方法,请注意以下两个限制:
                            所有静态联网配置信息都必须在一行上指定,不能使用反斜线来换行.
                            在这里只能够指定一个命名服务器.然而,如果需要的话,可以使用kickstart文件的%post段落来添加更多的命名服务器.
            --device=,用来选择用于安装的特定的以太设备.注意,除非kickstart文件是一个本地文件(如ks=floppy),否则--device=的使用是无效的.这是因为安装程序会配置网络来寻找kickstart文件.
                    例如: network --bootproto=dhcp --device=eth0
            --ip=,要安装的机器的IP地址.
            --gateway=,IP地址格式的默认网关.
            --nameserver=,主名称服务器,IP地址格式.
            --nodns,不要配置任何 DNS 服务器.
            --netmask=,安装的系统的子网掩码.
            --hostname=,安装的系统的主机名.
            --ethtool=,指定传给ethtool程序的网络设备的其他底层设置.
            --essid=,无线网络的网络ID.
            --wepkey=,无线网络的加密密钥.
            --onboot=,是否在引导时启用该设备.
            --class=,DHCP类型.
            --mtu=,该设备的MTU.
            --noipv4=,禁用此设备的IPv4.
            --noipv6=,禁用此设备的IPv6.
 
multipath(可选)
            multipath --name= --device= --rule=
 
part或partition(对于安装是必需的,升级可忽略).
            在系统上创建分区.
            如果不同分区里有多个红帽企业Linux系统,安装程序会提示用户升级哪个系统.
            警告:作为安装过程的一部分,所有被创建的分区都会被格式化,除非使用了--noformat和--onpart.
            <mntpoint>,<mntpoint>是分区的挂载点,它必须是下列形式中的一种:
                    /<path>,例如,/,/usr,/home
                    swap,该分区被用作交换空间,要自动决定交换分区的大小,使用--recommended选项.
                            swap --recommended
                            自动生成的交换分区的最小值大于系统内存的数量,但小于系统内存的两倍.
                    raid.<id>,该分区用于 software RAID(参考 raid).
                    pv.<id>,该分区用于 LVM(参考 logvol).
            --size=,以MB为单位的分区最小值.在此处指定一个整数值,如500.不要在数字后面加MB.
            --grow,告诉分区使用所有可用空间(若有),或使用设置的最大值.
            --maxsize=,当分区被设置为可扩充时,以MB为单位的分区最大值.在这里指定一个整数值,不要在数字后加MB.
            --noformat,用--onpart命令来告诉安装程序不要格式化分区.
            --onpart=或--usepart=,把分区放在已存在的设备上.
                    例如:partition /home --onpart=hda1,把/home置于必须已经存在的/dev/hda1上.
            --ondisk=或--ondrive=,强迫分区在指定磁盘上创建.
                    例如:--ondisk=sdb把分区置于系统的第二个SCSI磁盘上.
            --asprimary,强迫把分区分配为主分区,否则提示分区失败.
            --type=(用fstype代替),这个选项不再可用了.应该使用fstype.
            --fstype=,为分区设置文件系统类型.有效的类型为ext2,ext3,swap和vfat.
            --start=,指定分区的起始柱面,它要求用--ondisk=或ondrive=指定驱动器.它也要求用--end=指定结束柱面或用--size=指定分区大小.
            --end=,指定分区的结束柱面.它要求用--start=指定起始柱面.
            --bytes-per-inode=,指定此分区上创建的文件系统的节点大小.不是所有的文件系统都支持这个选项,所以在其他情况下它都被忽略.
            --recommended,自动决定分区的大小.
            --onbiosdisk,强迫在 BIOS 找到的特定磁盘上创建分区.
            注:如果因为某种原因分区失败了,虚拟终端3上会显示诊断信息.
 
poweroff(可选)
            在安装成功后关闭系统并断电.通常,在手工安装过程中,anaconda会显示一条信息并等待用户按任意键来重新启动系统.在kickstart的安装过程中,如果没有指定完成方法,将使用缺省的reboot选项.
 
raid(可选)
            组成软件RAID设备.该命令的格式是:
            raid <mntpoint> --level=<level> --device=<mddevice><partitions*>
            <mntpoint>,RAID文件系统被挂载的位置.如果是/,除非已经有引导分区存在(/boot),RAID级别必须是1.如果已经有引导分区,/boot分区必须是级别1且根分区(/)可以是任何可用的类型.<partitions*>(这表示可以有多个分区)列出了加入到RAID阵列的RAID标识符.
            --level=,要使用的RAID级别(0,1,或5).
            --device=,要使用的RAID设备的名称(如md0或md1).RAID设备的范围从md0直到md7,每个设备只能被使用一次.
            --bytes-per-inode=,指定RAID设备上创建的文件系统的节点大小.不是所有的文件系统都支持这个选项,所以对于那些文件系统它都会被忽略.
            --spares=,指定RAID阵列应该被指派N个备用驱动器.备用驱动器可以被用来在驱动器失败时重建阵列.
            --fstype=,为RAID阵列设置文件系统类型.合法值有:ext2,ext3,swap和vfat.
            --fsoptions=,指定当挂载文件系统时使用的free form字符串.这个字符串将被复制到系统的/etc/fstab文件里且应该用引号括起来.
            --noformat,使用现存的RAID设备,不要格式化RAID阵列.
            --useexisting,使用现存的RAID设备,重新格式化它.
 
reboot(可选)
            在成功完成安装(没有参数)后重新启动.通常,kickstart会显示信息并等待用户按任意键来重新启动系统.
 
repo(可选)
            配置用于软件包安装来源的额外的yum库.可以指定多个repo行.
            repo --name=<repoid> [--baseline=<url>| --mirrorlist=<url>]
            --name=,repo id.这个选项是必需的.
            --baseurl=,库的URL.这里不支持yum repo配置文件里使用的变量.可以使用它或者--mirrorlist,亦或两者都不使用.
            --mirrorlist=,指向库镜像的列表的URL.这里不支持yum repo配置文件里可能使用的变量.可以使用它或者--baseurl,亦或两者都不使用.
 
rootpw(必需)
            把系统的根口令设置为<password>参数.
            rootpw [--iscrypted] <password>
            --iscrypted,如果该选项存在,口令就会假定已被加密.
 
selinux(可选)
            在系统里设置SELinux状态.在anaconda里,SELinux缺省为enforcing.
            selinux [--disabled|--enforcing|--permissive]
            --enforcing,启用SELinux,实施缺省的targeted policy.
                    注:如果kickstart文件里没有selinux选项,SELinux将被启用并缺省设置为--enforcing.
            --permissive,输出基于SELinux策略的警告,但实际上不执行这个策略.
            --disabled,在系统里完全地禁用 SELinux.
 
services(可选)
            修改运行在缺省运行级别下的缺省的服务集.在disabled列表里列出的服务将在enabled列表里的服务启用之前被禁用.
            --disabled,禁用用逗号隔开的列表里的服务.
            --enabled,启用用逗号隔开的列表里的服务.
 
shutdown(可选)
            在成功完成安装后关闭系统.在kickstart安装过程中,如果没有指定完成方法,将使用缺省的reboot选项.
 
skipx(可选)
            如果存在,安装的系统上就不会配置X.
 
text(可选)
            在文本模式下执行kickstart安装. kickstart安装默认在图形模式下安装.
 
timezone(可选)
            把系统时区设置为<timezone>,它可以是timeconfig列出的任何时区.
            timezone [--utc] <timezone>
            --utc,如果存在,系统就会假定硬件时钟被设置为UTC(格林威治标准)时间.
 
upgrade(可选)
            告诉系统升级现有的系统而不是安装一个全新的系统.必须指定 cdrom,harddrive,nfs或url(对于FTP和HTTP而言)中的一个作为安装树的位置.详情请参考 install.
 
user(可选)
            在系统上创建新用户.
            user --name=<username> [--groups=<list>] [--homedir=<homedir>] [--password=<password>] [--iscrypted] [--shell=<shell>] [--uid=<uid>]
            --name=,提供用户的名字.这个选项是必需的.
            --groups=,除了缺省的组以外,用户应该属于的用逗号隔开的组的列表.
            --homedir=,用户的主目录.如果没有指定,缺省为/home/<username>.
            --password=,新用户的密码.如果没有指定,这个帐号将缺省被锁住.
            --iscrypted=,所提供的密码是否已经加密?
            --shell=,用户的登录shell.如果不提供,缺省为系统的缺省设置.
            --uid=,用户的UID.如果未提供,缺省为下一个可用的非系统 UID.
 
vnc(可选)
            允许通过VNC远程地查看图形化的安装.文本模式的安装通常更喜欢使用这个方法,因为在文本模式下有某些大小和语言的限制.如果为no,这个命令将启动不需要密码的VNC服务器并打印出需要用来连接远程机器的命令.
            vnc [--host=<hostname>] [--port=<port>] [--password=<password>]
            --host=,不启动VNC服务器,而是连接至给定主机上的VNC viewer进程.
            --port=,提供远程VNC viewer进程侦听的端口.如果不提供,anaconda将使用VNC的缺省端口.
            --password=,设置连接VNC会话必需的密码.这是可选的,但却是我们所推荐的选项.
 
volgroup(可选)
            用来创建逻辑卷管理(LVM)组,其语法格式为:
            volgroup <name><partition><options>
            这些选项如下所示:
            --noformat,使用一个现存的卷组,不要格式化它.
            --useexisting,使用一个现存的卷组,重新格式化它.
            --pesize=,设置物理分区(physical extent)的大小.
            首先创建分区,然后创建逻辑卷组,再创建逻辑卷.例如:
 
xconfig(可选)
            配置X Window 系统.如果没有指定这个选项且安装了X,用户必须在安装过程中手工配置X;如果最终系统里没有安装X,这个选项不应该被使用.
            --driver,指定用于视频硬件的 X 驱动.
            --videoram=,指定显卡的显存数量.
            --defaultdesktop=,指定GNOME或KDE作为缺省的桌面(假设已经通过%packages安装了GNOME或KDE桌面环境).
            --startxonboot,在安装的系统上使用图形化登录.
            --resolution=,指定安装的系统上X窗口系统的默认分辨率.有效值有:640x480,800x600,1024x768,1152x864, 1280x1024,1400x1050,1600x1200.请确定指定与视频卡和显示器兼容的分辨率.
            --depth=,指定安装的系统上的 X 窗口系统的默认色彩深度.有效值有:8,16,24,和 32.请确定指定与视频卡和显示器兼容的色彩深度.
 
zerombr(可选)
            如果指定了zerombr且yes是它的唯一参数,任何磁盘上的无效分区表都将被初始化.这会毁坏有无效分区表的磁盘上的所有内容.这个命令的格式应该如下:
            zerombr yes
            其它格式均无效.
 
zfcp(可选)
            zfcp [--devnum=<devnum>] [--fcplun=<fcplun>] [--scsiid=<scsiid>] [--scsilun=<scsilun>] [--wwpn=<wwpn>]
 
    %include
            使用 %include/path/to/file命令可以把其他文件的内容包含在kickstart文件里,就好像这些内容出现在kickstart文件的%include命令后一样.

3、编写centos7_server_ks.cfg文件

grep -Ev '^$|#' /var/www/html/ks/centos7_server_ks.cfg
install
auth --enableshadow --passalgo=sha512
url --url=http://192.168.100.100/os7
text
firstboot --disabled
selinux --disabled
reboot
ignoredisk --only-use=sda
keyboard --vckeymap=cn --xlayouts='cn'
lang zh_CN.UTF-8
network --bootproto=dhcp --device=ens33   --noipv6 --activate
network  --hostname=localhost.localdomain
rootpw --plaintext 086530
services --enabled="chronyd"
timezone Asia/Shanghai --isUtc
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
zerombr
clearpart --all --initlabel
part /boot --fstype="xfs" --ondisk=sda --size=2048
part pv.252 --fstype="lvmpv" --ondisk=sda --grow 
volgroup centos --pesize=4096 pv.252
logvol swap  --fstype="swap" --size=2048 --name=swap --vgname=centos
logvol /  --fstype="xfs" --grow --size=100 --name=root --vgname=centos
%packages
@^infrastructure-server-environment
@base
@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
%post --interpreter=/bin/bash
wget -O /etc/profile http://192.168.100.100/file/centos7/profile
wget -O /etc/vimrc http://192.168.100.100/file/centos7/vimrc
%end

4、编写centos7_minimal_ks.cfg文件

grep -Ev '^$|#' /var/www/html/ks/centos7_minimal_ks.cfg 
install
auth --enableshadow --passalgo=sha512
url --url=http://192.168.100.100/os7
text
firstboot --disabled
selinux --disabled
reboot
ignoredisk --only-use=sda
keyboard --vckeymap=cn --xlayouts='cn'
lang zh_CN.UTF-8
network --bootproto=dhcp --device=ens33 --noipv6  --activate
network  --hostname=localhost.localdomain
rootpw --plaintext 086530
services --enabled="chronyd"
timezone Asia/Shanghai --isUtc
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
zerombr
clearpart --all --initlabel
part /boot --fstype="xfs" --ondisk=sda --size=2048
part pv.252 --fstype="lvmpv" --ondisk=sda --grow 
volgroup centos --pesize=4096 pv.252
logvol swap  --fstype="swap" --size=2048 --name=swap --vgname=centos
logvol /  --fstype="xfs" --grow --size=100 --name=root --vgname=centos
%packages
@^minimal
@core
chrony
wget
ntpdate
vim
%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
%post --interpreter=/bin/bash
yum  install -y kexec-tools
wget -O /etc/profile http://192.168.100.100/file/centos7/profile
wget -O /etc/vimrc http://192.168.100.100/file/centos7/vimrc
%end

5、编写centos7_desktop_ks.cfg文件

grep -Ev '^$|#' /var/www/html/ks/centos7_desktop_ks.cfg 
install
auth --enableshadow --passalgo=sha512
url --url=http://192.168.100.100/os7
text
firstboot --disabled
selinux --disabled
reboot
ignoredisk --only-use=sda
keyboard --vckeymap=cn --xlayouts='cn'
lang zh_CN.UTF-8
network --bootproto=dhcp --device=ens33 --noipv6  --activate
network  --hostname=localhost.localdomain
rootpw --plaintext 086530
services --enabled="chronyd"
xconfig  --startxonboot
timezone Asia/Shanghai --isUtc
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
zerombr
clearpart --all --initlabel
part /boot --fstype="xfs" --ondisk=sda --size=2048
part pv.252 --fstype="lvmpv" --ondisk=sda --grow 
volgroup centos --pesize=4096 pv.252
logvol swap  --fstype="swap" --size=2048 --name=swap --vgname=centos
logvol /  --fstype="xfs" --grow --size=100 --name=root --vgname=centos
%packages
@^gnome-desktop-environment
@base
@core
@desktop-debugging
@dial-up
@directory-client
@fonts
@gnome-desktop
@guest-agents
@guest-desktop-agents
@input-methods
@internet-browser
@java-platform
@multimedia
@network-file-system-client
@networkmanager-submodules
@print-client
@x11
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
%post --interpreter=/bin/bash
wget -O /etc/profile http://192.168.100.100/file/centos7/profile
wget -O /etc/vimrc http://192.168.100.100/file/centos7/vimrc
%end

6、编写centos8_server_ks.cfg文件

grep -Ev '^$|#' /var/www/html/ks/centos8_server_ks.cfg 
text
reboot
url --url=http://192.168.100.100/os8/BaseOS
repo --name="New_Repository_1" --baseurl=http://192.168.100.100/os8/AppStream
%packages
@^server-product-environment
kexec-tools
%end
keyboard --xlayouts='cn'
lang zh_CN.UTF-8
network --bootproto=dhcp --device=ens160 --ipv6=auto  --activate
network  --hostname=localhost.localdomain
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
firstboot --enable
ignoredisk --only-use=sda
zerombr
clearpart --all --initlabel
part /boot --fstype="xfs" --ondisk=sda --size=2048
part pv.252 --fstype="lvmpv" --ondisk=sda --grow
volgroup cs --pesize=4096 pv.252
logvol swap --fstype="swap" --size=2048 --name=swap --vgname=cs
logvol / --fstype="xfs" --grow --size=1 --name=root --vgname=cs
timezone Asia/Shanghai --isUtc
selinux --disabled
rootpw --iscrypted $6$gwz4uMOrvDVDfwJb$O/li8W.xRlB7Q2gw7MtmPragc0k/P0yWItbPEj/QUlTEPS4X.Lo9l498gy28Ne6P5F95uVESENQL4aYl3sTfY0
%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
%post --interpreter=/bin/bash
wget -O /etc/profile http://192.168.100.100/file/centos8/profile
wget -O /etc/vimrc http://192.168.100.100/file/centos8/vimrc
%end

7、编写centos8_minimal_ks.cfg文件

grep -Ev '^$|#' /var/www/html/ks/centos8_minimal_ks.cfg 
text
reboot
url --url=http://192.168.100.100/os8/BaseOS
repo --name="New_Repository_1" --baseurl=http://192.168.100.100/os8/AppStream
%packages
@^minimal-environment
kexec-tools
wget
vim
%end
keyboard --xlayouts='cn'
lang zh_CN.UTF-8
network  --bootproto=dhcp --device=ens192 --onboot=off --ipv6=auto
network  --hostname=localhost.localdomain
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
firstboot --enable
ignoredisk --only-use=sda
zerombr
clearpart --all --initlabel
part /boot --fstype="xfs" --ondisk=sda --size=2048
part pv.252 --fstype="lvmpv" --ondisk=sda --grow
volgroup cs --pesize=4096 pv.252
logvol swap --fstype="swap" --size=2048 --name=swap --vgname=cs
logvol / --fstype="xfs" --grow --size=1 --name=root --vgname=cs
timezone Asia/Shanghai --isUtc
selinux --disabled
rootpw --iscrypted $6$gwz4uMOrvDVDfwJb$O/li8W.xRlB7Q2gw7MtmPragc0k/P0yWItbPEj/QUlTEPS4X.Lo9l498gy28Ne6P5F95uVESENQL4aYl3sTfY0
%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
%post --interpreter=/bin/bash
wget -O /etc/profile http://192.168.100.100/file/centos8/profile
wget -O /etc/vimrc http://192.168.100.100/file/centos8/vimrc
%end

8、编写centos8_desktop_ks.cfg文件

grep -Ev '^$|#' /var/www/html/ks/centos8_desktop_ks.cfg 
text
reboot
url --url=http://192.168.100.100/os8/BaseOS
repo --name="New_Repository_1" --baseurl=http://192.168.100.100/os8/AppStream
%packages
@^graphical-server-environment
kexec-tools
%end
keyboard --xlayouts='cn'
lang zh_CN.UTF-8
network --bootproto=dhcp --device=ens160 --nameserver= --ipv6=auto --activate
network  --hostname=localhost.localdomain
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
firstboot --enable
ignoredisk --only-use=sda
zerombr
clearpart --all --initlabel
part /boot --fstype="xfs" --ondisk=sda --size=2048
part pv.252 --fstype="lvmpv" --ondisk=sda --grow
volgroup cs --pesize=4096 pv.252
logvol swap --fstype="swap" --size=2048 --name=swap --vgname=cs
logvol / --fstype="xfs" --grow --size=1 --name=root --vgname=cs
timezone Asia/Shanghai --isUtc
selinux --disabled
rootpw --iscrypted $6$gwz4uMOrvDVDfwJb$O/li8W.xRlB7Q2gw7MtmPragc0k/P0yWItbPEj/QUlTEPS4X.Lo9l498gy28Ne6P5F95uVESENQL4aYl3sTfY0
%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
%post --interpreter=/bin/bash
systemctl set-default graphical.target
wget -O /etc/profile http://192.168.100.100/file/centos8/profile
wget -O /etc/vimrc http://192.168.100.100/file/centos8/vimrc
%end

 九、测试安装

1、创建虚拟机

新建虚拟机——选择自定义(高级)

下一步

下一步

下一步(在选择客户机操作系统——版本这里选择centos7和centos8都行)

下一步(虚拟机名称和存放位置可自定义)

下一步处理器配置(安装7和8的系统建议CPU最少2核)

下一步虚拟机内存配置(建议内存最少为2G,如果安装桌面版的最好设为4G)

下一步设置网络类型(需根据自己的虚拟机网络进行配置,我这里是NAT模式)

下一步选择I/O控制器类型

下一步选择磁盘类型

注意:不管前面选择的客户机操作系统是centos7还是centos8,磁盘类型都统一选择SCSI;

原因:由于我电脑是M.2 SSD硬盘在选择操作系统版本那里选择centos8时,磁盘类型默认推荐的是NVMe,而NVMe类型的硬盘在虚拟机系统中的盘符标识不是sda这样的而是nvme0n1这样的标识,这样就会导致安装完centos7时再重装centos8系统时会提示找不到硬盘;为了创建的这个虚拟机在安装完centos7时还可以再安装centos8,所以ks文件中的硬盘统一设置为了sda,这样就可以在这个虚拟机中反复安装centos7和8的系统了。

下一步创建虚拟磁盘

下一步设置硬盘大小

下一步指定磁盘文件

下一步点击完成即可

2、测试安装系统

启动刚创建的虚拟机,开机后会自动获取dhcp并跳转到安装系统的界面

选择系统进行安装

获取ks文件后会自动安装

十、关于使用pxe自动安装centos8桌面版后重启出现的license information(license not accepted)授权问题说明

在安装centos8桌面版系统时,安装完成后重启会出现license information(license not accepted)的提示,这是由于centos8桌面版系统在安装完后有一个初始化的页面信息需要授权许可证导致的

输入1进入许可证信息,再输入2我接受许可协议,输入c继续,此时会出现license information(license accepted),然后输入c继续,就可以进入系统了

 

但进入的不是桌面系统

如果想要进入桌面系统需要登录进去执行systemctl set-default graphical.target命令设为从图形界面启动,最后重启系统,重启完成后就可以进入桌面配置了,根据提示创建一个普通用户并设置密码就可以进到桌面了

 

 

如果觉得麻烦不想在文本界面配置许可信息,可以使用下面的方法到图形界面进行解决(方法有2种):

1、在ks文件最后面的安装完成后执行脚本步骤中添加systemctl set-default graphical.target设置为从图形界面启动,这样在安装完系统重启后会自动进入许可信息界面进行配置授权许可证

 

2、把ks文件中的指定界面安装text改为graphical图形化界面安装,这样在图形化界面自动安装系统重启后会出现初始化界面让你手动确认

之后点击许可信息跳转到许可界面勾选我同意许可协议点击完成

最后点击右下角的结束配置会自动重启进入系统进行桌面配置

在桌面配置根据引导创建一个普通用户并设置密码就可以进入桌面了

 

posted @ 2023-10-05 00:07  我的城市没有海  阅读(914)  评论(0)    收藏  举报