比特烘烤 Moblin

众所周知,Moblin Image Creatormoblin.org 的项目之一, 构建映象的方式 比命令行容易 的多 ,此外, 还可以 通过apt-getyum 极其简单地扩展所 需的包,然而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 ,错误依旧,但得到了一点信息 仅支持Inteli810 ,那cirrus 是哪里来的呢? 没错,qemu ,而且它 支持的显卡仅为cirrusvesa 既然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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值