第七周 简述linux操作系统启动流程

目录

 

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

centos6启动流程:

centos7启动流程:

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

grub的版本:

grub的三个阶段

与grub相关的配置文件

grub的命令行接口

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


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

centos6启动流程:

1.POST:通电自检

2.BIOS:BOIS自检,加载硬盘

3.读取MBR,进行MBR引导

4.bootloader:grub引导菜单

5.加载内核 Kernel(ramdisk)

6.启动init进程,依据inittab文件设定运行级别 (inittab用于定义默认运行级别)

7.init进程,执行rc.sysinit文件

8.分别执行/etc/init/rcS.conf、/etc/init/rc.conf、/etc/init/start-ttys.confl来调用命令执行/etc/rc#.d/文件里面定义的是各种服务的启动脚本,可以ls查看,S开头代表开机启动的服务,K开头的是关机要执行的任务。#代表数字,一个数字代表一个运行级别,共7个运行级别,这里就不多说了

9.执行/etc/rc.d/rc.local

10.执行/bin/login程序,等待用户登录

centos7启动流程:

1.POST:通电自检

2.BIOS:BOIS自检,加载硬盘

3.读取MBR,进行MBR引导

4.bootloader:grub引导菜单

5.加载内核和inintamfs模块

6.内核开始初始化,使用systemd来代替centos6以前的init程序

7.执行initrd.target

包括挂载/etc/fstab文件中的系统,此时挂载后,就可以切换到根目录了

8.从initramfs根文件系统切换到磁盘根目录centos7表面是有“运行级别”这个概念,实际上是为了兼容以前的系统,每个所谓的“运行级别”都有对应的软连接指向,默认的启动级别时/etc/systemd/system/default.target,根据它的指向可以找到系统要进入哪个模式

模式:0 ==> runlevel0.target, poweroff.target

           1 ==> runlevel1.target, rescue.target

            2 ==> runlevel2.target, multi-user.target

            3 ==> runlevel3.target, multi-user.target

            4 ==> runlevel4.target, multi-user.target

           5 ==> runlevel5.target, graphical.target

           6 ==> runlevel6.target, reboot.target

9.systemd执行sysinit.target

10.systemd启动multi-user.target下的本机与服务器服务

11.systemd执行multi-user.target下的/etc/rc.d/rc.local

12.Systemd执行multi-user.target下的getty.target及登录服务

getty.target是启动终端的systemd对象。如果到此步骤,系统没有被指定启动图形桌面,到此就可以结束了,如果要启动图形界面,需要在此基础上启动桌面程序

13.systemd执行graphical需要的服务

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

grub的版本:

grub的版本分为:

  1. grub 0.X (grub legacy)
  2. grub 1.X (grub 2)

目前centos 5和centos 6使用的就是 grub legacy 版本 
centos 7使用的是 grub2 版本的启动引导程序

grub的三个阶段

  1. stage 1: 用于启动Boot loader 来加载stage2的内容至内存中
  2. stage 1_5:用于识别内核和stage2所在分区的文件系统格式类型,帮助引导stage2
  3. stage 2: 读取 grub.conf 配置文件,并实现引导功能的扩展

Linux系统中,与系统启动相关的文件均存储在/boot目录下.如grub vmlinuz initramfs等等

与grub相关的配置文件

与grub相关的配置文件包括:/etc/grub.conf/boot/grub/grub.conf 
/etc/grub.conf是指向/boot/grub/grub.conf的软连接,grub程序在引导启动时会读取这个配置文件,并按照这个文件的配置参数引导启动系统

文件内容如下:

 

default=0

timeout=5

splashimage=(hd0,0)/grub/splash.xpm.gz

hiddenmenu

title CentOS 6 (2.6.32-696.el6.x86_64)

root (hd0,0)

kernel /vmlinuz-2.6.32-696.el6.x86_64 ro root=UUID=2c1d3c99-493f-483b-9abf-c4c7171e4598 rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet

initrd /initramfs-2.6.32-696.el6.x86_64.img

defaule: 表示有多个grub引导菜单时,选择哪一个作为默认启动引导菜单, 
defaule=0:表示默认选择第一个选项进行配置 
timeout: 表示选择菜单的时间,如果过了这个时间没有选择则表示使用默认选项 
splashimage: 指定引导菜单中的背景图片的路径 
titile: 指定选项的名称 
root: 表示kernel和initrd文件所在的分区路径,而不是”根分区”;其格式为:

root(hd#,#)  第一个 # 表示第几块硬盘,第二个 # 表示同一个硬盘上的分区,都是从0开始

kernel: 通常是用于指定要运行的内核文件路径,如:/vmlinuz-2.6.32-642.el6.x86_64;另外也可在其后设置相关的内核参数,如:ro表示只读,root表示指定根分区所在路径,关闭selinux等等; 
initrd: 为内核运行指定其可用的ramdisk文件,其版本须和内核版本一致         

grub的命令行接口

在菜单页面按c即可进入命令行接口,在此命令行接口,我们可以配置相关的grub设置. 
grub常用的指令有:

  1. help:查看命令帮助;

  2. root (DEVICE):指定系统和内核文件所在的分区,如root(hd0,0)。

  3. find (hd0,0) /path/to/file:用于查找对应分区下的文件。常用于当不确认内核文件在哪个分区时,可使用此命令确认文件所在路径;支持tab补全;

  4. kernel /path/to/kernel_file:用于指定要运行的内核文件。

  5. initrd /path/to/kernel_file:指定initrd文件;

  6. boot:以当前配置好的grub配置启动系统;

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

光盘引导镜像制作过程
  (1) 准备工作目录,例如这里使用/tmp/cdrom;
   #mkdir /tmp/cdrom
  (2) 挂载系统发行光盘,复制光盘所有内容至/tmp/cdrom;
  #mount -r -t iso9660 /dev/cdrom /media/cdrom
  #cp -r /media/cdrom/. /tmp/cdrom
  #chmod u+w isolinux/* 修改文件权限
  (3) 复制制作好的kickstart文件ks.cfg至/tmp/cdrom中;
  #cp /root/ks.cfg /tmp/cdrom
  (4) 如果需要,可以编辑/tmp/cdrom/isolinux/isolinux.cfg 
    在label linux后的append指令后附加ks=cdrom:/ks.cfg,从而实现自动调用光盘上提供的ks文件;
  (5) 创建iso镜像:        
   # mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "CentOS 6.6 X86_64 boot disk" -b isolinux/isolinux.bin -c isolinux/boot.cat -o /root/boot.iso cdrom/
  (6)安装

选择光盘启动,自动化安装

你可能感兴趣的:(学习心得)