anaconda系统安装&kickstart文件
1. 系统安装程序anaconda
- bootloader --> kernel(initrd(rootfs)) --> anaconda
- anaconda:
- tui:基于cureses的文本配置窗口
- gui:图形界面
2. CentOS安装的启动流程
2.1 第一阶段:MBR:boot.cat
- 在光盘的MBR当中,装载是其实是boot.cat文件,它是光盘上的引导加载器
- 这个文件的位置在光盘上:isolinux/boot.cat
- isolinxu/boot.msg是MBR加载之后显示的消息
2.2 第二阶段:isolinux/isolinux.bin
- 提供配置菜单的是:isolinux/isolinux.bin
- 配置文件:isolinux/isolinux.cfg(这个配置文件在安装系统的光盘中),它就是isolinux/isolinux.bin的配置文件
- 配置文件解释:
label linux # 每个菜单由label来标识 menu label ^Install or upgrade an existing system # menu label是显示在菜单中的信息 menu default # 指定默认启动项 kernel vmlinuz # 加载内核,这里的路径是isolinux/vmlinux append initrd=initrd.img # 向内核传递参数,告诉内核谁是initrd label vesa menu label Install system with ^basic video driver kernel vmlinuz append initrd=initrd.img xdriver=vesa nomodeset label rescue menu label ^Rescue installed system kernel vmlinuz append initrd=initrd.img rescue label local menu label Boot from ^local drive localboot 0xffff
装载根文件系统,并启动anaconda应用程序(可以认为initrd自带anaconda程序)
- 这个所谓的根文件系统就在initrd.img文件中
- 默认界面是图形界面:需要512MB+内存空间
- 若需要显示指定启用tui接口:向启动内核传递一个参数“text”即可
- 按ESC键,(敲Tab键可以对其进行修改)
- 如果想调用某个label,就可以在boot后面输入这个label的名称,比如上面配置文件中的linux、secure、vesa、local
- 如果想在配置中的append后面再添加一个参数,可以在输入的label的后面再加上参数,例如:boot:linux text,就添加了一个text参数
- boot:linux text
特别注意:
- 上述内容一般位于引导设备,例如可通过光盘、U盘或网络等
- 后续的anacona及其安装用到的程序包等可以来自于程序包仓库,
- 此仓库的位置可以为:本地光盘、本地硬盘、ftp server、http server、nfs server
- 如果想手动指定安装仓库:
- 按下ESC键后:
- boot:linux method
- 可以直接定义IP地址,直接激活本地网卡:
- boot:linux method ip=172.16.100.57 netmask=255.255.255.0 gateway=172.16.0.1 dns=172.16.0.1
- 或者:boot:linux method ip=172.16.100.57 netmask=255.255.255.0
- (如果安装过程不需要与互联网进行交互,就可以不指定网关和DNS地址)
- 按下ESC键后:
3. anaconda的工作过程&配置方式
3.1 安装前配置阶段
- 安装过程使用的语言
- 键盘类型
- 安装目标存储设备
- Basic Storage:本地磁盘
- Special Storage:iSCSI
- 设定主机名
- 配置网络接口
- 时区
- 管理员密码
- 设定分区方式及MBR的安装位置
- 创建一个普通用户
- 选定要安装的程序包
3.2 安装阶段
- 在目标磁盘创建分区并执行格式化
- 将选定的程序包安装至目标位置
- 安装bootloader
3.3 首次启动
- iptables
- selinux
- core dump
3.4 anaconda的配置方式
- 交互式配置方式(就是安装系统时的交互式图形选项)
- 支持通过读取配置文件中事先定义好的配置项自动完成配置,遵循特定的语法格式,此文件即为kickstart文件
4. 安装引导选项
boot:(在boot命令提示符下可以键入的选项)
4.1text
text:文本安装方式
4.2 method
method:手动指定使用的安装方法(以空格分隔各个选项)
- 与网络相关的引导选项:
- ip=IPADDR
- netmask=MASK
- gateway=GW
- dns=DNS_SERVER_IP
- 与远程访问功能相关的的引导选项
- vnc
- vncpassword='PASSWORD'
- 启用紧急救援模式
- rescue
- 装载额外驱动:
- dd
- 安装引导选项:
- ks:指明kickstart文件的位置
- ks= DVD drive: ks=cdrom:/PATH/TO/KICKSTART_FILE
- Hard Drive: ks=hd:/DEVICE/PATH/TO/KICKSTART_FILE
- HTTP Server: ks=http://HOST[:PORT]/PATH/TO/KICKSTART_FILE
- FTP Server: ks=ftp://HOST[:PORT]/PATH/TO/KICKSTART_FILE
- HTTPS Server: ks=https://HOST[:PORT]/PATH/TO/KICKSTART_FILE
5. anaconda的kickstart文件
5.1 kickstart文件格式
1)文件位置:~/anaconda-ks.cfg
2)命令段:指定各种安装前配置选项,如键盘类型等(在%packages之前的内容都叫命令段)
- 必备命令
- 可选命令
3)程序包段:指明要安装程序包,以及包组,也包括不安装的程序包
- %packages 指明程序包段开始
- @group_name 安装一个包组
- package 安装单个程序包
- -package 不安装的程序包
- %end %package到%end间的内容就是要安装的
4)脚本段
- %pre:安装前脚本
- 运行环境:运行安装介质上的微型Linux系统环境
- %post:安装后脚本
- 运行环境:安装完成的系统
5)配置文件示例
# Kickstart file automatically generated by anaconda. #version=DEVEL install cdrom lang zh_CN.UTF-8 keyboard us network --onboot no --device eth0 --bootproto dhcp --noipv6 rootpw --iscrypted $6$LL3LTfFFChq/4dQtFYDHsuhB.ob0sCYHkqe.6.EH0 firewall --service=ssh authconfig --enableshadow --passalgo=sha512 selinux --enforcing timezone --utc Asia/Shanghai bootloader --location=mbr --driveorder=sda --append="nomodeset crashkernel=auto rhgb quiet" # The following is the partition information you requested # Note that any partitions you deleted are not expressed # here so unless you clear all partitions first, this is # not guaranteed to work #clearpart --none --drives=sda #volgroup VolGroup --pesize=4096 pv.008002 #logvol / --fstype=ext4 --name=lv_root --vgname=VolGroup --grow --size=1024 --maxsize=51200 #logvol swap --name=lv_swap --vgname=VolGroup --grow --size=960 --maxsize=960 #part /boot --fstype=ext4 --size=500 #part pv.008002 --grow --size=1 repo --name="CentOS" --baseurl=cdrom:sr0 --cost=100 %packages --nobase @core
5.2 kickstart文件命令段必备命令
1)authconfig:认证方式配置,跟用户登录操作系统的认证相关
- 使用:authconfig --enableshadow --passalgo=sha512
- 说明:基于shadow文件做认证,并且密码的加密算法是sha512
2)bootloader:定义bootloader的安装位置及相关配置
- 使用:bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
- 说明:放在mbr中,磁盘次序优先装在sda上,append表示补充几个内核参数,附加在bootloader的配置文件指定当前系统内核选项的后面
3)keyboard:设置键盘类型
- 使用:keyboard us
- 说明:指定键盘类型为美式英语键盘
4)lang:语言类型
- 使用:lang zh_CN.UTF-8
- 说明:系统安装完后选择哪种语言
5)part:分区布局及分区使用方式
- 使用1:part /boot --fstype=ext4 --size=500
- 说明:指明创建一个分区放在/boot目录,文件系统是ext4格式,大小为500M(默认大小为MB)
- 使用2:part pv.008002 --size=51200
- 说明:这里的pv.xxx表示的是创建一个物理卷,点后面表示的是它的ID
6)rootpw:管理员密码
- 使用:rootpw --iscrypted $6$4Yh15kMGDWO.......7Uffod1ZbE0s.
- 说明:iscrypted后面接的是以md5加密后的字符串(还加了盐)
7)timezone:时区
- 使用:timezone Asia/Shanghai
- 说明:指定时区为上海
8)补充:分区相关的其他指令
- clearpart:清除分区
- clearpart --none --drivers=sda
- 说明:清空磁盘分区
- volgroup:创建卷组
- volgroup myvg --pesize=4096 pv.00802
- 说明:这里的pv后面的id要跟之前创建的pv的id对应上
- logvol:创建逻辑卷
- logvol /home --fstype=ext4 --name=lv_home --vgname=myvg --size=5120
- 说明:逻辑卷挂载的位置,文件系统的类型,逻辑卷的名称,在哪个卷组中创建,逻辑卷的大小
- 生成加密密码的方式:
- openssl passwd -1 -salt `openssl rand -hex 4`
- 说明:-1表示使用md5加密
9)定制kickstart文件:(需要有图形化环境)
- yum install system-config-kickstart
- system-config-kickstart
- 检查语法错误:
- ksvalidator
5.3 kickstart文件命令段可选命令
1)install OR upgrade:安装或升级
2)text:安装界面类型,text为tui,默认为GUI
3)network:配置网络接口
- network --onboot yes --device eth0 --bootproto dhcp --noipv6
4)firewall:防火墙
- firewall --disabled
5)selinux:SElinux
- selinux --disabled
6)halt、poweroff或reboot:安装完成之后的行为
7)repo:指明安装时使用的repository(指明安装时使用的安装仓库)
- repo --name="CentOS" --baseurl=cdrom:sr0 --cost=100
8)url:指明安装时使用的repository,但为url格式
- url --url=http://172.16.0.1/cobbler/ks_mirror/CentOS-6.7-x86_64/
9)系统安装完成之后禁用防火墙:
- CentOS 6:
- # service iptables stop
- # chkconfig iptables off
- CentOS 7:
- # systemctl stop firewalld.service
- # systemctl disable firewalld.service
10)系统安装完成后禁用SELinux:
- 编辑/etc/sysconfig/selinux或/etc/selinux/config文件,修改SELINUX参数的值为下面其中之一:
- permissive
- disabled
- 立即生效:
- # getenforce
- # setenforce 0
5.4 定制kickstart文件
可以安装system-config-kickstart 软件包来辅助定制 kickstart 文件
# 安装 yum install -y system-config-kickstart # 启动 system-config-kickstart # 需要有图形化界面
6. 创建光盘镜像
1)创建一个myboot目录,把光盘镜像中的isolinux整个目录复制到myboot中,再将这个isolinux目录加上写的权限
2)然后将ks文件复制到myboot目录中
3)创建镜像:
~]# mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "CentOS 6 x86_64 boot" -c isolinux/boot.cat -b isolinux/isolinux.bin -o /root/boot.iso myboot/
4)对mkisofs命令的参数说明
- 这里的myboot/目录是工作路径,表示对哪个目录创建
- /root/boot.iso是保存路径
- -V是所创建的光盘镜像所显示的字符串