Maemo Linux手機平臺系列分析 scratchboxp安裝

這部分的內容:
  • 前言
  • 什麼是Scratchbox?
  • Scratchbox的組成
  • 安裝的前提條件
  • 自動安裝Scratchbox
  • 自動安裝Maemo SDK
 
前言
這部分主要介紹安裝開發環境以及其先決條件。Maemo SDK含有開發應用的庫和工具。這個SDK必須安裝在一個稱作Scratchbox的開發環境中,這樣才能使用。
我們首先開始安裝Scratchbox, 之後在Scratchbox裏面安裝Maemo SDK
安裝ScratchboxSDK有手動和自動之分,手動就是執行Nokia公司寫好的一個腳本,自動把原本需要手動一個個安裝的過程集合在一塊了,這種方式成功率比較高,畢竟是驗證過多次了。我們這裏也採用這種自動安裝的方式,確保環境搭建完成後,能用。
 
什麼是Scratchbox呢?
之前你可能已經看到了Internet Tablet上面跑的應用程序了,也許你會問:如何寫自己的程序。如果你之前使用過不同的GNU工具,也許你想知道這些工具和庫在開發過程中是如何工作的?
Scratchbox裏面, 有個非常特殊的東西:sandbox(沙盒), 就是這個東西提供一些必要的工具,同時把你的開發同外面真實的Linux 系統隔離開來。Scratchbox的另外一個用處是:交叉編譯,你可以在Scratchbox裏面編譯出能直接運行在target設備上的二進制文件。
Scratchbox這個名字來源於: “Linux from scratch” + “chroot jail”, 投入監獄(一個盒子內)。這可以告訴我們一些信息:當我們工作於Scratchbox裏面時,你所運行的程序是在一個改變了根目錄的環境下運行的。在Linux系統中,改變一個進程所能看見的路徑是可以做到的。Scratchbox正是利用了這一點,在啓動時,就把它的根目錄切換到其他目錄了,而不再指向它的真實根目錄了。這也是隔離技術所使用的部分伎倆。正因爲此,這個新的環境就叫做沙盒了,你在這個隔離的盒子裏玩些危險的東西也不會對真實的環境造成危害。隔離技術還使用了另外一個技術:轉移(通過使用LD_PRELOAD, LD_PRELOAD指定的共享庫優於其他共享庫加載
 
Scratchbox由哪些特性呢?
  • 它是sandbox的具體實現軟件包,sandbox的主要目的就是爲了隔離
  • 含有容易使用的交叉編譯工具
  • 支持多個開發者使用同一個開發環境
  • 支持爲每個開發人員單獨配置
  • 能運行原本運行在硬件上的目標程序,通過一個機制:sbrsh實現
  • 能過在host上運行非本地的二進制代碼,通過使用Qemu
在上面這些主要的features中,能利用來開發程序的包已經安裝在Scratchbox環境中了,Scratchbox同時也集成了Debian包管理,因此,你可以在Scratchbox裏面爲不同的目標發佈軟件包(類似於windows .msi文件,Fedora .rpm文件)。通過使用標準的Debian包管理工具,你可以通過internet直接安裝你需要的一些開發包。
Internet Tablet產品也使用了類似的包管理,這就意味着使用Scratchbox編譯的包可以直接安裝到實際的設備中。
Scratchbox 組件:
在開始安裝Scratchbox之前,我們先了解一些Scratchbox中使用的一些術語,並且從現在開始,我們把Scratchbox簡稱爲sbox.
  • core package:核心包,這個包中含有實現sbox的核心工具
  • libs package:庫文件包,這個包含有core包運行所需要的庫文件
  • devkit:開發工具包,含所有sbox所需要的附加工具,我們主要關心4devkits. 後面會再介紹。
  • toolchain:工具鏈,像編譯器,連接器等等。
  • target:目標,這裏指我們當前使用的工具鏈和配置。一個目標使用特定的工具鏈,並且具有一個文件系統。你可以有不同的目標,甚至於這些目標使用相同的工具鏈。這就很方便於測試不同的目標。注意:sbox目標並不能等同於實際的物理設備。
  • rootstrap: rootstrap是目標根文件系統,用於滿足基本的開發。Rootstraps通常特定開發目標所需要的基本文件,不過有時候它的作用僅僅是引導。對於Maemo來講,當然也有rootstrap, 我們把叫做“Maemo SDK”
安裝的前提條件:
在安裝之前,你可以先看看安裝指令,大致有個概念就行。
另外還有個需要檢查:binfmt, 這個可以支持在sbox中運行一些指令。
Step 1: 檢查binfmt, 如果沒有加載,手動加載
root@test-desktop:/home/workspace# lsmod | grep binfmt
root@test-desktop:/home/workspace#
root@test-desktop:/home/workspace# modprobe binfmt_misc
root@test-desktop:/home/workspace# lsmod | grep binfmt
binfmt_misc            12936 0
root@test-desktop:/home/workspace#
 
Step 2: 安裝一個X Server
第二步就是安裝一個X Server, 它可以俄當作一個X client連接到你的實際系統中,這是非常必要的,對於運行你的程序。
X Server目前有3個選擇:
  • Using Xephyr, a Kdrive based X server/client that can emulate 16-color depth for its clients even if it's acting as a client to an 24-bit depth real X server. It also implements modern X protocol extensions. This material will only cover Xephyr.
  • Using Xnest, which is an older version of the subject. Requires your real X server to be at the same depth that it is simulating to its clients.
  • Using Xvnc which is an X server that can be connected to using a VNC client. Using Xvnc is not covered here, but its use should be very close to using Xnest.
命令:
 
root@test-desktop:/home/workspace# apt-get install xserver-xephyr
Reading package lists... Done
Building dependency tree      
Reading state information... Done
The following NEW packages will be installed:
 xserver-xephyr
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 1587kB of archives.
After unpacking 3977kB of additional disk space will be used.
Get:1 http://security.ubuntu.com gutsy-security/main xserver-xephyr 2:1.3.0.0.dfsg-12ubuntu8.3 [1587kB]
Fetched 1587kB in 56s (27.9kB/s)                                              
Selecting previously deselected package xserver-xephyr.
(Reading database ... 88958 files and directories currently installed.)
Unpacking xserver-xephyr (from .../xserver-xephyr_2%3a1.3.0.0.dfsg-12ubuntu8.3_i386.deb) ...
Setting up xserver-xephyr (2:1.3.0.0.dfsg-12ubuntu8.3) ...
root@test-desktop:/home/workspace#
 
驗證一下:
 
root@test-desktop:/home/workspace# dpkg -l | grep xephyr
ii xserver-xephyr                             2:1.3.0.0.dfsg-12ubuntu8.3        Next Generation Nested X Server
root@test-desktop:/home/workspace#
 
 
Step3:自動安裝Scratchbox:
 
安裝Scratchbox一個比較好的方法是使用自動安裝腳本,首先從其網站下載腳本:http://tablets-dev.nokia.com/4.0/maemo-scratchbox-install_4.0.sh
 
root@test-desktop:/home/workspace/maemo_sdk# sh ./maemo-scratchbox-install_4.0.sh -u test
-u 選項是指定scratchbox安裝給誰用,我前面配置的用戶名是test
這個下載的時間比較長,耐心等待:
可能有幾個小時!太長了,
 
Step 4:自動安裝Maemo SDK
 
root@test-desktop:/home/workspace# sh maemo-sdk-install_4.0.sh
[ 選擇第3個安裝,比較全. ]
安裝完成後,就有兩個targets:
  • CHINOOK_X86: 適用於開發軟件和測試
  • CHINOOK_ARMEL: 適用於爲目標版編譯ARM image文件.
發佈了37 篇原創文章 · 獲贊 3 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章