利用GDB和Bochs调试内核源代码

Bochs + GDB 源码级调试C语言内核 Ubuntu 14.04 64bit Bochs 2.6.6 GDB 7.7 想要源码级调试C内核,需要在编译Bochs时加上 --enable-gdb-stub 参数 sudo ./configure --enable-all-optimizations --enable-long-phy-address --enable-disasm --enable-alignmen 阅读详情
本节说明如何在现有Linux系统(例如RedHat 9)上使用Bochs模拟运行环境和gdb工具来调试Linux0.11内核源代码。在使用这个方法之前,你的Linux系统上应该已经安装有Xwindow系统。由于Bochs网站提供的RPM安装包中的Bochs执行程序没有编译进与gdb调试器进行通信的gdbstub模块,因此我们需要下载Bochs源代码来自行编译。
    gdbstub可以使得Bochs程序在本地1234网络端口侦听接收gdb的命令,并且向gdb发送命令执行结果。从而我们可以利用gdb对Linux 0.11内核进行C语言级的调试。当然,Linux 0.11内核也需要进行使用-g选项重新编译。
14.13.1 编译带gdbstub的Bochs系统
    Bochs用户手册中介绍了自行编译Bochs系统的方法。这里我们给出编译带gdbstub的Bochs系统的方法和步骤。首先从下面网站下载最新Bochs系统源代码(例如:bochs-2.2.tar.gz):
    [url]http://sourceforge.net/projects/bochs/[/url]
    使用tar对软件包解压后会在当前目录中生成一个bochs-2.2子目录。进入该子目录后带选项“--enable-gdb-stub”运行配置程序configure,然后运行make和make install即可,见如下所示:
[root@plinux bochs-2.2]# ./configure --enable-gdb-stub
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking target system type... i686-pc-linux-gnu
...
[root@plinux bochs-2.2]# make
[root@plinux bochs-2.2]# make install
    若在运行./configure时我们碰到一些问题而不能生成编译使用的Makefile文件,那么这通常是由于没有安装X window开发环境软件或相关库文件造成的。此时我们就必须先安装这些必要的软件。

14.13.2 编译带调试信息的Linux 0.11内核
   通过把Bochs的模拟运行环境与gdb符号调试工具联系起来,我们既可以使用Linux0.11系统下编译的带调试信息的内核模块来调试,也可以使用在RedHat9环境下编译的0.11内核模块来调试。这两种环境下都需要对0.11内核源代码目录中所有Makefile文件进行修改,即在其中编译标志行上添加-g标志,并去掉链接标志行上的-s选项:
LDFLAGS = -M -x                                         // 去掉 -s 标志。
CFLAGS  =-Wall -O -g -fomit-frame-pointer \             // 添加 -g 标志。
    进入内核源代码目录后,利用find命令我们可以找到以下所有需要修改的Makefile文件:
[root@plinux linux-0.11]# find ./ -name Makefile
./fs/Makefile
./kernel/Makefile
./kernel/chr_drv/Makefile
./kernel/math/Makefile
./kernel/blk_drv/Makefile
./lib/Makefile
./Makefile
./mm/Makefile
[root@plinux linux-0.11]#
   另外,由于此时编译出的内核代码模块中含有调试信息,因此system模块大小可能会超过写入内核代码映像文件的默认最大值SYSSIZE =0x3000(定义在boot/bootsect.s文件第6行)。我们可以按以下方法修改源代码根目录中的Makefile文件中产生Image文件的规则,即把内核代码模块system中的符号信息去掉后再写入Image文件中,而原始带符号信息的system模块保留用作gdb调试器使用。注意,目标的实现命令需要以一个制表符(TAB)作为一行的开始。
Image: boot/bootsect boot/setup tools/system tools/build
        cp -f tools/system system.tmp
        strip system.tmp
        tools/build boot/bootsect boot/setup system.tmp $(ROOT_DEV) $(SWAP_DEV) > Image
        rm -f system.tmp
        sync
    当然,我们也可以把boot/bootsect.s和tools/build.c中的SYSSIZE值修改成0x8000来处理这种情况。

14.13.3 调试方法和步骤
    下面我们根据在现代Linux系统(例如RedHat 9)系统上和运行在Bochs中Linux 0.11系统上编译出的内核代码分别来说明调试方法和步骤。
1 调试现代Linux系统上编译出的Linux 0.11内核
   假设我们的Linux0.11内核源代码根目录是linux-rh9-gdb/,则我们首先在该目录中按照上面方法修改所有Makefile文件,然后在linux-rh9-gdb/目录下创建一个bochs运行配置文件并下载一个配套使用的根文件系统映像文件。我们可以直接从网站下载已经设置好的如下软件包来做实验:
    [url]http://oldlinux.org/Linux.old/bochs/linux-0.11-gdb-rh9-050619.tar.gz[/url]
    使用命令“tar zxvf linux-gdb-rh9-050619.tar.gz”解开这个软件包后,可以看到其中包含以下几个文件和目录:
[root@plinux linux-gdb-rh9]# ll
total 1600
-rw-r--r--    1 root     root        18055 Jun 18 15:07 bochsrc-fd1-gdb.bxrc
drwxr-xr-x   10 root     root         4096 Jun 18 22:55 linux
-rw-r--r--    1 root     root      1474560 Jun 18 20:21 rootimage-0.11-for-orig
-rwxr-xr-x    1 root     root           35 Jun 18 16:54 run
[root@plinux linux--gdb-rh9]#
这里的bochs配置文件与其他Linux 0.11配置文件的主要区别是在文件头部添加有以下一行内容,表示当bochs使用这个配置文件运行时将在本地网络端口1234上侦听gdb调试器的命令:
gdbstub: enabled=1, port=1234, text_base=0, data_base=0, bss_base=0
运行这个实验的基本步骤如下:
(1).启动X window系统后打开两个终端窗口;
(2).在一个窗口中,把工作目录切换进linux-gdb-rh9/目录中,并运行程序“./run”,此时该窗口中会显示一条等待gdb来连接的信息:“Wait for gdb connection on localhost:1234”,并且系统会创建一个Bochs主窗口(此时无内容);
(3).在另一个窗口中,我们把工作目录切换到内核源代码目录中linux-gdb-rh9/linux/,并运行命令:“gdb tools/system”;
(4).在运行gdb的窗口中键入命令“break main”和“target remote localhost:1234”,此时gdb会显示已经连接到Bochs的信息;
(5).在gdb环境中再执行命令“cont”,稍过一会gdb会显示程序停止在init/main.c的main()函数处。
下面是运行gdb和在其中执行的一些命令示例。
[root@plinux linux]# gdb tools/system        
GNU gdb Red Hat Linux (5.3post-0.20021129.18rh)
Copyright 2003 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i386-redhat-linux-gnu"...
(gdb) break main               
Breakpoint 1 at 0x6621: file init/main.c, line 110.
(gdb) target remote localhost:1234
Remote debugging using localhost:1234
0x0000fff0 in sys_mkdir (pathname=0x0, mode=0) at namei.c:481
481     namei.c: No such file or directory.
        in namei.c
(gdb) cont                        
Continuing.
Breakpoint 1, main () at init/main.c:110   
110             ROOT_DEV = ORIG_ROOT_DEV;
(gdb) list                                 
105     {                       /* The startup routine assumes (well, ...) this */
106     /*
107      * Interrupts are still disabled. Do necessary setups, then
108      * enable them
109      */
110             ROOT_DEV = ORIG_ROOT_DEV;
111             drive_info = DRIVE_INFO;
112             memory_end = (1<<20) + (EXT_MEM_K<<10);
113             memory_end &= 0xfffff000;
114             if (memory_end > 16*1024*1024)
(gdb) next
111             drive_info = DRIVE_INFO;
(gdb) next
112             memory_end = (1<<20) + (EXT_MEM_K<<10);
(gdb) print /x ROOT_DEV                     
$3 = 0x21d                                   
(gdb) quit                                   
The program is running.  Exit anyway? (y or n) y
[root@plinux linux]#
Linux 0.11内核调试实战:手把手教你用Bochs+GDB定位第一次页故障(附完整命令清单) 本文详细介绍了如何使用Bochs和GDB调试Linux 0.11内核的第一次页故障,深入剖析了段页式内存管理机制。通过实战演示环境搭建、调试技巧和页故障分析,帮助开发者理解早期Linux内核的内存管理设计与实现原理。 阅读详情

相关推荐

windows下可编译linux 用insight+bochs源码级调试

编译过程: 1). 解压后默认的文件夹位置是在D:\Linux-0.11,如果你不是将文件解压到该目录下, 你要修改MinGW32目录下的MinGW32.bat文件,将里面的PATH指向MinGW32的bin目录. 2). 打开Linux-0.11目录,双击MinGW32.bat快捷方式,打开控制台. 3). make 一下,生成1.44M的Boot.img软盘镜像,要清除编译结果请"make clean" 4). 如果安装了bochs,直接双击bochsrc.bxrc即可运行Linux-0.11了. 5). 也可用其它虚拟机加载Boot.img后运行,如果出现Kernel panic,请把虚拟机里的硬盘删了 6). 在出现Insert root floppy and press ENTER以后,将rootimage-0.11.img载入虚拟软驱,回车 这就是能在windows环境下编译的Linux 0.11了,不是在Cygwin,也不是在虚拟机里,而是使用MinGW. 下面是在Windows下编译Linux 0.11会遇到的问题和对原文件作的修改: 1.赵炯博士已经将汇编程序中引用的C变量(包括嵌入汇编的C变量)的下划线去掉了,但MinGW的gcc可能是为了与其它Windows下的编译器保持兼容,并不能识别这些不带下划线的C变量,因而还得把原先已经在汇编程序中去掉下划线的C变量加上下划线,同时也要把被C程序引用的汇编程序中的变量加上下划线. 2.MinGW中不带as86编译器,因而把boot目录下原先用as86编译的bootsect.s和setup.s两个程序修改成能用nasm编译的程序.并且更名为bootsect.asm和setup.asm. 3.在Makefile作的主要修改: 在LDFLAGS中加了--image-base 0x0000 将elf_i386改成i386pe 将cd 与 make 之间的;改成&,如cd kernel ; make 改成cd kernel & make MinGW中没有sync这个程序,可以把它注释掉,更简单的办法是写一个sync.c,这个sync.c只包含一个空的main函数,编译成sync.exe 因为类似的原因,make dep会出错 4.生成的system文件是PE格式的(PE是Portable Executable的简称),这是windows下的可执行文件的格式,显然是不能直接执行的,必须加以转化.我实现了通过两种方式加以转化. 1)写一个程序Trans.cpp将system.exe里的代码和数据从PE文件里解析出来,生成一个system.bin文件,这个文件是能被setup模块直接加载的.我已经将这个程序放在了Linux-0.11的tools目录下,要微软的编译器编译. 2)自己写一个PE Loader,这种方式比较麻烦,但是想想自己也能做一个PE Loader,还是满有成就感的,尽管这是一个最简单的Loader.代码是加在Linux-0.11-With-PE-Loader\boot目录下的setup.asm文件里,里面有详细的注释. 5.对tools下的build.c作了修改,使其能生成可引导的1.44M的软盘镜像文件Boot.img 6.在Link的过程中,init目录下的main.c会出现以下错误: boot/head.o(.text+0x540c):fake: undefined reference to `_main' init/main.o(.text+0x16f):main.c: undefined reference to `_alloca' init/main.o(.text+0x174):main.c: undefined reference to `__main' make: *** [tools/system.exe] Error 1 第一个和最后一个错误还好理解,但中间那个错误那就莫明其妙了,因为Linux 0.11根本没有这个函数,在gcc的编译选项里也有-nostdinc .有一个解释是main函数不是一个普通的函数,MinGW gcc会对它作特殊的处理.解决的办法其实也很简单,把main.c下面的main函数改名为_main,或者是干脆把它改成另外一个函数,就改成start吧.记得把head.s里的_main也改了. 在最后,要感谢《自己动手写操作系统》的作者于渊,其实我也是先将原先只能在Linux下编译的书里源代码用MinGW移植到Windows下编译的过程中才试着在Windows下编译Linux 0.11源代码的,有了在Windows下编译Linux 0.11源代码的经验,移植高版本的源代码,像0.12,0.95,0.96等等版本应该不会有太大的麻烦了。 也要感谢Linux内核完全注释的作者赵炯博士,是他拉接了操作系统与操作系统爱好者的距离. 最后,我也非常想和操作系统爱好者们共同交流心得体会,也希望能多认识一些朋友. 我的网名:flyfish 我的QQ:785606288 E-mail:I2CBus@126.com 另外,要转载请保持本文件的完整性,请尊重别人的劳动果实. 修改日志: 08/3/29 修改了一下Makefile,旧的Makefile在某些文件更新后还会重新编译。 修改了Trans.cpp中的一个dug,该dug在translate MinGW gcc编译的程序时可能会出错。用MinGW gcc 编译的程序的VirtualAddress的形式可能是0xFFC1000这样的形式,其实0x1000才是它的VirtualAddress 08/4/2 修改了下MinGW32.bat,现在已经不用重设路径了。 08/4/4 Trans.cpp还是有错,如果VirtualAddress>0xffff,那么生成的system.bin就错了,bochs调试时会一直重启。 权宜之计,把0xffff再改成0x3ffff,这样VirtualAddress就不能大于0x3ffff,不知谁有更好的解决方法, 08/4/4 实现了gdb+bochs源码级调试linux 0.11 08/4/6 添加了insight,可以在GUI界面里源码调试内核了

GDB结合Bochs调试内核

1. 编译内核 编辑.config文件,相关项目改成如下形式: 1: CONFIG_KGDB=y 2: CONFIG_KGDB_SERIAL_CONSOLE=y 3: CONFIG_MAGIC_SYSRQ=y 4: CONFIG_DEBUG_INFO=y 5: #CONFIG_DEBUG_RODATA 然后,执行make会再次提示相关项目的设置,再次确认一下。 转载于:h...

weixin_34315189的博客 416

在windows下用insight+bochs源码级调试linux内核第一部分(共两部分)

在windows下用insight+bochs源码级调试linux内核,不需再下载其它软件,压缩包里提供全部调试所需的程序,总共仅10兆

[操作系统原理与实现]Bochs与GDB

Bochs与GDB一、Bochs1、安装Bochs1.1、下载Bochs1.2、编译Bochs二、GDB Bochs是一个x86硬件平台的开源模拟器。它可以模拟各种硬件的配置。Bochs模拟的是整个PC平台,包括I/O设备、内存和BIOS。更为有趣的是,甚至可以不使用PC硬件来运行Bochs。事实上,它可以在任何编译运行Bochs的平台上模拟x86硬件。通过改变配置,可以指定使用的CPU(386、486或者586),以及内存大小等。 GDB是一个强大的命令行调试工具。大家知道命令行的强大就是在于,其可以形成

火云的专栏 2752

Pixel 6 Pro刷Android 13变砖自救指南:fastboot全分区擦除与手动刷入教程

本文提供了一份详细的Pixel 6 Pro在Android 13升级过程中变砖后的自救指南。针对因super分区锁死或动态分区异常导致的无法启动问题,文章核心介绍了通过fastboot命令手动擦除关键分区并逐一刷入官方镜像的完整救砖流程,帮助用户实现系统重建与恢复。

weixin_29208327的博客 373

酒店前台pms管理系统

对于酒店经营者来说,选择一款优秀的管理系统,是提升运营效率、优化客人体验的关键。PMS酒店管理系统凭借其强大的房态管理、实时数据监控、OTA直联、无人值守等功能,已经成为许多酒店提升管理水平的得力助手。无论是大中型酒店,还是小型民宿,PMS系统都能根据不同需求提供量身定制的解决方案,帮助酒店实现精细化管理、提高运营效率。如果你也在为酒店管理中的繁琐琐事而困扰,不妨尝试一下PMS酒店管理系统,感受科技带来的便利与高效,让你的酒店运营更上一层楼!

2409_89897808的博客 2485

Linux内核调试方法总结 一

内核开发比用户空间开发更难的一个因素就是内核调试艰难。内核错误往往会导致系统宕机,很难保留出错时的现场。调试内核的关键在于你的对内核的深刻理解。  一  调试前的准备 在调试一个bug之前,我们所要做的准备工作有:  有一个被确认的bug。包含这个bug的内核版本号,需要分析出这个bug在哪一个版本被引入,这个对于解决问题有极大的帮助。可以采用二分查找法来逐步锁定bu

bugouyonggan的专栏 2546

Python自动化测试报告:飞书群机器人消息卡片实战

本文详细介绍了如何利用Python和飞书群机器人实现自动化测试报告的智能通知。通过构建可定制的消息卡片,将测试结果(如通过数、失败数)以清晰、美观的格式自动推送至团队群聊,并支持一键跳转查看详细报告,从而显著提升团队协作与问题响应效率。

k6l7m8n9的博客 811

编译bochs并启用GDB调试

1、先从Bochs的网站下载最新版本 http://bochs.sourceforge.net/ 2、将下载后的源码包解压到任一目录,然后cd到该目录, 3、执行如下语句进行配置 ./configure --enable-debugger --enable-disasm --enable-gdb-stub --enable-gdb-stub 主要用于配置使用GDB对内核进行调试,详细请看

1184

通达信主力检测利器

主力轨迹:100*EMA(EMA(MTM,N1),N1)/EMA(EMA(ABS(MTM),N1),N1),COLORWHITE;主力拉高:IF(VAR51<REF(VAR51,1),VAR51,0),COLORYELLOW,NODRAW;洗盘:IF(VAR5<REF(VAR5,1),VAR5,0),COLOR000079,NODRAW;主力进场:IF(VAR5>REF(VAR5,1),VAR5,0),COLORRED,NODRAW;MAZL:MA(主力轨迹,N2),COLORYELLOW;

zhibiaogong的博客 7468

使用相对路径设置IAR的Additional include directories 以及 $PROJ_DIR$ 的用法

新建IAR工程时免不了要导入工程用到的头文件,那么导入头文时是用相对路径还是绝对路径呢?当然是相对路径了,因为绝对路径会有弊端,那就是,如果将来更换了工程放置的路径,那么这个相对路径就凉凉了,编译必然报错。所以最好还是用相对路径,那么相对路径怎么用呢? 请看以下 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 版权声明 本博文系广州欧科曼科技有限公司所有,转载请注明出处。 广州欧科曼科技有限公司致力于瑞萨MCU及周边相关产品开发设计。 ema

announced1的博客 5392

bochs linux内核,利用GDB和Bochs调试内核源代码

http://sourceforge.net/projects/bochs/使用tar对软件包解压后会在当前目录中生成一个bochs-2.2子目录。进入该子目录后带选项“--enable-gdb-stub”运行配置程序configure,然后运行make和make install即可,见如下所示:[root@plinux bochs-2.2]# ./configure --enable-gdb-s...

weixin_35489311的博客 361

核心组件大换血:Backbone与Neck魔改篇:YOLO26魔改Neck:引入BiFPN(双向特征金字塔),多尺度融合能力飙升

本文深入解析了YOLO26目标检测模型中Neck部分的优化策略,重点探讨了BiFPN(双向特征金字塔网络)的原理与实现。文章首先指出YOLO26原生FPN+PAN结构在多尺度特征融合上的局限性,特别是在小目标检测和边缘部署场景中的性能瓶颈。随后系统梳理了Neck网络的演进历程,从FPN、PANet到BiFPN和ASFF,详细对比了各架构的特点。核心部分展示了如何将BiFPN引入YOLO26,包括可学习权重融合、双向跨尺度连接等关键技术实现,并提供了PyTorch代码示例。本文为需要提升小目标检测性能或优化边

ZDQ58818的博客 247

利用GDB和Bochs调试内核源代码 中文版权所有: OldLinux论坛

利用GDB和Bochs调试内核源代码nIsEm©OldLinux论坛 -- 有关早期Linux内核代码发展的论坛。  m=©OldLinux论坛 -- 有关早期Linux内核代码发展的论坛。  g{0*;Y 本节说明如何在现有Linux系统(例如RedHat 9)上使用Bochs模拟运行环境和gdb工具来调试Linux 0.11内核源代码。在使用这个方法之前,你的Linux系统上应该已经安装有X ...

iteye_10465的博客 273

11.11华为OD机试真题 新系统 - 管线同类区段归并 (Java/Py/C/C++/Js/Go)

11.11华为OD机试真题 新系统 - 管线同类区段归并 (Java/Py/C/C++/Js/Go)

算法大师! 111

【OCPP】ocpp1.6协议3.3章节:功能配置文件及接口

Smart Charging Profile中定义了4个接口请求,即GetCompositeSchedule、ClearChargingProfile、SetChargingProfile和ClearCache等。Smart Charging: 包含智能充电相关的功能,如计划充电,报告充电计划,并改变充电速度。Core: 包含电动汽车充电相关的基础功能,如启动和停止充电,更改充电配置,报告充电状态等。Reservation: 包含预约服务相关的功能,如创建,取消和更改预约。

qq_53871375的博客 2172

fedora17下用gdb和bochs调试linux-0.11内核

买了本赵炯博士>,开始学习内核源代码,首先就是动手搭建实验环境,所用操作系统为fedora17,首先下载安装bochs,root下用yum search bochs查看一下是否有bochs相关的安装包,发现有,则执行yum install bochs.i686,安装完毕。然后 根据www.oldlinux.org/oldlinux/viewthread.php?tid=3878中的步骤测试了htt

lmdyyh5722756的专栏 1780

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

CentOS 6 + bochs-2.6 + gdb 调试 linux 0.11

+++++++++++++++使用 调试功能1. 编译带gdbstub的Bochs系统http://sourceforge.net/projects/bochs/http://sourceforge.net/projects/bochs/files/bochs/[root@bogon bochs-2.6]# ./configure --enable-gdb-stub[root@bogon boch

Dark_gezi的博客 915

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

centOS+bochs+gdb调试linux0.11

编译并安装bochs: yum -y install gcc gcc-c++ libstdc++-devel yum install libX11-devel yum install gtk2-devel ./configure --enable-gdb-stub make make install

开卷有益 3326

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Linux 0.11缺页异常实战:手把手调试第一次页故障(附GDB命令与答案)

本文详细解析了Linux 0.11内核中的缺页异常处理机制,通过Bochs模拟器和GDB调试工具,手把手指导读者调试第一次页故障。文章包含完整的GDB命令与答案,深入探讨了页式虚存管理、页表结构及内存映射过程,是理解Linux内核内存管理的实用指南。

weixin_30345577的博客 600

Linux 0.11字符设备通关秘籍:手把手带你用Bochs+GDB调试键盘输入(附完整脚本)

本文详细解析了Linux 0.11内核中字符设备驱动的键盘输入处理流程,通过Bochs模拟器和GDB调试工具,手把手教你搭建调试环境、分析键盘中断处理、扫描码转换及tty缓冲区管理等核心环节。文章提供完整脚本和实用技巧,帮助开发者深入理解字符设备驱动架构,适合操作系统内核学习者参考实践。

weixin_30895059的博客 254

linux0.11+Bochs环境搭建和使用

Linux 系统的创始人在一篇新闻组投稿上所说的,要理解一个软件系统的真正运行机制,一定 要阅读其源代码(RTFSC – Read The Fucking Source Code)。系统本身是一个完整的整体,具有很多看似 不重要的细节存在,但是若忽略这些细节,就会对整个系统的理解带来困难,并且不能真正了解一个实 际系统的实现方法和手段。

猫哥 的沉淀、积累、总结。天天学习,好好向上...c/c++,嵌入式 linux,Android,HarmonyOS,AIOT) 2827

从零到一:手把手带你通关Linux字符设备访问实验

本文详细介绍了Linux字符设备访问实验的全过程,从环境搭建到键盘输入处理,逐步解析字符设备的工作原理。通过Bochs模拟器和Linux 0.11内核,读者可以亲手实践键盘中断处理、行缓冲机制和密码输入回显控制等核心概念,适合初学者快速掌握Linux字符设备访问技术。

weixin_29305337的博客 242
上一篇: 内核编程的hello world!
下一篇: bochs 开启调试选项
AstrayLinux
博客等级 码龄15年 55粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值