Chapter 7——Linux系统流程及kickstart

一、简述linux操作系统启动流程

Linux系统的启动流程,以CentOS为例:

POST:Power On Self Test,设备开机自检

--> Boot Sequence(BIOS,MBR):读取BIOS配置,按次序查找各引导设备,第一个有引导程序信息(MBR,Master Boot Record)的设备即为启动时要用到的设备

--> Bootloader(GRUB):加载引导程序GRUB

--> kernel(ramdisk):通过ramdisk加载内核

--> rootfs(ro):以只读(ro)方式挂载临时根文件系统,加载驱动程序

--> /sbin/init(or /usr/lib/systemd/system) :将实际根文件系统从磁盘加载到内存并启动第一程序(CentOS 5,6为/sbin/init,CentOS 7为/usr/lib/systemd)

--> 读取配置文件:/etc/inittab,/etc/init/*.conf(CentOS 5,6)或/usr/lib/systemd/system/*,/etc/systemd/system/*(CentOS 7)

--> 设置默认运行级别

--> 运行系统初始化脚本,完成系统初始化

--> 关闭及启动对应级别下的服务

--> 设置登陆终端

[--> 启动图形终端]

·

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

GRUB:GRand Unit Bootloader,它是一个多重操作系统启动管理器,可用来引导不同系统,如Windows,Linux。
GRUB的版本:
grub 0.X:grub legacy(CentOS 5,6)
grub 1.X:grub2 (CentOS 7)

grub legacy:
    stage 1:mbr
    stage 1_5:mbr之后的扇区,让stage1中的bootloader能识别stage2所在的分区上的文件系统;
    stage 2:磁盘分区(/boot/grub/)

    注:stage2及内核等通常放置于一个基本磁盘分区;否则可能无法识别(例如:/boot放置于基于LVM和软RAID方式的磁盘分区,可能无法识别)
        功用:
            1、提供菜单、并提供交互式接口
                e:编辑模式,用于编辑菜单
                c:命令模式,交互式接口;
            2、加载用户选择的内核或操作系统
                允许传递参数给内核
                可隐藏此菜单
            3、为菜单提供了保护机制
                为编辑菜单进行认证
                为启用内核或操作系统进行认证

1、grub启动引导程序的配置文件:/boot/grub/grub.conf 或/etc/grub.conf(软连接)

[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
title CentOS (2.6.32-431.el6.x86_64)
    root (hd0,0)
    kernel /vmlinuz-2.6.32-431.el6.x86_64 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-431.el6.x86_64.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:内核匹配的ramfs文件;
        password [--md5] STRING:启动选定的内核或操作系统时进行认证;

注:grub-md5-crypt命令:可生成grub配置文件可识别的密文密码字符串

2、grub程序命令行接口详解

在系统引导过程中的系统选择界面时(即,进入grub引导程序的stage2时),如图:


Chapter 7——Linux系统流程及kickstart_第1张图片
image.png

按c键可进入grub的命令行接口,如图:


Chapter 7——Linux系统流程及kickstart_第2张图片
image.png
help:获取帮助列表
    help KEYWORD:详细帮助信息
find (hd#,#)/PATH/TO/SOMEFILE:查找某文件
root (hd#,#):指明哪个为根设备
kernel /PATH/TO/SOMEFILE:设定本次启动时用到的内核文件;额外还可以添加许多内核支持使用的cmdline参数;
    例如:init=/path/to/init,selinux=0
initrd /PATH/TO/INITRAMFS_FILE:设定为选定的内核提供额外文件的ramdisk
boot:引导启动选定的内核

手动在grub命令行接口启动系统:
    grub> root (hd#,#)
    grub> kernel /vmlinuz-VERSION-RELEASE ro root=/dev/DEVICE
    grub> initrd /initramfs-VERSION-RELEASE.img
    grub> boot

·

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

kickstart文件的制作——常用的两种方式

1、使用当前系统安装时生成的anaconda-ks.cfg文件作为模板,在此基础之上进行修改:
[root@localhost ~]# cp anaconda-ks.cfg ks.cfg
[root@localhost ~]# cat ks.cfg 
# 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$L0sbqes6Xp1/mBYR$DECT7xbtaElxFBd.rzfzK9BiE/WC0wDtlLBJUkyzVpd8tbH9qPchMZZoCQeGr6LhY14PDn6iPsatQqVPOufYI1
firewall --service=ssh
authconfig --enableshadow --passalgo=sha512
selinux --enforcing
timezone --utc Asia/Chongqing
bootloader --location=mbr --driveorder=sda --append="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 --all --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=2048 --maxsize=2048

#part /boot --fstype=ext4 --size=500
#part pv.008002 --grow --size=1


repo --name="CentOS"  --baseurl=cdrom:sr0 --cost=100

%packages
@chinese-support
@core
@server-policy
@workstation-policy
%end

kickstart文件格式解析:

命令段:指定各种安装前配置选项,如键盘类型等;
    必备命令
    authconfig:认证方式配置
        authconfig --enableshadow --passalgo=sha512     ————本地认证(shadow)
    bootloader:定义bootloader的安装位置及相关配置
        bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
    keyboard:设置键盘类型
        keyboard us
    lang:语言类型
        lang zh_CN.UTF-8
    part:分区布局
        part /boot --fstype=ext4 --size=500
        volgroup VolGroup --pesize=4096 pv.008002
    rootpw:管理员密码
        rootpw  --iscrypted $6$L0sbqes6Xp1/mBYR$DECT7xbtaElxFBd.rzfzK9BiE/WC0wDtlLBJUkyzVpd8tbH9qPchMZZoCQeGr6LhY14PDn6iPsatQqVPOufYI1
    timezone:时区

    可选命令
    install OR upgrade:安装或升级;
    text:安装界面类型,text为tui,默认为GUI
    network:配置网络接口
        network --onboot no --device eth0 --bootproto dhcp --noipv6
    firewall:防火墙
        firewall --disabled:关闭
        firewall --service=ssh:启动并放开指定服务
    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
脚本段
    %pre:安装前脚本
        运行环境:运行安装介质上的微型Linux系统环境;
    %post:安装后脚本
        运行环境:安装后的系统

    补充:分区相关的其它指令
        clearpart:清空磁盘分区
            clearpart --all --drives=sda
        volgroup:创建逻辑卷组
            volgroup VolGroup --pesize=4096 pv.008002
        logvol:创建逻辑卷
            logvol / --fstype=ext4 --name=lv_root --vgname=VolGroup --grow --size=1024 --maxsize=51200

注:修改完kickstart配置文件后,可通过命令ksvalidator KS_FILE检查ks文件是否存在语法错误。

2、通过图形化工具system-config-kickstart命令制作kickstart文件:
[root@localhost ~]# system-config-kickstart

a、手动一步一步配置每一个选项中的参数:


Chapter 7——Linux系统流程及kickstart_第3张图片
image.png

配置完成后,可在“文件”—“预览”中查看当前生成的配置文件内容,点击保存即可在指定目录下生成ks文件


Chapter 7——Linux系统流程及kickstart_第4张图片
image.png

Chapter 7——Linux系统流程及kickstart_第5张图片
image.png

b、可打开已有的ks文件进行修改,然后保存为指定目录下的ks文件:
Chapter 7——Linux系统流程及kickstart_第6张图片
image.png

Chapter 7——Linux系统流程及kickstart_第7张图片
image.png

Chapter 7——Linux系统流程及kickstart_第8张图片
image.png

光盘镜像制作

mkisofs命令(genisoimage)

- create ISO9660/Joliet/HFS filesystem with optional Rock Ridge attributes

mkisofs [options] [-o filename] pathspec [pathspec ...]
或genisoimage [options] [-o filename] pathspec [pathspec ...]

常用选项:

-r :启用 rock ridge 扩展一般的 unix 系统
-R或-rock:使用Rock Ridge Extensions格式
-J或-joliet:使用Joliet格式的目录与文件名称
-T或-translation-table:建立文件名的转换表,适用于不支持Rock Ridge Extensions的系统上
-v或-verbose:执行时显示详细的信息
--no-emul-boot:Boot image is 'no emulation' image即非模拟模式启动
--boot-load-size 4:Set numbers of load sectors 即设置载入部分的数量
--boot-info-table:Patch boot image with info table 在启动的图像中显示信息
-V "STRING"或-volid<光盘ID>:指定光盘的卷册集ID(光盘名)
-c /PATH/TO/boot.cat:制作可开机光盘时,mkisofs会将开机映像文件中的全-eltorito-catalog<开机文件名称>全部内容作成一个文件
-b /PATH/TO/isolinux.bin:指定在制作可开机光盘时所需的开机映像文件
-o /PATH/TO/ISONAME.iso:生成的光盘镜像文件保存的位置

示例:

[root@localhost ~]# mkdir myboot
[root@localhost ~]# cp -r /mnt/iso/isolinux/ myboot/
[root@localhost ~]# cd myboot/
[root@localhost myboot]# cp /root/anaconda-ks.cfg ks.cfg
[root@localhost myboot]# cd
[root@localhost ~]# 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/
I: -input-charset not specified, using utf-8 (detected in locale settings)
genisoimage 1.1.9 (Linux)
Scanning myboot/
Scanning myboot/isolinux
Excluded by match: myboot/isolinux/boot.cat
Excluded: myboot/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
 26.71% done, estimate finish Sun Oct  7 22:32:43 2018
 53.32% done, estimate finish Sun Oct  7 22:32:43 2018
 80.01% done, estimate finish Sun Oct  7 22:32:44 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)    18577
Writing:   Ending Padblock                         Start Block 18611
Done with: Ending Padblock                         Block(s)    150
Max brk space used 0
18761 extents written (36 MB)
[root@localhost ~]# file boot.iso 
boot.iso: ISO 9660 CD-ROM filesystem data 'CentOS 6 x86_64 boot           ' (bootable)

你可能感兴趣的:(Chapter 7——Linux系统流程及kickstart)