最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

詳細(xì)記錄Linux內(nèi)核塊設(shè)備總結(jié)

2022-08-16 14:25 作者:補(bǔ)給站Linux內(nèi)核  | 我要投稿

前言

在分析塊設(shè)備驅(qū)動之前,整體規(guī)劃如下:

本章先重點(diǎn)介紹使用qemu使Linux內(nèi)核和根文件系統(tǒng)掛載塊設(shè)備的操作執(zhí)行過程。 為什么要介紹在qemu中使Linux內(nèi)核和根文件系統(tǒng)掛載塊設(shè)備?我們?yōu)槭裁匆僮鬟@些繁瑣的步驟? 下面著重回答一下為什么要使用QEMU中掛載塊設(shè)備,是因?yàn)槲覀冊谏弦徽隆禥EMU+GDB調(diào)試Linux內(nèi)核總結(jié)(全)》中介紹了要使用gdb調(diào)試linux內(nèi)核代碼必須使用qemu啟動,并且設(shè)置調(diào)試模式才能夠啟動。其實(shí)如果有其他的方式和方案也可以,只不過個(gè)人覺得這個(gè)操作比較方便并且實(shí)用性高。而且在gdb調(diào)試中隨時(shí)可以終止調(diào)試設(shè)置斷點(diǎn),這個(gè)在應(yīng)用層是沒有的。在應(yīng)用層如果終止調(diào)試的話直接程序退出了,但是內(nèi)核中是不會的。 為什么要操作這些繁瑣的步驟呢?上面一句話已經(jīng)回答了這個(gè)問題。 為了防止損傷硬盤,我們會以虛擬硬盤的形式掛載在磁盤中,下面第一章中我們會先介紹虛擬磁盤的制作和設(shè)置。


【文章福利】小編推薦自己的Linux內(nèi)核技術(shù)交流群:【891587639】整理了一些個(gè)人覺得比較好的學(xué)習(xí)書籍、視頻資料共享在群文件里面,有需要的可以自行添加哦?。。。ê曨l教程、電子書、實(shí)戰(zhàn)項(xiàng)目及代碼)? ? ?

虛擬磁盤的制作

虛擬磁盤,顧名思義這個(gè)磁盤是虛擬的,也可以在磁盤里面寫入東西而不會丟失,除非虛擬磁盤損壞(損壞的方式有很多:重新格式化,掛載之后關(guān)機(jī)之前忘了卸載等都有可能損壞虛擬磁盤,但是好在都是虛擬磁盤的磁盤內(nèi)容損壞,不會傷及物理磁盤)。虛擬磁盤也是云計(jì)算的一個(gè)重要的基礎(chǔ),所謂云計(jì)算也就是遠(yuǎn)程虛擬機(jī)的集群化部署。 話題扯的有點(diǎn)遠(yuǎn)了,言歸正傳,制作虛擬磁盤命令如下:

下面是我執(zhí)行如上命令的時(shí)候的執(zhí)行記錄:

以下是虛擬機(jī)啟動磁盤后的測試,也就是執(zhí)行完qemu-system-x86_64 -kernel ./boot/bzImage -initrd ./initramfs.img -hdc ./disk.img -append "console=ttyS0" -nographic之后的執(zhí)行記錄:

OK,經(jīng)過上述步驟,證明物理磁盤掛載成功到我們編譯好的內(nèi)核版本,下一章進(jìn)行g(shù)db調(diào)試。

qemu啟動磁盤+GDB調(diào)試內(nèi)核代碼。 上一章中我們已經(jīng)學(xué)會了怎么在內(nèi)核鏡像使用qemu加磁盤并且成功掛載上磁盤的操作。本章中我們學(xué)習(xí)怎么使用此調(diào)試內(nèi)核代碼。 如同內(nèi)核調(diào)試步驟一樣,正常的啟動虛擬機(jī)除了加上-hdc ./disk.img我們的啟動命令之外,我們還要添加-S -s的調(diào)試步驟。命令如下:

gdb vmlinux


這時(shí)候我們看到gdb阻塞到continue回顯步驟了,是因?yàn)槲覀兇蛄艘粋€(gè)斷點(diǎn),斷點(diǎn)函數(shù)名稱為blkdev_open。 我們只需要在啟動的虛擬機(jī)里面執(zhí)行如下:

執(zhí)行如上命令后,gdb效果如下,可以看到,我們可以正常的查看代碼,并且分析代碼了。而且分析代碼跟我們上述的cat命令有關(guān),否則gdb調(diào)試還處于阻塞狀態(tài)。



好了,本章就先介紹如何使用qemu掛載虛擬硬盤,并且使用gdb調(diào)試和塊設(shè)備相關(guān)的代碼。下一章重點(diǎn)介紹塊設(shè)備驅(qū)動代碼框架。



詳細(xì)記錄Linux內(nèi)核塊設(shè)備總結(jié)的評論 (共 條)

分享到微博請遵守國家法律
绍兴市| 金山区| 泾阳县| 陈巴尔虎旗| 溆浦县| 荥经县| 永登县| 新竹市| 栾城县| 潍坊市| 太保市| 棋牌| 梁山县| 安宁市| 桓仁| 镇安县| 融水| 屯昌县| 邵武市| 九寨沟县| 辰溪县| 莆田市| 丰都县| 白水县| 长泰县| 沁阳市| 新河县| 徐水县| 德阳市| 顺平县| 城市| 渭源县| 墨竹工卡县| 贵溪市| 富锦市| 德昌县| 汾阳市| 澄迈县| 东兴市| 永州市| 耿马|