现在的位置: 首页 > 综合 > 正文

比特烘烤 Moblin

2013年04月17日 ⁄ 综合 ⁄ 共 2629字 ⁄ 字号 评论关闭

众所周知,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

   
svn co
http://svn.o-hand.com/repos/poky/truck poky

 

进行烘烤之前,最好先看一下poky-handbook.pdf
(在poky/handbook
目录下make

可以得到
)。

source poky-init-build-env

   
bitbake
moblin-image-netbook



moblin
的其他映象参见poky/meta-moblin/packages/images



以为会顺利地编译出内核&根文件系统
,没想到错误是接踵而至,甚至还没有解析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
-hda moblin-image-netbook-netbook-20081021004550.rootfs.ext3 –append
“root=/dev/sda rw”

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

   

DESCRIPTION
= "X.Org X server -- Cirrus display driver"

   
DEPENDS +=
"virtual/libx11 libxvmc drm dri2proto glproto /

   
   
   
virtual/libgl
xineramaproto libpciaccess"

   
PROVIDES =
"xf86-video-cirrus"

   
PR = "r1"

   
PV = "1.2.1+git${SRCREV}"

   
SRC_URI =
"git://anongit.freedesktop.org/git/xorg/driver/xf86-video-cirrus;protocol=git"

   
S =
"${WORKDIR}/git"

   
COMPATIBLE_HOST =
'(i.86.*-linux)'

   
EXTRA_OECONF = "--enable-dri
–disable-static"

然后bitbake

xf86-video-cirrus_git

拷贝${WORKDIR}/image/usr到挂载的文件系统
,再次运行qemu
将看到sato
风格。

1png
    想要扩展功能,只需提供构建菜单就可以了。

2png

抱歉!评论已关闭.