Linux操作系统的引导过程

  计算机的存储器分为硬盘(海量存储器)和内存(主存储器),内存又分ROM和RAM两部分。

  ROM内有两个程序:boot 和 BIOS

1. 开机时,系统加载BIOS,并透过BIOS加载CMOS,由CMOS内的设定取得主机的各硬件信息,然后BIOS进行自检


2. BIOS通过硬件的INT 13中端功能来读取MBR,由MBR加载bootloader。

bootloader的主要功能:(bootloader可以安装在文件系统的根分区和磁盘的MBR上面)

   a. 提供选项:用于多重引导;           b. 载入系统内核;           c. 转交其他的bootloader


3. bootloader加载内核,内核被解压缩在内存当中,并借由内核的功能来驱动各硬件设备。

   kernel的主要工作:

   a. 硬件探测;         b. 驱动程序初始化;       c. 以只读方式加载根文件系统;     d.启动init进程

   kernel启动时候的所有信息在/var/log/demesg

   boot所在的位置不能是lvm,也不能是raid(软),最多是raid1,MBR的前446字节没有多余的地方加载其他的          

   驱动程序,否则内核就无法被加载。


4. 启动init进程,init读取/etc/inittab配置文件,并且根据配置文件的内容来完成一系列的任务。


5. 执行/etc/rc.d/rc.local,这里面主要是用户自定义开机启动程序的放置位置。

  开机过程中用到的配置文件

  /etc/modprobe.conf

  /etc/sysconfig/*

  这里面主要的配置文件有:

  authconfig:提供身份认证机制,是否使用/etc/passwd,/etc/shadow来提供身份认证,

  /etc/shadow采用何种加密算法(默认MD5),是否还有其他的身份认证方式NIS,LDAP等

  clock:设定系统的时区

  i18n:设定使用的语系

  network:设定网络信息


关于MBR

  MBR(Main Boot Record 主引导记录区) 位于整个硬盘的0磁道0柱面1扇区,其内包含最基本的引导加载程序  

 (Bootloader),这个Bootloader的目的是在加载内核文件。在总共512字节的主引导扇区中,MBR占用了446个  

  字节,另外的64个字节交给了DPT(Disk Partition Table硬盘分区表),最后两个字节“55,AA”是分区的结束标

  志。这个整体构成了硬盘的主引导扇区。主引导记录在硬盘上找到可引导分区,将其分区引导记录装入内存,并将  

  控制权交给分区引导记录,由分区引导记录定位根目录,然后装入操作系统。


BIOS 和 MBR都是硬件本身会支持的功能。


关于bootloader

  由于MBR只有512字节,分区表占去64个字节,还有两个字节的校验位,只剩下446个字节,这446个字节能够存

  放下bootloader吗?其实bootloader

  加载需要两个阶段

  第一阶段:加载bootloader的最小主程序

  第二阶段:加载bootloader的配置文件

  [root@server30 ~]# ls -l /boot/grub/

  total 234

  -rw-r--r-- 1 root root     63 Aug  6 17:04 device.map          grub的装置对应文件

  -rw-r--r-- 1 root root   7584 Aug  6 17:04 e2fs_stage1_5         ext2/ext3文件系统支持

  -rw-r--r-- 1 root root   7456 Aug  6 17:04 fat_stage1_5          fat支持

  -rw-r--r-- 1 root root   6720 Aug  6 17:04 ffs_stage1_5          ffs支持

  -rw------- 1 root root    812 Aug  6 09:07 grub.conf           grub配置文件

  -rw-r--r-- 1 root root   6720 Aug  6 17:04 iso9660_stage1_5         光盘支持

  -rw-r--r-- 1 root root   8192 Aug  6 17:04 jfs_stage1_5          jfs支持

  lrwxrwxrwx 1 root root     11 Aug  6 17:04 menu.lst -> ./grub.conf

  -rw-r--r-- 1 root root   6880 Aug  6 17:04 minix_stage1_5         mini文件系统支持

  -rw-r--r-- 1 root root   9248 Aug  6 17:04 reiserfs_stage1_5         reiserfs文件系统支持

  -rw-r--r-- 1 root root  32428 Jan  5  2007 splash.xpm.gz         开机图片

  -rw-r--r-- 1 root root    512 Aug  6 17:04 stage1          第一阶段说明

  -rw-r--r-- 1 root root 104988 Aug  6 17:04 stage2          第二阶段说明

  -rw-r--r-- 1 root root   7072 Aug  6 17:04 ufs2_stage1_5         ufs文件系统支持

  -rw-r--r-- 1 root root   6272 Aug  6 17:04 vstafs_stage1_5         vstafs支持

  -rw-r--r-- 1 root root   8904 Aug  6 17:04 xfs_stage1_5         xfs支持


关于GRUB,grub.conf

  default=0  开机使用哪个title,默认第一个

  timeout=5  5s延迟后不选择title的话默认使用第一个title进系统

  splashimage=(hd0,0)/grub/splash.xpm.gz  开机图片,(640*480 14bit色,要保存为xpm并且用gzip压缩一下)

  hiddenmenu 隐藏titile

  title Red Hat Enterprise Linux Server (2.6.18-164.el5) title名称

  root (hd0,0) 这里是第一块磁盘的第一个分区,grub认为所有的磁盘都是hd设备,并且磁盘号和分区号都从0开始

  kernel /vmlinuz-2.6.18-164.el5 ro root=/dev/vol0/root rhgb quiet 内核名称以及放置位置,root指定根目录,  

  rhgb显示为彩色

  quiet,对kernel侦测到的信息不显示输出

  initrd /initrd-2.6.18-164.el5.img  initrd的名称以及放置位置


  grub加密grub-md5-crypt

  在hiddenmenu下面写入

  password --md5 密文


  误操作grub损坏

  1,进入grub命令模式root(hd0,0);setup (hd0);quite

  2,grub-install --root-directory=/(此处的目录为boot的父目录)/dev/sda


  dd if=/dev/sda of=/backup/mbr bs=512 count=1 备份MRB

  dd if=/dev/zero of=/dev/sda bs=512 count=1 销毁MBR,会删除磁盘上面的所有分区信息以及bootloader






你可能感兴趣的:(Linux操作系统的引导过程)