美文网首页
linux启动流程与grub和kickstart应用

linux启动流程与grub和kickstart应用

作者: 家有猪宝_ | 来源:发表于2018-10-09 13:00 被阅读0次

    简述linux操作系统启动流程

    本示例流程以centos6的以MBR结构的linux启动流程为例:


    linux操作系统启动流程.png
    • 加电自检: 自检要是检查设备:如CPU、内存、硬盘是否正常、鼠标键盘等外接设备是否存在等。

    • 启动BIOS:BIOS(基本的输入输出系统)装载在硬件芯片CMOS之上,自检时会启动这个程序,并根据CMOS上的配置信息去读取其他的硬件信息,检测正常之后进行硬件设备的初始化。

    • Boot Loader(MBR):引导加载程序,在MBR(主引导记录)中,主要功能是识别,加载操作系统的核心文件,并提交到内存中运行来启动对应的系统,windows的Boot Loader不具备控制权转交功能,因此windows的Boot Loader不能加载linux系统的Boot Loder,相反linux系统的Boot Loader可以加载windows的Boot Loader。

    • 启动Kernel(ramdisk):Kernel会自身初始化,探测可识别的硬件设备,因为Kernel是存在硬盘之中的,但是在内核启动时还没有加载硬盘,为了解决这个问题Kernel内核通过ramdisk(虚拟文件系统)来加载硬件程序,为了防止根文件系统加载时出现bug等问题无法挽回的情况,以只读方式来挂载根文件系统,来完成根文件系统的初始化。

    • rootfs(readonly):启动真正的根文件系统,然后虚拟的根文件系统与真实的根文件系统进行交换。

    • /sbin/init:在内核,硬件及驱动信息加载完毕后,内核会运行用户空间的第一个应用程序:/sbin/init,包括系统的主机名称,网络管理,文件系统格式等其他服务。

    centos6的文件格式
    [root@localhost ~]# cat /etc/inittab
    # inittab is only used by upstart for the default runlevel.
    #
    # ADDING OTHER CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
    #
    # System initialization is started by /etc/init/rcS.conf
    #
    # Individual runlevels are started by /etc/init/rc.conf
    #
    # Ctrl-Alt-Delete is handled by /etc/init/control-alt-delete.conf
    #
    # Terminal gettys are handled by /etc/init/tty.conf and /etc/init/serial.conf,
    # with configuration in /etc/sysconfig/init.
    #
    # For information on how to write upstart event handlers, or how
    # upstart works, see init(5), init(8), and initctl(8).
    #
    # Default runlevel. The runlevels used are:
    #   0 - halt (Do NOT set initdefault to this)
    #   1 - Single user mode
    #   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
    #   3 - Full multiuser mode
    #   4 - unused
    #   5 - X11
    #   6 - reboot (Do NOT set initdefault to this)
    # 
    id:3:initdefault:
    
    • 执行/etc/inittab,/etc/init/*.conf:centos6的配置文件在/etc/init目录下所有以.conf结尾的文件中。
    每行定义一种action以及与之对应的process
        id:runlevels:action:process 
            id:一个任务的标识符;
            runlevels:在哪些级别启动此任务;#,###,也可以为空,表示所有级别;
            action:在什么条件下启动此任务;
            process:任务;
                                
    action:
        wait:等待切换至此任务所在的级别时执行一次;
        respawn:一旦此任务终止,就自动重新启动之;
        initdefault:设定默认运行级别;此时,process省略;
        sysinit:设定系统初始化方式,此处一般为指定/etc/rc.d/rc.sysinit脚本;
                                
    例如:
        id:3:initdefault: 
        si::sysinit:/etc/rc.d/rc.sysinit
        l0:0:wait:/etc/rc.d/rc  0
        l1:1:wait:/etc/rc.d/rc  1
        …………
        l6:6:wait:/etc/rc.d/rc  6
    
    • 设定默认运行级别:根据系统的设定来启动系统要进入的运行级别,默认的运行级别有7种,可以用runlevel命令查看当前的运行级别,init #命令可以切换当前的运行级别,默认运行级别不能设置成0和6级别中的任何一个级别,这7种运行级别分别代表如下:
    运行级别:为了系统的运行或维护等目的而设定的机制;
        0-6:7个级别;
            0:关机, shutdown
            1、单用户模式(single user),root用户,无须认证;维护模式;
            2、多用户模式(multi user),会启动网络功能,但不会启动NFS;维护模式;
            3、多用户模式(mutli user),完全功能模式;文本界面;
            4、预留级别:目前无特别使用目的,但习惯以同3级别功能使用;
            5、多用户模式(multi user), 完全功能模式,图形界面;
            6、重启,reboot
    
    [root@localhost ~]# runlevel
    N 3        # N:表示 系统启动时就进入3级别   3:目前系统的运行级别
    [root@localhost ~]# init 5
    [root@localhost ~]# runlevel
    3 5        # N:由3级别切换到5级别运行
    
    • 系统初始化脚本:
      系统初始化脚本:/etc/rc.d/rc.sysinit配置文件中,主要进行如下的操作:
      (1) 设置主机名;
      (2) 设置欢迎信息;
      (3) 激活udev和selinux;
      (4) 挂载/etc/fstab文件中定义的所有文件系统;
      (5) 检测根文件系统,并以读写方式重新挂载根文件系统;
      (6) 设置系统时钟;
      (7) 根据/etc/sysctl.conf文件来设置内核参数;
      (8) 激活lvm及软raid设备;
      (9) 激活swap设备;
      (10) 加载额外设备的驱动程序;
      (11) 清理操作;
    #!/bin/bash
    #
    # /etc/rc.d/rc.sysinit - run once at boot time
    #
    # Taken in part from Miquel van Smoorenburg's bcheckrc.
    #
    
    HOSTNAME=$(/bin/hostname)
    
    set -m
    
    if [ -f /etc/sysconfig/network ]; then
        . /etc/sysconfig/network
    fi
    if [ -z "$HOSTNAME" -o "$HOSTNAME" = "(none)" ]; then
        HOSTNAME=localhost
    fi
    
    if [ ! -e /proc/mounts ]; then
            mount -n -t proc /proc /proc
            mount -n -t sysfs /sys /sys >/dev/null 2>&1
    fi
    if [ ! -d /proc/bus/usb ]; then
            modprobe usbcore >/dev/null 2>&1 && mount -n -t usbfs /proc/bus/usb /proc/bus/usb
        . /etc/sysconfig/network
    fi
    if [ -z "$HOSTNAME" -o "$HOSTNAME" = "(none)" ]; then
        HOSTNAME=localhost
    fi
    
    if [ ! -e /proc/mounts ]; then
            mount -n -t proc /proc /proc
            mount -n -t sysfs /sys /sys >/dev/null 2>&1
    fi
    if [ ! -d /proc/bus/usb ]; then
            modprobe usbcore >/dev/null 2>&1 && mount -n -t usbfs /proc/bus/usb /proc/bus/usb
    else
            mount -n -t usbfs /proc/bus/usb /proc/bus/usb
    fi
    
    #remount /dev/shm to set attributes from fstab #669700
    mount -n -o remount /dev/shm >/dev/null 2>&1
    #remount /proc to set attributes from fstab #984003
    mount -n -o remount /proc >/dev/null 2>&1
    
    . /etc/init.d/functions
    
    • 关闭或启动对应级别下的服务:意味着去启动或关闭/etc/rc.d/rc#.d/目录下的服务脚本所控制服务;
      K:要停止的服务;K##,优先级,数字越小,越是优先关闭;依赖的服务先关闭,而后关闭被依赖的;
      S:要启动的服务;S##,优先级,数字越小,越是优先启动;被依赖的服务先启动,而依赖的服务后启动;
      同一个服务的K脚本数值小时,S的脚本数值就应该比K的数值大,相反的,如果S数值小,则K的数值要比S的数值要大。
    chkconfig命令:管控/etc/init.d/每个脚本在各级别下的启动或关闭状态:
    查看该服务在各级别下的开启或关闭状态:chkconfig  --list   [name]
    添加该服务在各级别下的开启或关闭状态:chkconfig  --add  name
        能被添加的服务的脚本定义格式之一:
            #!/bin/bash
            #
            # chkconfig: LLL  NN1 NN2
                LL: 运行级别(runlevel)
                NN1:启动优先级
                NN2:关闭优先级       
            # description:  表明此配置文件的作用
    
    删除指定服务在各级别下的开启或关闭状态:chkconfig  --del  name
    修改指定的链接类型:
        chkconfig  [--level  LEVELS]  name <on|off|reset>
            --level LEVELS:指定要控制的级别;默认为2345;
    
    [root@localhost ~]# chkconfig --list crond
    crond           0:关闭    1:关闭    2:启用    3:启用    4:启用    5:启用    6:关闭
    [root@localhost ~]# chkconfig --level 23 crond off
    [root@localhost ~]# chkconfig --list crond
    crond           0:关闭    1:关闭    2:关闭    3:关闭    4:启用    5:启用    6:关闭
    

    注意:正常级别下,最后启动的一个服务S99local没有链接至/etc/init.d下的某脚本,而是链接至了/etc/rc.d/rc.local (/etc/rc.local)脚本;因此,不便或不需写为服务脚本的程序期望能开机自动运行时,直接放置于此脚本文件中即可。

    在3级别下的服务有:
    [root@localhost ~]# ls /etc/rc.d/rc3.d
    K10saslauthd    K89netconsole    S07iscsid     S10network  S13iscsi             S25netfs      S80postfix
    K87multipathd   K89rdisc         S08ip6tables  S11auditd   S15mdmonitor         S26udev-post  S90crond
    K87restorecond  S02lvm2-monitor  S08iptables   S12rsyslog  S25blk-availability  S55sshd       S99local
    
    
    • 启动终端:最后mingetty会调用login程序。

    简述grub启动引导程序配置及命令行接口详解

    grub是目前最广泛linux启动管理程序,其配置文件为:/boot/grub/grub.conf,此目录其实是/etc/grub.conf的符号链接

    [root@localhost ~]# ll /etc | grep grub.conf
    lrwxrwxrwx.  1 root root     22 9月   6 01:57 grub.conf -> ../boot/grub/grub.conf
    

    注意:此处grub.conf仅限centos5和centos6版本,而centos7的grub的配置文件在/boot/grub2/grub.cfg中

    [root@localhost ~]# cat /boot/grub/grub.conf
    # grub.conf generated by anaconda
    #
    # Note that you do not have to rerun grub after making changes to this file
    # NOTICE:  You have a /boot partition.  This means that
    #          all kernel and initrd paths are relative to /boot/, eg.
    #          root (hd0,0)
    #          kernel /vmlinuz-version ro root=/dev/mapper/VolGroup-lv_root
    #          initrd /initrd-[generic-]version.img
    #boot=/dev/sda
    default=0
    timeout=5
    splashimage=(hd0,0)/grub/splash.xpm.gz
    hiddenmenu
    password --md5 $1$E7rO20$rqSROpSM6VCDdjlra727I1
    title CentOS 6 (2.6.32-754.el6.i686)
        root (hd0,0)
        kernel /vmlinuz-2.6.32-754.el6.i686 ro root=/dev/mapper/VolGroup-lv_root rd_NO_LUKS rd_NO_MD rd_LVM_LV=VolGroup/lv_swap crashkernel=auto LANG=zh_CN.UTF-8 rd_LVM_LV=VolGroup/lv_root  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
        initrd /initramfs-2.6.32-754.el6.i686.img
    

    配置项:
    default=#: 设定默认启动的菜单项;落单项(title)编号从0开始;
    timeout=#:指定菜单项等待选项选择的时长;
    splashimage=(hd#,#)/PATH/TO/XPM_PIC_FILE:指明菜单背景图片文件路径;
    hiddenmenu:隐藏菜单;
    password [--md5] STRING: 菜单编辑认证;
    title TITLE:定义菜单项“标题”, 可出现多次;
    root (hd#,#):grub查找stage2及kernel文件所在设备分区;为grub的“根”;
    kernel /PATH/TO/VMLINUZ_FILE [PARAMETERS]:启动的内核
    initrd /PATH/TO/INITRAMFS_FILE.img: 内核匹配的ramfs文件;
    password [--md5] STRING: 启动选定的内核或操作系统时进行认证;

    grub界面支持命令行接口 ,在界面输入e、b、c等命令可以进入对应的命令编辑,在对应的“title”中输入c进入命令模式


    grub界面.png
    grub的命令行界面.png
    grub的help信息.png

    为了防止他人随意进入grub对系统造成破坏(修改root密码等操作)可以在grub配置文件文件中加入密码来防止他人随意进入。

    1. 使用grub-md5-crypt命令来生成加密的密码
    [root@localhost ~]# grub-md5-crypt
    Password: 
    Retype password: 
    $1$94MZ20$VEC6jrQzic0nYg3CgFxaD.
    
    1. 在配置文件中一个或某一个title添加password --md5 ***********格式的密码保护编辑模式
    # grub.conf generated by anaconda
    #
    # Note that you do not have to rerun grub after making changes to this file
    # NOTICE:  You have a /boot partition.  This means that
    #          all kernel and initrd paths are relative to /boot/, eg.
    #          root (hd0,0)
    #          kernel /vmlinuz-version ro root=/dev/mapper/VolGroup-lv_root
    #          initrd /initrd-[generic-]version.img 
    #boot=/dev/sda
    default=0
    timeout=5
    splashimage=(hd0,0)/grub/splash.xpm.gz
    hiddenmenu
    password --md5 $1$94MZ20$VEC6jrQzic0nYg3CgFxaD.                  #此处password可以对grub界面加密,使用的就是上面得到的加密的密码
    title CentOS 6 (2.6.32-754.el6.i686)
            root (hd0,0)
            kernel /vmlinuz-2.6.32-754.el6.i686 ro root=/dev/mapper/VolGroup-lv_root rd_NO_LUKS rd_NO_MD rd_LVM_LV=VolGroup/lv_swap crashkernel=auto LANG=zh_CN.UTF-8 rd_LVM_LV=VolGroup/lv_root  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
            initrd /initramfs-2.6.32-754.el6.i686.img
            password --md5 $1$94MZ20$VEC6jrQzic0nYg3CgFxaD.          #此处password可以对进入系统之前加密 
    

    加密后回到grub界面提示按p输入密码解锁下一步设置或环境

    加密后的grub界面.png
    按p后提示输入密码
    grub提示输入密码.png
    输入密码后按c可以进入编辑模式,在编辑模式下可以进行find来查看grub第一和第二阶段所有的硬盘位置,具体的命令可以通过help来获取帮助:
    grub命令界面.png

    实现kickstart文件制作与光盘镜像制作

    kickstart只能在图形界面下运行并先安装kickstart,命令如下:

    定制kickstart文件:
        # yum install  system-config-kickstart
        # system-config-kickstart
    
    kickstart配置界面.png
    1. 制作kickstart文件配置安装方法


      安装方法.png
    2. 配置分区


      分区信息.png
    3. 配置网络


      网络配置.png
    4. 配置防火墙


      防火墙e.png
    5. 配置图形界面


      图形界面配置.png
    6. 配置包组


      软件包选择.png
    7. 保存并检验


      保存.png
    [root@localhost ~]# ksvalidator ks.cfg
    [root@localhost ~]# 
    

    kickstart文件格式

    kickstart配置文件由命令段,程序包段,脚本段等一个分段内容组成

    • 命令段:指定各种安装前配置选项,如键盘类型等
      必备命令
      authconfig:认证方式配置
          authconfig  --enableshadow  --passalgo=sha512
      bootloader:定义bootloader的安装位置及相关配置
          bootloader  --location=mbr  --driveorder=sda  --append="crashkernel=auto rhgb quiet"
      keyboard:设置键盘类型
          keyboard us
      lang:语言类型
          lang  zh_CN.UTF-8
      part:分区布局;
          part  /boot  --fstype=ext4  --size=500
          part  pv.008002  --size=51200        #pv后面的数字是pv的id号
      clearpart:清除分区
          clearpart  --none  --drives=sda:清空磁盘分区;
      volgroup:创建卷组
          volgroup  myvg  --pesize=4096  pv.008002
      logvol:创建逻辑卷
          logvol  /home  --fstype=ext4  --name=lv_home  --vgname=myvg  --size=5120
      rootpw:管理员密码
          rootpw   --iscrypted  $6$4Yh15kMGDWOPtbbW$SGax4DsZwDAz4201.O97WvaqVJfHcISsSQEokZH054juNnoBmO/rmmA7H8ZsD08.fM.Z3Br/67Uffod1ZbE0s.
          生成加密密码的方式:
          ~]# openssl  passwd  -1  -salt `openssl rand -hex 4`
      timezone:时区
          timezone  Asia/Shanghai
      
      可选命令
      install  OR  upgrade:安装或升级;
      text:安装界面类型,text为tui,默认为GUI
      network:配置网络接口
          如:network  --onboot yes  --device eth0  --bootproto dhcp  --noipv6
      firewall:防火墙 
          如:firewall  --disabled
      selinux:SELinux
          如:selinux --disabled
      halt、poweroff或reboot:安装完成之后的行为;
      repo:指明安装时使用的repository;
          如:repo  --name="CentOS"   --baseurl=cdrom:sr0  --cost=100
      url: 指明安装时使用的repository,但为url格式;
          如:url --url=http://...省略
      
    • 程序包段:指明要安装程序包,以及包组,也包括不安装的程序包
    %packages            包安装的开始标识符
    @group_name          包要安装的包组
    package              要安装的单个包
    -package             不需要安装的包
    %end                 包安装的结束标识符
    
    • 脚本段:指明要运行的脚本,分为linux安装前的脚本和安装后脚本
    %pre:安装前脚本
        运行环境:运行安装介质上的微型Linux系统环境;
    %post:安装后脚本
        运行环境:安装完成的系统
    
    • ks:指明kickstart文件的位置,主要有以下几种格式,其中http,ftp和https三种形式引导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
    

    以下是系统安装完成之后在/root目录下根据用户选择生成的kickstart的配置文件信息

    [root@localhost ~]# cat anaconda-ks.cfg 
    # Kickstart file automatically generated by anaconda.
    
    #version=DEVEL
    install
    cdrom
    lang zh_CN.UTF-8
    keyboard us
    network --onboot yes --device eth0 --bootproto dhcp --noipv6
    rootpw  --iscrypted $6$Ka7MzfgRm5CS9N22$cMgIl.79/xGrzOG4jWCfWHnsbl0fuPIfI5zhfCEC.PKlAr18gJR7auJp8smR1MI73i9Hl3XV2Aa5tFMQ4/j9i0
    firewall --service=ssh
    authconfig --enableshadow --passalgo=sha512
    selinux --enforcing
    timezone 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
    #volgroup MYVG --pesize=4096 pv.008002
    #logvol / --fstype=ext4 --name=lv_ --vgname=MYVG --size=10240
    #logvol /home --fstype=ext4 --name=lv_home --vgname=MYVG --size=5000
    #logvol swap --name=lv_swap --vgname=MYVG --size=2000
    #logvol /usr --fstype=ext4 --name=lv_usr --vgname=MYVG --size=15000
    #logvol /var --fstype=ext4 --name=lv_var --vgname=MYVG --size=10000
    
    #part /boot --fstype=ext4 --size=500
    #part pv.008002 --size=60000
    
    
    repo --name="CentOS"  --baseurl=cdrom:sr0 --cost=100
    
    %packages --nobase
    @core
    %end
    

    对于修改的kickstart配置文件如果有语法错误可以使用检查语法错误命令: ksvalidator

    [root@localhost ~]# ksvalidator anaconda-ks.cfg 
    [root@localhost ~]# 
    #如果有错误会有提示
    

    引导光盘镜像制作及kickstart文件安装系统

    1. 创建目录并复制isolinux目录:
    引导光盘仅需要isolinux即可,并把配置好的kickstart文件复制到创建目录中

    [root@localhost ~]# mount /dev/cdrom /media
    mount: block device /dev/sr0 is write-protected, mounting read-only
    [root@localhost ~]# mkdir /tmp/myiso
    [root@localhost ~]# cp -r /media/isolinux/ /tmp/myiso/
    [root@localhost ~]# ls /tmp/myiso/isolinux/
    boot.cat  grub.conf   isolinux.bin  memtest     TRANS.TBL     vmlinuz
    boot.msg  initrd.img  isolinux.cfg  splash.jpg  vesamenu.c3
    [root@localhost ~]# cp ks.cfg /tmp/myiso/isolinux
    

    2. 创建iso文件系统:
    使用mkisofs命令来创建,格式如下:
    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 myiso/

    [root@localhost ~]# cd /tmp
    [root@localhost tmp]# mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "CentOS 7 x86_64 boot" -c isolinux/boot.cat -b isolinux/isolinux.bin -o /root/boot.iso myiso/
    I: -input-charset not specified, using utf-8 (detected in locale settings)
    genisoimage 1.1.9 (Linux)
    Scanning myiso/
    Scanning myiso/isolinux
    Excluded by match: myiso/isolinux/boot.cat
    Excluded: myiso/isolinux/TRANS.TBL
    Writing:   Initial Padblock                        Start Block 0
    Done with: Initial Padblock                        Block(s)    16
    Writing:   Primary Volume Descriptor               Start Block 16
    Done with: Primary Volume Descriptor               Block(s)    1
    Writing:   Eltorito Volume Descriptor              Start Block 17
    Size of boot image is 4 sectors -> No emulation
    Done with: Eltorito Volume Descriptor              Block(s)    1
    Writing:   Joliet Volume Descriptor                Start Block 18
    Done with: Joliet Volume Descriptor                Block(s)    1
    Writing:   End Volume Descriptor                   Start Block 19
    Done with: End Volume Descriptor                   Block(s)    1
    Writing:   Version block                           Start Block 20
    Done with: Version block                           Block(s)    1
    Writing:   Path table                              Start Block 21
    Done with: Path table                              Block(s)    4
    Writing:   Joliet path table                       Start Block 25
    Done with: Joliet path table                       Block(s)    4
    Writing:   Directory tree                          Start Block 29
    Done with: Directory tree                          Block(s)    2
    Writing:   Joliet directory tree                   Start Block 31
    Done with: Joliet directory tree                   Block(s)    2
    Writing:   Directory tree cleanup                  Start Block 33
    Done with: Directory tree cleanup                  Block(s)    0
    Writing:   Extension record                        Start Block 33
    Done with: Extension record                        Block(s)    1
    Writing:   The File(s)                             Start Block 34
     21.94% done, estimate finish Tue Oct  9 19:30:39 2018
     43.79% done, estimate finish Tue Oct  9 19:30:39 2018
     65.71% done, estimate finish Tue Oct  9 19:30:39 2018
     87.57% done, estimate finish Tue Oct  9 19:30:39 2018
    Total translation table size: 4701
    Total rockridge attributes bytes: 1438
    Total directory bytes: 2654
    Path table size(bytes): 26
    Done with: The File(s)                             Block(s)    22659
    Writing:   Ending Padblock                         Start Block 22693
    Done with: Ending Padblock                         Block(s)    150
    Max brk space used 0
    22843 extents written (44 MB)
    -----------------------------------------------------------------------------------------
    [root@localhost ~]# ls
    ab               download.cgi  hostname            line      sum       公共的  文档
    anaconda-ks.cfg  filename      idsum               linesum   user      模板    下载
    boot.iso         foo.sh        install.log         linesum2  useradd   视频    音乐
    dead.letter      hadoop        install.log.syslog  menu      wordlist  图片    桌面
    

    3. 使用FTP工具将boot.iso传到主机上:

    将boot.iso发送到主机.png

    4. 配置虚拟机并启动:
    光盘要选择boot.iso这个文件

    虚拟机配置.png

    5. 开机启动并配置kickstart文件:

    启动界面.png

    在以上界面按下ESC后进入boot,并输入ks.cfg的路径

    boot界面.png

    最后敲入命令即可进入自动引导安装了.

    相关文章

      网友评论

          本文标题:linux启动流程与grub和kickstart应用

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