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