linux启动过程步骤

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux启动过程步骤相关的知识,希望对你有一定的参考价值。

这是一个非常复杂的过程,但是可以简单的概括为如下几个步骤,每一个步骤你可以构思一些巧妙的实现来加深体。

启动第一步--加载Bios
当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它。这是因为BIOS中包含了CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息、PnP特性等等。在此之后,计算机心里就有谱了,知道应该去读取哪个硬件设备了。

启动第二步--读取MBR
众所周知,硬盘上第0磁道第一个扇区被称为MBR,也就是Master Boot Record,即主引导记录,它的大小是512字节,别看地方不大,可里面却存放了预启动信息、分区表信息。
系统找到BIOS所指定的硬盘的MBR后,就会将其复制到0x7c00地址所在的物理内存中。其实被复制到物理内存的内容就是Boot Loader,而具体到你的电脑,那就是lilo或者grub了。

启动第三步--Boot Loader
Boot Loader 就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核做好一切准备。
Boot Loader有若干种,其中Grub、Lilo和spfdisk是常见的Loader。
我们以Grub为例来讲解吧,毕竟用lilo和spfdisk的人并不多。
系统读取内存中的grub配置信息(一般为menu.lst或grub.lst),并依照此配置信息来启动不同的操作系统。

启动第四步--加载内核
根据grub设定的内核映像所在路径,系统读取内存映像,并进行解压缩操作。此时,屏幕一般会输出“Uncompressing Linux”的提示。当解压缩内核完成后,屏幕输出“OK, booting the kernel”。
系统将解压后的内核放置在内存之中,并调用start_kernel()函数来启动一系列的初始化函数并初始化各种设备,完成Linux核心环境的建立。至此,Linux内核已经建立起来了,基于Linux的程序应该可以正常运行了。

启动第五步--用户层init依据inittab文件来设定运行等级
内核被加载后,第一个运行的程序便是/sbin/init,该文件会读取/etc/inittab文件,并依据此文件来进行初始化工作。
其实/etc/inittab文件最主要的作用就是设定Linux的运行等级,其设定形式是“:id:5:initdefault:”,这就表明Linux需要运行在等级5上。Linux的运行等级设定如下:
0:关机
1:单用户模式
2:无网络支持的多用户模式
3:有网络支持的多用户模式
4:保留,未使用
5:有网络支持有X-Window支持的多用户模式
6:重新引导系统,即重启
关于/etc/inittab文件的学问,其实还有很多,在后序文章中设计到的,卖个关子,敬请期待,呵呵

启动第六步--init进程执行rc.sysinit
在设定了运行等级后,Linux系统执行的第一个用户层文件就是/etc/rc.d/rc.sysinit脚本程序,它做的工作非常多,包括设定PATH、设定网络配置(/etc/sysconfig/network)、启动swap分区、设定/proc等等。如果你有兴趣,可以到/etc/rc.d中查看一下rc.sysinit文件,里面的脚本够你看几天的:P

启动第七步--启动内核模块
具体是依据/etc/modules.conf文件或/etc/modules.d目录下的文件来装载内核模块。

启动第八步--执行不同运行级别的脚本程序
根据运行级别的不同,系统会运行rc0.d到rc6.d中的相应的脚本程序,来完成相应的初始化工作和启动相应的服务。

启动第九步--执行/etc/rc.d/rc.local
你如果打开了此文件,里面有一句话,读过之后,你就会对此命令的作用一目了然:
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don’t
# want to do the full Sys V style init stuff.
rc.local就是在一切初始化工作后,Linux留给用户进行个性化的地方。你可以把你想设置和启动的东西放到这里。

启动第十步--执行/bin/login程序,进入登录状态
此时,系统已经进入到了等待用户输入username和password的时候了,你已经可以用自己的帐号登入系统了。:)
参考技术A 加电启动BIOS->转到Grub引导程序(此步找到内核vmlinuz和根文件系统映像initrd)->启动内核并加载根文件系统映像->初始化系统环境->启动init进程(完成启动)本回答被提问者采纳

Linux用户管理Linux系统的启动

Linux系统的启动

一.启动步骤和GRUB

1Linux启动过程分                                                             

1BIOS自检

l  硬件检测及初始化

l  引导启动设备

2)引导启动设备

l  软盘(0磁道第一个扇区)

l  光盘(最外围存储轨道)

l  硬盘(MBR

l  USB存储设备

3)调用Linux引导程序至内存中

l Linux的引导程序可以使用GRUB/LILO等引导软件

l GRUB/LILO可以安装在MBR/引导分区的引导扇区中

4)运行Linux内核

l 内核放在/boot目录中,Linux系统可以同时支持多版本内核

l 解压缩内核

l 检测硬件

l 加载root文件系统

5)执行init进程(按“i”单步运行)

l 启动新进程或关闭进程

l 选择启动模式

l 建立虚拟终端

6)用户登录

l 输入用户名及口令

l 加载用户配置文件

l 加载shell程序

2.引导盘的创建

方法一:安装过程中创建

方法二:mkbootdisk

#mkbootdisk  --device  /dev/fd0    2.4.20-8

方法三:使用dd命令

# dd   if=/boot/vmlinuz  of=/dev/fd0

3GRUB

1GRUB简介

     GRUB是一种基于intel平台的功能强大的启动引导器

2GRUB特点

l  支持大硬盘,突破1024柱面的限制

l  支持两种界面(菜单,命令行)

l  开机画面

        3)安装GRUB

l  安装软件包

#rpm –ivh  grub-0.934.i386.rpm

l  使用安装命令安装GRUBMBR

#grub

grub>root (hdx,y)

grub>setup (hdx[,y])

4GRUB的配置

#vi  /boot/grub/grub.conf

grub.conf中常用的配置命令有:

default=菜单项序号/saved

设置启动菜单的默认启动项

hiddenmenu

隐藏菜单界面

splashimage =图像文件全路径名

指定某文件作为启动菜单的背景图像

timeout=延迟秒数

设置启动菜单的启动延时

title 菜单项名称

开始一个菜单项的配置,设置菜单项的名称

root (hdx,y)

设置GRUB的根设备为linux内核所在的分区

kernel  内核文件名称

指定内核文件的名称及加载内核所需的参数

initrd initrd文件名

指定镜像文件的位置

map  (hdx[,y])  (hdx[,y])

建立虚拟磁盘

rootnoverify (hdx,y)

指定windows启动引导器的位置

makeactive

标识指定分区为活动分区

chainloader +n/文件名称

调用指定windows启动文件

password 口令/--md5  口令密文

设置GRUB启动菜单和菜单项口令

lock

利用password设置的全局口令锁定菜单项

savedefault

保存当前启动菜单项为默认启动

文件实例:

# grub-md5-crypt(产生口令的MD5密文)

           # vi  /etc/grub.conf

        default=0                  

             timeout=50               

             splashimage=(hd0,0)/grub/splash.xpm.gz 

             password  --md5  #!dfdasdf34123!#@$!#@                        

             title  RedHat Linux 9.0          

             root   (hd0,)              

             kernel  /Vmlinuz-2.4.20-8  ro root=/LABEL=/

             initrd   /initrd-2.4.20-8.img       

             password  linux

             tile  windows 2000

             rootnoverify  (hd0,0)         

             chainloader  +1                 

             lock

5GRUBFAQ

l  编辑模式的使用

用于临时修改菜单的选项,在菜单界面中按E键进入

技术分享

菜单主界面

技术分享

编辑模式

l  命令行模式的使用

利用命令行命令设置GRUB,在菜单界面中按C键进入

技术分享

命令模式

grub命令行中常用的命令有:

grub>root  (hdx,y)       //设置根设备所对应的分区

            grub>kernel 内核文件     //设置内核文件的名称

            grub>initrd 镜像文件名 //设置镜像文件名

            grub>boot               //启动指定操作系统

            grub>rootnoveify (hdx,y)  //设置根设备所对应的分区,但不检查加载点

            grub>chainloader  文件名//加载指定的文件

grub>help               //获取帮助

grub>reboot             //重启系统

grub>md5-crypt         //生成口令的MD5密文

grub>setup (hdx[,y])    //安装GURBMBR/指定分区的引导扇区中

grub>hide 分区      //隐藏分区

grub>cat 文件名     //显示文件内容

grub>find 文件名     //查找文件

l  如果MBR中的GRUB引导程序被其它程序覆盖,应该如该恢复

1)  放入第一张安装启动盘,开始启动计算机:boot:linux rescue(启动linux的修复模式,加载硬盘上的LINUX系统到/mnt/sysimage

2)  #grub

grub>root  (hdx,y) 

grub>root  (hdx)

l  恢复GRUB的配置文件

由于grub.conf设置的问题,可以采用以下方法进行恢复:

1)  放入第一张安装启动盘,开始启动计算机:boot:linux rescue(启动linux的修复模式)

2#vi   /mnt/sysimage/boot/grub/grub.conf

l  如何利用GRUB进入单用户模式,找回丢失的root用户口令

GRUB菜单界面中按e编辑linux菜单项,给内核后面添加参数single

然后回车再按b进单用户模式、password root就可以了。

l  如何卸载GRUB

1#rpm  -e grub

2C:\>fisk/mbr

二.init 进程

1.        init进程的作用

init进程是系统启动第一个进程,它负责加载其它进程、管理系统的其它进程

2.        系统运行级别

运行级别

说明

0

关机

1

单用户模式

2

多用户模式、不支持NFS

3

多用户模式

4

保留

5

X-WINDOWS

6

重启

可以使用init在各个运行级别中进行切换,init命令格式如下:

#init  <0-6,a,s,q>

3.        inittab文件的分析

/etc/inittab文件用于设置init进程在执行时加载哪些程序,inittab文件由若干个记录构成,每条记录格式如下:

IDRUNLEVELACTIONCOMMAND

以下为默认inittab文件内容:

id:3:initdefault:

si::sysinit:/etc/rc.d/init.d/rc.sysinit

l0:0:wait:/etc/rc.d/rc0

l1:1:wait:/etc/rc.d/rc1

l2:2:wait:/etc/rc.d/rc2

l3:3:wait:/etc/rc.d/rc3

l4:4:wait:/etc/rc.d/rc4

l5:5:wait:/etc/rc.d/rc5

l6:6:wait:/etc/rc.d/rc6

ca ::ctrlaltdel:/sbin/shutdown  -t3 -r  now

pf::powerfail:/sbin/shutdown  -f  -h+2  “power failure;power shutting down”

pr:12345:powerokwait:/sbin/shutdown–c  “power  restored;shutdown cancelled”

1:2345:respawn:/sbin/mingetty tty1

2:2345:respawn:/sbin/mingetty tty2

3:2345:respawn:/sbin/mingetty tty3

4:2345:respawn:/sbin/mingetty tty4

5:2345:respawn:/sbin/mingetty tty5

6:2345:respawn:/sbin/mingetty tty6

x:5:respawn:/etc/X11/prefdm  -nodaemon

说明:

(1)Action用于设置调用进程的方式 

Respawn

只要进程停止,该进和便重新启动

Wait

进程运行一次,init等待到它停止

Once

进程运行一次

Boot

系统引导过程中,进程运行,忽略等级

Bootwait

系统引导过程中,进程运行,init等待结束

Off

无任何行动

Initdefault

系统默认运行等级

Sysinit

系统引导则运行,优先于bootbootwait

Powerwait

电源故障后发送信号给init,等待进程终止

Ctrlaltdel

init收到SIGINT信号时,该进程运行

Powerokwait

UPS恢复则向init发送SIGINT信号

2 修改/etc/inittab文件,可以设置默认启动模式、各运行级别所加载的程序、CTRLALTDEL的动作、开设虚拟用户终端

4.        /etc/rc.d 的目录内容

1/etc/rc.d/init.d目录

l  保存所有运行等级需要的所有脚本

l  启动、停止、重启某些服务

2/etc/rc.d/rc

l  系统改变运行等级,通过此脚本检查/etc/rc.d/rcX.d目录和文件可存在,以及是否正在运行等,以及运行/etc/rc.d/rcX.d中所有S开头的脚本

3/etc/rc.d/rcX.d目录

l  存放每一运行等级默认启动项,该目录中的文件链接到:/etc/rc.d/init.d

l  文件名格式为K{Two-digit number}  {script name}S{Two-digit number} {script name},K:stop参数运行,S:start参数运行;Two:数字代表执行顺序

4/etc/rc.d/rc.local

l  该脚本在2,3,5运行等级结束时执行

5/etc/rc.d/rc.sysinit

l  系统初始脚本,用于设置系统的时钟、加载键盘、加载系统字体、加载其他文件系统、激活交换分区、生成日志文件

三.用户登录

1.用户登录过程

 技术分享



2.用户登录命令

1su

功能:切换用户登录

格式#su  [参数]  [-]  [用户名]

参数:-c  命令      :运行指定的命令

      -m          :不重新设置环境变量

      -s shell路径 :运行指定的shell

      -             :连同工作环境一起切换

实例$su  -

#su  user1

$su  -c /sbin/init 0   root

2exit

功能:退出用户环境(ctrl+d

格式#exit

3login

功能:登录系统 

格式:#login  [参数]  [用户名]

参数:

p:通知login保持现在的环境参数

h:用来向远程登录的主机传输用户名

实例:#login

4logout

功能:退出用户环境、注消用户

实例:#logout

5sudo

功能:以其它用户执行指定的命令,默认是以root身份,只有/etc/sudoers文件中指定的用户有权执行

格式:#sudo [参数命令

参数:

-b  在后台执行指令

-H 将HOME环境变量设为新身份的HOME环境变量。
-k  结束密码的有效期限,也就是下次再执行sudo时便需要输入密码。
-l  列出目前用户可执行与无法执行的指令。
-p  改变询问密码的提示符号。
-s  执行指定的shell
-u<用户>  以指定的用户作为新的身份。若不加上此参数,则预设以root作为新的身份。
-v  延长密码有效期限5分钟。
实例:#sudo /sbin/init 0

说明:/etc/sudoers文件格式为:user  host=[all/nopasswd/run as 用户名]  command lint;其中All代表所有文件,nopasswd代表执行文件时不需要要口令

6who

功能:显示登录用户信息

格式:#who  [参数]

参数:-l   显示系统登录进程

-b   显示系统最后一次启动时间

实例:#who

      #who  -l

7w

功能:显示登录用户信息

格式:#w  [用户]

实例:#w

8whoami

功能:显示当前终端登录的用户名称

实例#whoami

9last

功能:显示最近的用户登录情况

格式:#last  [参数]

参数:num    显示指定终端上的用户登录信息

      -num  显示最近n次的用户登录信息

  -i   显示登录主机的IP地址

实例:#last

#last 3

10wall

功能:向每个用户终端上的用户发送消息

格式:#wall [参数]

参数:-n   不显示消息来源

实例:#wall

#wall -n

11write

功能:向指定终端的用户发送消息

格式:#write 用户名 [终端

实例:#write  user1   tty1

注意:/etc/motd为公告板文件,用于记录所有公告信息;/etc/issue为欢迎信息文件

12help

功能:获取shell内置命令的帮助信息

格式:#help  [内置命令名]

实例:#help

      #help times

13man

功能:打开命令手册文件

格式:#man  [命令名/文件名]

实例:#man  su


本文出自 “Linux狱长” 博客,请务必保留此出处http://sswqzx.blog.51cto.com/2494644/1971537

以上是关于linux启动过程步骤的主要内容,如果未能解决你的问题,请参考以下文章

Linux系统开机引导和启动过程-img文件

Linux内核设计第三周学习总结 跟踪分析Linux内核的启动过程

linux引导过程

Linux系统启动的大致过程

Centos系统启动流程

Linux 系统启动过程