
Linux内核学习
文章平均质量分 86
Linux内核学习总结,温故而知新
阿迷创客
主要从事安卓设备,Soc的BSP开发相关工作,熟悉mtk(mstar)、amlogic、全志,其他还玩过rk、高通等平台,平时有空就专研专研技术,写写小作文……
展开
-
内核实验(九):添加IO驱动的阻塞读写功能
继续使用qemu调试内核的实验。本章复习阻塞与非阻塞IO的概念,以及进程随眠和唤醒相关内核机制,然后对之前实验(八)的代码做少许修改,添加阻塞的IO读写。原创 2023-03-19 19:19:50 · 490 阅读 · 1 评论 -
内核实验(八):实现O-NONBLOCK非阻塞读写
继续使用qemu调试内核的实验。本章复习阻塞与非阻塞IO的概念和机制,然后对之前实验(七)的代码做少许修改,来实现非阻塞的IO读写。原创 2023-03-19 12:46:58 · 881 阅读 · 0 评论 -
内核实验(七):使用内核KFIFO环形缓冲区机制
继续使用qemu来做内核实验,本文介绍内核KFIFO。Linux内核实现了一个称为KFIFO的环形缓冲区的机制,它可以在一个读者线程和一个写者线程并发执行的场景下,实现免锁的安全读写,由KFIFO来管理了缓冲区的使用情况,省去许多是,特别方便。原创 2023-03-19 11:19:13 · 993 阅读 · 0 评论 -
内核实验(六):使用misc框架,实现简单字符设备驱动
使用自行组建的Qemu Linux虚拟机,提升效率,继续内核实验。本文将学习使用misc框架来创建设备驱动。在linux系统中,主设备号,在历史的长河里,都是固定分配好的(见内核文档 Documentation/admin-guide/devices.txt)。对于其他研究内核驱动,或编写驱动的开发人员来说,必须保证自己所使用的主设备号不与现有设备号发生冲突。方法一,自然是使用内核实验(五)中所使用的动态分配接口。其次,就是使用MISC设备驱动框架,它为这些小设备提供了一个公用的主设备号,此设备号则依据原创 2023-03-19 00:47:39 · 607 阅读 · 0 评论 -
内核实验(五):传统简单字符设备驱动
本文继续内核实验,上一篇搭建好NFS后,从本章开始,实验可以加速了,目标是把内核相关部分的实验都再做一次,虽然有现成源码,但从以往学习经历看,自己还是得多少做一些改动,对于要自虐的,可以从头打一遍,这样效果会好很多,练习完后,做个总结。实验简单,花的时间也不多,温故而知新。原创 2023-03-18 22:42:12 · 543 阅读 · 0 评论 -
内核实验(四):Qemu调试Linux内核,实现NFS挂载
在文章《内核实验(三)……》中,通过挂载虚拟分区,解决了Host和虚拟机文件交换的问题,但依旧比较麻烦。为了提升效率,必须解决NFS挂载共享文件夹的问题。如能实现,则直接在虚拟机上挂载服务端的NFS目录,即可实时交换文件,大大提升效率!原创 2023-03-18 02:39:53 · 1571 阅读 · 0 评论 -
内核实验(三):编写简单Linux内核模块,使用Qemu加载ko做测试
为了学习Linux内核,限制于自己的编译服务器性能较弱,不便于使用Android源码进行编译;退而求其次,自己制作一个小型的linux系统,并通过Qemu来运行。使用Qemu模拟能获得更快的调试速度(只有kernel源码,编译自然比AOSP快N个倍啦!),甚至可以使用gdb进行断点调试,本文基于内核实验的前两篇文章,通过创建虚拟分区的笨方法进行测试,贵在简单。原创 2023-03-17 18:41:52 · 1926 阅读 · 0 评论 -
内核实验(二):自定义一个迷你Linux ARM系统,基于Kernel v5.15.102, Busybox,Qemu
本文作为使用qemu学习、调试Linux系统的第二篇,将自己制作一个小型的Linux系统,这个系统包含我们自己编译的5.15.102稳定版内核,以及自己制作的根文件系统,内含busybox提供的丰富工具。原创 2023-03-16 02:31:23 · 1380 阅读 · 0 评论 -
内核实验(一):使用QEMU+GDB断点调试Linux内核代码
日常工作中对于内核的调试,大部分情况下只能使用printk来追加打印。而如果只是学习内核代码的话,则可以借助QEMU虚拟机+GDB的配置,来做到断点调试,同时又不需要额外购置任何设备,例如开发板、JTAG等等。原创 2023-03-15 19:43:27 · 1065 阅读 · 0 评论