• 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

    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是所创建的光盘镜像所显示的字符串
  • 相关阅读:
    redis原理及实现
    RabbitMQ原理介绍
    我的mongoDb之旅(二)
    我的mongoDb之旅(一)
    PHP服务器Apache与Nginx的对比分析
    后端技术杂谈11:十分钟理解Kubernetes核心概念
    后端技术杂谈10:Docker 核心技术与实现原理
    后端技术杂谈9:先搞懂Docker核心概念吧
    后端技术杂谈8:OpenStack架构设计
    后端技术杂谈7:OpenStack的基石KVM
  • 原文地址:https://www.cnblogs.com/hgzero/p/13181868.html
Copyright © 2020-2023  润新知