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根文件系统切换到磁盘根目录
entos7表面是有“运行级别”这个概念,实际上是为了兼容以前的系统,每个所谓的“运行级别”都有对应的软连接指向,默认的启动级别时/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的版本分为:
目前centos 5和centos 6使用的就是 grub legacy 版本
centos 7使用的是 grub2 版本的启动引导程序
Linux系统中,与系统启动相关的文件均存储在/boot目录下.如grub vmlinuz initramfs等等
与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文件,其版本须和内核版本一致
在菜单页面按c即可进入命令行接口,在此命令行接口,我们可以配置相关的grub设置.
grub常用的指令有:
help:查看命令帮助;
root (DEVICE):指定系统和内核文件所在的分区,如root(hd0,0)。
find (hd0,0) /path/to/file:用于查找对应分区下的文件。常用于当不确认内核文件在哪个分区时,可使用此命令确认文件所在路径;支持tab补全;
kernel /path/to/kernel_file:用于指定要运行的内核文件。
initrd /path/to/kernel_file:指定initrd文件;
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)安装
选择光盘启动,自动化安装