linux笔记 第13天 系统启动流程、Grub详解、case函数

1、linux系统启动流程详解

2、grub配置使用详解

3、linux启动流程及过程演示

4、bash编程之函数

 

一、linux系统启动流程详解

    1、kernel的功能:进程管理、文件系统、硬件驱动、内存管理、安全功能:SELinux、网络子系统

        内核设计流派:单内核体系:Linux支持模块化、模块还可以动态装载或卸载

                Linux内核:核心 + 外围模块

                核心:/boot/vmlinux-VERSION-release

                模块:/lib/modules/VERSION-release

                .ko: kernel object

                ramdisk: /boot/initramfs-VERSION-release.img

                在内核启动过程中装载根文件系统时有用;        

        微内核体系:Windows、Solaris


    2、Linux系统启动流程:X86(PC)


     (1)POST:加电自检、ROM+RAM、ROM:CMOS (BIOS)、RAM:、EFI()

        引导次序:按次序找引导设备,第一个有引导程序的设备即为启动PC server所用到的设备;

        1st boot: 

        2nd boot:

        3rd boot:

        

     (2)MBR:Master Boot Record 在第一个扇区共512bytes(446: bootloader、64:分区表、2: 5A)

        由于MBR较小,故在bootloader上存放了启动内核的部分代码来引导GRUB.


     (3)bootloader: 选择要启动的内核(在当前磁盘的某或某些分区上)        

        LILO: LInux LOader:0-1023范围内的柱面构成的分区的内核文件

        GRUB: GRand Unified Bootloader(CentOS 5\6:Grub 0.97、 CentOS 7:Grub2 1.96)

        

     (4)kernel:自身初始化\探测所有能识别的硬件\装载驱动程序\只读方式装载根文件系(rootfs)

        

     (5)init    /sbin/init

        CentOS 5: SysV, init

        CentOS 6: upstart, init

        CentOS 7: systemd, init

        

        CentOS 5 SysV, init, /etc/inittab --> /etc/rc.d/rc.sysinit

        CentOS 6 Upstart, /etc/init/*.conf (/etc/inittab)--> /etc/rc.d/rc.sysinit

        chkconfig

        CentOS 7 Systemd, /usr/lib/systemd/system/

        CentOS 5: init

        kernel ==> /sbin/init (/etc/inittab) 


      (6)run-level设定系统默认运行级别

        0-6: 7个级别

        0:关机

        1: single user mode, s, S, single

        2: multi user mode, 不支持NFS功能

        3:完全多用户模式,文本接口

        4:未使用,预留级别

        5:完全多用户械,图形接口

        6: 重启

        

切换级别:init #


进一步初始化系统

/etc/rc.d/rc.sysinit


启动指定的默认级别的默认为启动的服务,停止指定的级别下默认为关闭的服务;

/etc/rc.d/rc#.d

S##: 启动的服务

K##:停止的服务


##:01-99,数字越小,越优先启动或关闭;


脚本如果期望能够被chkconfig命令使用,要在脚本中添加如下行

# chkconfig: - 85 15

-:当此脚本由chkconfig控制时,默认哪些级别就是开启的,

85:启动优先级

15: 关闭优先级


# chkconfig --add SRV_SCRIPT

# chkconfig --del SRV_SCRIPT

# chkconfig SRV_SCRIPT {on|off}

默认为2345级别;

--level ######


/etc/rc.d/rc.local (/etc/rc.local): 是一个脚本,通常为系统启动完成的最后运行一个脚本;


定义一些组合键的功能:通常是Ctrl+Alt+Delete


初始化字符终端


如果有需要,启动图形终端


二、GRUB配置文件详解:

    centos 5:/etc/inittab 每行定义一种action和对应的程序:

        id:runlevels:action:process

         如:si::sysinit:/etc/rc.d/rc.sysinit

         si表示ID号, runlevel省律表示所有级别,

         sysinit表示系统初始脚本/etc/rc.d/rc.sysinit:表示打算系统初始化执行什么脚本

    CentOS 6: /etc/inittab

        由/etc/init/*.conf 一类的配置文件定义init的初始化动作

        由upstart调用,程序为/sbin/init


/etc/rc.d/rc.sysinit: 系统初始化脚本

        设定主机名:读取/etc/sysconfig/network文件中的HOSTNAME参数,并以之设定主机名

        打印文本欢迎信息

        激活SELinux和udev

        挂载/etc/fstab文件中定义的其它文件系统

        激活swap

        检测根文件系统,并以读写方式重新挂载;

        设置系统时钟

        根据/etc/sysctl.conf设置内核参数

        激活LVM和RAID设备;

        加载额外设备的驱动程序;

        清理操作

        

初始化流程:POST --> (BIOS)boot sequence --> MBR(bootloader) --> kernel + ramdisk(initrd, initramfs) --> mount rootfs (ro) --> /sbin/init (CentOS 5: /etc/inittab, CentOS6 /etc/init/*.conf) 

设定默认运行级别 --> 使用/etc/rc.d/rc.sysinit初始化系统 --> 分别启动并关闭指定服务 --> Ctrl+Alt+Delete组合键 --> 启动字符终端 --> 启动图形终端


GRUB: GRand Unified Bootloader

        grub程序由两段组成:

        stage1: MBR (0柱面 0磁道 1扇区)

        stage1_5: MBR随后的扇区

        stage2: 读取grub.conf配置文件,并实现引导功能的扩展

        

grub的功能:

        1、提供菜单,并提供交互式接口

        e: 进入编辑模式

        2、选择要启动的内核或系统

        允许传递引导参数给内核

        选择界面可隐藏

        3、为编辑功能提供保护机制

        启用内核文件:

        选择运行指定的内核得先输入密码

        传递参数:

        使用e命令得先输入密码


grub命令行接口:

        root:指定哪个分区为接下来要启动的系统或内核文件所在的分区

        root (DEVICE)

        所有硬盘都识别为hd

        不同的硬盘基于数字标识:如hd0, hd1等

        同一个硬盘上的不同分区,也使用数字标识,如hd0,0  hd1,5

        

        root (hd0,0)

           find (DEVICE)/path/to/file 用于查看kernel的位子

        kernel: 指定要运行的内核文件

        initrd: 为要运行的内核指定其可用的ramdisk文件

        boot: 启动此前配置好的内核或系统

        

grub.conf:参数:

        default=: 选择第几个title配置的内核或系统,各title从0开始编号

        timeout=#: 菜单显示的超时时长;

        splashimage=/path/to/some_image_file:指定菜单的背景图片;

            此图片只能为14bits色,xpm格式,gzip压缩;

        hiddenmenu: 隐藏菜单

        title TILTE STRING:显示于菜单中的标题

              root

            kernel

            initrd


grub保护机制:

        1、生成密码:

        # grub-md5-crypt

        2、保护编辑功能,则需要title之外的添加

        password --md5 密码串

        3、保护使用某内核,则需要内核对应的title之下添加

        password --md5 密码串

        

安装grub的方式:

        1、使用grub-install命令

        # grub-install [--root-directory=/path/to/somewhere] DEVICE

        

        --root-directory=/path/to/somewhere

        /path/to/somewhere:内核及initrd文件所在的分区的挂载点的父目录且此挂载点必须叫boot

        例如:/dev/sdb1: /mnt/boot

        # grub-install --root-directory=/mnt /dev/sdb

        

你可能感兴趣的:(linux,笔记)