Maemo Linux手机平台系列分析 scratchboxp安装

这部分的内容:
  • 前言
  • 什么是Scratchbox?
  • Scratchbox的组成
  • 安装的前提条件
  • 自动安装Scratchbox
  • 自动安装Maemo SDK
 
前言
这部分主要介绍安装开发环境以及其先决条件。 Maemo SDK 含有开发应用的库和工具。这个 SDK 必须安装在一个称作 Scratchbox 的开发环境中,这样才能使用。
我们首先开始安装 Scratchbox, 之后在 Scratchbox 里面安装 Maemo SDK
安装 Scratchbox SDK 有手动和自动之分,手动就是执行 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文件.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值