
Linux内核开发
文章平均质量分 85
-飞鹤-
喜欢音乐,喜欢文学,喜欢跑步,喜欢编程!
展开
-
Linux内核开发——自定义字符设备
Linux内核的驱动入门比较简单,只需要注册module_init和module_exit两个函数即可以完成最简单的驱动编译。然后就可以编译,接着将驱动文件载入系统就自动执行。新建hello.c文件,内容如下:2.2. 编译内核编译方法:参照内核编译方法编写一个Makefile:2.3. 编译载入通过dmesg可以看到驱动的载入及退出。字符设备主要通过register_chrdev来注册,并实现file_operations中的几个基本的接口即可。3.2. 编译安装使用lsmod命令查看安原创 2022-06-30 16:21:25 · 1557 阅读 · 0 评论 -
Linux内核开发——新添内核用户接口
用户态的程序如果想访问内核态的程序,并不能直接访问,而是通过中断处理机制来完成的。CPU提供一个陷入指令(Traps),亦称访管指令。用户态程序通过syscall附加系统调用号以及参数来完成对内核接口的调用。syscall是glibc封装的接口,其底层实现主要是发起一个陷入指令中断int $0x80,然后内核处理处理此中断函数。系统调用号,是一系列从0开始递增的数字,其实质是一组数组的下标,而这个数组存放一内核接口函数的地址。这样在内核响应陷入指令后,就可以通过系统调用号找到相应的函数地址,然后来调用相原创 2022-06-24 07:00:00 · 962 阅读 · 1 评论 -
Linux内核开发——编译Ubuntu 20.04内核代码
可以使用下列可以直接下载一个比当前内核版本新的代码,也可以去https://mirrors.edge.kernel.org/pub/linux/kernel下载自己内核使用的版本。此文下载的是更新的版本 5.17.15,去官网https://www.kernel.org/,下载linux-5.17.12.tar.xz。不同版本的Ubuntu,需要对应不同版本的源。可以通过。https://mirror.tuna.tsinghua.edu.cn/help/ubuntu/上可以选择不同版本的Ubuntu对应的源原创 2022-06-23 13:39:05 · 9005 阅读 · 0 评论 -
Linux内核开发——内核镜像文件及启动过程
vmlinux是elf(Excutable And Linkable),即可执行文件。里面含有调试信息,可用于调试,所以占有空间较大。gcc编译连接之后直接生成vmlinux文件。efl文件含有调试信息,太占空间了,gcc提供了objcopy工具,可以将elf文件中的调试信息去除,只留下可执行指令的二进制指令。Image文件依然比较大,此时可以使用gzip来压缩Image文件得到zImage文件。引导文件在加载zImage文件之后,会利用gzip进行解压,然后执行相关指令。gzip的压缩率不太优秀,bzIm原创 2022-06-23 12:35:07 · 2310 阅读 · 0 评论