原文地址:http://molinux.blog.51cto.com/2536040/548247

 

内容概要:

1.  系统安装基本流程图示
2.  Anaconda简介
3.  Kickstart简介
4.  引导并指定安装方式
5.  kickstart文件中的主要项目及参数介绍
6.  kickstart配置文件示例
7.  RedHat 安装光盘安装树介绍
8.  Anaconda/Kickstart系统安装过程简图
9.  安装树中boot.img及stage.img解构图析
10. 使用Kickstart进行安装的方式列举概述

   本文仍为课程学习的总结笔记,书写过程参看了大量官方文档及网络上相关资料,在此谢过各位无私奉献的Linuxer们,也贴上自己的笔记供大家参考,本文重点关注原理性层面的东西,对试验实际操作过程不过多赘述;

  水平有限,难免出现理解不透彻或是错误之处,望多指教;

  实验环境: RedHat5.5

一.  系统安装一般流程

  首先了解系统安装一般流程:

 

Kickstart/Anaconda实现自动化安装原理探究_自动化安装


二.  Anaconda简介


简介:
     Anaconda是Red Hat、CentOS、Fedora等Linux的安装管理程序。它可以提供文本、图形等安装管理方式,并支持Kickstart等脚本提供自动安装的功能。此外,其还支持许多启动参数,熟悉这些参数可为安装带来很多方便。该程序是把位于光盘或其他源上的数据包,根据设置安装到主机上的一个程序;为实现该定制安装,其提供一个定制界面,可以实现交互式界面供用户选择配置(如选择语言,键盘,时区等信息);

Anaconda支持的管理模式:
    Kickstart提供的自动化安装
    对一个RedHat实施upgrade
    Rescuse模式对不能启动的系统进行故障排除;
   
    要进入安装步骤,需要先有一个引导程序引导启动一个特殊的Linux安装环境系统;引导有多种方式:
    1.  基于网络方式的小型引导镜像,需要提供小型的引导镜像;
    2.  U盘引导,通过可引导存储介质中的小型引导镜像启动安装过程;
    3.  基于PXE的网络安装方式,要提供PXE的完整安装环境;
    4.  其他bootloder引导(如GRUB)

可用的安装方式:
    本地CDROM
    磁盘驱动器
    NFS映像
    FTP
    HTTP

    通过网络方式安装时:
    不论通过FTP、HTTP还是NFS方式共享安装,可以将安装光盘先拷贝到网络服务器上保存为iso镜像,然后loop挂载到共享目录或网页目录(当然,拷贝镜像中的所有文件到指定位置或直接挂载到共享目录也可),而通过NFS方式时,可以直接将光盘的iso文件放到共享目录即可,安装程序挂载共享目录后可以自动识别镜像;
   注:复制安装光盘,并保存为一个 iso 映像文件的方法:
   对于 DVD/CD:
   # dd if=/dev/cdrom  of=/location/of/disk/space/RHEL.iso  bs=32k
        注意拷贝时bs块大小设置为32k,我实验时设为1M,虽然减小了文件体积,但是安装读镜像时会报错。

 

三、 Kickstart简介:

简介
     kickstart是一个利用Anconda工具实现服务器自动化安装的方法;通过生成的kickstart配置文件ks.cfg,服务器安装可以实现从裸机到全功能服务的的非交互式(无人值守式)安装配置;
ks.cfg是一个简单的文本文件,文件包含Anconda在安装系统及安装后配置服务时所需要获取的一些必要配置信息(如键盘设置,语言设置,分区设置等);Anconda直接从该文件中读取必要的配置,只要该文件信息配置正确无误且满足所有系统需求,就不再需要同用户进行交互获取信息,从而实现安装的自动化;但是配置中如果忽略任何必需的项目,安装程序会提示用户输入相关的项目的选择,就象用户在典型的安装过程中所遇到的一样。一旦用户进行了选择,安装会以非交互的方式(unattended)继续。

使用kickstart优势:
    1.  流线化自动化的安装;
    2.  快速大量的裸机部署;
    3.  强制建立的一致性(软件包,分区,配置,监控,安全性)
    4.  减少人为的部署失误

使用Kickstart方法安装的过程:
    1.  创建一个kickstart文件
    2.  创建有kickstart文件的引导介质或者使这个文件在网络上可用;
    3.  筹备一个安装树
    4.  开始ks安装:anconda自身启动 -->选取ks安装模式--> 从ks文件读取配置 --> 最后安装

创建kickstart配置文件的方式:
   1.  文本编辑器编辑生成:vim
   2. 用图形化界面配置:system-config-kickstat(需要安装system-config-kickstart.noarch包)
   
注:图形化界面配置时,磁盘选项无法创建配置LVM(逻辑卷);
      文件生成后,推荐使用ksvalidator命令检查配置文件语法及完整性错误;
       [root@bogon ~]# ksvalidator ks.cfg
        not enough arguments for format string

图形化界面配置示例:

Kickstart/Anaconda实现自动化安装原理探究_休闲_02


 

Kickstart/Anaconda实现自动化安装原理探究_Kickstart_03
 

四.  引导并指定安装方式:

  系统引导界面:

Kickstart/Anaconda实现自动化安装原理探究_Linux_04


  系统引导后,会显示boot:命令提示符;如上,界面上会有各种模式操作提示;
  注:用户交互的文本安装方式中不能进行LVM的自定义配置,只能查看、接受默认设置;


  在boot:命令行里有用的几个项:
  lowres
    :强制GUI安装时分辨率调低为640*480
  noipv6
     :安装过程不支持ipv6网络
  noprobe
    :不去自动检测硬件,而是提示用户;
  dd=
    :通过网络加载设备驱动
  ks=
     :指定kickstart文件的放置位置;
另外还有ip、netmask、gateway、dns、vnc等选项;

   用ks选项被指定时kickstart文件位置时,Anaconda进入Kickstart安装模式;
安装时获取kickstart文件的方式:

(1) boot:linux ks

    ks命令单独使用时,系统会尝试通过dhcp服务器配置网卡,并且从DHCP会话中获取kickstart配置文件的位置;
    在dhcp服务器dhcp配置文件中有kickstart文件位置说明,next-server关键字指向共享文件的NFS主机,用filename关键字指向主机上的文件路径;如果没有filename关键字,则尝试在next-server关键字指向主机的/kickstart文件夹中找kickstart文件;
 
   下面是dhcp.conf文件中kickstart配置字段示例:

# The following lines are examples of kickstart directives.         filename "/data/ks/ks.cfg"        next-server 192.168.1.10; # 注:上面部分需要写在subnet子段中; 

(2) boot:linux ks=url
     基于网络的文件服务器(网络服务器),获取配置文件,支持HTTP、FTP、NFS方式获取文件;例:
    ks=ftp://192.168.0.254/pub/kistart/ks.cfg
    ks=http:// 192.168.0.254/pub/kistart/ks.cfg
    ks=nfs:ip_addr:/path/to/ks.cfg

(3) boot:linux ks=hd:device/path/to/your/kickstart_file
     基于本地的安装方式,需要依次指定设备名,路径,文件名等;例如:   
   文件在光盘中:ks=cdrom:/ks.cfg
   文件在软盘中:    ks=floppy:/filedirectory/ks.cfg
   文件在硬盘中:ks=hd:/sdb1/myfile/ks.cfg
   文件也可被打包进initrd根文件系统中:ks=file:/ks.cfg

kickstart文件结构介绍:
  1.  命令部分:配置系统的属性及安装中的各种必要设置信息
  2.  %packages部分:设定需要安装的软件包及包组,Anaconda会自动解决依赖关系
  3.  脚本部分:用于定制系统,分为%pre部分在安装前运行,%post在安装后运行
    %pre 部分脚本作为一个bash shell脚本执行,在Kickstart文件解析后执行;
    %post 解析器默认为bash,可以自定义,缺省为chroot状态,也可指定非chroot状态;

五.  Kickstart文件中的主要项目及参数介绍:


    每个项目都由关键字来识别;关键字可跟一个或多个参数;如果某选项后面跟随了一个等号(=),它后面就必须指定一个值。

install   (可选)
    明确指定系统次次进行的是全新安装系统;是默认项;

cdrom  (可选)
    以本地CD-ROM为源安装系统;

harddrive  (可选)
    以硬盘分区中包含的镜像为源(安装树)安装新系统;当以该种方式安装系统时,即使指定clearpart --all项,源所在分区也不会被重新抹去;
    --partition=    指定分区
    --dir=        指定包含镜像的目录
    例:
    harddrive  --partition=/dev/sdb2  --dir=/data/iso