一、Linux操作系统启动流程
- Linux操作系统的启动流程为:POST(加电自检)–> BIOS –> Bootloader –> kernel –> /sbin/init。
POST介绍:
POST(POST ON SELF TEST)开机自检,主机接通电源后,系统进行的一个自我检测的过程,对系统的几乎所有的硬件设备进行检测。如果必需的硬件被发现而且发现正在适当地工作,计算机开始启动。如果硬件没有被发现或者被发现工作不正常,根据问题的性质,基本输出输入系统(BIOS)发出一个错误信息,可能是在荧屏显示的文本或一系列的特殊的蜂鸣声。有些设备的存在与否不影响系统的正常启动:如键盘、鼠标等。
BIOS介绍:
自检的功能是由BIOS(BASIC INPUT OUTPUT SYSTEM)程序来实现的,即基本输入输出功能,它是装在在硬件芯片CMOS之上。BIOS会列出一些可以启动的装置顺序,随后BIOS会读取该引导设备中的MBR来进行系统启动的下一阶段。MBR为第一个可以启动的硬盘的第一个扇区,即主引导记录(Master Boot Record)。MBR大小为512bytes,前446bytes为bootloader,后64bytes为分区表,最后2bytes为结束标识;
GRUB介绍:
GRUB系统引导启动工具,grub有两个版本,0.x系列被称为grub1,也被称为grub legacy,centos5,6上使用的是0.x系列;1.x被称为gurb2,用于centos7;grub分为3个阶段: 1:Stage1的作用是启动安装在MBR中的bootloader主程序,其作用便是指向stage2,引导stage2运行; 2:Stage1.5作用为让grub程序能够识别grub2所在的分区。或许你也已经发现,在/boot/grub目录下有诸多以stage15结尾的文件,表示各种文件系统所对应的stage15,和stage1文件一样,能够让grub识别stage2所在分区的文件不是这些,而是在系统安装时,早已确定了stage2所在目录的文件系统格式,并将与之对应的以stage1_5结尾的文件安装至MBR之后的62个扇区内; 3:Stage2 作用:提供菜单、并提供交互式接口;加载用户选择的内核或操作系统,并允许传递参数给内核;提供菜单保护机制。
kernel介绍:
系统进入kernel阶段,所有的硬件设备都已准备就绪,kernel进一步加载硬件驱动程序,在内存中生成临时只读的rootfs,运行用户控件的第一个应用程序:/sbin/init。在Centos 6中系统的初始化程序是/sbin/init,但是到了Centos 7 则该用了systemd作为系统的初始化程序。
init初始化:
系统开始完成初始化,运行第一个程序init,init主要实现的功能为: (1) 设置主机名; (2) 设置欢迎信息; (3) 激活udev和selinux; (4) 挂载/etc/fstab文件中定义的所有文件系统; (5) 检测根文件系统,并以读写方式重新挂载根文件系统; (6) 设置系统时钟; (7) 根据/etc/sysctl.conf文件来设置内核参数; (8) 激活lvm及软raid设备; (9) 激活swap设备; (10) 加载额外设备的驱动程序; (11) 清理操作;
Linux系统运行级别:
Linux系统共有7个运行级别:
运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆
运行级别2:多用户状态(没有NFS)
运行级别3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式
运行级别4:系统未使用,保留
运行级别5:X11控制台,登陆后进入图形GUI模式
运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动
运行级别的原理:
1:在目录/etc/rc.d/init.d下有许多服务器脚本程序,一般称为服务(service)
2:在/etc/rc.d下有7个名为rcN.d的目录,对应系统的7个运行级别
3:rcN.d目录下都是一些符号链接文件,这些链接文件都指向init.d目录下的service脚本文件,命名规则为K+nn+服务名或S+nn+服务名,其中nn为两位数字。
4:系统会根据指定的运行级别进入对应的rcN.d目录,并按照文件名顺序检索目录下的链接文件
对于以K开头的文件,系统将终止对应的服务
对于以S开头的文件,系统将启动对应的服务
5:查看运行级别用:runlevel
6:进入其它运行级别用:init N
7:另外init0为关机,init 6为重启系统
二、简述grub启动引导程序配置及命令行接口详解
GNU GRUB(GRand Unified Bootloader)是一个多操作系统启动程序;它允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。GRUB可用于选择操作系统分区上的不同内核,也可用于向这些内核传递启动参数。GRUB主要分为三个步骤:stage1,stage1.5,stage2。
1:stage1:用于启动Boot loader来加载stage2的内容至内存中;
2:stage1_5:其能够识别内核和stage2所在的分区的文件系统格式类型,帮助引导stage2;
3:stage2:读取grub.conf 配置文件,并实现引导功能的扩展;
Linux GRUB的配置文件放置于:/etc/grub.conf;/boot/grub/grub.conf上:
[root@localhost ~]# ll /etc/grub.conf /boot/grub/grub.conf
-rw-------. 1 root root 771 Apr 13 23:01 /boot/grub/grub.conf
lrwxrwxrwx. 1 root root 22 Mar 5 17:17 /etc/grub.conf -> ../boot/grub/grub.conf
GRUB配置文件信息如下:
default=0:表示有多个grub引导菜单时,选择哪一个作为默认启动引导菜单,default=0表示默认使用第一个title菜单中的配置;
timeout=5:在grub选择菜单中,5秒内,如果用户没有选择任何一个title,则使用default中指定的titile菜单中的配置进行启动;
splashimage:指定引导菜单中的背景图片的路径;
titile:指定title菜单到的名称;
root:表示kernel和initrd文件所在的分区路径,而不是“根分区”;其设置格式为:root (hd#,#),硬盘均会被识别为hd,第一个#表示第几个硬盘,从0开始;地第二个#表示同一个硬盘上的不同分区,也使用数字标识,从0开始;
kernel:通常用于指定要运行的内核文件路径,如:/vmlinuz-2.6.32-642.el6.x86_64;另外也可在其后设置相关的内核参数,如:ro表示只读,root表示指定根分区所在路径,关闭selinux等等;
initrd:为内核运行指定其可用的ramdisk文件,其版本须与内核版本相一致;
系统开机过程中按任意键,即可进入 GRUB菜单界面:
GRUB命令行接口:
在菜单栏界面按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配置启动系统;
三、实现kickstart文件制作与光盘镜像制作
kickstart主要用于实现自动安装和配置的工作,通过使用kickstart,系统管理员能够创建一个单独的、包含安装过程中遇到的所有问题答案的文件。kickstart文件能被存储在服务器系统之上,机器在安装系统的时候可以读取该文件。在Centos系统中,完成系统安装后,在root目录下会生成一个名为anaconda-ks.cfg的kickstart文件。此文件即为配置自动安装的脚本
- kickstart文件的组成部分包括三部分:命令段:用于配置系统安装时除了软件安装以外的自动应答;
软件包段,用于选择系统安装哪些packages,通常以%packages开头,结尾;
脚本段,为可选段落,用于设置自动执行的脚本,可设置在安装系统前或安装系统后执行。
kictstart的参考配置如下:
install
cdrom
lang en_US.UTF-8
keyboard us
network --onboot no --device eth0 --bootproto dhcp --noipv6
rootpw --iscrypted $6$Sb9pJZSdPRxv6w2t$Knsn1j/sh6hZ7yDueCMkJWfj/JSE7xQ19ciEL1PToemsUaDqro0jJKA9Y1SrKYTp4gn4KLS72mviDrIwcuvtQ.
firewall --service=ssh
authconfig --enableshadow --passalgo=sha512
selinux --enforcing
timezone --utc Asia/Shanghai
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
repo --name="CentOS" --baseurl=cdrom:sr0 --cost=100
%packages
@base
@core
@debugging
@basic-desktop
@desktop-debugging
@desktop-platform
@directory-client
@fonts
@general-desktop
@graphical-admin-tools
@input-methods
@internet-applications
@internet-browser
@java-platform
@legacy-x
@network-file-system-client
@office-suite
@print-client
@remote-desktop-clients
@server-platform
@server-policy
@workstation-policy
@x11
mtools
pax
python-dmidecode
oddjob
wodim
sgpio
genisoimage
device-mapper-persistent-data
abrt-gui
samba-winbind
certmonger
pam_krb5
krb5-workstation
libXmu
%end
光盘镜像制作:
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/95833