`
zqjshiyingxiong
  • 浏览: 441414 次
  • 性别: Icon_minigender_1
  • 来自: 无锡
社区版块
存档分类
最新评论

每日一搬(3):开机关机流程与Loader

阅读更多

刚刚开始学习linux,最近和鸟哥学了不少东西,下面是我转的,和大家一起学习。

 

1.开机关机流程与Loader
a> 载入BIOS的硬件信息,并取得第一个开机装置的代号
b> 读取第一个开机装置的MBR的boot Loader(也就是LILO,grub,spfdisk等)的开机信息
c> 载入kernel核心信息,kernel开始解压缩并尝试驱动所有硬件
d> kernel执行init程序并取得run-level信息
e> init执行/etc/rc.d/rc.sysinit
f> 启动kernel的外挂模块(/etc/modprobe.conf)
g> init执行run-level的各个批次档(Scripts)
h> init执行/etc/rc.d/rc.local
i>  执行/bin/login程序,并等待使用者登入
j>  登入之后开始以shell控制主机。

 

 

2.linux开机的一个简单流程:
Kernel (/boot/vmlinuz)
BIOS -> MBR(硬盘启动) -> Boot Loader -> initrd ->  ->              ...              ->              init ->

system init(/etc/rc.d/rc.sysinit)       ->       启动系统服务与相关启动设定文件(/etc/rc.d/rc.n 或 /etc/sysconfig)

-> 用户自订开机启动程序(/etc/rc.d/rc.local)
-> 根据/etc/inittab的设定,载入终端或X-Window


boot loader要具有两个功能:
a> menu
b> pointer

 

 

3.第一个程序:init
linux系统当中第一个被执行的程序为/sbin/init,也就是我们在用ps aux 查看进程信息时所看到的PID=1的那个进程,我的系统为:root                    1             0.0             0.4             2888             560 ?                   S               Jan10              0:02 init [5]

 

 

4.init的功能:
a> 利用设定文件/etc/inittab来取得开机的等级:run level
b> 再由run level的设定来进行不同的开机服务项目的启动

5.什么是run level?
linux就是根据run level来规定系统使用不同的服务来启动的,让linux的使用环境不同。

 

 

6.run level的等级
根据有无网络以及有无X Windos可将run level分为六个等级:
0——halt (系统直接关机)
1——single user mode (单用户模式,用在系统出问题时的维护)
2——Multi User,Without NFS
3——Full multi-user(完整的,含有网络功能的纯文字模式)
4——Unused (系统保留的)
5——X11 (与run level 3类似,不同的是使用了X Window)
6——reboot

 

 

7.开机时,如何取得系统的run level
从/etc/inittab中取得。

8./etc/inittab的语法:
这个档案的语法是这样的:
[设定项目]:[run level]:[init 的动作行为]:[指令项目]
a. 设定项目:
             最多四个字符,代表 init 的主要工作项目,只是一个简单的代表说明。
b. run level:
             该项目在哪些 run level 底下进行的意思。如果是 35 则代表 runlevel 3 与
             5 都会执行。
c. init 的动作项目:
             主要可以进行的动作项目意义有:
             initdefault :代表预设的 run level 设定值;
             sysinit :代表系统初始化的动作项目;
             ctrlaltdel :代表 [ctrl]+[alt]+[del] 三个按键是否可以重新开机的设定;
             wait            :代表后面接的指令项目必须要执行完毕才能继续后面的动作;
             respawn :代表后面接的, init 仍会主动的『重新』启动。
             更多的设定项目请参考 man inittab 的说明。
d. 指令项目:
             亦即应该可以进行的指令,通常是一些 script 啰。

一个例子:
----------------------------------------------------------------------------------------------------
[root@linux ~]# vi /etc/inittab
# 设定系统开机预设的 run level 设定项目:
id:3:initdefault:

# 开始进行 run level 的服务启动前,使用来侦测与初始化系统环境的设定文件:
si::sysinit:/etc/rc.d/rc.sysinit

# 7 个不同 run level 的,需要启动的服务的 scripts 放置路径:
l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6

# 是否允许按下 [ctrl]+[alt]+[del] 就重新开机的设定项目:
ca::ctrlaltdel:/sbin/shutdown -t3 -r now

# 本机端终端机启动的个数:
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 Window (run level 5) 环境下的启动 script 设定项目:
x:5:once:/etc/X11/prefdm -nodaemon

 


----------------------------------------------------------------------------------------------------
9.系统初始化(system initialization)程序为?
linux 系统初始化程序为: /etc/rc.d/rc.sysinit

 

----------------------------------------------------------------------------------------------------

10. /etc/rc.d/rc.sysinit主要做哪些工作?
a>         取得网络环境与主机类型:/etc/sysconfig/network
a>         测试与挂载内存设备/proc与USB设备/sys
a>         决定是否启动SELinux
a>         外围设备的检测与PNP参数的测试
               核心在开机时检测结果保存在/proc/sys/kernel modprobe中,主要检测ide/scsi/网络/音效等
a> 用户自订模块的载入
              用户可以在/etc/sysconfig/modules/*.modules中加入自订模块
a>        载入核心的相关设定:/etc/sysctl.conf
a>        设定系统时间 clock
a>        设定终端字符
a>        设定RAID与LVM等硬盘功能
a>        以fck检查磁盘文件系统
a>        进行磁盘quota的转换
a>        重新以可读取模式挂载系统磁盘
a>        启动quota
a>        启动随机数装置
a>        清除开机过程中暂存文件
a>        将开机相关信息载入/var/log/dmesg当中。

11.启动系统服务与相关启动设定文件:

 

----------------------------------------------------------------------------------------------------
linux启动时与系统服务有关的设定文件为:
/etc/rc.d/rc.n 以及 /etc/sysconfig

12.其他开机相关事项:
a>     关于模块:/etc/modprobe.conf
b>     /etc/sysconfig/*
       这里要注意几个authconfig,clock,desktop,i18n,keyboard&mouse,network,network-scripts

 

----------------------------------------------------------------------------------------------------

13.run level
a>    查看当前run level
     # runlevel
b>    切换run level
◆要每次开机都执行某个run level,则需修改/etc/inittab中:
id:3:initdefault:
中的数字。
◆如果临时变更系统run level,则以根用户运行init [0-6]来运行。
c>    假设由init 5改到init 3,则更改run level时系统做了什么?
◆对比/etc/rc.d/rc3.d及/etc/rc.d/rc5.d内K与S开头的档案:
◆关闭/etc/rc.d/rc5.d中不存在于/etc/rc.d/rc3.d中的服务
◆启动/etc/rc.d/rc3.d中不存在于/etc/rc.d/rc5.d中的服务。

13.核心与核心模块
(1)目前的核心都是模块化(modules)的。
(2)核心的模块位置
a> 核心:/boot/vmlinuz 或 /boot/vmlinuz-version
b> 核心解压缩所需RAM Disk:/boot/initrd( /boot/initrd-version)
c> 核心模块:/lib/modules/version/kernel 或 /lib/modules/`uname -r`/kernel
d> 核心原代码: /usr/src/linux (需要另外安装)

(3) 如果核心被顺利载入系统中,那么会有几个信息记录下来:
a> 核心版本: /proc/version
b> 核心功能: /proc/sys/lernel

(4) 如果有新硬件,系统不支持,则可以有这样两种访求:
a> 加入最新的硬件驱动程序原始码,重新编译内核;
b> 将该硬件的驱动程序编译为模块,并在开机时载入该模块。

 

----------------------------------------------------------------------------------------------------

14.核心模块放置处:
    /lib/modules/`uname -r`/kernel中,里面又分这样几个目录:
-----------------------------------------------------------------------------------
arch     :与硬件平台有关的项目,例如 CPU 的等级等等;
crypto     :核心所支持的加密的技术,例如 md5 或者是 des 等等;
drivers     :一些硬件的驱动程序,例如显示卡、网络卡、PCI 相关硬件等等;
fs     :核心所支持的 filesystems ,例如 vfat, reiserfs, nfs 等等;
lib     :一些函式库;
net     :与网络有关的各项协议数据,还有防火墙模块 (net/ipv4/netfilter/*) 等等;
sound     :与音效有关的各项模块;

 


-----------------------------------------------------------------------------------

15.核心模块的相关性
保存在/lib/modules/`uname -r`/modules.dep中

 

 

16.modules.dep可以用depmod来建立

-----------------------------------------------------------------------------------
depmod [-Ane]
参数:
-A :不加任何参数时, depmod 会主动的去分析目前核心的模块,并且重新写入
       /lib/modules/`uname -r`/modules.dep 当中。若加入 -A 参数时,则 depmod
       会去搜寻比 modules.dep 还要新的模块,如果真找到新模块,才会更新。
-n :不写入 modules.dep ,而是将结果输出到屏幕上(standard out);
-e :显示出目前已加载的不可执行的模块名称
范例:

范例一:若我已经做好一个网络卡驱动程序,假设文件名为 a.ko,该如何更新核心相依性?
[root@linux ~]# cp /full/path/a.ko /lib/modules/`uname -r`/kernel/drivers/net
[root@linux ~]# depmod
-----------------------------------------------------------------------------------

 


17.核心模块的察看
a> 显示系统已加载的模块 lsmod
     列出模块名称、模块大小以及是否其他模块所使用
b> 查阅模块信息 modinfo

 

 

18.核心模块的加载与移除
a> 老的做法:
      insmod 加载模块
       rmmod 移除模块
b> 常用方法:
      modprobe [-cflr] module_name
-c 列出目前系统中所有模块
-f    强制加载
-l    列出 /lib/modules/`uname -r`/kernel 当中的所有的模块完整名称
-r    移除modules

 

 

19.核心模块的额外参数设定:
/etc/modprobe.cof

 

 

20.Boot Loader
a> MBR是整个硬盘的第一个sector,其大小不会超过512bytes;
       Super Block,可以想像成每个分区partition的第一个扇区first sector。
b> Boot Loader可以指定核心文件来开机,也可以指定某个super block当中boot loader接管开机的核心载入。
c> linux 可以选择将boot loader安装在MBR或者是super block当中,但windows系统则几乎默认会同时安装在MBR与Super block当中。
d> 在安装多重系统时,最好先安装windows后安装linux,因为先安装linux,然后再安装windows,则windows会强制将MBR的boot loader覆盖掉,这样,就无法用windows的boot loader来启动linux了。

 

 

21.Boot Loader--Grub:
(1)Grub的优点:
grub是较新的boot loader,它的优点很多,包括:
a> 认识与支持较多的filesystem,并且可以使用grub的主程序直接在filesystem当中搜寻核心;
b> 开机的时候,可以‘自行编辑与修改开机设定项目’,类似bash的指令模式;
c> 可以动态搜寻设定文件,而不需要在修改设定文件后重新安装grub。亦即我们只需修改/boo/grub/menu.lst的设定,下次开机就生效了。
(2)Grub的设定文件: /boot/grub/menu.lst
(3)Grub中硬盘的表示:
    grub中的硬盘表示,有点类似
       (hd0,0)
第一个搜索到的硬盘,代号为(hd0),该硬盘的第一个分区为(hd0,0)

 

 

22.Boot Loader --LILO:
(1) LILO的设定文件为:/etc/lilo.conf
(2) 与Grub的设定文件/boot/grub/menu.lst同样分为两部分:
a> 整体环境设定
b> 每个开机设定

分享到:
评论

相关推荐

    18_开机关机流程与_Loader

    在Linux系统中,开机与关机的过程并不像我们想象的那么简单,因为它是多人多任务操作系统,需要确保所有系统服务的正确关闭,以保护数据和硬件安全。开机流程大致分为以下几个阶段: 1. **Boot Loader**: - Boot ...

    加载loader (How to Load External Images in Actionscript 3.0)

    2. **加载流程**:首先,创建一个Loader对象,然后使用Loader的`load()`方法指定要加载的URL。这个URL可以是一个Image或SWF文件的路径。同时,我们还需要提供一个URLRequest对象,将URL传递给它。 ```actionscript ...

    as3 loader资源的回收

    本文将深入探讨AS3 Loader资源的回收,以及如何通过示例代码实现这一过程。 在AS3中,当Loader加载一个资源后,这个资源会保留在内存中,直到它被显式地卸载或整个应用程序关闭。如果忽视了对Loader对象的正确处理...

    深入研究Windows内部原理系列之七:开机引导过程

    1. BIOS与MBR(基本输入输出系统与主引导记录):开机引导的第一步通常由BIOS执行,它负责检测硬件并加载存储在硬盘MBR上的引导程序。MBR是硬盘的第一个扇区,包含用于启动操作系统的代码。 2. 引导加载器(Boot ...

    Loader动态加载图片

    在ActionScript 3 (AS3)中,Loader 类是用于加载不同类型的媒体资源,包括图像(如PNG)、SWF、视频等的关键工具。本知识点主要围绕如何使用Loader 类动态加载PNG图片进行详细讲解。 首先,我们需要理解Loader 类的...

    如何使用vite-svg-loader

    Vite-SVG-Loader 是一个轻量级的插件,专门用于在 Vite 项目中引入 SVG 图像。使用这个插件,可以轻松地引入 SVG 图像,并且可以像使用 Vue 组件一样来使用它们。 下面是使用 Vite-SVG-Loader 的基本步骤: 1. ...

    sqlloader 第二部分318页开始

    Sqlloader 简介及使用指南 Sqlloader 是 Oracle 提供的...3. 数据集成:Sqlloader 可以用于将数据从不同的来源集成到一个数据库中。 Sqlloader 是一个功能强大且灵活的数据加载工具,广泛应用于各种数据处理场景中。

    swoole-loader72.SO组件下载

    3. 配置:在你的PHP配置文件(如php.ini)中,添加一行`extension=swoole_loader72.so`,指定Swoole扩展的路径。 4. 重启服务器:保存配置后,重启你的Web服务器,如Apache或Nginx,以便加载新配置。 5. 测试:最后...

    3DMigoto Loader.exe

    3DMigoto Loader.exe

    Unity 插件:GIS Terrain Loader 2.4

    而"GIS Terrain Loader 2.4"则是一个专为Unity设计的插件,它旨在帮助开发者集成地理信息系统(GIS)数据,特别是高程和卫星影像数据,以创建更真实、精细的游戏世界或模拟环境。 GIS(Geographic Information ...

    Loader正规的刷机流程

    ### Loader正规的刷机流程详解 #### 一、前言 Loader作为一种专业的刷机工具,因其操作简便且出错率低而备受用户喜爱。对于黑莓手机用户来说,学会使用Loader进行刷机不仅可以提高刷机的成功率,还能帮助用户更好...

    loader-wizard_loader_loader-wizard_safet3t_zip_

    "safet3t"可能是一个特定的安全措施或者服务,与ionCube Loader有关,但具体含义没有明确的信息。"zip"则表明这个工具包是以ZIP格式压缩的,这是一种常见的文件归档和压缩格式,便于下载和传输。 在压缩包子文件的...

    QML Loader 加载项目间通信

    在Qt Quick QML中,Loader组件是一个非常强大的工具,它允许动态加载和卸载QML组件,这在构建可扩展和灵活的用户界面时尤其有用。Loader不仅可以加载单个QML文件,还可以作为项目间通信的一种方式。在这个场景中,...

    Flash Loader原理

    下面我们说说Flashloader的工作原理,其实Flashloader是IAR为C-SPY调试器开发的一个可执行小程序(有点类似Bootloader),IAR在调用调试器的时候需要先将Flashloader可执行文件下载到目标芯片的RAM中 图1 然后再...

    Loader3DS

    5. **集成与应用**:Loader3DS通常被用作Java3D应用的一部分,帮助开发者快速构建具有3D内容的应用,如教育模拟、建筑可视化、虚拟现实系统等。开发者需要了解如何在Java代码中调用Loader3DS,以及如何处理导入后的...

    webpack系列之loader

    3. CLI方式:在shell命令中使用webpack命令行接口指定loader。这种方法也不推荐,因为它不够灵活,并且无法使用配置文件中的一些特性。 以webpack打包Less文件为例,你需要安装一系列的loader。首先,less-loader...

    OracleLoader

    Oracle Loader,作为Oracle数据库系统中的一个强大工具,主要用于高效地导入和导出大量数据,显著提高了ETL(Extract, Transform, Load)流程的性能。它提供了丰富的自定义选项,使得数据库开发人员和ETL工程师能够...

    SQL*Loader详细介绍

    SQL*Loader的操作流程主要包括创建控制文件、准备数据文件、运行SQL*Loader以及验证数据加载结果。 1. **SQL*Loader的基本概念** - **控制文件**:这是SQL*Loader的核心,它定义了如何将数据从输入文件解析并加载...

    怎么解决开机提示Loader error 3?.docx

    #### 步骤3:启动PE环境 - 成功设置后,计算机应该会从PE启动U盘启动。 - 进入PE系统后,打开资源管理器。 #### 步骤4:替换损坏的引导文件 - **获取Ntldr文件**: - 如果您没有现成的Ntldr文件,可以从其他相同...

    前端开源库-extracted-loader

    extracted-loader作为其中的一种,专注于CSS的处理,它可以根据开发者的需求,与其他loader(如css-loader、postcss-loader)结合,形成一个完整的CSS处理流程。 使用extracted-loader的步骤通常包括以下几点: 1....

Global site tag (gtag.js) - Google Analytics