Author Archive

Maemo 5模拟器安装记录

原创文章,转载请注明出处,谢谢。http://ganquan.org
本文链接http://ganquan.org/blog/2009/12/maemo-dev/

看着诺基亚N900哈喇子流了一键盘,继续发挥穷鬼爱折腾的优良作风,用模拟器体验一下Maemo 5。

一、Maemo是什么?Maemo的特点。

Maemo是诺基亚推出的基于Linux的下一代智能手机操作系统。Maemo并不是刚出炉的新东西,几年前诺基亚就一直在搞了,现在的最新版系统是Maemo 5,诺基亚前段时间刚发布的N900使用的就是Maemo 5系统。根据最新消息,诺基亚将会逐步让塞班淡出智能机,将来的N系列应该都是采用Maemo系统。在未来的主流智能机市场上,Maemo,Android和iPhone到底谁能再现塞班当年的风光?

Maemo有什么特点呢?如果用一句话来描述Maemo,可以说Maemo就是把桌面版的Debian移植到了arm平台。

先看看Maemo的结构是什么样子的:

maemoarchitecture

如你所见,Maemo把开源社区的精华都吸收了:从底至顶来看,Linux内核,GNU的各种库,Debian的包管理系统(最方便,最成熟,最可靠的包管理系统),D-BUS,SQLite,GNOME都融入到了Maemo中。从这个系统构架来看,Maemo的未来应该是一个如同Debian一样强大的系统。我在以前的日志里面说Android就是硬件通吃的Linux先生与无视平台的Java小姐生出来的怪物,这个妖怪异常强大。很容易就会想到Maemo是否能超越Android,其实我感觉Maemo和Android不是超越的关系,因为各自的定位不同。就我目前的了解和理解来看,Android还是比较传统的手机操作系统(虽然它被移植到了各种设备,但这要归功于Linux的优秀和Android的构架出色),至少它是以手机操作系统的身份走向大众的,而Maemo则定位于带通讯功能的MID系统,实现桌面PC到口袋终端的过渡。

Maemo几乎是桌面系统的构架,使得现有的桌面软件移植到Maemo是相当容易的,事实上现在已经有不少Linux桌面软件都移植到了Maemo。另外,Maemo的应用开发采用是C/C++语言,可以直接用gtk开发,这样的优势可以肯定将来这个系统的应用数量是不用发愁的。

二、安装Maemo的开发环境

Android有模拟器给我这样的没有真机的穷鬼过一把干瘾,至少能真实看到这个系统是啥样(这就是传说中的眼淫?)。Maemo也不例外,但是安装过程比Android要麻烦一些。

Maemo基本上就是一个Debian,Nokia官方也只提供了Debian的开发环境(长见识了,原来Nokia也用Debian)。

1.安装xserver-xephyr

xserver-xephyr是一个X server,她能够让你在一个运行中X server里面再运行一个X server,用来模拟设备的DISPLAY。

ganquan@debian:~$ sudo aptitude install xserver-xephyr

2.下载SDK的安装脚本
需要下载两个安装脚本,分别用来安装scrachbox和SDK,scratchbox是开发需要用到的交叉编译工具。
ganquan@debian:~$ wget http://repository.maemo.org/unstable/5.0beta2/maemo-scratchbox-install_5.0beta2.sh

http://repository.maemo.org/unstable/5.0beta2/maemo-sdk-install_5.0beta2.sh

2.1安装scrachbox
ganquan@debian:~$ chmod a+x ./maemo-scratchbox-install_5.0beta2.sh
ganquan@debian:~$ sudo ./maemo-scratchbox-install_5.0beta2.sh -u ganquan
注意,scrachbox在安装过程中会创建一个sbox组,上面的-u参数的后接的用户名就是把ganquan这个用户加入到这个组中。
另外,这个安装脚本在安装之前会自动检查一些环境需求,如果出错就根据相应的提示来解决,都是小问题,很容易解决。
我在安装过程中,遇到了如下问题:
Host kernel VDSO support… no
E: Host kernel VDSO support is incompatible with scratchbox.
E: You can disable VDSO support for this session with
E: ‘echo 0 > /proc/sys/vm/vdso_enabled’ as root
E: For a permanent solution you may add ‘vm.vdso_enabled = 0′
E: to /etc/sysctl.conf and run ‘sysctl -p’ as root
根据提示,在/etc/sysctl.conf中写入vm.vdso_enable = 0,然后用root权限执行sysctl -p即可,再次运行安装脚本,顺利安装完成。

安装需要去源里面下载东西,猜猜有多大,给你看看喽:
Need to get 439MB of archives.
After this operation, 1361MB of additional disk space will be used.

网速慢的话就去喝杯咖啡再来看看。

scratch在debian发行版是默认安装在/目录下的,如果你不想装在这里,就给脚本加上-s path参数,path就是你想安装的地方。

2.2装好了,把当前的会话切到新的组里面去,执行下面的命令即可
ganquan@debian:~$ newgrp sbox
3.接下来装SDK
ganquan@debian:~$ sh maemo-sdk-install_5.0beta2.sh
装好SDK之后就可以登到scratchbox去看看了
ganquan@debian:~$ /scratchbox/login
登录进去之后,你看到的PS1应该长这个模样:
ganquan@debian:~$ /scratchbox/login
Welcome to Scratchbox, the cross-compilation toolkit!

Use ‘sb-menu’ to change your compilation target.
See /scratchbox/doc/ for documentation.
[sbox-FREMANTLE_X86: ~] >

然后去这个链接获取诺基亚的源地址,把你得到的源地址加入到/etc/apt/sources.list,注意,不是加入你的Debian的源列表中,而是加入到从maemo的源列表。也就是上面login之后,vi /etc/apt/sources.list,然后加入你得到的地址。

加入源之后在maemo中执行更新源,安装nokia相关的一些工具、软件包:

[sbox-FREMANTLE_X86: ~] > apt-get update
[sbox-FREMANTLE_X86: ~] > fakeroot apt-get install nokia-binaries

这里又要下载很多东西。。。

4.终于装好了,启动模拟器,一睹Maemo芳容。
启动之前确定上面提到的Xephyr,SDK,还有Nokia proprietary binary packages都装好了。
4.1先开一个模拟器窗口
ganquan@debian:~$ Xephyr :2 -host-cursor -screen 800x480x16 -dpi 96 -ac -kb &
得到这样的一个窗口:

2009-12-07-164655_802x501_scrot

4.2接下来登入Maemo


ganquan@debian:~$ /scratchbox/login

[sbox-FREMANTLE_X86: ~] >

4.3在Maemo中选择target为X86,设置display
[sbox-FREMANTLE_X86: ~] > sb-conf se FREMANTLE_X86
[sbox-FREMANTLE_X86: ~] > export DISPLAY=:2
4.4最后,启动UI就能看到Maemo的美貌了:

[sbox-FREMANTLE_X86: ~] > af-sb-init.sh start

下面贴一些截图

P1 默认桌面,有两个bookmark,一个是twitter,一个是facebook2009-12-07-170325_802x501_scrot

P2 Android默认有3个桌面,Maemo默认是4个桌面,可以像Android那样拖着切换

在Maemo中失去焦点的部分自动模糊,这个效果不错

2009-12-07-170604_802x501_scrot

P3 Maemo中第三个view默认的两个bookmark,其他view就是干净的壁纸

2009-12-07-170438_802x501_scrot

P4 添加两个bookmark看看

2009-12-07-170947_802x501_scrot

贴图到此结束。

三、体验报告

1.视觉效果来说,非常漂亮,比Android的漂亮多了。

2.模拟器速度很快,占用资源也不算多。Android模拟器慢得要死,特能吃资源,似乎跟Java沾边的都很慢很恶心。

3.可用性超级差,为什么我只有bookmark的截图,没有打开bookmark的截图?因为所有的bookmark都打不开。

不仅bookmark打不开,Maemo自带的Setting工具里面有部分都不能用。这样的模拟器估计alpha版本都算不上。。。

跟Android模拟器比,这点差距实在太大了。

4.我本打算下载别人写好的app,安装到Maemo体验,结果安装不了。我去#Maemo问了一下,有个哥们告诉我说Maemo X86上的模拟器现在还在很渣,不能装写好的app,不能打开app是很正常的,只能用于测试自己写的app。

5.综合感觉,诺基亚加油啊!

继续关注诺基亚,关注Maemo。

后面有时间会继续写跟Maemo相关的东西,谁叫他跟Debian有关呢?

博客搬家

出国喽。

感谢夏腾同学及时提醒,今天顺便入手ganquan.org,从此我的主域名将是ganquan.org。原来的pganquan.org和imganquan.org都会逐步退出使用。

这次搬迁得到夏腾同学的大力帮助,在此表示感谢。

《2012》好看

今天一大早就奔到城里电影院去了。

挺好看一片子。

软广告:索尼,宾利,微软。

《2012》告诉我们的三点:

美元地位肯定要没落,新的世界货币将会是欧元。

戴妃并非简单死于车祸。

西藏是中国不可分割的一部分。

其实真正的中国元素只有两点:

5ouG6L+B44CC56m/6L+35b2p55So5ZaH5Y+t5ZaK6K+d55qE5Lq65piv5Zyo5omn6KGM5ouG6L+B
5Lu75Yqh77yM5bGF54S25pyJ5Lq66IO955CG6Kej5Li66L2s56e7576k5LyX77yM5aSq5rKh5pyJ
5pWP5oSf5oCn5LqG44CC5LiN5ouG6L+B5oCO5LmI5bu65pa56Iif77yf4oCc6YeN5bu65a625Zut
4oCd5LiN6KaB5bm856ia5Zyw6K6k5Li65piv6Ieq54S254G+6Zq+44CCCgrkuK3lm73liLbpgKDj
gILlj6/mgJznmoTmsJHlt6XpgKDkuobmlrnoiJ/ljbTmsqHmnInkuIroiLnnmoTmnLrkvJrvvIzo
v5nmoLfnmoTpu5HplIXlvZPnhLblj6rog73orqnliIbphY3lnYfljIDnmoTnpL7kvJrkuLvkuYnl
m73lrrbmnaXog4zvvIzmiYDku6XmjaLkuKror7Tms5XmnaXooajovr7vvJrpgInmi6nkuK3lm73m
sqHmnInplJnnmoTvvIzov5nmoLfnmoTku7vliqHlj6rmnInkuK3lm73miY3og73lrozmiJDjgIIK

方舟的设计让我相当佩服。

Debian 6.0推迟啦

Debian 6.0原计划在2009年12月代码冻结,2010年春季发布。现在代码冻结推迟到2010年3月,发布时间将会是2010年的夏季,但是肯定在2010年八月的debconf之前。点击这里,还有这里查看新闻出处。

这样一来,Ubuntu如意算盘落空了,Ubuntu 10.04 LTS想充分的吸食Debian 6.0的精华,内核版本想和Debian 6.0实现同步。这下没机会啦。。。

我觉得挺好笑的,开发Ubuntu还有意义没,直接把Debian的Logo换成Ubuntu的就行了,最烦同质化。我以前就分析过Ubuntu的用户忠诚度相当的差,其实这个现象和天朝的山寨是相当的相似。

我还是很低俗很狭隘地表达一下我的想法:照某人现在的做法,如果真的想投资开源,直接投资Debian算了,何必山寨出那么一个巨大的噱头啦,更不必给Debian社区写又臭又长的信。

今天邮件列表里面讨论了一件事情:

在以后的内核中,PATA(IDE)驱动将会逐步过渡到基于libata的驱动,基于libata的驱动会把ATA/ATAPI设备描述为SCSI设备,这样的话硬盘分区就会由原来的/dev/hdX变成/dev/sdX,那么一些配置文件也会产生变化,例如/etc/fstab。

有人提议为了方便升级新内核,方便自动修改配置文件,让内核依赖python包好啦。提议者说python已经成为标准配置了,基本上所有用户都安装了,所以用户不会感到有什么变化的。同时他也意识到了这样会使得安装内核的空间增大,这样会招来嵌入式平台的一致反对,所以他提出让内核依赖python-minimal包。

立马有个家伙说如果那些搞嵌入式的反对,那可以用perl来重写,他可以出力。(我感觉这家伙就像是楼上的马甲。)

结果却招来楼下一致的反对。

有个分析比较深刻的说,修改配置文件这样的事情应该算是“维护系统”操作,而不是内核的直接依赖,所以没必要让内核依赖python,并且内核也不应该跟这些“维护性质”的事情搅和到一起去。同时这哥还指出即使是python-minimal,下载也要用掉1.2M,解压后有4M,这在嵌入式来看是不可以的,而且也不可能在嵌入式平台上内核依赖python或者perl。

后面有人直接指出python-minimal是从ubuntu那里来的东西。啥都不要依赖python-minimal,除了python自己。反正不管怎么说都是不应该让内核依赖python或者是perl。
我觉得其实对于普通用户来看,python确实已经是标配了,内核增加一个依赖用户不会感觉什么差别,当然嵌入式平台另当别论,但是关键的是这样破坏了各个模块之间的独立性,增加了耦合度,“高耦合”的系统肯定不利于扩展和维护。我是不赞同让内核依赖python的,如果需要修改,可以通知用户让用户来决定,当然不是所有的用户都知道接下来自己的决定意味着什么,这样也就增添了系统的复杂性,降低用户体验了。

真是一个麻烦的问题。

有人说这个问题将会在开发大会上讨论决定是否自动修改配置文件,期待最终结论。

Android 2.0 图标变得可爱了

一直都是用1.5版本的模拟器,今天用了一下2.0版本的,感觉非常不错。2.0版本的图标设计非常优秀,放弃了花哨的东西,回归简洁。我感觉Android 2.0版本的图标跟Adobe的图标风格很相似,用最简单的图形和最少的文字告诉用户这个程序是用来干啥的,方便用户快速找到自己要用的程序。

虽然2.0版本UI好看很多,但是由于目前很多设备都是1.5版的ROM,加之2.0版本刚放出来没多久,所以开发主要还是在1.5版的SDK上进行,完了可以在2.0的模拟器上测试兼容性。

P1 Android 2.0

模拟器图标变得非常可爱,屏幕无边框,极大地提升了窗口空间利用率

2009-11-27-214003_793x555_scrot

P2 Android 1.5

丑陋的1.5版本默认模拟器,窗口空间浪费太大

2009-11-27-213940_902x751_scrot

EOF

用id3删除mp3的id3信息

aptitude install id3
id3 -l * #查看id3信息
id3 -d * #删除

EOF

说话难

突然想起一个笑话:Ma de in China

2009-11-20-111032_981x654_scrot

EOF

程序员八荣八耻

今天无意见到,风趣幽默又富含经验,虽然是讲Python的,但是所有编程语言都是相通的,好好学习学习。

程序员八荣八耻

以动手实践为荣 , 以只看不练为耻;

以打印日志为荣 , 以单步跟踪为耻;

以空格缩进为荣 , 以制表缩进为耻;

以单元测试为荣 , 以人工测试为耻;

以模块复用为荣 , 以复制粘贴为耻;

以多态应用为荣 , 以分支判断为耻;

以Pythonic为荣 , 以冗余拖沓为耻;

以总结分享为荣 , 以跪求其解为耻;

ftp备份神器

正打算动手写脚本,突然闪现一道亮光,这下不写了。

mirror ./ ~/BLOG_BAK

-n  就是newer

-R 就是reverse ,第一个写local directory,第二个写remote directory

反正文件不大,没必要压缩,这样将来如果-R了还比较方便。Hoho~

EOF