
Linux内核分析与驱动编程
Linux进程管理,进程调度,系统调用,内核管理,文件系统,内存管理等分析,字符设备,块设备,网络设备,USB设备,PCI设备等驱动程序设计。
pkufenghao
北京大学通信与信息系统博士在读
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【Linux内核分析与驱动编程】观察内存映射
实验环境:ubuntu18.04 内核版本:4.19.23 实验原理 •程序进程中的分区: •BSS段:BSS段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。数据段:数据段(data segment)通常是指用来存放程序中已初始化的全局变量的一块内存区域。代码段:代码段(code segment/text segment)通常是指用来存放程序执行代码的一...原创 2019-05-06 10:16:34 · 636 阅读 · 0 评论 -
【Linux内核分析与驱动编程】显示进程的相关信息
linux上进程有5种状态: 运行(正在运行或在运行队列中等待) 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号) 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生) 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放) 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行) 可以用下面命令查看...原创 2019-03-20 19:09:06 · 607 阅读 · 0 评论 -
【Linux内核分析与驱动编程】fork、vfork在分配和共享的区别
fork fork创造的子进程是父进程的完整副本,复制了父亲进程的资源,包括内存的内容task_struct内容 vfork vfork创建的子进程与父进程共享数据段,而且由vfork()创建的子进程将先于父进程运行 用fork、vfork创建进程,设计实验查看二者在分配和共享两方面的区别 (1)分别编写fork.c和vfork.c进行验证 fork.c #include<sys/types...原创 2019-03-20 18:57:34 · 453 阅读 · 0 评论 -
【Linux内核分析与驱动编程】添加内核补丁
什么是补丁 补丁就是存放着不同版本之间差异的文件。通过打补丁的方法升级源代码,可以不用下载整 个源代码,在本地的源代码基础上获得代码更新。 详细的打补丁的方法可以查看内核/Document/applying-patchs.txt。 Linux 下安装高版本补丁到低版本的步骤大体分为以下几步: 1 选取补丁 (1)补丁出处: 理论上讲,各大开源网站(如 github,google 的 andr...原创 2019-03-20 18:30:36 · 1719 阅读 · 0 评论 -
【Linux内核分析与驱动编程】创建显示系统进程信息的 proc 模块
创建显示系统进程信息的 proc 模块 Linux遵循现代操作的普遍原则:使程序员和内核、硬件等系统资源隔离开,普通用户无法看到内核空间中发生了什么,系统调用是操作系统提供给应用程序使用操作系统服务的重要接口,但同时也屏蔽了用户直接访问操作系统内核的可能性。Linux 提供了 LKM 机制可以使我们在内核空间工作。Linux 提供的LKM 机制中一个重要的组成部分就是proc 伪文件系统。 Pro...原创 2019-03-20 18:07:03 · 2407 阅读 · 0 评论 -
【Linux内核分析与驱动编程】如何切换到root用户
(1)sudo 命令 xzm@ubuntu:~$ sudo 这样输入当前管理员用户密码就可以得到超级用户的权限。但默认的情况下5分钟root权限就失效了。 (2)sudo -i xzm@ubuntu:~$ sudo -i 通过这种方法输入当前管理员用户的密码就可以进到root用户。 (3)如果想一直使用root权限,要通过su切换到root用户。 那我们首先要重设置root用户的密码: xzm...原创 2019-03-19 19:56:07 · 424 阅读 · 0 评论 -
【Linux内核分析与驱动编程】内核编译安装与调试相关问题与解决方法
内核编译安装注意事项 源码可以自己从网上下载(www.kernel.org) 在ubuntu18.04中,执行make modules_install和安装内核make install时需要提供root权限,需使用sudo命令执行安装 如果是多核PC,在编译内核过程中,可以使用 #make –jn 命令来编译 ,提高编译速度,其中n是要衍生的作业数,例如双核可以 配置为4。 • 重启后进入新内核时...原创 2019-03-07 22:56:08 · 896 阅读 · 0 评论 -
【Linux内核分析与驱动编程】内核调试实验-原理篇
实验原理篇 1.1 实验原理 kgdb提供了一种使用 gdb调试 Linux 内核的机制。使用KGDB可以象调试普通的应用程序那样,在内核中进行设置断点、检查变量值、单步跟踪程序运行等操作。使用KGDB调试时需要两台机器,一台作为开发机(Development Machine),另一台作为目标机(Target Machine),两台机器之间通过串口或者以太网口相连。串口连接线是一根RS-232接口...原创 2019-03-05 19:53:07 · 1129 阅读 · 0 评论 -
【Linux内核分析与驱动编程】内核调试实验-指定helloworld作为系统init入口
2 指定helloworld作为系统init入口 (1)编写一个helloworld.c程序 /hello.c/ #include <stdio.h> void main() { printf(“Hello World\n”); printf(“This is an entry\n”); printf(“Author:fenghao\n”); fflush(stdout); while...原创 2019-03-05 19:48:03 · 3433 阅读 · 0 评论 -
【Linux内核分析与驱动编程】内核调试实验-环境搭建
环境:虚拟机Ubuntu18.04 内核版本4.19.23 1 实验环境搭建 1.1 内核源码编译 (1)利用.config进行源码编译 make oldconfig make –j4 (2)创建kDebug调试文件夹 (3)复制bzImage、vmlinux、initrd.img-4.19.23到实验目录中 1.2 安装ddd sudo apt-get install ddd 1.3 安...原创 2019-03-05 16:39:42 · 1209 阅读 · 1 评论 -
【Linux】内核编译与配置(二)
接上篇 安装模块 sudo make modules_install 4 安装内核 sudo make install 5 配置启动文件 sudo update-grub 修改引导时间 sudo vi /etc/default/grub 6 重启并进入新内核 reboot uname -a ...原创 2019-02-27 14:23:28 · 304 阅读 · 0 评论 -
【Linux】内核编译与配置(一)
编译步骤 A.解压Linux源代码目录 B.配置内核 C.编译内核和模块 D.安装 E.配置启动文件 F.重启并进入新内核 编译环境:Ubuntu18.04 内核版本4.18.0 -&gt;内核版本4.19.23 原内核版本 1 解压Linux源代码目录 1.1 下载安装包 wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.19....原创 2019-02-27 09:25:49 · 348 阅读 · 0 评论