美文网首页Linux初学者学习笔记
20170915 运维自动化之系统安装(一)

20170915 运维自动化之系统安装(一)

作者: 哈喽别样 | 来源:发表于2017-09-18 23:01 被阅读30次
    • 安装程序启动过程
    • anaconda工作过程
    • 制作引导U盘
    • 制作全功能安装U盘

    一、安装程序启动过程

    • isolinux/boot.cat:相当于MBR
    • isolinux/isolinux.bin:相当于stage2
    • isolinux/isolinux.cfg:相当于grub.conf
      每个对应的菜单选项:
      • 加载内核:isolinuz/vmlinuz
      • 向内核传递参数:append initrd=initrd.img...
    • 装载根文件系统,并启动anaconda
      默认启动GUI接口
      若是显式指定使用TUI接口:向内核传递text参数即可
      (1)第一个选项,按tab键,在后面增加text
      (2)按ESC键:boot: linux text

    实验:进入rescue模式的三种方法
    第1种:直接选择rescue模式,回车进入
    第2种:选择第1个选项,Tab进入编辑页面,添加rescue后进入

    第3种:按住Esc键,输入rescue或者linux rescue

    二、anaconda工作过程

    (一)anaconda安装系统的三个阶段:

    安装前配置阶段、安装阶段、图形模式首次启动配置

    • 安装前配置阶段

      • 安装过程使用的语言
      • 键盘类型
      • 安装目标存储设备
      • 设定主机名
      • 配置网络接口
      • 时区
      • 管理员密码
      • 设定分区方式及MBR的安装位置
      • 创建一个普通用户
      • 选定要安装的程序包
    • 安装阶段

      • 在目标磁盘创建分区,执行格式化操作等
      • 将选定的程序包安装至目标位置
      • 安装bootloader和initramfs
    • 图形模式首次启动

      • iptables
      • selinux
      • core dump

    (二)anaconda安装包来源:

    • 本地光盘
    • 本地硬盘
    • NFS
    • URL:
      • ftp server: yum repository
      • http server: yum repostory
    • 实验:选择网络安装源

    在启动时按Esc键,输入linux askmethod 指定安装时询问安装包来源

    提示选择安装源,选择URL


    选择网址配置方式,选择默认DHCP方式,也可以自己配置静态地址

    配置网络安装源地址

    (三)anaconda配置方式:

    • 第1种:交互式配置方式
    • 第2种:通过读取事先给定的配置文件(kickstart)自动完成配置
      kickstart文件按特定语法给出的配置选项,可以实现anaconda自动化安装
    (1)kickstart文件格式:按次序为命令段、程序包端、脚本段
    • 命令段:指明各种安装前配置,必备命令如下:

      • authconfig:认证方式配置
        authconfig --useshadow --passalgo=sha512
      • bootloader:bootloader的安装位置及相关配置
        bootloader --location=mbr --driveorder=sda -append="crashkernel=auto rhgb quiet"
      • keyboard:设定键盘类型
      • lang:语言类型
      • part:创建分区
      • rootpw:指明root的密码
      • timezone:时区
    • 程序包段:指明要安装的程序包组或程序包,不安装的程序包等

      %packages     //程序包段开始标记
      @group_name      //安装包组
      package     //安装的包
      -package     //不安装的包(用于排除包组中特定的包)
      %end     //程序包段结束标记
      
    • 脚本段:

      • %pre:安装前脚本,运行于安装介质上的微型Linux环境
      • %post:安装后脚本,运行于安装完成的系统
    (2)创建kickstart文件
    • 直接手动编辑:依据模板修改

    • 使用创建工具:system-config-kickstart
      依据模板(e.g. /root/anaconda-ks.cfg)修改并生成新配置

    • 检查ks文件的语法错误:ksvalidator
      ksvalidator /PATH/TO/KICKSTART_FILE

    • 实验1:使用system-config-kiskstart自动生成kickstart文件
      配置基本信息,可以修改时区、root账户密码,安装后重启和文本模式安装简易勾选,便于后期自动化安装

    安装源可以自定义,这里选择网络安装源

    boot loader选项设置

    分区设置,简易清除MBR(防止硬盘旧信息影响安装),设置好磁盘分区信息

    网络配置,可以选择DHCP自动获取ip,也可以手动设置静态地址

    认证原乡,选择密码加密方式等

    建议关闭SELinux和防火墙

    选择是否安装图形环境,视需求而定

    选择要安装的包

    编写安装前脚本,这里没有设置

    编写安装后脚本,这里写了一个yum源配置的脚本

    设置好后,将导出文件(如ks.cfg)保存。

    • 实验2:按照指定kickstart文件安装系统

    思路:只需在安装程序启动时,在安装菜单项界面,按Esc键输入kickstart文件路径,系统就可以按照kiskstart文件的要求安装

    光盘用于启动,当进入安装菜单项,按Esc键,输入linux ks=http://172.18.250.79/ks.cfg(将ks.cfg放在httpd服务器上)回车,系统会自动按照ks.cfg文件的说明自动安装

    查看http://172.18.250.79/ks.cfg,确认能够正常访问

    正常开始安装过程

    三、制作引导U盘

    (1)系统光盘中的isolinux目录

    • isolinux.bin:光盘引导程序,在mkisofs的选项中需要明确给出文件路径,这个文件属于SYSLINUX项目
    • isolinux.cfg:isolinux.bin的配置文件,当光盘启动后(即运行isolinux.bin),会自动去找isolinux.cfg文件
    • vesamenu.c32:是光盘启动后的安装图形界面,也属于SYSLINUX项目,menu.c32版本是纯文本的菜单
    • Memtest:内存检测,这是一个独立的程序
    • splash.jgp:光盘启动界面的背景图
    • vmlinuz是内核镜像
    • initrd.img是ramfs(先cpio,再gzip压缩)

    (2)制作引导U盘:

    • 基本过程:
      复制isolinux目录下的文件--->设置启动项参数--->制作iso文件(mkisofs)--->创建U盘启动盘(dd)

    • 步骤:

      • cp -r /misc/cd/isolinux/ /tmp/myiso/
        将光盘下的isolinux目录移动到新目录下
      • 编辑 /tmp/myiso/isolinux/isolinux.cfg文件中的启动菜单如下,实现按照网络上的kickstart文件实现网络安装(网络安装设置在ks.cfg中),同时默认从本地硬盘启动防止误操作
      label linux net-install
        menu label ^Install a system over the internet
        kernel vmlinuz
        append initrd=initrd.img ks=http://172.18.250.79/ks.cfg
      label local
        menu label Boot from ^local drive
        localboot 0xffff
        menu default
      
      • cd /tmp; mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "CentOS 6.9 x86_64 boot" -b isolinux/isolinux.bin -c isolinux/boot.cat -o /root/boot.iso myiso/
        生成iso文件
      • dd if=/root/boot.iso of=/dev/sdb
        生成启动U盘
      • U盘引导启动画面,安装菜单项和设置的相同
    • mkisofs命令选项:
      -R 使用Rock RidgeExtensions
      -J 使用Joliet 格式的目录与文件名称
      -T 建立文件名的转换表
      -v 执行时显示详细的信息
      --no-emul-boot 非模拟模式启动
      --boot-load-size 4 设置载入部分的数量
      --boot-info-table 在启动的图像中显示信息
      -b 指定在制作可开机光盘时所需的开机映像文件
      -c 制作可开机光盘时,会将开机映像文件中的no-eltorito-catalog 全部内容作成一个文件。
      -o 指定映像文件的名称

    四、制作全功能安装U盘

    (1)准备相关文件,配置yum源

    • cp -r /misc/cd/ /app/fulliso 复制光盘文件至指定文件夹/app/fulliso
    • rm -rf /app/fulliso/repodata/* 删除/app/fulliso/repodata下的所有文件
    • cp /misc/cd/repodata/43d8fd068164b0f042845474d6a22262798b9f0d1f49ad1bf9f95b953089777d-c6-x86_64-comps.xml /app/fulliso/repodata/
      复制光盘repodata目录下的包组信息文件(xml文件)
    • cd /app/fulliso 进入/app/fulliso目录
    • createrepo -g ./repodata/43d8fd068164b0f042845474d6a22262798b9f0d1f49ad1bf9f95b953089777d-c6-x86_64-comps.xml ./
      根据包组信息文件重新建立yum源数据库
    • find /app/fulliso/ -name TRANS.TBL -exec rm {} \; 删除/app/fulliso目录下所有TRANS.TBL文件(制作iso文件时会自动生成,所以现在手动删除)

    (2)配置kickstart文件:

    可以参考/root/anaconda-ks.cfg文件作适当的修改,将修改后的文件保存至/app/fulliso目录下,例如以下kickstart文件ks6.cfg以及ks6-mini.cfg分别定义了桌面安装和最小化安装的两套自动化安装方案

    vim /app/fulliso/ks6.cfg
    
    #platform=x86, AMD64, or Intel EM64T
    #version=DEVEL
    # Firewall configuration
    firewall --enabled --service=ssh
    # Install OS instead of upgrade
    install
    # Use CDROM installation media
    cdrom
    # Root password
    rootpw --iscrypted $1$Z3Phclpd$eSd3ZHMEa0ohzi7KKxM8Y1     //使用openssl passwd -1命令生成加密密码
    # System authorization information
    auth  --useshadow  --passalgo=sha512
    # Use text mode install
    text     //文本模式安装
    firstboot --disable
    # System keyboard
    keyboard us
    # System language
    lang en_US
    # SELinux configuration
    selinux --disabled     //关闭selinux
    # Installation logging level
    logging --level=info
    # Reboot after installation
    reboot     //安装后重启
    # System timezone
    timezone  Asia/Shanghai
    # Network information
    network  --bootproto=dhcp --device=eth0 --onboot=yes
    # System bootloader configuration
    bootloader --append="crashkernel=auto rhgb quiet" --location=mbr --driveorder="sda"
    # Clear the Master Boot Record
    zerombr     //安装前先清除MBR
    # Partition clearing information
    clearpart --all     //安装前先清除所有分区信息
    # Disk partitioning information
    part /boot --fstype="ext4" --size=1000
    part / --fstype="ext4" --size=50000
    part /app --fstype="ext4" --size=40000
    part swap --size=2048
    
    %post
    rm -rf /etc/yum.repos.d/*
    cat > /etc/yum.repos.d/base.repo <<eof
    [base]
    name=base
    baseurl=file:///misc/cd
    gpgcheck=0
    eof
    %end
    
    %packages
    @base
    @basic-desktop
    @core
    @debugging
    @desktop-debugging
    @desktop-platform
    @directory-client
    @fonts
    @general-desktop
    @graphical-admin-tools
    @input-methods
    @internet-applications
    @internet-browser
    @java-platform
    @legacy-x
    @network-file-system-client
    @office-suite
    @print-client
    @remote-desktop-clients
    @server-platform
    @server-policy
    @workstation-policy
    @x11
    abrt-gui
    certmonger
    device-mapper-persistent-data
    genisoimage
    krb5-workstation
    libXmu
    mtools
    oddjob
    pam_krb5
    pax
    python-dmidecode
    samba-winbind
    sgpio
    wodim
    %end
    
    vim /app/fulliso/ks6-mini.cfg
    
    #platform=x86, AMD64, or Intel EM64T
    #version=DEVEL
    # Firewall configuration
    firewall --enabled --service=ssh
    # Install OS instead of upgrade
    install
    # Use CDROM installation media
    cdrom
    # Root password
    rootpw --iscrypted $1$GjUVnxcA$Q1BQF.c0fS/9RERcqz3hQ.     //使用openssl passwd -1命令生成加密密码
    # System authorization information
    auth  --useshadow  --passalgo=sha512
    # Use text mode install
    text     //文本模式安装
    firstboot --disable
    # System keyboard
    keyboard us
    # System language
    lang en_US
    # SELinux configuration
    selinux --disabled     //关闭selinux
    # Installation logging level
    logging --level=info
    # Reboot after installation
    reboot     //安装后重启
    # System timezone
    timezone  Asia/Shanghai
    # Network information
    network  --bootproto=dhcp --device=eth0 --onboot=yes
    # System bootloader configuration
    bootloader --append="crashkernel=auto rhgb quiet" --location=mbr --driveorder="sda"
    # Clear the Master Boot Record
    zerombr     //安装前先清除MBR
    # Partition clearing information
    clearpart --all     //安装前先清除所有分区信息
    # Disk partitioning information
    part /boot --fstype="ext4" --size=1000
    part / --fstype="ext4" --size=50000
    part /app --fstype="ext4" --size=40000
    part swap --size=2048
    
    %post
    rm -rf /etc/yum.repos.d/*
    cat > /etc/yum.repos.d/base.repo <<eof
    [base]
    name=base
    baseurl=file:///misc/cd
    gpgcheck=0
    eof
    %end
    
    %packages
    @core
    @server-policy
    @workstation-policy
    autofs
    %end
    

    (3)定制启动菜单:

    定制启动菜单,菜单1执行安装带桌面的系统,菜单2执行安装mini系统,菜单3执行手动安装,菜单4执行从本地硬盘启动,编辑/app/fulliso/isolinux/isolinux.cfg文件如下:

    vim /app/fulliso/isolinux/isolinux.cfg
    
    default vesamenu.c32
    #prompt 1
    timeout 600 
    
    display boot.msg
    
    menu background splash.jpg
    menu title Welcome to CentOS 6.9!
    menu color border 0 #ffffffff #00000000
    menu color sel 7 #ffffffff #ff000000
    menu color title 0 #ffffffff #00000000
    menu color tabmsg 0 #ffffffff #00000000
    menu color unsel 0 #ffffffff #00000000
    menu color hotsel 0 #ff000000 #ffffffff
    menu color hotkey 7 #ffffffff #ff000000
    menu color scrollbar 0 #ffffffff #00000000
    
    label linux-desktop      //菜单1:桌面安装
      menu label Install a ^desktop system
      kernel vmlinuz
      append initrd=initrd.img ks=cdrom:/ks6.cfg
    label linux-mini        //菜单2:最小化安装
      menu label Install a m^ini system
      kernel vmlinuz
      append initrd=initrd.img ks=cdrom:/ks6-mini.cfg
    label manual            //菜单3:手动安装
      menu label Install a system ^manually
      kernel vmlinuz
      append initrd=initrd.img 
    label local            //菜单4:默认从硬盘启动
      menu default
      menu label Boot from ^local drive
      localboot 0xffff
    

    (4)制作ISO文件:

    执行mkisofs命令,将生成的iso文件保存至/root目录下,名称为centos6.iso
    mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "CentOS 6.9 x86_64 autoinstall" -b isolinux/isolinux.bin -c isolinux/boot.cat -o /root/centos6.iso /app/fulliso

    (5)制作启动U盘

    dd if=/root/centos6.iso of=/dev/sdb

    (6)总结

    通过比较制作启动U盘和制作全功能安装U盘的区别我们可以看到两者的步骤是很相似的,制作全功能安装U盘只是在制作启动U盘的基础上做了一些调整。

    • 制作全功能U盘需要将光盘上的所有文件都复制过来,所以增加了一些调整,包括:使用createrepo工具重建yum源数据库,删除TRANS.TBL文件

    • 需要调整kickstart文件,将安装源调整为CD安装

    • 在调整isolinux.cfg文件时,需要注意对kickstart文件的指向要调整为CD目录上

    • 通过这些操作,系统安装过程所需的文件全部集成在iso文件中,实现了不依赖网络的全功能安装U盘

    相关文章

      网友评论

        本文标题:20170915 运维自动化之系统安装(一)

        本文链接:https://www.haomeiwen.com/subject/xszssxtx.html