189 8069 5689

linux编译内核命令 linux内核编译方法

如何编译Linux内核

1、大概步骤:

公司主营业务:成都网站设计、成都做网站、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。成都创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。成都创新互联推出陆港免费做网站回馈大家。

1、安装开发包组

2、下载源码文件

3、.config:准备文本配置文件

4、make menuconfig:配置内核选项

5、make [-j #]

6、make modules_install:安装模块

7、make install :安装内核相关文件

安装bzImage为/boot/vmlinuz-VERSION-RELEASE (去boot目录下查看)

生成initramfs文件

8、编辑grub的配置文件

2、编译配置选项

配置内核选项

支持“更新”模式进行配置: make help

(a) make config:基于命令行以遍历的方式去配置内核中可配置的每个选项

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

(c) make gconfig:基于GTK (GNOME)环境窗口界面

(d) make xconfig:基于QT(KDE)环境的窗口界面

支持“全新配置”模式进行配置

(a) make defconfig:基于内核为目标平台提供的“默认”配置进行配置

(b) make allyesconfig: 所有选项均回答为“yes“

(c) make allnoconfig: 所有选项均回答为"no“

3、编译

全编译:make [-j #]

编译内核的一部分功能:

a) 只编译某子目录中的相关代码:

# cd /usr/src/linux

# make dir/

(b) 只编译一个特定的模块:

# cd /usr/src/linux

# make dir/file.ko

例如:只为e1000编译驱动:

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

4、编译内核

如何交叉编译内核:

编译的目标平台与当前平台不相同;

# make ARCH=arch_name

要获取特定目标平台的使用帮助

# make ARCH=arch_name help

# make ARCH=arm help

5、清理删除

在已经执行过编译操作的内核源码树做重新编译:

需要事先清理操作:

# make clean:清理大多数编译生成的文件,但会保留config文件等

# make mrproper: 清理所有编译生成的文件、 config及某些备份文件

# make distclean: mrproper、 patches以及编辑器备份文件

卸载内核

删除/lib/modules/目录下不需要的内核库文件

删除/usr/src/linux/目录下不需要的内核源码

删除/boot目录下启动的内核和内核映像文件

更改grub的配置文件,删除不需要的内核启动列表

需要解决更多linux问题,详情请看

望采纳

linux内核模块编译-通过Makefile重命名.ko文件名和模块名

假设模块的源文件为hello.c,源码如下:

使用该文件编译内核模块。

正常情况下,Makefile文件内容如下:

执行 make 命令,生成hello.ko文件。

执行 sudo insmod hello.ko 命令,安装该模块。

执行 lsmod 命令,查看安装的模块。就会看到第一行的就是hello模块。

但是,如果想自定义模块名称为 xmodule ,而不是默认的 hello ,如何实现呢?方法如下:

在Makefile中重命名obj-m并将obj-m的依赖关系设置为原始模块(hello)

修改后的Makefile文件内容如下:

将obj-m设置为 xmodule .o,并使 xmodule .o依赖于 hello .o.

执行 make 命令后,生成 xmodule .ko, 而不是 hello .ko,

安装命令: sudo insmod xmodule.ko

查看命令: lsmod ,就会看到被安装名为 xmodule 的模块。

Linux内核源码如何编译

首先uname

-r看一下你当前的linux内核版本

1、linux的源码是在/usr/src这个目录下,此目录有你电脑上各个版本的linux内核源代码,用uname

-r命令可以查看你当前使用的是哪套内核,你把你下载的内核源码也保存到这个目录之下。

2、配置内核

make

menuconfig,根据你的需要来进行选择,设置完保存之后会在当前目录下生成.config配置文件,以后的编译会根据这个来有选择的编译。

3、编译,依次执行make、make

bzImage、make

modules、make

modules

4、安装,make

install

5、.创建系统启动映像,到

/boot

目录下,执行

mkinitramfs

-o

initrd.img-2.6.36

2.6.36

6、修改启动项,因为你在启动的时候会出现多个内核供你选择,此事要选择你刚编译的那个版本,如果你的电脑没有等待时间,就会进入默认的,默认的那个取决于

/boot/grub/grub.cfg

文件的设置,找到if

[

"${linux_gfx_mode}"

!=

"text"

]这行,他的第一个就是你默认启动的那个内核,如果你刚编译的内核是在下面,就把代表这个内核的几行代码移到第一位如:

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

}

当然你也可以修改

set

default="0"来决定用哪个,看看你的内核在第几位,default就填几,不过我用过这种方法,貌似不好用。

重启过后你编译的内核源码就成功地运行了,如果出现问题,比如鼠标不能用,usb不识别等问题就好好查查你的make

menuconfig这一步,改好后就万事ok了。

最后再用uname

-r看看你的linux内核版本。是不是你刚下的那个呢!有没有成就感?

打字不易,如满意,望采纳。


文章题目:linux编译内核命令 linux内核编译方法
文章路径:http://jkwzsj.com/article/dojjejd.html

其他资讯