笔记2
二.源码
1.源码树结构
源码在/usr/src里
我的内核为4.13.0.37 4为大版本,13为小版本,0为修改版本,37为稳定号,(每一个稳定号一般为改了哪些bug)
其中 arch为特定体系结构的源码
block 为块设备I/O层
(PS:
Linux中I/O设备分为两类:字符设备和块设备。两种设备本身没有严格限制,但是,基于不同的功能进行了分类。
(1)字符设备:提供连续的数据流,应用程序可以顺序读取,通常不支持随机存取。相反,此类设备支持按字节/字 符来读写数据。举例来说,键盘、串口、调制解调器都是典型的字符设备。
(2)块设备:应用程序可以随机访问设备数据,程序可自行确定读取数据的位置。硬盘、软盘、CD-ROM驱动器和闪存都是典型的块设备,应用程序可以寻址磁盘上的任何位置,并由此读取数据。此外,数据的读写只能以块(通常是512B)的倍数进行。与字符设备不同,块设备并不支持基于字符的寻址。
总结一下,这两种类型的设备的根本区别在于它们是否可以被随机访问。字符设备只能顺序读取,块设备可以随机读取。
)
certs为证书
crypto 为加密API。
Document为内核文档
drivers为设备驱动程序
扫描二维码关注公众号,回复:
1480561 查看本文章
dirmware 为使用某些驱动而需要的设备固件
vfs 为VFS(virtual file switch)和各种文件系统
zfs为一种zfs文件系统
2.内核编译安装
参考快速编译内核
编译中由大把的垃圾信息,可以重定向到/dev/null,这个目录没有返回值(黑科技。。)
3.内核编程的注意点
3.1不能用c库和标准c的头文件(标准C都太大,常用的头文件include里都有了,include<linux/..>就行)
3.2只能用gnu c
3.3浮点书不要轻易用,因为很难
3.4每个进程堆栈很小,而且定长