源碼環境的搭建
>sudo apt-cache search linux-source
linux-source - Linux kernel source with Ubuntu patches
linux-source-4.4.0 - Linux kernel source for version 4.4.0 with Ubuntu patches
因差異這個略有不同,選擇linux-source-4.4.0即可。按照你顯示的版本號而定。
>sudo apt-get install linux-source-4.4.0
安裝完成後,在/usr/src/ 目錄下會出現兩個新文件,一個為linux-source-4.4.0文件夾,另外一個為 linux-source-4.4.0.tar.bz2。
>tar jxvf linux-source-4.4.0.tar.bz2 -C /home/yourdir/Kernel
解壓到你的文件夾下 或者解壓到當前目錄下也行。
在解壓出來的的linux-source-4.4.0目錄下執行配置內核的工作
>sudo make oldconfig //配置內核
>sudo make //編譯內核 此處時間花費較長 若出現類似openssl/opensslv.h No such file or directory 這樣的 錯誤則表明需要安裝 libssl-dev 執行sudo apt-get install libssl-dev
>sudo make modules //編譯模塊
>sudo make modules_install //安裝模塊
第一個.c文件與Makefile文件
hello.c代碼
#include <linux/init.h>
#include <linux/module.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");
}
module_init(hello_init);
module_exit(hello_exit);
Makefile文件。//注意空格與Tab
obj-m :=hello.o
hellomodule-objs :=module #可以把hello這個改成你的命名
KERNELDIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
default:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
保存後執行 >sudo make
即可生成hello.ko文件。既可以利用此文件來裝載到內核中去了。
裝載命令 >sudo insmod ./hello.ko
裝載完成後可以使用 > lsmod //查看當前安裝的驅動模塊。
> cat /var/log/syslog 中可以直接看到輸出的 hello 與Goodbye // 或者使用 >dmesg | tail 此條命令更簡潔
卸載命令 > sudo rmmod ./hello.ko
第一次配置環境及編寫Makefile的過程中遇到了很多坑,關於驅動的進一步學習還需要參考相關的Linxu驅動開發的相關書籍及教程。
關於文中的hello.c以及Makefile文件中的各種內容為什麼這樣子寫,相信你查看相關的資料之後即可了然於胸了。