Chinaunix首页 | 论坛 | 博客
  • 博客访问: 29292
  • 博文数量: 12
  • 博客积分: 258
  • 博客等级: 二等列兵
  • 技术积分: 155
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-21 21:46
文章分类

全部博文(12)

文章存档

2011年(12)

我的朋友

分类: LINUX

2011-03-27 22:33:18

  • 本篇中假设计算机由硬盘启动

 

按下电源键,伴随着电流声和风扇的旋转声,系统开始启动。

首先BIOS( Basic Input Output System )中的信息会被读取,BIOS里面主要记录了主板芯片组以及相关硬件设置的信息。从BIOS中将获取系统启动的最重要的信息,那就是启动设备代号。读取完BIOS设置后,系统会根据BIOS的信息,进行POST自检(power on self test),在这个过程中主要进行硬件的初始化等操作,并确定启动设备。确定从硬盘启动之后,就要从硬盘中读取启动信息了。

对于硬盘来说,它有一块特殊的区域,这个区域是硬盘的“0柱面、0磁头、1扇区”,通常我们称他叫MBR(Master Boot Record)。在安装系统的时候,我们会将boot loader安装在这个区域。例如,Grub。进入MBR之后,Grub将引导Linux内核/boot/vmlinuz。内核文件将进驻内存,此时,内核开始测试各种硬件的驱动程序,如存储设备、CPU、网卡、声卡、显卡等。之后,系统将挂载文件系统。此处需要注意,最先被挂在的目录是/,而且是一只读的方式挂载的。另外,通常会创建一个叫做RAM Disk的虚拟硬盘来辅助系统启动(包括initrd、linuxrc)。在内核驱动等工作完成之后,这个虚拟硬盘将会被移除。当然,并不是每个linux系统启动的时候都要创建它。之后,操作系统开始启动。

系统启动后,第一个被启动的处理程序叫做init。每一个程序(进程)都有一个唯一的识别码,这个识别码叫做PID(Process ID)。因为init是系统中第一个启动的处理程序,所以他的PID是1(是所有其他进程的祖先进程)。init初始化系统后,会启动另外一个处理程序来开启终端并设置标准输入、标准输出、标准错误信息输出等数据流。这些都是和终端(terminal)连接在一起的。标准输入通常为键盘,标准输出和标准错误输出为屏幕。此刻,终端可以登录。

输入用户名后,系统会提示输入口令。此时,/bin/login程序将检查passwd文件来验证身份。在passwd的域中发现用户名后,锁码程序(encryption program)会验证口令的正确性。确认后login程序建立一个初始化环境,此环境是由定义工作环境的变量传到shell构成。从passwd的相应域中获取home、shell、user、和logname等变量。执行shell。启动的shell叫做登录shell。

shell启动后,先检查有系统管理者设置的系统初始化文件(/etc/profile 或/etc/.login),接着检查登录目录,执行相应的shell初始化文件(.profile .login .tcshrc .cshrc)。在这个过程中,可以设置系统变量和用户变量。全部执行好之后,shell启动完毕,等待用户命令。

阅读(318) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~