重新移植一个linux内核


从新移植linux内核

15年4月23日08:37:24

*****特别要注意的是:移植内核的时候用的交叉编译器与构建跟文件系统的时候用的,一定要是统一个版本的,要不就会出现各种错误!!深有体会啊.......*******************


(一)常规方法,按照韦老师的来做(使用厂家提供的配置文件)

1)解压缩

cd /work/system”

tar xjf linux-2.6.22.6.tar.bz2”

2)打补丁

cd /work/system/linux-2.6.22.6”

patch -p1 < ../linux2.6.22.6_jz2440.patch”

其中p_后面可以写数字,表示忽略几个参数。

3)配置

cp config_ok .config”

4)编译

make uImage”


执行的过程中,在最后生成uImage的时候,在命令行最后发现:

**************************************************************

UIMAGE arch/arm/boot/uImage

mkimage”commond not found – U-boot image will not be built

Image arch/arm/boot/uImage is ready

**************************************************************


即没有mkimage这个工具,直接执行“sudo apt-get install uboot-mkimage”命令,即可安装,再次执行“make uImage”,即可在arch/arm/boot文件夹下面发现生成的uImage



执行上面的几个步骤就能在/work/system/linux-2.6.22.6/arch/arm/boot文件夹下面生成Image,zImage,uImage。其中Image是内核映象,大概4MzImage为内核映象的压缩文件,uImagezImage+64K的头部。




(二)自己使用默认配置,在上面修改的方式移植linux内核

前两步跟上面相同,不再重复写。1) 2)

3)配置

make s3c2410_defconfig”

make menuconfig”


提示出错:“curses.h:没有那个文件或目录,编译中断”

百度出来:”ubuntu系统中缺少一个套件ncurses devel“,安装即可,执行

sudo apt-get install libncurses5-dev“,从新配置成功。


虽然“make menuconfig”的时候,我们什么都不修改,但是这一步不能省去,执行这一步,会生成一部分头文件。


4)编译

make uImage”


(1)直接执行“make uImage”,提示:

”CHK include/linux/version.h

/bin/sh:1:cannot create …......:Permisson denied

make :***[........]错误2“


一看就是权限不够,于是加上”sudo..........“


(2)执行“sudo make uImage”,结果提示:

”make arm-linux-gcc:命令没找到

CHK include/linux/version.h

make[1]include /asm-arm/mach-types.h是最新的

CHK include/.........

CC ….......

/bin/sharm-linux-gcc:not found

make[1]***[......]错误127

make:[prepare0]错误2“


我的arm-linux-gcc 交叉编译链已经安装,输入”arm-“按两下”Tab“键可以出现提示,输入”arm-linux-gcc -v“可以看到版本信息等东西,怎么回事。。。。。。


这时,看到网上一片文章讲的,当在当前用户模式下输入“arm-linux-gcc”时,“PATH”是当前模式下的环境变量,而输入“sudo.....”的时候,是在超级用户模式下,此时的环境变量“PATH”里面没有添加交叉编译链,这时候输入“sudo -s”进入超级用户模式,“vim /etc/environment”“export PATH=$PATH........”等,并且“source /etc/environment”,立即生效,输入exit退出后,再次输入“sudo make uImage”


这时出现同样的错误,我查看环境变量没有错误,我用“sudo -i”进入超级用户模式,查看环境变量发现没有,这时候发现可能“sudo -i”与“sudo -s”可能有区别。


sudo后面可以添加几个参数,-s后面跟命令,直接在当前路径执行;

-i后面可以不跟命令,也可以跟命令,在/root下运行。


(3)继续”sudo -s“ ”make uImage“

提示错误:

”ccl:error:unrecognised debug output level “dwarf2”

make [1]***[usr/initramfs_data.o]错误1

make:***[usr]错误2“

网上查资料,原因是gcc版本不支持 -gdwarf2参数,打开Makefile ,查找后发现

ifdef CONFIG_DEBUG_INFO

CFLAGS += -g

# AFLAGS +=-gdwarf2

endif

#号注释了上面那行,此时后可以成功编译uImage,不过暂时不知的注释掉这一行对后面有没有影响。

<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>
阅读(215) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值