比特烘烤 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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章