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