日期:2014-05-16  浏览次数:20686 次

Linux学习笔记之Linux引导流程解析
1、Linux引导流程:frimeware--bootloader--kernel--init--/etc/inittab--initdefault--/etc/rc.d/rc.sysinit--/etc/rc.d/rc/--/etc/rc.d/rcN.d(N代表0~6的数字)--username--password
 
  ->固件firmware(CMOS/BIOS) -->POST加电自检
  MBR:Master Boot Record主引导记录  位于0柱面0磁头1扇区  里面保存了 Bootloader(引导加载程序)、Partition table(分区表)、Magic Number(结束标记)
  ->自举程序BootLoader(GRUB) -->载入内核
  BootLoader(GRUB):相当于windows操作系统的NTLDR,其配置问价为boot.ini。在linux里面也有一个这样的自启动程序就是GRUB,其配置文件vi /etc/grub.conf 这是/boot/grub/grub.conf的符号链接文件
  "kernel /boot/vmlinuz-2.6.32-279.el6.i686"其中vmlinuz-2.6.32为内核的版本号,其中6表示该操作系统为正式版,奇数为测试版,偶数为正式版 可以使用uname -r 查看linux系统的版本号
  ->载入内核 Kernel ("kernel /boot/vmlinuz-2.6.32-279.el6.i686")  -->内核只需要做两件事情:1、驱动硬件,内核里面有硬件的驱动程序。2、启动一个进程,进程名字为init,也是系统启动的第一个进程
  init进程启动后读取inittab文件,执行缺省的运行级别,从而继续引导过程。在UNIX系统中,init是第一个可以存在的进程,它的PID恒为1,但它也必须向一个更高级的进程负责:PID为0的内核调度器(Kernel scheduler),从而获得CPU时间.可以使用 ps -le |more查看进程号
  [root@CentOS-Test boot]# ps -le |more
  F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
  4 S     0     1     0  0  80   0 -   718 -      ?        00:00:02 init (是所有进程的父进程)
  1 S     0     2     0  0  80   0 -     0 -      ?        00:00:00 kthreadd
  
  ->启动进程init
  ->读取执行配置文件/etc/inittab
  inittab是init进程的配置文件。文件位置 /etc/inittab。是linux的运行级别配置文件
  运行级别相当于windows里面的安全模式等等。
 同步硬件和软件的时钟:
 设置以硬件时钟的时间设置系统时钟
 [root@CentOS-Test data]# hwclock --hctosys
 设置以系统时钟时间设置硬件时钟
 [root@CentOS-Test data]# hwclock --systohc
 设置系统时钟:
 [root@CentOS-Test data]# date -s "2012-11-21 12:01:25"
 2、Linux运行级别
 使用grep -v "^#" /etc/inittab去掉注释去查看inittab配置文件
  [root@CentOS-Test etc]# grep -v "^#" /etc/inittab |more (#是要排除的行)
  id:5:initdefault:
  或者使用vi命令进行修改
  vi /etc/inittab
  # Default runlevel. The runlevels used are:
  #   0 - halt (Do NOT set initdefault to this)  //表示关机
  #   1 - Single user mode //单用户模式,类似于windows的安全模式。只有root可以登录。没有图形界面。是一种修复模式
  #   2 - Multiuser, without NFS (The same as 3, if you do not have networking)//多用户模式,无网络文件系统,不能实现Linux和Unix的文件共享
  #   3 - Full multiuser mode//全功能下的多用户模式
  #   4 - unused //没有在使用的,只启动自己需要的服务
  #   5 - X11  //是系统缺省的运行级别。是图形界面环境的运行级别
  #   6 - reboot (Do NOT set initdefault to this)   //系统重启,不能将此运行级别设置为默认的运行级别
  #
  id:5:initdefault:
  id:当前的运行级别   initdefault:默认的运行级别
  查看当前的运行级别:runlevel
  [root@CentOS-Test etc]# runlevel
  3 5
  切换当前的运行级别:telinit或init(telinit是init的一个链接)
  init 1   init3  init 5