1、简述linux操作系统启动流程
inux系统启动流程大致是这样的:
post ->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(boot loader)
grub:0.x:grub legacy
grub: 1.x:grub2
grub legacy
stage1:mbr
stage1.5:mbr之后的扇区,让stage1中的bootloader能识别stage2所在的分区上的文件系统;
stage2:磁盘分区(/boot/grub)
配置文件:/boot/grub/grub.conf,<—/etc/grub.conf
stage2及内核等通常放置于一个基本磁盘分区:
功用:
1.提供菜单,并提供交互式接口
e:编辑模式,用于编辑菜单:
c:命令模式,交互式接口:
2.加载用户选择的内核或操作系统
允许传递参数给内核
可隐藏此菜单
3.为菜单提供了保护机制
为编辑菜单进行认证
为启用内核或操作系统进行认证
如何识别设备:
(hd#,#)
hd#:磁盘编号,用数字标识:从0开始编号
#:分区编号,用数字表示;从0开始编号 如:(hd0,0)
grub的命令行接口
help:获取帮助列表
help keyword:获得详细帮助信息
find (hd0,0)/path/to/somefile:
root(hd0,0)
kernel /path/to/kernel_file:设定本次启动时用到的内核文件:额外还可以添加许多内核支持使用的 cmdline参数:例如 init=/path/to/init,selinux=0
initrd /path/to/initramfs_file:设定为选定的内核提供额外文件的ramdisk;
boot:引导启动选定的内核
手动在grub命令行几口启动系统
grub>root (hd0,0)
grub>kernel /vmlinuz-VERSION-RELEASE ro root=/dev/DEVICE
grub>initrd /initramfs-VERSION-RELEASE.img
grub>boot
配置文件:/boot/grub/grub.conf
配置选项:
default=#:设定默认启动的菜单项:编号从零开始
timeout=#:指定菜单项等待选项选择的时长
splashimage=(hd0,0)/path/to/xpm_pic_file:指明菜单背景图片文件路径
heddenmenu:隐藏菜单
password [–md5] string:惨淡编辑认证
title title:定义菜单标题,可出现多次
root (hd0,0):grub查找stage2及kernel文件所在设备分区:为grub的根
kernel /vmlinuz-VERSION-RELEASE ro root=/dev/DEVICE:启动的内核
initrd /initramfs-VERSION-RELEASE.img:内核匹配的ramfs文件
password [–md5] string:启动选定的内核或操作系统时进行认证
grub-md5-crypt命令用来生成password密码
进入单用户模式:
1.编辑grub菜单(选定要编辑的title,而后使用e命令)
2.在选定的kernel后附加 1,s,S或single都可以
3.在kernel所在行,键入b命令
安装grub:
1.grub-install
grub-install –root-directory=ROOT /dev/DISK
2.grub
grub>root (hd0,0)
grub>setup (hd0
3、实现kickstart文件制作与光盘镜像制作
安装引导
ks:指明kickstart文件的位置;
ks=
DVD drive:ks=cdrom:/path/to/kickstart_file
Hard Drive:ks=hd:/DEVICE/PATH/TO/KICKSTART_FILE
HTTP Server:ks=http://HOST:[PORT]/PATH/TO/KICKSTART_FILE
FTP Server:ks=ftp://HOST:[PORT]/PATH/to/KICKSTART_FILE
HTTPS Server:ks=https://HOST:[PORT]/PATH/TO/KICKSTART_FILE
kickstart文件的格式
命令段:
指定各种安装前配置选项,如键盘类型等;
1.命令段中的必备命令:
authconfig:认证式配置
authconfig –enableshadow –passalgo=sha512
bootloader:定义bootloader的装置位置及相关配置
bootloader –location=mbr –driveorder=sda -append=”crashkernel=auto rhgb quiet”
keyboadr:设置键盘类型
keyboard us
lang:语言类型
lang zh_CN.UTF-8
part:分区布局;
part /boot –fstype=ext4 –size=500
part pv.008002 –size=51200
rootpw:管理员密码
rootpw –iscrypted
timezone:时区
timezone Asia/Shanghai
补充:分区相关的其他指令
clearpart:清除分区
clearpart –none –drives=sda:清空磁盘分区;
volgroup:创建卷组
volgroup myvg –pesize=4096 pv.008002
logvol:创建逻辑卷
logvol /home –fstype=ext4 –name=lv_home –vgname=myvg –size=5120
生成加密密码的方式:
openssl passwd -1 salt `openssl rand -hex 4`
2.可选命令:
install OR upgrade:安装或升级;
text:安装界面类型,text为tui,默认为GUI
network:配置网络接口
network –onboot yes –device eth0 –bootproto dhcp –noipv6
fairwall:防火墙
firewall –disabled
selinux:SELinux
selinux:disabled
程序包段
指明要安装程序包,以及包组,也包括不安装的程序包;
%packages
@group_name
package
-package
%end
脚本段
%pre:安装前脚本
运行环境:运行安装介质上的微型linux系统环境;
%post安装后脚本
运行环境:安装完成的系统;
系统安装后禁用防火墙:
CentOS 6
service iptables stop
chkconfig iptables off
CentOS 7
systemctl stop firewall
系统安装完成后禁用SELinux
编辑/etc/sysconfig/selinux或/etc/selinux/config文件,修改SELINUX参数的值为下面其中之一:
permissive
disabled
立即生效:
getenforce
setenforce 0
定制kickstart文件:
yum install system-config-kickstart
system-config-kickstart 图形化的ks配置命令
检查语法错误:
ksvalidator
光盘镜像制作
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/
本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/104482
评论列表(1条)
总结的比较到位,实操部分能把遇到的问题或者思路写出来会更好点。继续加油哦。