LInux2.6.29 Busybox1.13.3 到S3C2440

来源:互联网 发布:淘宝买不到115会员 编辑:程序博客网 时间:2024/06/02 04:18

最近比较有空,拿出很久没有碰过的板子玩玩,看到内核以及busybox都更新了不少,手痒痒又做了一次移植。

编译器使用http://www.codesourcery.com/gnu_toolchains/arm/portal/subscription?@template=lite 2008q3的版本,GCC是4.3.2。

 

使用这个编译器编译arm920t的程序有个地方要注意,这个编译器支持armv5t,而2440是armv4t的片子,所以编译时要加上-march=armv4t。

 

内核编译时也要选上下面的选项,否则用这个编译器编出来的用户程序无法运行,最典型的错误是Busybox无法运行。

make menuconfig进入菜单进行配置,这里由于使用了codesourcery的工具链,此工具链支持EABI,所以选择
Kernel Features ->
     [*]Use the ARM EABI to compile the kernel
     [*]  Allow old ABI binaries to run with this kernel

 

可以在CFLAGS中加入-march=armv4t,但实践证明有些程序不支持这样写,我在编译libfreetype时就没有通过,这样写才可以CC=arm-none-linux-gnueabi-gcc -march=armv4t

 

代码的修改可以参考旧的文章,基本一样。

 

Busybox的移植过程中有些情况搞得我郁闷了大半天,我是采用静态的方式生成busybox,开机后一直都无法login,调试发现busybox没有分析/etc/passwd文件。

解决方法:

 Login/Password Management Utilities  --->

 [*] Use internal password and group functions rather than system functions

后来我做了一个自动login

在/etc/inittab中

s3c2410_serial0::respawn:/bin/sh

 

上面的是一个方法,也可以

s3c2410_serial0::respawn:/bin/login -f root

 

关于清除密码,可以改

/etc/passwd

root::0:0:root:/:/bin/sh

把第一和第二个冒号之间清空。

同时可以把默认的路径修改,这里把/root 改为/(红色的修改)

 

另外,在/etc/profile中设置了PS1,但没起作用,下面这个要选上

 Busybox Library Tuning  --->

  [*]   Fancy shell prompts