Beagleboard上运行ARM/MeeGo的整理
[2] Beagleboard上运行ARM/MeeGo的整理
[3] Beagleboard上运行ARM/MeeGo的整理
[4] Beagleboard上运行ARM/MeeGo的整理
简介
测试版本
创建镜像的过程已经在Ubuntu 10.04测试过,其他Linux版本可能会有些操作上的不同.有些人在Ubuntu 9.04和Ubuntu 9.10测试但都失败了,所以如果你想最大可能的成功,奉劝大家还是使用Ubuntu 10.04,当然如果你已经在其他Ubuntu版本或linux发行版本上成功完成了这些工作,请将你觉得可能帮助其他人的信息添加到本页中。
- Debian Lenny(你将需要通过Sid安装和编译一些软件包.)
这个工作正在进行中.然而,如果你觉得这个介绍不完整或者缺少一些重要的内容,那么你可以自由的编辑这个页面或者在irc.freenode.net网站的#meego-arm交流组里寻求一些帮助.
已完成与将要做的内容介绍
请记住一点MeeGo是一项正在进行中的工作.一些已经完成的事情有可能被重新推翻,也有可能就算你严格按照这个介绍来执行每步操作也无法完成安装.每件事情都在进行中,TI演示可能是比较稳定的了,但是MeeGo UI自身却仍在不时地被推倒重建.
进行中:
- 系统引导进入命令提示界面
- X服务启动
- 在xterm/twm中使用鼠标,键盘和触屏工作
- SGX/GLES 加载
- TI 3D演示应用运行
- QT演示应用运行
- MeeGo手持设备UX工作在带触屏的设备上
- MeeGo车载UX工作在带鼠标或者触屏的设备上
- GUI稳定运行
- 音频播放
- 已知情况: 只能在Ubuntu 10.04上工作
将要做的:
- 不带触屏的情况下,在MeeGo HX上使鼠标的光标可见.
- 例如通过减少内存使用等方式提高整体的使用性能
- 确认是否可在其他发行版本上工作
支持的Beagleboard版本
RevA和RevB板子只有128MB RAM,这不足以运行手持设备UX,算上swap能够引导UX,但也只是仅仅能用.车载系统UX大概可以运行的好一些,因为看起来它需要的内存更少一些测试的板子的版本: B7 在这个阶段RevC板子是最好的选择.它的硬件能完全被linux内核支持并且255M RAM能够流畅的运行UX.测试板子版本: C4 XM RevA引导进入手持设备UX,运行速度和反应都很快.目前的内核不能完全支持这个板子(CPU只能运行在大约500Mhz,音频设备不能正常工作等等).测试板子版本: XM-A2
预备知识
这个文档假设你之前已经使用过beagleboard这个板子并且知道如何去格式化内存卡来引导系统之类的.
如果你是使用Beagleboard的新手,你想学习一些基础知识,请查看一下资源:
- Step by Step SD card formatting from scratch.
- eLinux.org BeagleBoard beginners guide
- eLinux BeagleBoard main page
- BeagleBoard.org home page
Beagleboard安装文件一般由以下三部分组成:
- 一个rootfs镜像或者目录树
- 一个内核镜像(uImage)
- 一系列内核模块
rootfs和内核模块放在内存卡的第二个分区中,同时在MeeGo中它将是新的ext3格式的.内核放在第一个分区中,这个分区为FAT格式,并且在分区中将包含MLO和u-boot.bin.请使用至少2GB的内存卡来进行以下的实验.引导分区大概只要几M(10MB就已经足够).剩下的部分请格式化为ext3格式.如果你更喜欢通过nand引导xloader和u-boot的话,你可能还需要更新他们.一个很便捷的进行这个操作的方法请参见这里.
准备SGX/GLES库
beagleboard使用SGX驱动来进行3D图形加速.脚本文件:Create sgx package.sh (下载后使用小写重命名)能被用来卸载和整合这些驱动(原始版本下载链接这里).
自从SGX驱动被TI部分闭源之后,你就不得不注册和下载Graphics_SDK_setuplinux_4_00_00_01.bin这个文件,具体下载页面TI's GFX SDK download page.
将两个文件放到同一个目录下,然后运行这个脚本:
./create_sgx_package.sh
这个脚本将提取出文件,你只要通过它下载和编译出合适的包.其中一个叫GFX_4_00_00_01_libs.tar.gz的文件,在你编译rootfs的时候需要用到它.
另外一个通过脚本生成的文件叫做GFX_Linux_SDK.tar.gz.这个文件中包含各种各样的示例代码和3D演示程序,你可以在这之后看一看.
编译rootfs
rootfs是通过MeeGo ARM软件源中的可用二进制包整合而成的.用来整合rootfs的工具叫做(MeeGo image creator). 根据Image_Creation#From_Development_Git_Tree的介绍使用git安装最新版本,旧版本有可能不能使用.
当使用ubuntu 10.04时,你需要使用qemu-kvm-extras-static包安装qemu.如果你已经安装了一个scratchbox程序,它会和qemu-kvm-extras-static产生冲突.在安装完那个包之后,scratchbox arm将再也无法使用.但是只要你移除这个包同时重启scratchbox的服务,scratchbox就会又恢复正常的.
kickstart文件我们将使用的是经过微调的n900版本.n900版本下载地址 这里.
下载文件Handset-armv7l-beagle.ks生成手持设备UX或者下载文件Ivi-armv7l-beagle.ks 生成车载系统UX.不幸的是这个wiki会将一个文件名的首字母转换成大写.所以你不得不将文件 Handset-armv7l-beagle.ks(或者Ivi-armv7l-beagle.ks)重命名为 handset-armv7l-beagle.ks(或者ivi-armv7l-beagle.ks).再次确认下之前生成的GFX_4_00_00_01_libs.tar.gz是否在当前的目录下,kickstart文件将会用它来为镜像添加3D加速的支持.
然后输入以下命令(如果你用的是车载系统的kickstart,请将手持设备的内容替换为车载系统的)
sudo mic-image-creator --run-mode=0 --cache=mycachedir --format=loop --arch=armv7l --release=daily --compress-disk-image=none --config=handset-armv7l-beagle.ks
以上命令是用来在你的当前目录下编译生成rootfs镜像文件.这将会花费你很长的时间同时还会下载几百M的东西到你的硬盘上.
然后,整个文件系统将被做成如下的一个系统镜像
./daily/handset/images/meego-handset-armv7l-beagle/meego-handset-armv7l-beagle-daily.img
生成的镜像可以经由回送地址(loopback)被加载,然后整个内容会被拷贝到一张SD卡上.
mkdir ./image
sudo mount -o loop ./daily/handset/images/meego-handset-armv7l-beagle/meego-handset-armv7l-beagle-daily.img ./image
sudo rsync -aHx --progress --delete ./image/*/media/<your cards root partition>
这个操作将会把所有东西拷贝到卡上,而不仅仅是内核和内核模块.