arm移植ubuntu还是linux好,移植ubuntu core到Arm开发板

origin: http://blog.csdn.net/kickxxx/article/details/15341079

最初是想把整个ubuntu移植到MX51开发板,因为项目不需要运行桌面系统,所以只移植了一个基本的ubuntu core系统

1. 下载ubuntu core rootfs,关于ubuntu core参考https://wiki.ubuntu.com/Core

http://cdimage.ubuntu.com/ubuntu-core/releases/12.04/release/ubuntu-core-12.04.3-core-armhf.tar.gz

这个镜像就是一个rootfs,可以作为根文件系统使用。

2. 把镜像烧写到开发板的一个分区上

adb shell进入开发板,busybox mkfs.ext2 /dev/block/mmcblk0p1

adb shell进入开发板,mount -t ext2 /dev/block/mmcblk0p1 /mnt

adb push ubuntu-core-12.04.3-core-armhf.tar.gz /mnt/

adb shell进入开发板,cd /mnt; busybox tar ubuntu-core-12.04.3-core-armhf.tar.gz. 在/dev/block/mmcblk0p1这个分区上建立了一个完整的rootfs,文件系统类型为ext2

3. 我的arm开发板是mx51,修改uboot启动参数如下:

set bootargs_android 'setenv bootargs ${bootargs_base} init=/init rdinit=asdf root=b301 rootfs=ext2 di0_primary video=mxcdi0fb:RGB24,CLAA-WVGA'

粗体是我增加的参数,解释下增加的几个参数:

rdinit=asdf,rdinit=后的asdf是胡乱写的,这样会设置ramdisk_execute_command为asdf,就导致内核代码

[cpp]

view plain

copy

CODE_ico.png

ico_fork.svg

if (sys_access((const char __user *) ramdisk_execute_command, 0) != 0) {

sys_access访问失败,调用prepare_namespace 从mmcblk0p1安装根文件系统

root=b301,是/dev/block/mmcblk0p1的16进制主设备号b3和从设备号01

rootfs=ext2,文件系统类型

4. 启动开发板,会打印出如下信息:

[cpp]

view plain

copy

CODE_ico.png

ico_fork.svg

VFS: Mounted root (ext2 filesystem) on device 179:1.

表示已经mount 根文件系统成功。

这一步可能会出现如下错误:

[cpp]

view plain

copy

CODE_ico.png

ico_fork.svg

udevd[123]: unable to receive ctrl connection: Function not implemented

udevd[123]: unable to receive ctrl connection: Function not implemented

udevd[123]: unable to receive ctrl connection: Function not implemented

udevd[123]: unable to receive ctrl connection: Function not implemented

udevd[123]: unable to receive ctrl connection: Function not implemented

udevd[123]: unable to receive ctrl connection: Function not implemented

如果你出现了,那么执行第5步

5. 按链接给的patch, 修改内核

https://github.com/genesi/Linux-legacy/commit/a84fac75f38de592e530a2f9f982d7aafec6c288

6. 编译内核并烧写到开发板上,重启系统后,不会再打印step4的错误

7. 支持LCD console,修改内核配置文件如下

[cpp]

view plain

copy

CODE_ico.png

ico_fork.svg

@@ -1228,8 +1228,14 @@ CONFIG_FB_MXC_SYNC_PANEL=y

# Console display driver support

#

# CONFIG_VGA_CONSOLE is not set

+# CONFIG_VGACON_SOFT_SCROLLBACK is not set

CONFIG_DUMMY_CONSOLE=y

-# CONFIG_FRAMEBUFFER_CONSOLE is not set

+CONFIG_FRAMEBUFFER_CONSOLE=y

+# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set

+# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set

+# CONFIG_FONTS is not set

+CONFIG_FONT_8x8=y

+CONFIG_FONT_8x16=y

重新编译内核,重启系统后,可在LCD看到ubuntu的登录console

8 支持serial console,我的开发板没有usbhost,不能接usb键盘,所以需要用serial console控制

在/etc/init.d增加文件/etc/init/ttymxc.conf

[cpp]

view plain

copy

CODE_ico.png

ico_fork.svg

# console - getty

#

# This service maintains a getty on console from the point the system is

# started until it is shut down again.

start on stopped rc RUNLEVEL=[2345] and container CONTAINER=lxc

stop on runlevel [!2345]

respawn

exec /sbin/getty -L 115200 ttymxc0 vt102

修改rootfs的文件/etc/rc.local,如下

[cpp]

view plain

copy

CODE_ico.png

ico_fork.svg

#!/bin/sh -e

#

# rc.local

#

# This script is executed at the end of each multiuser runlevel.

# Make sure that the script will "exit 0" on success or any other

# value on error.

#

# In order to enable or disable this script just change the execution

# bits.

#

# By default this script does nothing.

start ttymxc0

exit 0

重新启动后,即可在串口得到控制台信息。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值