1、简述linux操作系统启动流程
inux系统启动流程大致是这样的:
BIOS(Boot Sequence) –> MBR(GRUB) –> Kernel(ramdisk) –> rootfs –> /sbin/init(/etc/inittab)
BIOS
主板在接通电源后,BIOS会第一个获得系统的控制权。BIOS首先会对系统硬件进行检测(POST, Power On Self Test, 上电自检),自检测过程大致为:加电-CPU-ROM-BIOS-System Clock-DMA-64KB RAM-IRQ-显卡等。如果关键部件有问题,计算机会发出报警声。
自检一切正常后BIOS会调用一些设备自身ROM中的初始化代码,对这些设备进行初始化,比如显卡。这时可以看到一些初始化信息,介绍生产厂商、芯片类型等内容。
最后,BIOS会根据COMS中设置的启动顺序(Boot Sequence),依次尝试启动。当启动设备是硬盘时,BIOS会把系统控制权交给硬盘MBR中的bootloader。
MBR
MBR是Master Boot Record的简写, 即主引导记录。MBR记录一般在磁盘 0 磁道 1 扇区,共512个字节。前446个字节是BootLoader(引导程序),后 4*16 的 64 个字节是存放分区信息的,最后 2 个字节是校验信息,一般是 55AA。
大多数Linux系统使用GRUB作为BootLoader。GRUB可以引导多种操作系统,它可以识别磁盘文件系统的格式,所以只需要内核文件名和内核所在分区就可以加载内核,通过/boot/grub/grub.conf文体来配置这些信息。
GRUB分为3个阶段:
bootloader:1阶段
Stage1 的代码保存在MBR中前446字节。
partition:filesystem driver 1.5阶段
Stage1_5的代码允许GRUB识别多种类型的文件系统,识别每个文件系统的代码的代码保存在/boot/grub/*stage1_5 的文件中。
partition:/boot/grub,2阶段
Stage 2 代码读取/boot/grub/grub.conf文件,决定如何加载内核
Kernel
GRUB的最后阶段stage2会根据/boot/grub/grub.conf文件中的配置加载kernel到内存中,并将系统控制权交给kernel。
initrd是”initial RAM disk”的缩写,随kernel一起被GRUB加载进内存,在系统引导过程中挂载的一个临时根文件系统。因为Kernel为了精简,只保留了最基本的模块,因此,Kernel上并没有各种硬件的驱动程序,也就无法识rootfs所在的设备,故产生了initrd这个文件,该文件装载了必要的驱动模块。
rootfs
真正的根文件系统,作为接手initrd的。
/sbin/init
/sbin/init进程是Linux启动的第一个进程,PID=1。是所有传统的 centos 5 中sysvinit 已经淡出历史舞台,新系统普遍采用 UpStart 和 systemd 。
运行级别
运行级别:为了系统的运行或维护等目的而设定的机制;
0-6 :7个级别;
0:关机 shutdown
1:单用户模式,root用户,无须认证,维护模式;
2:多用户模式,会启动网络功能,但不会启动NFS,维护模式;
3:多用户模式,完全功能模式,文本界面,
4:预留级别,
5:多用户级别,完全功能模式,图形界面
6:重启,reboot
2、简述grub启动引导程序配置及命令行接口详解
grub的版本:
grub的版本分为:
grub 0.X (grub legacy)
grub 1.X (grub 2)
目前centos 5和centos 6使用的就是 grub legacy 版本 centos 7使用的是 grub2 版本的启动引导程序
grub的三个阶段
bootloader:Stage1
Stage1 的代码保存在MBR中前446字节。
partition:filesystem driver : Stage1_5
Stage1_5的代码允许GRUB识别多种类型的文件系统,识别每个文件系统的代码的代码保存在/boot/grub/*stage1_5 的文件中。
partition:/boot/grub,Stage 2
Stage 2 代码读取/boot/grub/grub.conf文件,决定如何加载内核
相关配置文件:
与grub相关的配置文件包括:/etc/grub.conf和/boot/grub/grub.conf
/etc/grub.conf是指向/boot/grub/grub.conf的软连接,grub程序在引导启动时会读取这个配置文件,并按照这个文件的配置参数引导启动系统
Centos 6 内容如下:
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=UUID=9e52c88a-8b61-444c-a78a-ac642700cf99 rd_NO_LUKS KEYBOARDTYPE=pc KEYTABLE=us rd_NO_MD crashkernel=auto LANG=zh_CN.UTF-8 rd_NO_LVM rd_NO_DM rhgb quiet
initrd /initramfs-2.6.32-431.el6.x86_64.img
default=0 :表示默认选择第一个选项进行配置 timeout: 表示选择菜单的时间,如果过了这个时间没有选择则表示使用默认选项 splashimage: 指定引导菜单中的背景图片的路径 titile: 指定选项的名称 root: 表示kernel和initrd文件所在的分区路径,而不是”根分区”;格式为:
root(hd#,#) 第一个 # 表示第几块硬盘,第二个 # 表示同一个硬盘上的分区,都是从0开始
kernel: 通常是用于指定要运行的内核文件路径,另外也可在其后设置相关的内核参数,如:ro表示只读,root表示指定根分区所在路径;
initrd: 为内核运行指定其可用的ramdisk文件,其版本须和内核版本一致;
passwd –md5 STRING :设置启动密码
GRUB的功能
1、提供引导菜单;
2、加载用户选择的内核或操作系统,并允许传递相应的内核参数给内核
3、提供命令行接口
命令行接口
在菜单页面按c即可进入命令行接口,在此命令行接口,我们可以配置相关的grub设置。
grub常用的命令有:
root(DEVICE):指定系统或内核文件所在的分区路径
kernel :指定要运行的内核文件路径
initrd :指定要运行的ramdisk文件
find /path/to/file:查找指定文件
help :帮助
3、实现kickstart文件制作与光盘镜像制作、
首先kickstart文件制作需要借助一款图形化程序:system-config-kickstart
[root@dns ~]# yum -y install system-config-kickstart
启动图形化界面:
[root@dns ~]#init 5
在打开的图形界面中通过file菜单选项选择安装过程中生成的/root目录下的anaconda-ks.cfg作为默认配置,在此基础上进行修改,以免去很多需要自己添加的过程;
主要内容有:
基本配置
安装过程中的默认语言
键盘类型
时区
root用户密码
安装方法
安装或升级
配置安装源(CD-ROM、FTP、HTTP、NFS、Hard Drive)
引导装载程序选项
是否需要安装boot loader
给内核传递的参数(auto rhgb quite)
分区信息
是否清楚MBR
是否清除现有分区
是否需要初始化磁盘标签
设定分区布局
网络配置
配置网络接口
IP地址
子网掩码
网关
DNS
验证
用户登录的认证方式
防火墙配置
是否启用
安全级别
显示配置
是否启用图形界面
软件包选项
需要安装哪些软件包
安装前脚本
安装后脚本
光盘镜像制作
1、将制作好的kickstart文件改名;
2、将光盘挂载上:
[root@dns ~]# mkdir /media/cdrom
[root@dns ~]# mount /dev/cdrom /media/cdrom
3、新建myboot文件夹,将kickstart文件和isolinux文件一起放入;
[root@dns ~]# mkdir myboot
[root@dns ~]# cp -r /media/cdrom/isolinux/ myboot/
[root@dns ~]# cp ks.cfg ./myboot/isolinux/
[root@dns ~]# rm -f ./myboot/isolinux/isolinux.cfg
[root@dns ~]# cd ./myboot/isolinux/
[root@dns isolinux]# chmod +w *
4、最后执行光盘镜像制作命令:
[root@dns ~]# 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 Mon May 14 16:30:03 2018
53.32% done, estimate finish Mon May 14 16:30:03 2018
80.01% done, estimate finish Mon May 14 16:30:03 2018
Total translation table size: 4477
Total rockridge attributes bytes: 1354
Total directory bytes: 2534
Path table size(bytes): 26
Done with: The File(s) Block(s) 18576
Writing: Ending Padblock Start Block 18610
Done with: Ending Padblock Block(s) 150
Max brk space used 0
18760 extents written (36 MB)
本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/102003