linux内核对块设备的使用

Posted phoenix tree

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux内核对块设备的使用相关的知识,希望对你有一定的参考价值。

1 partition table

这里的分析以经典的MBR为例。

在MBR里面有partition table,每一项对应一个逻辑的块设备,partion table中的每一项是16个字节。

第一个字节:标志该分区是不是active、是不是bootable。

第二到第四个字节:该partition的第一个扇区在物理块设备里面的绝对地址,即chs地址。

第五个字节:该分区的类型,比如是不是linux的文件系统。

第六到八字节:该partition的最后一个扇区在物理块设备里面的绝对地址。

第九到第十二字节:第一个sector的LBA,linux kernel里面应该不需要。

最后四个字节:总的sector数目。

2 发现块设备

内核启动时,会读取MBR,然后提取这些分区信息,比如msdos_partition()函数。根据这些分区信息,会生成注册逻辑块设备,例如,对于SCSI接口的硬盘驱动器,一块物理硬盘会生成sda1、sda2等逻辑块设备。

3 挂载文件系统

init进程里面挂载根文件系统,挂载其它文件系统,形成目录树。即将各个逻辑块设备挂载到目录树中的不同的挂载点上,比如根文件系统挂载到“/”根目录下。

 

以上是关于linux内核对块设备的使用的主要内容,如果未能解决你的问题,请参考以下文章

《Linux内核设计与实现》学习笔记——I/O调度算法

面向对象地分析Linux内核设备驱动——Linux内核设备模型与总线

面向对象地分析Linux内核设备驱动——Linux内核设备模型与总线

linux内核学习之总线驱动设备ksetkobject

Linux内核设备驱动程序中的filp_open

如何在linux内核以静态加载方式添加usb设备