无码av一区二区三区无码,在线观看老湿视频福利,日韩经典三级片,成 人色 网 站 欧美大片在线观看

歡迎光臨散文網(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é)的評論 (共 條)

分享到微博請遵守國家法律
平凉市| 玉屏| 石狮市| 武平县| 和政县| 鄂托克前旗| 西城区| 简阳市| 太谷县| 祥云县| 屯留县| 集贤县| 曲阳县| 长治县| 凤庆县| 紫云| 上高县| 卓尼县| 绵阳市| 嘉善县| 昌邑市| 佛山市| 富宁县| 巴林右旗| 东乡| 荆州市| 八宿县| 孝昌县| 林甸县| 恩平市| 新龙县| 江阴市| 九龙县| 平遥县| 璧山县| 南城县| 晋宁县| 阿城市| 遵义县| 平安县| 黑水县|