众所周知,Moblin Image Creator
是moblin.org
的项目之一,
其
构建映象的方式
要
比命令行容易
的多
,此外,
还可以
通过apt-get
或yum
极其简单地扩展所
需的包,然而MIC
并非唯一的开发工具。
上面
提到收购
OpenedHand
的
消息
不知
你
有何感触,那
可是大名鼎鼎的Matchbox,还有Poky linux等的开发者
。
当
我看到O
-hand网站出现“Intel acquires OpenedHand”时,我就不由自主地想到既然被intel收购了,
那
能不能用bitbake来构建Moblin的映象呢?猜测poky
会
添加meta-moblin,
想法
果然
得到证实
,有了bb文件,bitbake会为你做好一切。
只是
Sato的界面并不十分理想,
相比于MIC,
bitbake
的扩展也显得有点复杂,但使用bitbake构建moblin
也算是另辟蹊径吧。
对于bitbake,如果不知道OpenEmbedded,你可能会觉得比较陌生。
其实,我也是一知半解,依葫芦画瓢写写bb
文件而已。
大概知道 OpenEmbedded/bitbake的设计思想主要源于Gentoo的portage,其中,bitbake
是系统的核心,负责具体的构建工作,OpenEmbedded(或者Poky)提供构建的菜单,系统根据菜单到互联网上按单索料,然后下锅烹调,而你所要做的就是耐心等待美味大餐出炉。
心动了吧,
那就
试试bitbake
。
取得poky
的代码,git
貌似很流行,
但
我用它取得poky
代码会出错,还是用svn
。
git clone http://git.moblin.org/repos/tools/poky.git |
进行烘烤之前,最好先看一下poky-handbook.pdf
(在poky/handbook
目录下make
可以得到
)。
source poky-init-build-env |
本
以为会顺利地编译出内核&根文件系统
,没想到错误是接踵而至,甚至还没有解析bb
文件
,bitbake
就出了问题
:
“Using
dash as /bin/sh causes various subtle build problems, please use bash instead”
。
原来是sanity.bbclass
对/bin/sh
做了检测,只需将
原来
指向dash
的/bin/sh
改成指向bash
。
此外,还
需要注意代理
,参考
poky/build/conf目录中的site.conf.sample
进行设置
,但http和ftp的代理
有点特殊,
似乎已经不再从环境变量中取得,可以在site.conf文件中添加HTTP_PROXY=http://10.19.5.1:808实现。
碰到
源码无法下载
的情况,
一般是下载源的问题,在base.bbclass
中添加地址,或者在相应的bb
文件中直接修改SRC_URI
参数即可。
比如base.bbclass声明的kernel的ftp无法下载,可以添加http
的地址
:
${KERNELORG_MIRROR} http://www.kernel.org/pub
|
生成内核和根文件系统
以后
,还是老办法qemu
:
qemu -kernel bzImage-2.6.27-r4-netbook-20081021004550.bin |
X
无法启动,出现“(EE):Failed to load module
“
cirrus
”
”
的错误,本以为是xorg.conf
的问题,root
登录以后使用Xorg -configure
,错误依旧,但得到了一点信息
:
仅支持Intel
和i810
,那cirrus
是哪里来的呢?
没错,qemu
,而且它
支持的显卡仅为cirrus
和vesa
。
既然qemu不能适应moblin,那就让moblin适应qemu吧。MID
和PC一样都
是x86的,
那
本
机的动态连接库应该可用,挂载
moblin-image-netbook-netbook-20081021004550.rootfs.ext3到本地${rootfs},拷贝
/usr/lib/xorg/modules/drivers目录下cirrus相关的几个so文件到${rootfs}/usr/lib/xorg
/modules/drivers
目录
。再次使用qemu仿真,得到的结果依然是
“
(EE):Failed to load
module
“
cirrus
”
”,但提示变成
了
ABI版本不一致。简单的办法不成,那就用bitbake构建cirrus好了。在poky/meta/packages/xorg-driver目录下创建xf86-video-cirrus_git.bb
。
require xf86-video-common.inc |
然后bitbake
xf86-video-cirrus_git
,
拷贝${WORKDIR}/image/usr到挂载的文件系统
,再次运行qemu
将看到sato
风格。
想要扩展功能,只需提供构建菜单就可以了。