1. 什么是kickstart安装?
kickstart是RedHat/CentOS/Fedora等系统实现无人值守自动化安装的一种安装方式,系统管理员可将安装过程中需要配置的所有参数集成于一个kickstart文件中,而后在系统安装时,安装程序通过读取事先给定的这个kickstart文件自动化地完成配置并安装完成。
anaconda的配置方式有以下两种:
(1)交互式配置;
(2)通过读取事先给定的配置文件事先自动完成配置,这个配置文件就是kickstart文件,它遵循特定的语法格式。
在前面一篇博客--《CentOS系统安装(上):图形/文本界面安装》已经介绍了使用anaconda应用程序来实现交互式安装CentOS系统,接下来要介绍的是通过kickstart这个配置文件来实现无人值守安装系统。在介绍之前需要先了解一下anaconda程序的安装引导选项。
2. anaconda安装引导选项
anaconda的安装引导选项可在boot界面(即bootloader引导时的菜单界面)由用户给定,由bootloader传递把参数传递给内核,再由内核把参数传递给anaconda应用程序;也可以直接在bootloader的配置文件中写入参数直接传递给内核,以光盘引导为例,可以在isolinux/isolinux.cfg配置文件中通过"append"的方式把参数追加给label中定义的内核。
anaconda的安装引导选项有:
text:文本安装方式;
method:手动指定使用的安装方法;
与网络相关的引导选项:安装时的网络属性配置;
ip=IPADDR:安装时的ip地址;
netmask=MASK:子网掩码;
gateway=GW:默认网关;
dns=DNS_SERVER_IP:安装过程需要解析主机名时会用到;
ifname=NAME:MAC_ADDR:指定以上网络属性配置应用于哪个网络接口之上;
远程访问功能相关的引导选项:
vnc:可以让远程用户帮助配置各个安装选项;
vncpassword:设置vnc密码;
指明kickstart文件的位置:
ks=
需要注意的是,kickstart文件可以来自光盘(镜像)、硬盘或网络,因此其指定方式各有不同。
光盘:
ks=cdrom:/PATH/TO/KICKSTART_FILE
硬盘:
ks=hd:/DEVICE/PATH/TO/KICKSTART_FILE
网络:
HTTP服务器:ks=http://HOST[:PORT]/PATH/TO/KICKSTART_FILE
HTTPS服务器:ks=https://HOST[:PORT]/PATH/TO/KICKSTART_FILE
FTP服务器:ks=ftp://HOST[:PORT]/PATH/TO/KICKSTART_FILE
3. kickstart文件的格式
(1)命令段
(2)程序包段
(3)脚本段
(1)命令段:
作用:指定各种安装前的配置选项,如键盘类型等。
选项类型:必备命令+可选命令
必备命令:
authconfig:认证方式配置
示例: authconfig--enableshadow--passalgo=sha512
bootloader:定义bootloader的安装位置及相关配置
示例: bootloader--location=mbr--driveorder=sda--append="crashkernel=autorhgbquiet"
keyboard:设置键盘类型
示例: keyboardus
lang:设置语言类型
示例: langen_US.UTF-8
part:分区布局
示例: part/boot--fstype=ext4--size=500 partpv.008002--grow--size=1
分区相关的其他命令:
clearpart:清除分区
示例: clearpart--none--drives=sda
volgroup:创建卷组
示例: volgroupVolGroup--pesize=4096pv.008002
logvol:创建逻辑卷
示例: logvol/--fstype=ext4--name=lv_root--vgname=VolGroup--grow--size=1024--maxsize=5120 0
rootpw:设置管理员密码
示例: rootpw--iscrypted$6$2V70fZkSFMrqldev$Qf950j2Ip5vxhEoOmlZgKHnySkBBMA6T5tBQz5jPiAurItpei 663xVkRfrdWZPESgQu33q3E.CShfkY4MCtjK. 生成加密密码的方式: ~]#opensslpasswd-1-salt`opensslrand-hex4`
timezone:时区
示例: timezoneAsia/Shanghai
可选命令:
install或upgrade:安装或升级
text:安装界面类型,text为TUI,默认为GUI
network:配置网络接口
示例: network--onbootyes--deviceeth0--bootprotodhcp--noipv6
firewall:防火墙
示例: firewall--disabled
selinux:SELinux
示例: selinux--disabled
halt、poweroff或reboot:定义安装完成之后的行为,如关机、重启
user:安装完成后为系统创建新用户
repo:指明安装时使用的repository(安装源)
示例: repo--name="CentOS"--baseurl=cdrom:sr0--cost=100
url:指明安装时使用的repository(安装源),但为url格式
示例: url--url=http://172.16.0.1/cobbler/ks_mirror/CentOS-6.7-x86_64/ 注意:要配置好相关网络属性,例如局域网通信需要ip和netmask,如果要访问互联网还需要gateway 和dns。
(2)程序包段
作用:指定要安装的程序包、包组以及不安装的程序包。
表示方式:
%packages:程序包段的开始;
@group_name:要安装的包组;
package:要安装的程序包;
-package:不安装的程序包;
%end:程序包段的结束;
需要注意的是,如果一个程序包被其他指定要安装的程序包所依赖,那么就算指明该程序不安装,系统也会自动安装这个程序包。
(3)脚本段
包括安装前要执行的脚本和安装后要执行的脚本。
①安装前要执行的脚本:%pre
脚本格式:
%pre ... %end
运行环境:运行于安装介质上的微型Linux系统环境。
②安装后要执行的脚本:%post
脚本格式:
%post ... %end
运行环境:安装完成后的系统。
4. 制作kickstart文件的方式
(1)直接手动编辑,可以依据某个模板来进行修改;
(2)使用kickstart文件创建工具:system-config-kickstart进行配置,同样可以导入某个模板并修改之。
这里介绍使用kickstart文件创建工具:system-config-kickstart来定制kickstart:
首选确保system-config-kickstart已经安装,如果没有安装可以使用yum安装:
[root@localhost~]#rpm-qsystem-config-kickstart system-config-kickstart-2.8.6.6-1.el6.noarch//显示已安装;
在命令行上运行system-config-kickstart命令即可启动窗口界面:
[root@localhost~]#system-config-kickstart&
打开窗口如图:
这里直接进行配置(不使用模板),首先完成基本配置(如图),这里可设置语言类型、键盘类型、时区、管理员密码(加密)以及安装的平台类型等选项:
选择安装方式,这里通过网易镜像网站(mirrors.163.com)安装程序包:
选择安装类型、MBR的安装位置以及向内核传递的参数等:
设置分区信息:
网卡配置,可以静态指定也可以使用dhcp动态获取网络属性配置:
认证方式配置:
设定是否开启防火墙和selinux功能:
设定是否安装图形界面:
选定要安装的程序包:
安装前要执行的脚本,注意运行环境是安装介质之上的微型Linux系统环境:
安装后要执行的脚本:
完成配置之后进行保存:
指定保存目录:
使用ls查看:
[root@localhost~]#ls-1 anaconda-ks.cfg Desktop Documents Downloads ks.cfg//此文件即为kickstart文件; Music ...(以下省略)...
可用ksvalidator命令检查kickstart文件语法错误:
[root@localhost~]#ksvalidatorks.cfg [root@localhost~]#//没有任何信息显示,说明语法无错误;
一般直接手动编辑kickstart文件方式比较需要使用ksvalidator检查语法错误。
5. 制作引导镜像
在上一篇博客中提到过,一般bootloader、Kernel及initrd等文件由安装系统的引导设备提供,例如通过光盘、U盘或网络引导;后续的anaconda及其安装用到的程序包可以来自程序包仓库,此仓库可以为本地光盘、本地硬盘、ftp/http/https/nfs服务器上的yum仓库等。
如果要实现自动化安装则还需要kickstart文件,kickstart文件同样可以来自本地光盘、本地硬盘、ftp/http/https/nfs服务器等。本次实验中,采用将bootloader、Kernel、initrd及kickstart文件制作成光盘镜像方式以实现本地光盘镜像引导安装CentOS系统,其中anaconda应用程序位于initrd提供的rootfs中。而后续安装用到的程序包来自网易镜像站点(mirrors.163.com),刚才在制作kickstart文件时已经手动指定。
制作引导镜像步骤:
[root@localhost~]#mkdirmyboot
(2)查看光盘是否已挂载:
[root@localhost~]#df Filesystem1K-blocksUsedAvailableUse%Mountedon /dev/mapper/VolGroup-lv_root 366137203115284316318929%/ tmpfs9531402249529161%/dev/shm /dev/sda1487652406584213949%/boot /dev/sr0382448438244840100%/media/cdrom //最后一行是光盘镜像的挂载信息,说明已经挂载;
(3)将光盘中的isolinux目录复制到刚才创建的myboot目录,同时也把刚才制作的kickstart文件复制进myboot目录:
[root@localhost~]#cp-r/media/cdrom/isolinux./myboot [root@localhost~]#cpks.cfg./myboot
(4)因为原有光盘镜像是只读挂载的,因此复制过来的文件均只有只读权限,需要先将之修改为可写权限:
[root@localhost~]#cd./myboot/isolinux/ [root@localhostisolinux]#ll total44436 -r--r--r--.1rootroot2048Mar513:12boot.cat -r--r--r--.1rootroot84Mar513:12boot.msg -r--r--r--.1rootroot321Mar513:12grub.conf -r--r--r--.1rootroot40688737Mar513:12initrd.img -r--r--r--.1rootroot24576Mar513:12isolinux.bin -r--r--r--.1rootroot923Mar513:12isolinux.cfg -r--r--r--.1rootroot183012Mar513:12memtest -r--r--r--.1rootroot151230Mar513:12splash.jpg -r--r--r--.1rootroot2215Mar513:12TRANS.TBL -r--r--r--.1rootroot163728Mar513:12vesamenu.c32 -r-xr-xr-x.1rootroot4264528Mar513:12vmlinuz [root@localhostisolinux]#chmodu+w* [root@localhostisolinux]#ll total44436 -rw-r--r--.1rootroot2048Mar513:12boot.cat -rw-r--r--.1rootroot84Mar513:12boot.msg -rw-r--r--.1rootroot321Mar513:12grub.conf -rw-r--r--.1rootroot40688737Mar513:12initrd.img -rw-r--r--.1rootroot24576Mar513:12isolinux.bin -rw-r--r--.1rootroot923Mar513:12isolinux.cfg -rw-r--r--.1rootroot183012Mar513:12memtest -rw-r--r--.1rootroot151230Mar513:12splash.jpg -rw-r--r--.1rootroot2215Mar513:12TRANS.TBL -rw-r--r--.1rootroot163728Mar513:12vesamenu.c32 -rwxr-xr-x.1rootroot4264528Mar513:12vmlinuz
(5)修改myboot/isolinux/isolinux.cfg配置文件,向默认启动的label所定义的内核传递参数,执行kickstart文件的存放位置:
[root@localhostisolinux]#vimisolinux.cfg
注意:无论kickstart文件是存放在待制作的光盘镜像中的哪个路径下,都可以在此处通过向内核追加参数的方式指明kickstart文件位置。
(5)为了节约等待光盘镜像引导安装时的时间,可修改default参数:
(6)到此为此所有的准备工作已经完成,接下来需要退出myboot目录,并为myboot目录及其目录中的所有文件制作成光盘引导镜像,而myboot目录作为光盘镜像中的根目录:
[root@localhost~]#mkisofs-R-J-T-v--no-emul-boot--boot-load-size4--boot-info-tabl e-V"CentOS6x86_64boot"-cisolinux/boot.cat-bisolinux/isolinux.bin-o/root/boot.iso ./myboot/
创建光盘镜像的命令稍微有点复杂,这里给其中的一部分做出说明:
"CentOS6x86_64boot"//光盘卷标; isolinux/boot.cat//MBR中的bootloader; isolinux/isolinux.bin//bootloader的第二阶段; /root/boot.iso//指定存放在哪里,并命名之; ./myboot///指定某个目录为“根”创建光盘镜像;
(7)创建完成之后使用ls查看:
[root@localhost~]#ls-1 anaconda-ks.cfg boot.iso//这就是刚刚创建的光盘镜像文件! Desktop Documents Downloads ks.cfg Music myboot myboot1 Pictures Public Templates Videos
(8)在远程终端软件Xshell上新建文件传输,把CentOS上的引导镜像boot.iso拷贝至Windows系统桌面上:
可直接拖拽过去。
然后就可以在Windows桌面上看到这个镜像文件了。
(9)接着创建新的虚拟机,将其引导设备指明为boot.iso镜像,然后点击启动即可实现自动安装:
接下来的自动安装过程:
说明:
CentOS开始安装时,由光盘镜像上的bootloader引导加载内核,第二阶段的bootloader(isolinux.bin)会去读取配置文件isolinux.cfg并把其中的initrd、ks等参数传递给内核,内核再传递给anaconda程序,由于在安装过程中使用dhcp协议动态获取ip/netmask、gateway及dns等网络属性配置,因此在后续的程序包安装过程中主机能访问互联网上的资源(本实验中kickstart文件指明在网易镜像站点上下载安装程序包)。