安装openmoko from scratch
时间:2009-04-08 来源:soararing
LANGUAGE = (unset),
LC_ALL = (unset),
LANG = "en_US.UTF-8" 我export LC_ALL=POSIX解决问题。 ==== 2、确立好一个工作目录,作为编译openmoko的顶层目录/hpc/moko/,选择一个开发分支,用来建立openmoko,这里选择org.openembedded.dev ,因为openmoko是建立在openembedded之上的,而openembedded有多个开发分支,http://oe.linuxtogo.org/wiki/DevelopmentBranches这里是其他的开发分支。 3.建立目录 mkdir -p /hpc/moko/build/conf cd /hpc/moko/ 4.获取bitbake,因为下一步需要使用OE,而OE需要bitbake来建立,官方建议不要直接安装bitbake到系统目录,下载完bitbake后,将其目录添加进环境变量就可以使用他了(文章后面会讲到)。有好几种获得bitbake的方法: a、使用为特定linux版本准备的包http://oe.linuxtogo.org/wiki/OEandYourDistro b、下载bitbake的源码包,自己编译http://developer.berlios.de/projects/bitbake/ c、使用subversion下载源代码树编译,cd /hpc/moko svn co svn://svn.berlios.de/bitbake/branches/bitbake-1.8/ bitbake bitbake经常被修订更新,如果目前的bitbake是以前下载的,最好到http://svn.berlios.de/viewcvs/bitbake/branches查看你的bitbake版本是否是最新的。在你的bitbake目录下svn info,可以到目前你的bitbake的版本号。如果已经有了一个新的版本,那么你可以删掉当前的版本,然后svn co svn://svn.berlios.de/bitbake/branches/bitbake版本号/ bitbake的方法重新下载一份,如果不是新的版本,而是相同版本的更新,那么在bitbake目录下可以用svn update命令更新到最新。 如果就想安装到系统目录的话,./setup.py -v install --prefix=/usr/local 或者不加--prefix=/usr/local的话,就安装到/usr/(包括/usr/bin和/usr/lib/python*.*/)目录下去了
5.下载并升级OE 这是一份openembedded的数据库,他包含了所有openembedded的元数据:包括构建分类,配置文件,和软件包。OpenEmbedded数据库是一个monotone数据库,monotone是目前openembedded的源代码管理工具SCM,http://www.venge.net/monotone/这是他的主页。 下载一份和第四步中bitbake相同版本号的OE,进入到/hpc/moko/目录, wget http://www.openembedded.org/snapshots/OE.mtn.版本号.bz2 解压bunzip2 -d OE.mtn.bz2 (确保OE版本是0.32及以上,否则可能出现一些问题) mtn --db=/hpc/moko/OE.mtn pull monotone.openembedded.org org.openembedded.dev chechout本地的openembedded源代码树 #cd /hpc/moko/ #mtn --db=/hpc/moko/OE.mtn checkout --branch=org.openembedded.dev 6、建立本地配置文件
cd /hpc/moko
cp org.openembedded.dev/conf/local.conf.sample build/conf/local.conf
编辑build/conf/local.conf,因为之前我们使用的是.dev分支,所以至少得添加如下内容
BBFILES = "/hpc/moko/org.openembedded.dev/packages/*/*.bb"
DISTRO = "openmoko"
MACHINE = "om-gta01"
(有时候会提示要TARGET_ARCH = "",我在neo上uname -m的结果是armv4tl,这里可以填这个,也可以填"arm")
因为我们是以local.conf.sample为基础修改,所以还要删掉最后一行。
DISTRO和MACHINE究竟应该设置为哪些值呢,在org.openembedded.dev/conf目录下有DISTRO和MACHINE目录,进去一看便知道了。
7、设置环境变量,可以把一下的内容添加到/etc/profile,也可以是~/.bashrc(推荐用这个)
====如果你安装我之前说的,没有实际的安装bitbake,那么使用以下语句
#export PATH=/hpc/moko/bitbake/bin:$PATH
#export BBPATH=/hpc/moko/build:/hpc/moko/org.openembedded.dev
====如果你已经使用setup.py install安装的bitbake,那么,export BBPATH=/hpc/moko/build/:/hpc/moko/org.openembedded.dev
8,开始编译
编译单个软件包: #bitbake nano (编译nano这个编辑器软件)
编译一个软件套件:#bitbake task-base
编译一组软件包,并把他们部署进rootfs镜像
------a、编译gpe镜像:bitbake gpe-image
------b、编译opie镜像: bitbake opie-image
(分别编译每个镜像大概需要4g空间)
在/hpc/moko/org.openembedded.dev/packages/meta/目录可以找到meta/task和目标镜像。
编译所有的软件包: bitbake world (大概需要35g的编译空间)
绕过冗长的语法,编译单个软件包: #bitbake -b /hpc/moko/org.openembedded.dev/packages/blah/blah.bb
http://oe.linuxtogo.org/wiki/UsefulTargets这里是bitbake后面可以跟的一些参数,可以自定义用bitbake编译什么。
其参数的含义如下:
helloworld
编译一个静态可执行文件,此文件的作用是无限的打印出hello world
world
编译所有的东西,这会消耗掉大量的时间,带宽,磁盘空间 ,甚至损坏交叉编译工具链
task-base
编译内核和一些必须的核心包,你甚至还需要自己安装ssh,因为他很可能没有安装
helloworld-image
编译一个镜像,用作rootfs,并产生一个无限打印出hello world的循环程序,这可以用来测试linux是否已经被引导进入用户空间
bootstrap-image
编译一个包含task-base包的镜像
opie-image
编译一个基于opie的镜像
opie-kdepim-image
编译一个基于opie并且包含kde-based pim所有特性的镜像
meta-opie
编译所有与opie有关的包,和一些opie需要使用的包
pivotboot-image
Build image that is necessary to flash a Sharp SL C3000, Zaurus. It pivots after booting from the NAND and finalizes the install to the HD during the first boot.
task-dvb
dvb程序的所有元数据包(DVB = Digital Video Broadcasting).
task-python-everything
关于python的所有东西
twin-image
包含task-base和一对编辑器nano和vim,以及一个邮件阅读器mutt
uml-image
编译用户模式linux下的root镜像,包括task-base,和opie的一部分。
gpe-image
基于gpe的内核和rootfs
meta-gpe
与gpe-image一起发行的基本软件包
package-index
Target to update the "feed" files (Package*) to reflect the current set of .ipk's that exist in the deploy directory. Commonly used after building some packages individually to update the feed and allow them to be installed via a package manager or thie ipkg command line tools.
virtual/kernel
编译适合你设备的内核
============================ 这里有一片很不错的相关文章http://203.208.33.101/search?q=cache:AS03vdzNjUgJ:www.wretch.cc/blog/bbyykk/9258269+bitbake+openembedded+local.conf+MACHINE&hl=zh-CN&ct=clnk&cd=3&gl=cn&st_usg=ALhdy2-fIj_X8A5OAP6BWaG1wrq0Z3P5BQ