Linux驅動程式學習(一)

2021-08-20 04:48:51 字數 2267 閱讀 4375

[root@localhost /]# uname -r

3.10.0-862.el7.x86_64

首先找到www.kernel.org發現並沒有所需要的核心版本

官方解釋說看到在-後面有任何東西,表示你現在正在執行乙個發行版本(distribute kernel),要核心請找發行這個版本的人。

我的系統是centos,查了下是

檢視自己系統版本

[root@localhost /]# cat /proc/version 

linux version 3.10.0-862.el7.x86_64 ([email protected]) (gcc version 4.8.5 20150623 (red hat 4.8.5-28) (gcc) ) #1 smp fri apr 20 16:44:24 utc 2018

[root@localhost ~]# rpm -ivh kernel-3.10.0-123.el7.src.rpm

這時會產生目錄/root/rpmbuild/specs和/root/rpmbuild/sources。

利用rpmbuild命令安裝,發現系統並沒有帶rpmbuild,所以安裝rpmbuild。

以為是yum install rpmbuild, 沒找到。。。所以知道掛載安裝盤找到相應的rpm包安裝。結果在掛載/dev/cdrom時卡死。。。無法umount

umount: /var/www/html/centos: device is busy.

(in some cases useful info about processes that use

the device is found by lsof(8) or fuser(1))

結果又是查查查。。。

fuser /mnt

返回相應的程序號,

kill -9 程序號

成功掛載後安裝,相應的依賴包用yum安裝,最後發現其實不叫rpmbuild。。叫rpm-build。。。。所以yum裝就可以了。。。

進入specs目錄

[root@localhost specs]# rpmbuild -bp --target=$(uname -m) kernel.spec 

building target platforms: x86_64

building for target x86_64

error: failed build dependencies:

pesign >= 0.109-4 is needed by kernel-3.10.0-123.el7.x86_64

elfutils-devel is needed by kernel-3.10.0-123.el7.x86_64

zlib-devel is needed by kernel-3.10.0-123.el7.x86_64

binutils-devel is needed by kernel-3.10.0-123.el7.x86_64

newt-devel is needed by kernel-3.10.0-123.el7.x86_64

python-devel is needed by kernel-3.10.0-123.el7.x86_64

perl(extutils::embed) is needed by kernel-3.10.0-123.el7.x86_64

bison is needed by kernel-3.10.0-123.el7.x86_64

audit-libs-devel is needed by kernel-3.10.0-123.el7.x86_64

numactl-devel is needed by kernel-3.10.0-123.el7.x86_64

pciutils-devel is needed by kernel-3.10.0-123.el7.x86_64

缺啥yum啥

成功解析出的核心原始碼在/root/rpmbuild/build中,把它放到/usr/src/kernel/裡

新解析出的核心原始碼有乙個configs檔案,其實還有乙個.config檔案,因為是隱藏的所以之前沒有發現,還以為make oldconfig是使用了configs裡的檔案,其實用的是.cofnig。。。

接著開始編譯

make(經歷一段漫長的等待。。。)

編譯核心映象

make bzimage

kernel: arch/x86/boot/bzimage is ready  (#2)

安裝核心模組

make modules_install

linux 驅動程式 高階字元驅動程式

ioctl方法 驅動程式的原型實現 int ioctl struct inode inode,struct file filp,unsigned int cmd,unsigned long arg ioctl 命令選擇 位段結構 number direction ioc read ioc write...

《LINUX裝置驅動程式》學習札記(一)

總結章節 第一章 裝置驅動程式簡介 第二章 構造和執行模組 提到驅動程式就不得不先說下兩個名詞 核心空間和使用者空間。使用者空間即使用者應用所執行的空間,核心空間值得是作業系統核心執行的空間。使用者空間不能直接引用或者操作核心空間的資料,核心空間也不能直接引用使用者空間的資料。作業系統核心對整個系統...

linux裝置驅動程式學習筆記(一)

第一章 裝置驅動程式簡介 1.區分機制和策略是unix設計背後隱含的最好思想之一。大多數程式設計問題實際上都可以分為兩部分 需要提供什麼功能 機制 和 如何使用這些功能 策略 如果這兩個問題由程式的不同部分來處理,或者甚至由不同的程式來處理,則這個軟體包更易開發,也更容易根據需要來調整。驅動程式同樣...