欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

linux內(nèi)核編譯命令 linux編譯內(nèi)核模塊兩種方式

如何編譯Linux內(nèi)核

1、大概步驟:

成都創(chuàng)新互聯(lián)公司專注于凱里企業(yè)網(wǎng)站建設(shè),自適應(yīng)網(wǎng)站建設(shè),成都商城網(wǎng)站開發(fā)。凱里網(wǎng)站建設(shè)公司,為凱里等地區(qū)提供建站服務(wù)。全流程按需求定制網(wǎng)站,專業(yè)設(shè)計,全程項目跟蹤,成都創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)

1、安裝開發(fā)包組

2、下載源碼文件

3、.config:準(zhǔn)備文本配置文件

4、make menuconfig:配置內(nèi)核選項

5、make [-j #]

6、make modules_install:安裝模塊

7、make install :安裝內(nèi)核相關(guān)文件

安裝bzImage為/源謹(jǐn)敗boot/vmlinuz-VERSION-RELEASE (去boot目錄下查看)

生成initramfs文件

8、編輯grub的配置文件

2、編譯配置晌或選項

配置內(nèi)核選項

支持“更新”模式進(jìn)行配置: make help

(a) make config:基于命令行以遍歷的方式去配置內(nèi)核中可配置的每個選項

(b) make menuconfig:基于curses的文本窗口界雹顫面

(c) make gconfig:基于GTK (GNOME)環(huán)境窗口界面

(d) make xconfig:基于QT(KDE)環(huán)境的窗口界面

支持“全新配置”模式進(jìn)行配置

(a) make defconfig:基于內(nèi)核為目標(biāo)平臺提供的“默認(rèn)”配置進(jìn)行配置

(b) make allyesconfig: 所有選項均回答為“yes“

(c) make allnoconfig: 所有選項均回答為"no“

3、編譯

全編譯:make [-j #]

編譯內(nèi)核的一部分功能:

a) 只編譯某子目錄中的相關(guān)代碼:

# cd /usr/src/linux

# make dir/

(b) 只編譯一個特定的模塊:

# cd /usr/src/linux

# make dir/file.ko

例如:只為e1000編譯驅(qū)動:

#make drivers/net/ethernet/intel/e1000/e1000.ko

4、編譯內(nèi)核

如何交叉編譯內(nèi)核:

編譯的目標(biāo)平臺與當(dāng)前平臺不相同;

# make ARCH=arch_name

要獲取特定目標(biāo)平臺的使用幫助

# make ARCH=arch_name help

# make ARCH=arm help

5、清理刪除

在已經(jīng)執(zhí)行過編譯操作的內(nèi)核源碼樹做重新編譯:

需要事先清理操作:

# make clean:清理大多數(shù)編譯生成的文件,但會保留config文件等

# make mrproper: 清理所有編譯生成的文件、 config及某些備份文件

# make distclean: mrproper、 patches以及編輯器備份文件

卸載內(nèi)核

刪除/lib/modules/目錄下不需要的內(nèi)核庫文件

刪除/usr/src/linux/目錄下不需要的內(nèi)核源碼

刪除/boot目錄下啟動的內(nèi)核和內(nèi)核映像文件

更改grub的配置文件,刪除不需要的內(nèi)核啟動列表

需要解決更多l(xiāng)inux問題,詳情請看

望采納

linux編譯內(nèi)核步驟

一、準(zhǔn)備工作

a) 首先,你要有一臺PC(這不廢話么^_^),裝好了Linux。

b) 安裝好GCC(這個指的是host gcc,用于編譯生成巧兄燃運(yùn)行于pc機(jī)程序的)、make、ncurses等工具。

c) 下載一份純凈的Linux內(nèi)核源碼包,并解壓好。

注意,如果你是為當(dāng)前PC機(jī)編譯內(nèi)核,最好使用相應(yīng)的Linux發(fā)行版的源碼包。

不過這應(yīng)該也不是必須的,因為我在我的Fedora 13上(其自帶的內(nèi)核版本是2.6.33.3),就下載了一個標(biāo)準(zhǔn)的內(nèi)核linux-2.6.32.65.tar.xz,并且順利的孝虛編譯安裝成功了,上電重啟都OK的。不過,我使用的.config配置文件,是Fedora 13自帶內(nèi)核的配置文件,即/lib/modules/`uname -r`/build/.config

d) 如果你是移植Linux到嵌入式系統(tǒng),則還要再下載安裝交叉編譯工具鏈。

例如,你的目標(biāo)單板CPU可能是arm或mips等cpu,則安裝相應(yīng)的交叉編譯工具鏈。安裝后,需要將工具鏈路徑添加到PATH環(huán)境變量中。例如,你安裝的是arm工具鏈,那么你在shell中執(zhí)行類似如下的命令,假如有類似的輸出,就說明安裝好了。

[root@localhost linux-2.6.33.i686]# arm-linux-gcc --version

arm-linux-gcc (Buildroot 2010.11) 4.3.5

Copyright (C) 2008 Free Software Foundation, Inc.

This is free software; see the source for copying conditions. There is NO

warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

注:arm的工具鏈,可以從這里下載:回復(fù)“ARM”即可查看。

二、設(shè)置編譯目標(biāo)

在配置或編譯內(nèi)核之前,首先要確定目標(biāo)CPU架構(gòu),以及編譯時采用什么工具鏈。這是最最基礎(chǔ)的信息,首先要確定的。

如果你是為當(dāng)前使用的PC機(jī)編譯內(nèi)核,則無須設(shè)置。

否則的話,就要明確設(shè)置。

這里以arm為例,來說明。

有兩種設(shè)置方法():

a) 修改Makefile

打開內(nèi)核源碼根目錄下的Makefile,修改如下兩個Makefile變量并保存。

ARCH := arm

CROSS_COMPILE := arm-linux-

注意,這里cross_compile的設(shè)置,是假定所用的交叉工具鏈的gcc程序名稱為arm-linux-gcc。如果實際使用的gcc名稱是some-thing-else-gcc,則這里照葫蘆畫瓢填some-thing-else-即可。總之,要省去名稱中最后的gcc那3個字母。

b) 每次執(zhí)行make命令時,都通過命令行參數(shù)傳入這些信息。

這其實是通過make工具的命令行參數(shù)指定變量的值。

例如

配置內(nèi)核時時,使用

make ARCH=arm CROSS_COMPILE=arm-linux- menuconfig

編譯內(nèi)核時使用

make ARCH=arm CROSS_COMPILE=arm-linux-

注意,實際上,對于編譯PC機(jī)內(nèi)核的情況,雖然用戶沒有明確設(shè)置,但并不是這兩項沒有配置。因為如果用戶沒有設(shè)置這兩項,內(nèi)核源碼頂層Makefile(位于源碼根目錄下)會通過如下方式生成這兩個變量的值。

SUBARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ \

-e s/arm.*/arm/ -e s/sa110/arm/ \

-e s/s390x/s390/ -e s/parisc64/parisc/ \

-e s/ppc.*/powerpc/ -e s/mips.*/mips/ \

-e s/sh[234].*/sh/ )

ARCH?= $(SUBARCH)

CROSS_COMPILE ?=

經(jīng)過上面的代碼,ARCH變成了PC編譯機(jī)的arch,即SUBARCH。因此,如果PC機(jī)上uname -m輸出的是ix86,則ARCH的值塵漏就成了i386。

而CROSS_COMPILE的值,如果沒配置,則為空字符串。這樣一來所使用的工具鏈程序的名稱,就不再有類似arm-linux-這樣的前綴,就相當(dāng)于使用了PC機(jī)上的gcc。

最后再多說兩句,ARCH的值還需要再進(jìn)一步做泛化。因為內(nèi)核源碼的arch目錄下,不存在i386這個目錄,也沒有sparc64這樣的目錄。

因此頂層makefile中又構(gòu)造了一個SRCARCH變量,通過如下代碼,生成他的值。這樣一來,SRCARCH變量,才最終匹配到內(nèi)核源碼arch目錄中的某一個架構(gòu)名。

SRCARCH := $(ARCH)

ifeq ($(ARCH),i386)

SRCARCH := x86

endif

ifeq ($(ARCH),x86_64)

SRCARCH := x86

endif

ifeq ($(ARCH),sparc64)

SRCARCH := sparc

endif

ifeq ($(ARCH),sh64)

SRCARCH := sh

endif

三、配置內(nèi)核

內(nèi)核的功能那么多,我們需要哪些部分,每個部分編譯成什么形式(編進(jìn)內(nèi)核還是編成模塊),每個部分的工作參數(shù)如何,這些都是可以配置的。因此,在開始編譯之前,我們需要構(gòu)建出一份配置清單,放到內(nèi)核源碼根目錄下,命名為.config文件,然后根據(jù)此.config文件,編譯出我們需要的內(nèi)核。

但是,內(nèi)核的配置項太多了,一個一個配,太麻煩了。而且,不同的CPU架構(gòu),所能配置的配置項集合,是不一樣的。例如,某種CPU的某個功能特性要不要支持的配置項,就是與CPU架構(gòu)有關(guān)的配置項。所以,內(nèi)核提供了一種簡單的配置方法。

以arm為例,具體做法如下。

a) 根據(jù)我們的目標(biāo)CPU架構(gòu),從內(nèi)核源碼arch/arm/configs目錄下,找一個與目標(biāo)系統(tǒng)最接近的配置文件(例如s3c2410_defconfig),拷貝到內(nèi)核源碼根目錄下,命名為.config。

注意,如果你是為當(dāng)前PC機(jī)編譯內(nèi)核,最好拷貝如下文件到內(nèi)核源碼根目錄下,做為初始配置文件。這個文件,是PC機(jī)當(dāng)前運(yùn)行的內(nèi)核編譯時使用的配置文件。

/lib/modules/`uname -r`/build/.config

這里順便多說兩句,PC機(jī)內(nèi)核的配置文件,選擇的功能真是多。不編不知道,一編才知道。Linux發(fā)行方這樣做的目的,可能是想讓所發(fā)行的Linux能夠滿足用戶的各種需求吧。

b) 執(zhí)行make menuconfig對此配置做一些需要的修改,退出時選擇保存,就將新的配置更新到.config文件中了。

Linux內(nèi)核源碼如何編譯

首先uname

-r看一下你當(dāng)前的linux內(nèi)核版本

1、linux的源碼是在/usr/src這個目錄下,此目錄有你電腦上各個版本的linux內(nèi)核源代碼,用uname

-r命令可以查看你當(dāng)孫早前使用的是哪套內(nèi)核,你把你下載的內(nèi)核源碼也保存到這個目錄之下。

2、配置內(nèi)核

make

menuconfig,根據(jù)你的需要來進(jìn)行選擇,設(shè)置完保存之后會在當(dāng)前目錄下生成.config配置文件,以后的編譯會根據(jù)這個來有選擇的編譯。

3、編譯,依次執(zhí)行make、make

bzImage、make

modules、make

modules

4、安裝,make

install

5、.創(chuàng)建系統(tǒng)啟動映像,到

/boot

目錄下,執(zhí)行

mkinitramfs

-o

initrd.img-2.6.36

2.6.36

6、修改啟動項,因為你在啟動的時候會出現(xiàn)多個內(nèi)核供你選擇,此事要選擇你剛編譯的那個版本,如果你的電腦沒有等待時間,就會進(jìn)入默認(rèn)的,默認(rèn)的那個取決于

/boot/grub/grub.cfg

文件的設(shè)置,找到if

[

"${linux_gfx_mode}"

!=

"text"

]這行,他的第一個就是你爛凱睜默認(rèn)啟動的那個內(nèi)核,如果你剛編譯的內(nèi)核是在下面,就把代表這個內(nèi)核的幾行代碼移到第一位如:

menuentry

'Ubuntu,

with

Linux

3.2.0-35-generic'

--class

ubuntu

--class

gnu-linux

--class

gnu

--class

os

{

recordfail

gfxmode

$linux_gfx_mode

insmod

gzio

insmod

part_msdos

insmod

ext2

set

root='(hd0,msdos1)'

search

--no-floppy

--fs-uuid

--set=root

9961c170-2566-41ac-8155-18f231c1bea5

linux/boot/vmlinuz-3.2.0-35-generic

root=UUID=9961c170-2566-41ac-8155-18f231c1bea5

ro

quiet

splash

$vt_handoff

initrd/boot/initrd.img-3.2.0-35-generic

}

當(dāng)然你也可以修改

set

default="饑歲0"來決定用哪個,看看你的內(nèi)核在第幾位,default就填幾,不過我用過這種方法,貌似不好用。

重啟過后你編譯的內(nèi)核源碼就成功地運(yùn)行了,如果出現(xiàn)問題,比如鼠標(biāo)不能用,usb不識別等問題就好好查查你的make

menuconfig這一步,改好后就萬事ok了。

最后再用uname

-r看看你的linux內(nèi)核版本。是不是你剛下的那個呢!有沒有成就感?

打字不易,如滿意,望采納。

linux內(nèi)核模塊編譯-通過Makefile重命名.ko文件名和模塊名

假設(shè)模塊的源文件為hello.c,源碼如下:

使用該文件兄中編譯內(nèi)核模塊。

正常情況下,Makefile文件內(nèi)容如下:

執(zhí)行 make 命令,生成hello.ko文件。

執(zhí)行 sudo insmod hello.ko 命令,安裝該模塊。

執(zhí)行腔猛 lsmod 命令,查看安裝的模塊。就會看到第一行的就是hello模塊。

但是,如果想自定義模塊名稱為 xmodule ,而不是默認(rèn)的 hello ,如何實現(xiàn)呢?方法如下:

在Makefile中重命名obj-m并將obj-m的依賴關(guān)系設(shè)置為原始模塊(hello)

修改后的Makefile文件內(nèi)容如下:

將obj-m設(shè)置為 xmodule .o,并使 xmodule .o依賴于 hello .o.

執(zhí)行 make 命令后,伍塵橋生成 xmodule .ko, 而不是 hello .ko,

安裝命令: sudo insmod xmodule.ko

查看命令: lsmod ,就會看到被安裝名為 xmodule 的模塊。

新聞標(biāo)題:linux內(nèi)核編譯命令 linux編譯內(nèi)核模塊兩種方式
當(dāng)前網(wǎng)址:http://www.chinadenli.net/article24/ddpcgce.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)關(guān)鍵詞優(yōu)化App開發(fā)動態(tài)網(wǎng)站響應(yīng)式網(wǎng)站網(wǎng)站導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)