linux添加內核
❶ OpenWrt教程-如何在OpenWrt系統中添加一個linux內核模塊
linux內核支持動態載入模塊,內核模塊以.ko為後綴,在Linux系統中,內核模塊放在/lib/molex/x.x.x目錄中,其中x.x.x為linux版本號
載入模塊
insmod xxx.ko
如果帶參數 insmod xxx.ko a=1
卸載模塊
rmmod xxx.ko
支持的數據類型
bool :布爾類型
invbool:顛倒了值的bool類型;
charp :字元指針類型,內存為用戶提供的字元串分配;
int :整型
long :長整型
short :短整型
uint :無符號整型
ulong :無符號長整型
ushort :無符號短整型
內核模塊源碼Makefile編寫格式和linux源碼的格式一樣
在OpenWrt系統中,內核模塊編譯和應用層的package編譯類似
make package/模塊名/compile V=s
比如:
make package/hello_kernel/compile V=s
編譯完成後會生成.ko文件,目錄文件在build_dir中,但和應用層的build目錄有點區別,內核模塊的package放在linux目錄,如(X86平台):
build_dir/target-x86_64_musl/linux-x86_64/
將編譯完成的ko文件傳輸到OpenWrt系統中,注意編譯平台和開發板平台的系統架構要一致。
❷ linux怎麼添加自己的內核模塊
不同發行版和不同版本的Linux略有不同,以CentOS7為例,需要在/etc/sysconfig/moles/目錄中增加一個腳本,在此腳本中載入所需的模塊。注意該腳本文件的許可權為755。
以uinput模塊為例,腳本如下:
#!/bin/sh
if [ ! -c /dev/input/uinput ] ; then
exec /sbin/modprobe uinput >/dev/null 2>&1
fi
❸ 如何為linux 添加內核模塊
1.1 add .c file
./kernel_imx/drivers/hello_mole/hello.c:
[cpp] view plain
#include <linux/mole.h>
#include <linux/string.h>
static int __init hello_mole_init(void)
{
printk(KERN_DEBUG "hello_mole_init\n");
return 0;
}
static void __exit hello_mole_exit(void)
{
printk(KERN_DEBUG "hello_mole_exit\n");
}
❹ linux怎麼載入內核
載入內核?linux系統下的grub里有配置文件menu.lst吧,里邊就有啟動grub時需要載入的內核。你是說開機後系統如何載入內核嗎?.ko文件一般是硬體的驅動,make是針對makefile來用的,makefile配置好編譯條件和相關信息,用make就可以執行makefile里的配置。一般是在用源代碼安裝軟體的時候用的,源代碼包里通過configure會生成makefile文件
❺ 如何給linux安裝新內核
清除垃圾(這一步:一般是在就內核重新編譯時使用,在編譯新的內核是不需要);
make clean及make mrproper;
進行內核裁減配置;
內核裁減配置的原則:
從實際出發。
如:根據支持的硬體設備來決定需要選擇的驅動模塊,根據需要選擇所支持的文件系統格式等;
具體配置命令為:
make config :通過命令介面,依次要求你設定每個選項,如果.config文件存在,會根據該文件來設置默認值;
make menuconfig :顯示以curses為基礎的、終端式的配置菜單。
make xconfig :圖形界面,顯示以Tk為基礎X Window配置菜單。
最常用的為:make menuconfig(註:需要ncurses的rpm包)。
說明:這一步中選擇為M模式的,編譯到/lib/moles/下相關目錄文件中;選擇為*模式的,編譯到內核中即/boot/vmlinuz中,啟動時載入到內核中。
具體內核裁減配置參閱其它資料。
第四步:生成依賴關系(make dep)
內核源碼樹中大多數文件都會與一些頭文件有依存關系,要想編譯內核順利,在正式編譯前必須讓內核源碼樹中的各個Makefile文件知道這些依存關系。
依存關系建立期間會在內核源碼樹中每個子目錄里產生一個隱藏的.depend文件,此文件內含子目錄里各個文件所依存的頭文件清單。
第五步:建立內核映像和模塊
2.4內核:make bzImage :在arch/YOUR_ARCH/boot/中生成在在zImage內核映像文件;
make moles :在相應目錄下生成內核模塊(即驅動模塊)
2.6內核:make :作用相當於make bzImage與make moles
第六步:安裝模塊(make moles_install)
讓make moles或make 過程中產生的.o驅動模塊拷入/lib/moles/下相應目錄中;
第七步:安裝內核
第一種情況:直接使用make install命令即可。
第二中情況:先採用cp arch/i386/boot/bzImage /boot/×××(×××表示自己隨意的命名)
mkinitrd /boot/×××.img 2.6.12.6(內核版本號)
❻ 如何將linux驅動程序添加到內核中
工具/原料
Ubuntu12.04操作系統和測試驅動程序(beep_arv.c)
方法/步驟
在介紹2種方法前,必須知道的知識點:
1.關聯文件Makefile:
Makefile:分布在Linux內核源代碼中的Makefile用於定義Linux內核的編譯規則;
2.管理文件Kconfig:
給用戶提供配置選擇的功能;
配置工具:
1)包括配置命令解析器;
2)配置用戶界面;menuconfig || xconfig;
3)通過腳本語言編寫的;
3.
---tristate 代表三種狀態:1.[ ]不選擇,2.[*]選擇直接編譯進內核,載入驅動到內核里,3.[m]動態載入驅動;
---bool 代表兩種狀態,1.[ ]不選擇,2.[*]選擇;
---"Mini2440 mole sample"這個是在make menuconfig時刷出的提示字元;
---depends on MACH_MINI2440 這個配置選項出現在make menuconfig菜單欄下,在內核配置中必須選中、MACH_MINI2440;
---default m if MACH_MINI2440 這個如果選中了MACH_MINI2440,默認是手
動載入這個驅動;
help:提示幫助信息;
在了解了基本的知識點,便開始進行第一種添加驅動的方法,本次交流是以beep_arv.c蜂鳴驅動程序為基礎的
方法一:
1)進入內核的驅動目錄;
#cp beep_arv.c /XXX/.../linux-XXXl/drivers/char
2)進入Kconfig添加驅動信息;
#cd /XXX/linux-XXX/.../drivers/char
#vim Kconfig
添加基本信息:
config BEEP_MINI2440
tristate "---HAH--- BEEP"
default
help
this is test makefile!
3)進入Makefile添加驅動編譯信息;
#vim Makefile
添加基本信息:
obj-$(CONFIG-BEEP_MINI2440) +=beep_drv.o
方法一結果:
在--Character devices下就能看到配置信息了;
方法二:
1)進入驅動目錄,創建BEED目錄;
#cd /XXX/.../linux-XXX/drivers/char
#mkdir beep
2)將beep_arv.c驅動程序復制到新建目錄下;
#cp beep_arv.c /XXX/.../linux-XXXl/drivers/char/beep
3)創建Makefile和Kconfig文件
#cd char/beep
#mkdir Makefile Kconfig
#chmod 755 Makefile
#chmod 755 Kconfig
4)進入Kconfig添加驅動信息;
#vim Kconfig
添加基本信息:
config BEEP_MINI2440
tristate "---HAH--- BEEP"
default
help
this is test makefile!
5)進入Makefile添加驅動編譯信息;
#vim Makefile
添加基本信息:
obj-$(CONFIG_BEEP_MINI2440) +=beep_drv.o
6)並且要到上一級目錄的Makefile和Kconfig添加驅動信息;
#cd ../
#vim Makefile
#vim Kconfig
❼ 如何將linux驅動程序添加到內核中 / 藍訊
1.進入你的內核源碼文檔,創建一個DoneLin_Driver文件夾來存放你的驅動,於是文件夾路徑:drivers/DoneLin_Driver/:
2.復制你的範例驅動到剛剛建立的DoneLin_Driver文件夾中,我的範例名字叫global_mem_two.c:
3.在DoneLin_Driver文件夾中建立兩個新文本文件:Kconfig 和 Makefile
4.修改DoneLin_Driver文件夾下的Kconfig文件,輸入以下內容:
menu "DoneLin-driver "
comment "global_mem_two-driver "
config GLOBAL_MEM_TWO tristate "global_mem_two DriTst" help this is global mem 2 test programming
endmenu
5.接著修改DoneLin_Driver的另一個文件Makefile,輸入以下內容:
obj-$(CONFIG_GLOBAL_MEM_TWO) += global_mem_two.o
6.修改上一層目錄(Driver目錄)中的Kconfig文件,聲明自己的源代碼:在"menu "Device drivers""下面加入如下內容:
source "drivers/DoneLin_Driver/Kconfig"##...add my tst driver mole
7.修改arch/arm/Kconfig
同樣,跟在driver/Kconfig一樣,在"menu device drivers"下面加入同樣的語句:
source "drivers/DoneLin_Driver/Kconfig"
就是說:在arch/arm/Kconfig menu "Device Drivers" endmenu之間添加source "drivers/DoneLin_Driver/Kconfig"
在drivers/Kconfig menu "Device Drivers" endmenu之間添加source "drivers/hello/Kconfig"(不知為什麼arch/arm/Kconfig中竟然含有Drivers里Kconfig內容的一個復本,實驗證明只對drivers/Kconfig中修改內容無效。)
8.修改Drivers目錄下的Makefile,在如圖位置,加入:
obj-$(CONFIG_GLOBAL_MEM_TWO) += DoneLin_Driver/#ADD FOR TEST add_for_test add for test測試的驅動
8.都修改好,保存好之後,回到linux內核根目錄,make menuconfig,奇跡出現了,我自己的linux驅動程序出現在內核的device drivers選項裡面了:
選擇global_mem_tow_DriTst為m,表示編譯成模塊,編譯成ko文件
然後,保存退出,make, make zImage, make moles即可生成新的內核和新的moles,
完成了,
❽ 如何在linux上通過GRUB添加內核參數
如果你想在系統啟動時載入一個內核參數,需修改GRUB的配置模板(/etc/default /grub),添加"名稱=值」的鍵值對到GRUB_CMDLINE_LINUX變數,添加多個時用空格隔開,例如GRUB_CMDLINE_LINUX="...... name=value"(如果沒有GRUB_CMDLINE_LINUX變數時,用GRUB_CMDLINE_LINUX_DEFAULT替代即可).
1. Debian or Ubuntu
$ sudo update-grub //生成grub的配置文件
$ sudo apt-get install grub2-common //沒有 update-grub命令時,先運行這個安裝命令
2. Fedora or CentOS7
$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg //生成grub2的配置文件
$ sudo yum install grub2-tools.x86_64 //沒有grub2-mkconfig命令時,先安裝grub2-tools
帶EFI的系統,grub.cfg文件會是在/boot/efi下,比如CentOS7:/boot/efi/EFI/centos/grub.cfg