如何在Ubuntu上安裝內核對應的源碼來編譯驅動?
最近在學驅動模塊,平台是ARM,因為課上老師講的有點顯淺,所以打算自己再深入研究一下。
所以在虛擬機裡面裝了ubuntu,打算用來深入學習。
目前的版本是
# uname -a
linux ubuntu-ldm 4.4.0-28-generic #47-Ubuntu SMP Fri Jun 24 10:09:13 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
我已經安裝了以下的包
# dpkg -l | grep linux
ii console-setup-linux 1.108ubuntu15 all Linux specific part of console-setup
ii libselinux1:amd64 2.4-3build2 amd64 SELinux runtime shared libraries
ii linux-base 4.0ubuntu1 all Linux image base package
ii linux-firmware 1.157.2 all Firmware for Linux kernel drivers
ii linux-generic 4.4.0.28.30 amd64 Complete Generic Linux kernel and headers
ii linux-headers-4.4.0-28 4.4.0-28.47 all Header files related to Linux kernel version 4.4.0
ii linux-headers-4.4.0-28-generic 4.4.0-28.47 amd64 Linux kernel headers for version 4.4.0 on 64 bit x86 SMP
ii linux-headers-generic 4.4.0.28.30 amd64 Generic Linux kernel headers
ii linux-image-4.4.0-28-generic 4.4.0-28.47 amd64 Linux kernel image for version 4.4.0 on 64 bit x86 SMP
ii linux-image-extra-4.4.0-28-generic 4.4.0-28.47 amd64 Linux kernel extra moles for version 4.4.0 on 64 bit x86 SMP
ii linux-image-generic 4.4.0.28.30 amd64 Generic Linux kernel image
ii linux-libc-dev:amd64 4.4.0-28.47 amd64 Linux Kernel Headers for development
ii linux-sound-base 1.0.25+dfsg-0ubuntu5 all base package for ALSA and OSS sound systems
ii linux-source 4.4.0.28.30 all Linux kernel source with Ubuntu patches
ii linux-source-4.4.0 4.4.0-28.47 all Linux kernel source for version 4.4.0 with Ubuntu patches
ii util-linux 2.27.1-6ubuntu3.1 amd64 miscellaneous system utilities
並且將/usr/src/linux-source-4.4.0.tar.bz2解壓到/home/test/WorkSpace/Kernel/linux-source-4.4.0下
然後寫了一個小小的測試程序
#include <linux/init.h>
#include <linux/mole.h>
MODULE_LICENSE("Dual BSD/GPL");
static int hello_init (void) {
printk (KERN_ALERT "Hello, World\n");
return 0;
}
static void hello_exit (void) {
printk (KERN_ALERT "Goodbye, cruel world\n");
}
mole_init (hello_init);
mole_exit (hello_exit);
Makefile
obj-m += mole.o
mole-objs := hello.o
all:
make moles M=`pwd` -C /home/test/WorkSpace/Kernel/linux-source-4.4.0
clean:
make moles clean M=`pwd` -C /home/test/WorkSpace/Kernel/linux-source-4.4.0
令我不解的是
# sudo insmod mole.ko
insmod: ERROR: could not insert mole mole.ko: Invalid mole format
實在想不通為何沒法裝載這個內核模塊?
是因為我用錯了版本的源碼嘛?
難道是要用自己編譯的uImage來啟動系統才可以嘛?
要如何自己手動編譯替換Ubuntu的內核?
Ⅱ centos 6 如何安裝內核源碼包
1.執行rpm -ivh your-package.src.rpm
2.cd /usr/src/redhat/SPECS
3.rpmbuild -bp your-package.specs 一個和你的軟體包同名的specs文件
warning: user brewbuilder does not exist - using root
warning: group brewbuilder does not exist - using root
[root@localhost download]# useradd brewbuilder
[root@localhost download]# groupadd brewbuilder
[root@localhost download]# rpm -i kernel-2.6.17-1.2187_FC5.src.rpm
[root@localhost download]# cd /usr/src/redhat/SPECS
[root@localhost SPECS]# ls
kernel-2.6.spec
[root@lee-linuxOS SPECS]#rpmbuild -bp kernel-2.6.spec
4.cd /usr/src/redhat/BUILD/your-package/ 一個和你的軟體包同名的目錄
可以直接make
在看一下etc/grub.conf
Ⅲ 如何安裝linux kernel source
1、下載新內核源碼:到官網,下載最新版本linux內核,保存到/usr/src/kernels目錄,大約54MB。 2、# cd /usr/src/kernels 3、# tar jvxf linux-2.6.31.5.tar.bz2 4、進入系統原內核目錄,把其中的隱藏文件.config復制到新內核目錄中。 5、cd進入新內核目錄,然後執行# make oldconfig 此時所有提示均按回車,選項提示都默認。 6、# make xconfig 此時彈出一個內核配置窗口,裡面全是英文,我看不懂,乾脆就直接把這個窗口關掉,繼續往下做。 7、# make bzImage && make moles && make moles_install && make install 第七步編譯時間比較長,要30到50分鍾不等,要看機器情況了。 8、#uname -r查看內核版本,完成上面步驟後就可以重啟系統了,啟動時會在GRUB菜單里出現新內核選項了。 此方法安裝新內核後同時也會保留舊內核,啟動時,可以在新老內核間選擇,相當的實用。
Ⅳ 如何在Debian或Ubuntu上安裝完整的內核源碼
你好,在Debian上安裝完整的內核源碼
在下載內核源碼之前,先安裝dpkg-dev,其中包含你在Debian上生成源代碼時需要的開發工具套件。不僅如此,dpkg-dev中還包含在用來解壓Debian源碼包並自動打補丁的工具dpgk-source。
$ sudo apt-get install dpkg-dev
然後,運行以下命令下載完整的內核源碼。
$ apt-get source linux-image-$(uname -r)
伴隨著完整內核源碼(linux_X.X.XX.orig.tar.xz)的還有一些可用的內核補丁(linux_X.X.X+XXX.debian.tar.xz)和源碼控制文件(linux_XXXX.dsc),這些都將被下載並存儲到當前目錄。在.dsc文件中會指出如何給內核源碼打補丁。
當下載完成,以上的命令將會自動調用工具dpkg-source將下載的內核源碼解壓到當前的目錄中,與此同時根據.dsc文件來下補丁。
最終完整的內核源碼樹將會以"linux-X.X.XX"的形式呈現在當前目錄中。
在Ubuntu上安裝完整內核源碼
如果你想安裝完整內核源碼的話,以上在Debian上的那一套做法在Ubuntu上仍然奏效。
在Ubuntu上還有另一套方法安裝完整內核源碼。事實上,你可以查一下由Canonical為Ubuntu不同發行版維護的內核源碼樹。
$ sudo apt-get install git
$ git clone git://kernel.ubuntu.com/ubuntu/ubuntu-$(lsb_release --codename | cut -f2).git
Ⅳ 如何安裝Linux內核源代碼
一般在Linux系統中的/usr/src/linux*.*.*(*.*.*代表的是內核版本,如2.4.23)目錄下就是內核源代碼(如果沒有類似目錄,是因為還沒安裝內核代碼)。另外還可從互連網上免費下載。