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

特别注意:

  1. 上述内容一般位于引导设备,例如可通过光盘、U盘或网络等
    • 后续的anacona及其安装用到的程序包等可以来自于程序包仓库,
    • 此仓库的位置可以为:本地光盘、本地硬盘、ftp server、http server、nfs server
  2. 如果想手动指定安装仓库:
    • 按下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地址)

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是所创建的光盘镜像所显示的字符串

 

posted @ 2020-06-23 15:36  Praywu  阅读(1248)  评论(0编辑  收藏  举报