1、anaconda(安装linux的工具,运行在内核上的)

  anaconda的界面:

    tui:基于cureses的文本配置窗口

    gui:图形界面


bootloader(有可能在光盘上也有可能在u盘上)--->加载指定内核(vmlinuz),也可能借助initrd,注意initrd中有rootfs--->anaconda(完成系统安装)




2、centos的安装过程启动流程介绍:

第一阶段:

  bootloader引导程序,放在设备的第一个扇区(即MBR中),光盘上的bootloader是:boot.cat文件(光盘引导加载器,可以认为是改装的grub)。

 光盘中的boot.cat的位置:/isolinux/boot.cat 

 如:

 [root@localhost isolinux]# ll boot.cat 

 -r--r--r--. 1 root root 2048 Dec  5  2016 boot.cat

 [root@localhost isolinux]# 

第二阶段:

isolinux目录下的isolinux.bin //提供类似grub的安装界面(配置菜单)

  isolinux.bin的配置文件:isoliunx/isolinux.cfg 


isolinux.cfg配置文件中对应的菜单:

  加载内核:isolinux/vmlinuz

  向内核传递参数:append initrd=initrd.img  //initrd是参数,initrd.img是参数值,可以认为initrd.img中自带anaconda程序。

  装载根文件系统(位于initrd.img中),并启动anaconda。


注意:安装程序都位于isolinux这一个目录下。

[root@localhost isolinux]# ls ../isolinux/

boot.cat  grub.conf   isolinux.bin  memtest     TRANS.TBL     vmlinuz

boot.msg  initrd.img  isolinux.cfg  splash.png  vesamenu.c32

[root@localhost isolinux]# 


注意:anaconda默认界面是图形界面,内存需要大于512MB,

如需要指定启动tui接口,向启动内核传递一个参数“text”即可。

在启动界面敲入ESC键(有的是tab键),此时会弹出一个窗口,输入如下:

  boot:linux text   //linux是指isolinux.cfg配置文件中的label,将text补在append initrd=initrd.img后面;label的作用是调用它下面的所有参数,此时如果加一个“text”,表示向label为linux的启动项中,传递text参数,以tui启动。


以上内容一般位于引导设备,例如可通过光盘、u盘或网络等;后续的anaconda及其安装用到的程序包等可以来自于程序包仓库,此仓库可位置可以为:本地光盘、本地硬盘、ftpserver、httpserver、nfsserver;


安装过程中如果不想用光盘中的软件源而想手动指定安装仓库,敲入ESC键在boot提示符下输入如下:boot:linux method  //method

的作用是让用户选择安装方法


这些起来之后,交给anaconda进行安装系统



 

3、anaconda的工作过程:分两阶段

    第一阶段:安装前配置阶段(如何分区、时钟设置、等),有两种配置方式

    第二阶段:安装阶段

    第三阶段:首次启动(已经与anaconda无关了),且只会出现一次。

3.1、anaconda第一阶段:

   安装前配置阶段:(经常配置的选项有如下:)    

    ①、选择安装过程中使用的语言

    ②、选择键盘类型

    ③、选择安装目标存储设备

        basic storage:本地磁盘存储

        special storage:iscsi网络存储

    ④、设定主机名

    ⑤、配置网络接口

    ⑥、设置时区

    ⑦、设置管理员密码

    ⑧、设置分区方式及mbr的安装位置,注意分区可能会清空磁盘中的数据;大多数程序会装在/usr目录下,因此如果单独分区要分的大一些,/var刚开始是空的,随系统的使用会逐渐增大。

    ⑨、创建一个普通用户(系统安装完成后,不建议使用管理员,权限太大)

    ⑩、选定要安装的程序包


3.2、安装阶段:

    ①、在目标磁盘创建分区并执行格式化

    ②、将选定的程序包安装至目标位置

    ③、安装bootloader(如果需要可以安装执行脚本在②之前被称为安装前脚本,在③之后被称为安装后脚本)


3.3、首次启动:(去掉安装介质,入弹出光盘)

    ①、配置iptables 关闭

    ②、配置selinux 关闭

    ③、开启core dump(核心转储功能,意思是内核崩溃时,将运行内存中的数据创建一个文件保存在磁盘上,用于分析崩溃的原因;注意:core dump对内存大小有要求。)





4、anaconda的配置方式:

    ①、交互式配置方式

    ②、支持通过读取配置文件中事先定义好的配置项自动完成配置,遵循特定的语法格式,此文件即为kickstart文件,注意:光盘中的文件不支持修改,如果要实现此目的,配置文件可以放在别处,因此anaconda的安装文件和此文件可能不在同一地方。



5、安装过程中的安装引导选项:(boot提示符下输入的命令)

    text:文本安装方式

    method:手动指定使用的安装方法

  与网络相关的引导选项:

    ip=IPADDR

    netmask=MASK

    gateway=GW

    dns=DNS_SERVER_IP

  远程访问功能相关的引导选项:

    vnc

    vncpassword='PASSWORD'

  启动紧急救援模式:

    rescue

  指明加载额外驱动:

    dd  //drvice disk,会提示选择驱动所在的位置。

  指明kickstart文件的获取位置

    ks=

    如:

     Dvddrive: ks=cdrom:/config/ks.cfg  //如在光盘中config目录下的ks.cfg文件

     Harddrive:ks=hd:/device/directory/ks.cfg

     Httpservices: ks=http://host:port/ks.cfg

     HttpsService: ks=https://host:port/ks.cfg 

     Ftpservice: ks=ftp://host:port/ks.cfg

参考书籍:www.redhat.com/docs 《installation guide》

   



5、centos自动安装

5.1、安装引导选项: grub中指明ks文件的位置,ks=  

     Dvddrive: ks=cdrom:/config/ks.cfg  //如在光盘中config目录下的ks.cfg文件

     Harddrive:ks=hd:/device/directory/ks.cfg

     Httpservices: ks=http://host:port/ks.cfg

     HttpsService: ks=https://host:port/ks.cfg 

     Ftpservice: ks=ftp://host:port/ks.cfg

注意:系统安装完成后,会在root家目录下有一个anaconda-ks.cfg文件(安装准备阶段配置的相关设置),可以以此为模板。


5.2、kickstart文件的格式:

   kickstart文件由三部分组成,分别是:

    ①、命令段部分

    ②、程序包段部分

    ③、脚本段部分

①、命令段部分:

  指定各种安装前的配置选项,分为必备命令、可选命令

必备命令:

    authconfig:认证方式配置

      示例:authconfig --enableshadow --passalgo=sha512

    bootloader:定义bootloader的安装位置及相关配置

      示例:bootloader --location=mbr --driceorder=sda --append=" crashkernel=auto"

    keyboard:设置键盘类型:

      示例:keyboard --vckeymap=us --xlayouts='us'

    lang:设置语言类型

      示例:lang en_US.UTF-8

    part:分区布局及方式

      示例:

        part /boot --fstype=ext4 --size=500

        part pv.008002 --size=51200   //pv表示创建的物理卷,008002是此物理卷的ID。        

        分区可选命令:

        autopart --type=lvm

        clearpart --none --initlabel

        volgroup:

          示例:volgroup myvg --pesize=4096 pv.008002 //myvg表示卷组名,pesize表示pe大小,pv008002表示调用哪个物理盘做卷组

        logvol:

          示例:logvol /home --fstype=ext4 --name=lv_home --vgname=myvg


    rootpw:管理员密码设置

      示例:rootpw --iscrypted $6$gdSMQrPuuwBvkjBR$GDqAFw7hr/GcsahNr4g7m2p.DPLZRUyZlwx01PjvdNEH9IDabDqb9oh3p9XY6jOXV0XK1pIb5OBQ0msu7ckTU.  //不加--iscrypted可以直接跟明文密码;生成加密密码的方式:

[root@localhost ~]# openssl passwd -1 -salt openssl rand -hex 4    //-1表示512加密,rand表示随机数,-hex 4表示4字节。

    timezone:指定时区

      示例:timezone Asia/Shanghai --isUtc --nontp


 命令段中的可选命令:

    install:安装(默认安装)  

    upgrade:升级(无需重新创建分区)

    text:安装界面类型,text为tui类型,默认为gui(图形界面)

    network:配置网络

     示例:network  --bootproto=dhcp --device=ens33 --onboot=off --ipv6=auto --no-activate

        network  --hostname=localhost.localdomain

    firewall:设置防火墙

      示例:firewall --service=ssh //表示启用了防火墙,但是对ssh放行

          firewall --disabled   //关闭防火墙

    selinux:安全加强的selinux

      示例:selinux--disabled

    halt:关机,与poweroff、reboot三者选一,用于定义安装完成后的行为,关机或重启。

    poweroff:关机

    reboot:关机

    repo:指明安装时使用的仓库(repository)    

      示例:repo --name="centos" --baseurl=cdrom:sr0 --cost=100  //开销,默认为1000

    url:指明安装时使用的repository,但为url格式,优先级高于repo

      示例:url --url=http://172.1.1.10/centos7

    autopart --type=lvm

    clearpart --none --initlabel

       volgroup:

          示例:volgroup myvg --pesize=4096 pv.008002 //myvg表示卷组名,pesize表示pe大小,pv008002表示调用哪个物理盘做卷组

       logvol:

          示例:logvol /home --fstype=ext4 --name=lv_home --vgname=myvg

    user:安装完成后为系统创建新用户。

        

②、程序包段部分:

   指明要安装的程序包以及包组,也包括指明不需要安装的程序包

    %packages  //说明程序包段的开始

    @group_name //需要安装的程序包组

    package   //需要安装的单个程序包

    -package  //不安装的程序包

    %end    //程序包段结束

③、脚本段部分

    %pre   //安装前脚本,运行的脚本有限

      运行环境:运行安装介质上的微型linux系统环境(initrd)

    %end  //安装前脚本结束

    %post  //安装后脚本,安装完成后,重启之前运行的脚本,用的较多

      运行环境:安装完成的脚本

    %end  //安装后脚本结束


注意:如果安装最小环境的话,可能没有第三部分(脚本段部分。)


5.3、禁用相关服务

安装完成后禁用防火墙:

   centos6:

    #service iptables stop

    #service iptables off

   centos7:

    [root@localhost ~]# systemctl stop firewalld.service 

    [root@localhost ~]# systemctl disable firewalld.service

安装完成后禁用selinux:

   编辑文件:/etc/sysconfig/selinux或/etc/selinux/config文件,修改selinux参数的值为下面其中之一:

    permissive

    disabled  

   关闭selinux使其立即生效:

    #getenforce  //查看是否启用“1”为启用

    #setenforce 0 //关闭selinux


5.4、制作kickstart文件方式:          

    ①、直接手动编辑,依据模板修改

    ②、使用创建工具:system-config-kickstart,也可以依据模板修改并生成新的kickstart文件。


  使用工具制作kickstart文件:

    [root@localhost ~]# yum install system-config-kickstart -y  //安装制作kickstart文件的工具

    [root@localhost ~]# system-config-kickstart   //运行此工具

    [root@localhost Desktop]# ksvalidator ks.cfg  //对制作的kickstart文件进行检查,查看是否有错误


5.5、用制作的kickstart文件安装系统

    ①、将生成的kickstart文件放在可以通过网络或本地能访问的服务器上,如本地硬盘、http、ftp、dvd上

    ②、启动主机,载入光驱,当出现grub选择界面的时候,敲入:"ESC"键,进入boot提示符,输入如下内容:

        boot:linux ip=x.x.x.x netmask=x.x.x.x gateway=x.x.x.x ks=http://x.x.x.x/ks.cfg


安装示例参考:https://www.cnblogs.com/zhenhui/p/6233285.html


自此,linux的自动安装可以通过网络上定义的kickstart文件进行安装,但是如果要想实现通过“自定义安装介质,实现自动部署”,可以制作iso镜像,并将ks文件放进去,实现自动部署,可以参考如下(5.6:自定义介质安装)实现方式


5.6、自定义安装介质安装系统:(没有服务器放置kickstart文件,但又想使用ks文件,可以自己创建一个光盘镜像,并将ks文件放进去,镜像只需要有iso目录即可)

   实现步骤如下:

    ①、先配置好ks.cfg文件

    ②、[root@localhost ~]# mkdir myboot   //创建目录,存放isolinux目录,把myboot当做制作光盘的根

    ③、[root@localhost ~]# cd myboot

    ④、[root@localhost myboot]# cp -r /mnt/isolinux/ ./

        [root@localhost ~]# ls /root/myboot/isolinux/

        boot.cat  grub.conf   isolinux.bin  memtest     TRANS.TBL     vmlinuz

        boot.msg  initrd.img  isolinux.cfg  splash.png  vesamenu.c32

    ⑤、[root@localhost myboot]# chmod +w isolinux/*   //可以定制isolinux.cfg中的配置          

    ⑥、[root@localhost myboot]# cp /root/anaconda-ks.cfg  ./ks.cfg

    ⑦、[root@localhost ~]# mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "centos7 custom" -c isolinux/boot.cat -b isolinux/isolinux.bin -o /root/boot.iso  myboot/   //制作光盘镜像,制作镜像时一定要退出相应的目录

    ⑧、将此次制作的镜像文件放入光驱(镜像文件:/root/boot.iso)

    ⑨、在安装选择界面(即grub选择界面,在相应安装的菜单上敲入“tab”键,在后面输入如下内容)

         ks=cdrom:/ks.cfg  //指定ks文件的位置位于光盘根目录下,如下图

14.2、centos系统安装_第1张图片

注意:以上步骤需要向内核传递参数,如果不想这样做而实现全自动安装,可以编译isolinux/isolinux.cfg,在上述第⑤步骤中直接将ks参数写在此处即可(如图:ks=cdrom:/ks.cfg),然后再制作镜像

blob.png