[ARM]ARM平台处理器简介-ARMv7

[ARM]在PandaBoard OMAP4上安装ubuntu 12.10 for arm

Ervin posted @ 2012年10月28日 15:51 in ARM with tags ARM ubuntu , 5521 阅读

    从12.10开始,ubuntu for arm的镜像不再是预安装的版本,而是标准的liveCD,因此安装方法也与之前不同。下面是我安装时的简要过程。

 

    第一步,首先用dd将ubuntu 12.10 for arm的镜像dd到sd卡。我的目标平台是PandaBoard OMAP 4430开发板,下载的镜像是ubuntu-12.10-desktop-armhf+omap4.img。可能是刚发布没多久的缘故,ubuntu 12.10的镜像下载页面比较乱,下面两个页面提供了不同的镜像:

http://releases.ubuntu.com/12.10/

http://cdimage.ubuntu.com/releases/12.10/release/

    第二步,开始安装。这一步需要显示器,不能像以前那样通过串口搞定一切了(也许有什么方法可以不用串口而我不知道)。另外,这一步安装时可以直接把系统安装到外接的usb设备上,不像之前的版本需要用比较trick的方法才能把系统启动到usb的移动硬盘上。

    安装过程就是典型的liveCD的安装过程,需要注意的是,尽管liveCD位于sd卡,但仍然可以把系统安装到sd卡剩余的空间中。安装完成后,安装程序会修改sd卡中关于启动的部分,重启之后就可以进入系统了。需要注意的是,不管系统是安装到sd卡,还是外接的usb移动硬盘,都需要从sd卡启动;而且安装完成后的sd卡也不能再次用于安装了(启动部分被修改了)。

 

问题1:安装完成,重启后无法进入系统,接上显示器发现报错是找不到root文件系统。

我就遇到了这个问题,看上去像是安装程序的bug,设置了错误的启动参数。把sd卡拿下来插到电脑上,挂载第一分区(fat32格式的),修改其中的preenv.txt。这个文件中保存的是传递给内核的启动参数,将root=修改成root=/dev/sda1的形式(具体值视情况而定)。

 

问题2:使用交叉编译工具链编译出的可执行文件无法在该系统上运行,提示找不到文件或目录的错误。

这个问题和工具链中使用的glibc版本有关。通常ELF可执行文件指明的加载器路径应该是/lib/ld-linux.so.x,x的值可能有所不同,ARM下通常是3。目标系统和交叉工具链中加载器的路径应该是一致的,但从glibc 2.16开始,ARM hard-float ABI的加载器路径变成/lib/ld-linux-armhf.so.3,以区别softfp ABI使用的ld-linux.so.3(见http://sourceware.org/ml/libc-alpha/2012-06/msg00807.html)。如果使用的工具链中glibc版本早于2.16,那么编译出的可执行文件无法在glibc版本大于等于2.16的环境下运行。解决方法很简单,做一个软链接即可:

ln -s /lib/ld-linux-armhf.so.3 /lib/ld-linux.so.3

当然,除了这一点,还需要保证交叉工具链的浮点ABI是hard float的。不过浮点ABI是softfp的工具链编译出的可执行文件能否在ubuntu 12.10 for arm上执行就不清楚了。

 

问题3:无论是从ssh登陆,还是直接登陆tty,都有很大的延迟(尤其是ssh)。

通过ssh或tty登陆的时候会首先输出一些关于系统的信息,这些信息是造成登陆延迟的主要原因,而通常我们并不需要这些信息。解决方法:1.修改/etc/pam.d/sshd,注释掉以下两行:

session    optional     pam_motd.so  motd=/run/motd.dynamic noupdate
session    optional     pam_motd.so # [1]
2.执行apt-get remove landscape-client landscape-common,删除掉landscape包。注意前一个包可能没有安装,但删掉后面一个还是有效果的。

 


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter