linux开机过程深入理解
Linux开机过程理解
一. Power on
二. BIOS加电自检:
1. 检测所有周边硬件
2. 寻找启动的磁盘(cd-rom,floppy,IDE HDD,usb device等)
三. 启动加载器
1. 首先寻找启动扇区里的主要启动记录(MBR),执行里面446字节的操作系统
2. 主要启动扇区里面没有操作系统,则寻找磁盘中标记为启动分区的第一个扇区中的操作系统。
3. 补充:由于不管是启动记录扇区还是启动分区的第一个扇区,存储操作系统的空间只有446字节,目前任何操作系统都不能放在这么小的空间内,如果不能在上述扇区中存储操作系统内核,将导致BIOS无法继续启动,为了解决这个问题,设计出制作一个小程序将它存储到启动扇区的446字节内,当BIOS试图启动启动扇区里面的操作系统的时候,执行这个小程序来加载存储到其他位置的操作系统,它就是boot loader
四. 启动内核(BIOS已经顺利启动加载器。启动存储在其他位置的操作系统)
1. 若启动的是rhel,启动加载器的同时会传递内核启动参数给内核(run level,磁盘顺序,静态驱动的参数等)然后Linux内核会向BIOS查询所有硬件并接受管理这些硬件
2. 驱动硬件设备。由于还没有挂载任何文件系统,无法使用内核模块上的动态驱动程序,只能使用静态驱动程序来驱动必要的硬件
3. 以只读方式来挂载根文件系统。内核来挂载根文件系统,根文件系统是存储根目录数据的文件系统,它包含以下目录:
/etc 存储重要的配置文件
/bin 存储常用开机执行文件
/sbin 系统执行文件
/lib 存储/bin /sbin的执行文件所需要的动态库和内核模块
&
相关文档:
一.前言
Linux的源码里,网络接口的实现部份是非常值得一读的,通过读源码,不仅对网络协议会有更深的了解,也有助于在网络编程的时候,对应用函数有更精确的了解和把握。
本文把重点放在网络接口程序的总体结构上,希望能作为读源码时一些指导性的文字。
本文以Linux2.4.16内核作为讲解的对象,内核源码 ......
o: 编译的目标文件
-X/S3fm'SH]X0
a:
静态库,其实就是把若干o文件打了个包
k
z3noUV
pR0
so: 动态链接库(共享库)中国电子顶级开发网----最专业的电
子论坛、最专业的电子工程师博客L&??,z4i&G&G&S
V
r0^mk zF5o"xC1c0
lo:
使用libtool编译出的目标文件,其实就是在o ......
linux 的库操作命令 ar和nm
当我们的程序中有经常使用的模块,而且这种模块在其他程序中也会用到,这时按照软件重用的思想,我们应该将它们生成库,使得以后编程可以减少开发代码量。这里介绍两个命令ar和nm,用来对库操作。
1.ar基本用法
2.nm基本用法命令
当我们的程序中有经常 ......
ls 命令可以说是linux下最常用的命令之一。它有众多的选项,其中有很多是很有用的,你是否熟悉呢?下面列出了 ls 命令的绝大多数选项。
-a 列出目录下的所有文件,包括以 . 开头的隐含文件。
-b 把文件名中不可输出的字符用反斜杠加字符编号(就象在C语言里一样)的形式列出。
-c 输出文件的 i 节点的修改时 ......
参见:http://www.ibm.com/developerworks/cn/linux/l-proc.html
使用 /proc 文件系统来访问 Linux 内核的内容
这个虚拟文件系统在内核空间和用户空间之间打开了一个通信窗口
文档选项
<tr
valign="top"><td width="8"><img alt="" height="1" width="8& ......