1、请详细描述CentOS系统的启动流程(详细到每个过程系统做了哪些事情)
第一步:加电自检
这个步骤中,CPU在通电后会自动到指定位置找一段代码执行加电自检动作。
第二步:启动BIOS
加载Bootloader程序,这个阶段可以分为三步:1、运行GRUB第一阶段,这个阶段的作用是运行一个程序加载GRUB的程序代码。2、由于GURB的程序代码在磁盘上,第1.5阶段就是挂载GRUB所在分区读取GRUB程序代码 第二阶段就是运行GRUB程序并启动内核程序。
第三步:内核加载
第一步探测可识别的所有硬件设备
第二步加载硬件设备驱动程序(有可能需要借助ramdisk)
第三步以只读的方式挂在根文件系统(防止内核将根文件系统破坏,当系统运行正常后再以读写方式挂载)
第四步运行用户空间的第一个应用程序/sbin/init
第四步:设置默认运行级别
第五步:运行系统初始化操作
1、设置主机名
2、设置欢迎信息
3、激活udev和selinux
4、挂载/etc/sysctl.conf文件的设置,来设定内核参数
5、检测根文件系统,并以读写方式重新挂载根文件系统
6、设置系统时钟
7、根据/etc/sysctl.conf文件的设置,来设定内核参数
8、激活LVM及RAID设备
9、加载额外设备的驱动程序
10、清理操作
第六步:关闭、启动对应级别下要停止的服务
第七步:设置登录终端
第八步:启动图形界面(可选)
2、通过现有系统,添加第二块硬盘,在该硬盘上安装grub及相关程序,可以让第二块硬盘成为其他设备的启动盘(CentOS6)
第一步向现有系统添加硬盘
第二步 将新添加的硬盘进行分区处理
一共分为三个分区:一个用于boot分区,一个用于swap分区,一个用于root根分区
第三步 将分区格式化
在安装grub的过程中,grub程序必须匹配boot目录,所以/dev/sdb1的挂载点必须是以/boot结尾的路径,现在演示的路径为/tmp/boot
将用于根分区的分区挂载到/tmp/sysroot目录上
第四步 在设备上安装grub
现在简单讲下grub-install的命令
--root-directory的参数主要是为了指明boot目录的父目录,grub-install会在指定的父目录里找到boot目录并安装grub程序。
最后的/dev/sdb是指定grub安装的磁盘设备。
现在来看看安装了grub之后的/tmp/boot目录
第五步 现在grub程序有了,需要将内核文件复制到/tmp/boot目录下
第六步 创建或者修改/tmp/boot/grub/grub.config的配置文件
一般使用现有系统的配置文件进行改动
改的结果是这样的。
必须要写selinux=0 和 init=/bin/bash(如果没有启动程序,需要直接运行bash的情况下)
第七步 配置根文件系统创建必须要的目录,目录里可以没有文件,但是需要有目录
第八步 将想要运行的程序的二进制文件和库文件都拷入到相应的目录中,通过ldd命令查看命令执行需要的库文件
第九步 通过切换根进行简单的应用测试
第十步 将新增的硬盘用于其他设备的启动盘
3、制作一个kickstart文件以及一个引导镜像。描述其过程。
Kickstart是Anaconda程序的配置文件,里面记录了Anaconda的执行过程的参数。Kickstart文件的生成有三种方式:1、在手动安装完系统后在root的家目录下就会有一个anaconda-ks.cfg的文件 2、通过system-config-kickstart命令生成 3、通过现有的kickstart文件来改
System-config-kickstart程序需要先安装才能使用
上面这个就是kickstart-config-start程序的界面。
制作一个引导镜像文件需要包含几个重要的文件。
需要将光盘镜像中的isolinux目录封装到引导镜像中。
通过下面的命令去封装镜像文件
mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "CentOS6-test" -c isolinux/boot.cat -b isolinux/isolinux.bin -o /boot-test1.iso /boot-test/
最后一个参数/boot-test/是isolinux/xxx文件的父目录。