一、bios的初始化
1,Peripherals detected 外围设备检测
2,Boot device selected 启动设备选择
3,First sector of boot and executed 读取并执行引导设备的第一个扇区
引导设备的第一个扇区为MBR(master boot record)主引导记录。
MBR大小为512字节,分三部分组成,分别是:446字节的引导程序+4*16=64字节的分区表+2个字节的结束位。
由于分区表占46字节,每个分区由16个字节来表示,这也是为什么一个硬盘最多只能建4个主分区的原因。
----------------------------------------------------------------------------------
实验1:当MBR的前446个字节损坏,即引导程序损坏时
#dd if=/dev/random of=/dev/sda bs=1 count=446
//把第一块硬盘的的引导程序写乱码
然后,进入修复模式
用#grub-install /dev/sda 进行恢复
----------------------------------------------------------------------------------
实验2:为了防止整个MBR损坏,我们事先备份到另一个硬盘,当MBR损坏时,我们可以还原MBR。
步骤一:备份MBR到另一块硬盘
#mount /dev/sdb1 /disk/sdb/
#dd if=/dev/sda of=/disk/sdb/mbr.bak bs=512 count=1
步骤二:删除sda硬盘上的MBR
#dd if=/dev/zero of=/dev/sda bs=512 count=1
#sync
步骤三:用备份的mbr.bak文件还原sda的MBR
重启后进入修复模式,然后用
#chroot /mnt/sysimage 进入真实目录
#mount /dev/sdb1 /disk/sdb
#dd if=/disk/sdb/mbr.bak of=/dev/sda bs=512 count=1
//还原mbr文件
**********************************************************************************
二、Starting the boot process :GRUB 开始引导进程
1,启动菜单的选择
2,Argument passing 参数的传递
**********************************************************************************
三、Booeloader components 启动引导部件
1,启动引导程序驻留在MBR中,加载启动分区
2,Kernel的查找,加载操作系统的文件类型和启动ramdisk文件
3,读取启动设备
**********************************************************************************
四、GRUB 和 grub.conf文件
1,可进行快速的命令交换
2,可启动多种类型的文件系统
3,可使用MD5加密
----------------------------------------------------------------------------------
#cd /boot/grub
#cat grub.conf
//我们先查看下grub.conf文件
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/sda2
# initrd /initrd-version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/hacker.jpg.tar.gz
hiddenmenu
title Red Hat Enterprise Linux Server (2.6.18-164.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-164.el5 ro root=LABEL=/ rhgb quiet crashkernel=128M@16M
initrd /initrd-2.6.18-164.el5.img
---------------------------------------------------------------------------------
default=0 //默认选择的操作系统,即第一个操作系统。GRUB 开始引导进程的第一步就是启动菜单的选择。
timeout=5 //默认等待时间的5秒。
splashimage=(hd0,0)/grub/hacker.jpg.tar.gz
//用来设置启动时的背景图片,这里可以不设定背景图片。
title Red Hat Enterprise Linux Server (2.6.18-164.el5)
//title就是用来显示的标题,这里我们可以随便定义。
root (hd0,0)
//加载启动分区,hd代表硬盘,这里是加载的第一块硬盘的第一个分区
kernel /vmlinuz-2.6.18-164.el5 ro root=LABEL=/ rhgb quiet crashkernel=128M@16M
//加载系统内核,ro 代表以只读方式加载,LABEL=/代表的是卷标
//rhgb 和 quiet 为内核参数,rhgb为启动时以图形化方式启动,quiet为启动过程中服务出错提示
initrd /initrd-2.6.18-164.el5.img
//加载ramdisk文件
---------------------------------------------------------------------------------
(1) 使用#e2label /dev/sda1 查看和修改卷标
(2) 使用zcat initrd-2.6.18-164.el5.img |cpio -imd 把ramdisk文件反解出来
实验1:实验PXE网络引导安装,但是网络安装的客户端却加载不到网卡驱动,因此网络安装不能继续。我们可以通过添加针对此网卡的驱动到ramdisk文件中,使得网络安装能够成功。
步骤一:首先,在系统中安装针对此网络客户端的网卡驱动,安装完成之后,我们找到已经安装好的网卡的驱动程序,在/lib/modules/'uname -r'/kernel/drivers/net目录下面,驱动文件以ko结尾。
步骤二:编辑initrd-2.6.18-164.el5.img, 这个ramdisk文件
因为initrd-2.6.18-164.el5.img文件是以gzip压缩的,我们可以通过gunzip解压
#file initrd-2.6.18-164.el5.img
文件编码是ASCII码,因此我们用cpio把文件展列出来。
#cpio -iv <initrd-2.6.18-164.el5.img
步骤三:把网卡的驱动程序.ko文件加入到刚展开的ramdisk中间。
步骤四:对编辑后的ramdisk文件生成initrd-2.6.18-164.el5.img
#find ./ |cpio --quiet -c -o |gzip -9 -n>/root/initrd-2.6.18-164.el5.img
**********************************************************************************
五、Kernel initialization 内核的初始化
1,device detection :硬件设备的查找与发现
2,deviec driver initialization 硬件设备的初始化
3,mounts root file system read only 添加root级别的只读文件的属性
4,Loads initial process 加载init进程,init进程是所有进程的父进程
----------------------------------------------------------------------------------
实验1:/boot 下的grub的修复
步骤一、删除grub
#rm /boot/grub -rf //删除grub目录
#dd if=/dev/zero of=/dev/sda bs=446 count=1 //损坏mbr中的启动引导程序。
步骤二、进入修复模式
#chroot /mnt/sysimage
#grub-install /dev/sda 重新安装grub
步骤三、手工编辑grub.conf文件
grub>root (hd0,0)
grub>kernel /vmlinuz-2.6.18-164.e15 ro root=LABEL=/
grub>initrd /initrd-2.6.18-164.e15.img
grub>boot
步骤四、进入系统,重新编写grub.conf文件
default=0
timeout=5
splashimage=(hd0,0)/grub/hacker.jpg.tar.gz
hiddenmenu
title Red Hat Enterprise Linux Server (2.6.18-164.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-164.el5 ro root=LABEL=/ rhgb quiet crashkernel=128M@16M
initrd /initrd-2.6.18-164.el5.img
----------------------------------------------------------------------------------
实验2、如果忘记root密码,如何破解root密码?
步骤一、重启后进入系统选择菜单栏,按“e"编辑commands
步骤二、编辑grub 进入单用户模式
grub edit >kernel /vmlinuz-2.6.18-164.e15 ro root=LABEL=/ 1
步骤三、在单用户模式中,直接输入password,然后输入新的密码即可。然后输入exit,
正常启动。
实验3、MD5加密保护我们的密码
#grub-md5-crypt >>/boot/grub/grub.conf
//以MD5算法加密当前用户的密码,然后追加到gurb.conf文件中
然后,在grub.conf文件中,另起一行,输入
Paaaword --md5 *********************
//*****代表以MD5加密后的密码
**********************************************************************************
六、Init inisialization (init进程的初始化)
Init 进程是其他所有进程的父进程,init进程的配置文件为/etc/inittab,当init进程启动后就会读取/etc/inittab配置文件。
我们先看下init进程的作用:
1,初始化运行级别
2,系统初始化脚本,读取 /etc/rc.d/rc.sysinit文件
3,加载服务脚本,读取/etc/rc.d/tc.X,为所有服务的启动脚本
4,运行级别的脚本
5,加载键盘布局
6,启动ups电源
**********************************************************************************
七、 /etc/rc.d/rc.sysinit的作用
1,激活了udev和selinux
Udev:指/dev下面的设备文件,都是系统中存在的设备,当硬件中存在的设备在/dev目录下,就会生成设备文件,当设备从系统中移除,那么dev目录下的设备文件也被移除,此机制称为Udev机制。
Selinux:安全的增强linux
2,加载内核参数,内核参数的配置文件是/etc/sysctl.conf
例如:#vim /etc/sysctl.conf
修改其中的net.ipv4.ip_forward = 0 改为1 ,代表启用ip转发的功能。
使用sysctl -a 可以查看当前生效的内核参数。
3,设置系统的时钟
4,加载键盘布局
5,启用swap分区
6,设置计算机名
7,检测和重新挂载根文件系统
8,激活RAID和LVM逻辑卷
9,开启磁盘配额的功能
10,检查和挂载其他文件系统。
加载/etc/fstab,fstab文件指定了系统的分区的情况
11,移除一些废弃的文件和进程
*********************************************************************************
八 、/etc/rc.d/rc.loacl 开机脚本文件
所有的运行级别完成之后,都会运行这个开机脚本。
**********************************************************************************
小结:
1,runlevel
在当前系统下输入#runlevel
如果出现 N 5
那么N代表在此之前没有其他的模式,5代表当前的运行模式
2,进入单用户模式,可以用1,s,S,single
但是1与其他的有区别,1代表读取了/etc/rc.d/rc1.d脚本,而其他的没有。
3,Emergency(紧急模式)用于排错,绕过rc.sysinit文件,也成为su-login模式。
实验:修改/etc/fstab文件,使得/etc/rc.sysinit在挂载和检查其他文件系统的时候出错,
此时系统将进入紧急模式,紧急模式下排错。
步骤一、编辑/etc/fstab文件,使得/etc/rc.sysinit在检查和挂载其他文件系统时出错。
因为,rc.sysinit将检查和加载其他文件系统时读取/etc/fstab脚本,现在fstab脚本出错,因此rc.sysinit启动出错。在系统启动过程中,rc.sysinit脚本运行出错时,系统将自动进入紧急模式。
步骤二、在紧急模式下配置/etc/fstab文件
#mount -o remount ,rw //重新挂载系统属性并修改为读写属性。
4,在linux下开启服务启动项
Chkconfig --level 35 sshd on