当前位置: 首页 > 工具软件 > MTC-2008 > 使用案例 >

学习.MTC.Project.Linux.内核编译.内核树

吴城
2023-12-01
第一步,下载源代码
[*]1.查看内核版本信息[1]:
mc22@mc22-laptop:~$ uname -a
Linux mc22-laptop 2.6.32-24-generic #39-Ubuntu SMP Wed Jul 28 06:07:29 UTC 2010 i686 GNU/Linux


[*]2.使用apt查看可下载的内核源码[2]:

mc22@mc22-laptop:~$ apt-cache search linux-source
linux-source - Linux kernel source with Ubuntu patches
linux-source-2.6.32 - Linux kernel source for version 2.6.32 with Ubuntu patches


[*]3.其中有linux-source-2.6.32,正好是与我使用的linux一样的内核,使用apt直接下载:

mc22@mc22-laptop:~$ sudo apt-get install linux-source-2.6.32


[*]4.下载完成后,在/usr/src目录下,可以找到压缩包linux-source-2.6.32.tar.bz2,解压此压缩包得到整个内核的源代码[3]:

mc22@mc22-laptop:/usr/src$ sudo tar -jxvf linux-source-2.6.32.tar.bz2


第二步,配置及编译内核
[*]1.进入/usr/src/linux-source-2.6.32目录下,配置参考[2][4],此处使用oldconfig命令,将当前系统的参数写入配置。

mc22@mc22-laptop:/usr/src/linux-source-2.6.32$ sudo make oldconfig

scripts/kconfig/conf -o arch/x86/Kconfig
#
# using defaults found in /boot/config-2.6.32-24-generic
#
#
# configuration written to .config
#


[*]2.此处编译会出现错误[5]:

LD [M] ubuntu/omnibook/omnibook.o
ld: /ubuntu/omnibook/sections.lds: No such file: No such file or directory
make[2]: *** [ubuntu/omnibook/omnibook.o] Error 1
make[1]: *** [ubuntu/omnibook] Error 2
make: *** [ubuntu] Error 2

解决方法是进入源码的目录,打开omnibook的Makefile进行少量修改:

mc22@mc22-laptop:/$ sudo gedit /usr/src/linux-source-2.6.32/ubuntu/omnibook/Makefile

将文件中的:

#EXTRA_LDFLAGS += $(src)/sections.lds
EXTRA_LDFLAGS += $(PWD)/ubuntu/omnibook/sections.lds

改为:

EXTRA_LDFLAGS += $(src)/sections.lds
#EXTRA_LDFLAGS += $(PWD)/ubuntu/omnibook/sections.lds


[*]3.在此源码目录下执行make(可跳过):

mc22@mc22-laptop:/usr/src/linux-source-2.6.32$ sudo make


[*]4.在同一目录下执行make bzImage命令:

mc22@mc22-laptop:/usr/src/linux-source-2.6.32$ sudo make bzImage

编译内核大概耗时1小时以上,之后会在当前目录生成新文件vimlinux,其权限为-rwxr-xr-x。


[*]5.之后执行make modules命令编译模块,若未执行步骤2,需要修改omnibook的Makefile,方法同步骤2:

mc22@mc22-laptop:/usr/src/linux-source-2.6.32$ sudo make modules


[*]6.执行make modules_install命令安装模块:

mc22@mc22-laptop:/usr/src/linux-source-2.6.32$ sudo make modules_install


[*]7.执行完上述操作,切换到目录/lib/modules/,会看到新出现的2.6.32.28+drm33.13文件夹,里面的build文件夹就是编译模块需要的文件树。不过我做到这一步的时候,提示磁盘空间不够,系统挂掉了,给虚拟机分配的空间太小了,8GB。第二次使用20G大小的虚拟机,执行完全部操作之后磁盘占用为7.9G

参考:
[1] [url=http://blog.csdn.net/earlyup/archive/2008/08/07/2784707.aspx]查看Linux内核版本的命令[/url]
[2] [url=http://www.cnblogs.com/avril/archive/2010/03/23/1692050.html]Linux 2.6内核的编译步骤及模块的动态加载[/url]
[3] [url=http://www.21andy.com/blog/20060820/389.html]linux解压 tar命令[/url]
[4] [url=http://linux.chinaunix.net/bbs/viewthread.php?tid=885597&extra=page%3D1%26amp;filter%3Ddigest]Linux 2.6.19.x 内核编译配置选项简介[/url]
[5] [url=http://xiaonannanya.blogbus.com/logs/72097165.html]内核编译的过程(网上收集)[/url]
 类似资料: