Linux启动

最近看的一本书《Ubuntu LInux从入门到精通(版本9)》,感到有些东西是需要记录学许的,特此记下来。

如图所示,在Intel X86体系结构的计算机系统中,位于0号扇区512字节的数据块为主引导区(MBR,Master Boot Record)。使用0号扇区存储初始引导程序(boot.img),1~62号扇区(31KB)存储核心引导程序(core.img)。63号以后微操作系统分区。

Linux系统的基本引导步骤

  1. 加电自检。启动计算机时,计算机会自动跳转并执行ROM中的BIOS引导程序,开始检测系统的硬件配置,运行硬件诊断程序,执行加电自检。找出能够引导系统的存储设备,一般是硬盘,或者光盘等。找到后,BIOS将会立即加载0号扇区MBR中的初始引导程序(boot.img)。

  2. 执行初始引导程序(boot.img),进行初始引导,最后加载并启动系统盘等引导设备的1~62号扇区中的核心引导程序(core.img)。

  3. 执行核心引导程序(core.img),读取grub.cfg,根据其中的设置,在控制台屏幕上显示一个操作系统的引导菜单。

  4. 根据用户选择,及grub.cfg文件的设置,加载并执行ext2.mod文件系统模块,以便能够识别Ext2/3/4类型的文件系统,从而访问“/”/boot文件系统分区。

  5. 加载、执行系统内核文件/boot/vmlinuz-version-generic,加载、解压厨师磁盘内存映像文件/boot/initrd.img-version-generic。根据引导参数,以只读或读写方式,把磁盘内存映像文件安装成一个临时的虚拟“/”文件系统。出发startup事件。

  6. 系统内核开始检测、设置Linux系统的硬件运行环境,配置CPU、内存、磁盘设备、I/O设备及其他硬件设备等,初始化软件模块,组织、初始化各种内部数据表,构建运行环境。再加载一些必要的驱动程序模块。

  7. 启动/sbin/init程序。

  8. init进程检索/etc/init目录,监听各种系统事件。在收到startup事件之后,立即调度运行/erc/init/rc-sysinit.conf/etc/init/hostname.conf/etc/init/mountall.conf等作业。

  9. 根据/etc/init/rc-sysinit.conf作业触发的运行级事件,调度运行/etc/init/rc.conf作业,进而以运行级2作为参数,运行/etc/init.d/rc脚本,启动/etc/rc2.d目录中的shell脚本,启动DNSmysqlsshdNFS等服务进程。

  10. 根据启动过程中及部分作业触发的事件,调度运行/etc/init目录中的作业,设置系统时钟、内核参数及网络连接,启动系统日志守护进程,启动从容、atdanacron等守护进程,启动X服务器及GNOME显示管理器GDM等,直至控制台上显示出注册界面。系统已经就绪。

Grub文件内容介绍,/etc/default/grub文件

# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
#   info -f grub -n 'Simple configuration'

#用于指定GRUB引导的默认操作系统。0表示第一个,1表示第二个,以此类推。saved表示使用上次使用的选项。
GRUB_DEFAULT=0
#表示在引导期间禁止显示操作系统选择菜单。0表示不显示系统引导菜单,也不延迟系统引导。若大于0,GRUB将会在正式引导之前暂停指定的时间,但不显示系统引导菜单,超时后立即引导默认的操作系统。
GRUB_HIDDEN_TIMEOUT=0
#如果true表示,屏幕将是空的,不显示倒计时。若为false,将会按照GRUB_HIDDEN_TIMEOUT设置的显示一个倒计时。
GRUB_HIDDEN_TIMEOUT_QUIET=true
#用于指定开始引导之前的等待时间,就是留给用户选择操作系统的选择时间。单位是秒。若为-1,则没有时间限制,直至用户选择。
GRUB_TIMEOUT=10
#
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
#表示将指定的参数附加到Linux配置参数的后面。
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
#如果指定了任何参数,GRUB将会把这些参数附加到常规引导菜单项和恢复模式菜单项的linux配置参数后面。
GRUB_CMDLINE_LINUX=""

# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"

# Uncomment to disable graphical terminal (grub-pc only)
#表示采用图形终端显示系统引导菜单
#GRUB_TERMINAL=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#用于设置屏幕的分辨率
#GRUB_GFXMODE=640x480

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#表示是否允许GRUB把形如root=UUID=xxx的参数传递给Linux系统内核。
#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entries
#表示是否在引导菜单中增加一个系统恢复模式引导项
#GRUB_DISABLE_RECOVERY="true"

# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"

#开头的是注释内容,不起作用的。修改了这个文件之后并不能起作用,还要在终端中输入update-grub

PS:如果要改变GRUB菜单的颜色,可以修改/etc/grub.d/05_debian_theme文件。里面的32和33行有如下两句。

echo "{1}set menu_color_normal=white/black"
echo "
{1}set menu_color_highlight=black/light-gray"

分别代表,引导菜单的文字为白色,背景为黑色。选中菜单项文字微黑色,背景色为亮灰色。

另外,如果觉得太麻烦,可以使用软件

Grub Customizer ,是一个很酷的GRUB2 配置工,图形化界面,让你配置更简单,轻松上手:

*GRUB等待时间;
*屏幕分辨率;
*GRUB2 色彩设置;
*GRUB 背景2图片;
*开机选项设置;

安装

Ubuntu 9.10+版本用户可以使用命令安装:

sudo add-apt-repository ppa:danielrichter2007/grub-customizer
sudo apt-get update
sudo apt-get install grub-customizer

Grub customizer

还要继续学习阿。接下来学习server方面的东西。

>> 若为原创,转载请注明: 转载自Laycher's Blog

>> 本文链接地址: Linux系统启动过程及Grub简略学习

>> 订阅本站: http://feed.feedsky.com/laycher