Home | Syndication | Delicious | Douban | Twitter

Archive for the 'TechNotes' Category

Install Ubuntu 8.04 from Hard Disk

August 16th, 2008

刻光盘太浪费了,现在不是总在强调绿色嘛,好吧,让我们直接用 ISO 光盘镜像文件来安装 Ubuntu 吧。

我用的是一台 T61p,当前的系统是 Windows XP,硬盘分区状况为:
C(/dev/sda1),主分区,使用 NTFS 文件系统;
D(/dev/sda5),位于扩展分区上的第一个逻辑盘,使用 FAT32 文件系统。

Ubuntu 将使用位于扩展分区上的剩余空间,在安装过程中将被分成两个分区:
/dev/sda6 加载为根区,使用 ext3 文件系统;
/dev/sda7 加载为交换区。

下载

通过硬盘安装需要使用 Alternate CD 介质,我用的是 Hardy Heron 8.04.1 版本。

还需要下载两个文件以支持从硬盘安装:vmlinuz, initrd.gz.
注意,前面下载到的 ISO 文件也包含这两个文件,但 ISO 中的这两个文件不支持从硬盘上寻找安装介质,所以从 ISO 提取是没有用的。

最后,我们还需要一个帮助引导的工具,这里我使用的 grub4dos v0.4.3.

安装

把前面下载到的 ISO, vmlinuz, initrd.gz 都放到 C:\ 下。
把 grub4dos-0.4.3.zip 解开,将其中的 grldr 文件也复制到 C:\ 下,仅仅需要这一个文件来帮助引导。

接着在 C:\ 创建一个文本文件,文件名为 menu.lst,内容如下:

title grub4dos loader
root (hd0,0)
kernel /vmlinuz
initrd /initrd.gz

然后修改 boot.ini 文件,在文件尾加入以下行:

C:\grldr="grub4dos loader"

好了,重启机器,在启动菜单中选择 grub4dos loader 即可开始 Ubuntu 的安装向导。

安装过程很简单,按屏幕提示操作就行了。有以下几点需要注意:

  • 对于键盘布局的选择,别让向导执行自动检测,而是直接选择 USA 就对了。
  • 在安装过程中网络没有用,所以不需要去配置网络连接,直接略过就好了。当然,配置也可以啊。只是没什么必要而已。
  • 如果安装时选择中文作为系统默认语言,在安装过程中向导会问你是否需要下载语言包,千万别选 yes,因为速度巨慢!还是等 OS 安装完毕后,连接到速度快的软件源去下载语言包比较经济。
  • 向导提示安装 GRUB 时,推荐不要将 Linux GRUB 安装到默认位置 MBR 区,而是到它自己的 /dev/sda6 区。

配置双引导

完成以上基本安装后,启动机器进入 Windows 系统,编辑 menu.lst 文件,将其内容改为:

title grub4dos loader
root (hd0,5)
kernel /vmlinuz root=/dev/sda6
initrd /initrd.img

然后重启机器,在启动菜单中选择 grub4dos loader,这样就进入了刚刚安装的新 Ubuntu 系统了。

登录进入 Ubuntu 系统后,使用 dd 指令创建一个启动信息文件:

$ sudo dd if=/dev/sda6 of=ubuntu.bin bs=512 count=1

将这个 ubuntu.bin 文件复制到 C:\ 下。

再重启机器,进入 Windows 系统,将 boot.ini 文件的最后一行(前面加的)修改为:

C:\ubuntu.bin="Ubuntu Linux Hardy Heron"

好了,这样就完成了从硬盘上的 ISO 文件来安装 Ubuntu,并配置为与 Windows XP 共存、使用 NTLDR 进行双引导。

清理

记得删除 C:\ 上的 ISO, vmlinuz, initrd.gz, grldr, menu.lst 这五个文件,用不着了。

试试启动进入你的 Hardy Heron 吧,Hmm… 怎么这么难看?别着急,这只是一个基本系统,做一下配置就漂亮了。见下回书——
Post-installation Configuration of Ubuntu 8.04

Have fun!

Installing Notes 8.0.1 on Ubuntu 8.04

June 7th, 2008

版本 8 是 Notes 转向 Eclipse 架构后的第二个主发布,单从安装过程来说,确实有很大的进步。记得2006年时我曾经尝试在 Ubuntu 6.10 上安装当时发布不久的 Notes 7.0.1,问题之多以至于我专门写了一篇“攻略”发表在 developerWorks 上(本地)。

正式开始之前做两个小准备:

把 $LANG 环境变量暂时置为 en_US.UTF-8,否则安装向导上全是乱码。
另外,要暂时关闭“视觉特效”。操作位置在系统-首选项-外观。否则启动安装向导后出来的第一屏是空白的。

Step 1. 安装 libstdc++5

如果没有这个包,那么图形界面的安装向导无法启动,你会看到 Locking assertion failure 以及很多其他的错误消息,当然你可以用参数 -console 来启动字符界面的安装向导。不过我想说的是,Notes 的字符安装向导那是相当的差!

$ sudo apt-get install libstdc++5

Step 2. 启动安装向导

因为安装了 libstdc++5 包,所以图形界面的向导可以启动了。
安装需要用到特权用户权限,所以要 sudo 开头。

$ sudo ./setup.sh

然后就是照着屏幕提示,一步一步地来。

Step 3. 两个善后

安装完成后需要修改三个相关目录的拥有者,分别是:

$ sudo chown -R huangys.huangys /opt/ibm/lotus
$ sudo chown -R huangys.huangys /etc/lotus
$ sudo chown -R huangys.huangys /home/huangys/lotus

另一个问题与 Eclipse 有关。当尝试启动 Lotus Notes 时,会看到如下错误:

 

已经有人报告了这个BUG,创建 ~/.mozilla/eclipse 目录即可解决这个问题:

$ cd /home/huangys/.mozilla
$ mkdir eclipse

OK,准备好你的 ID 文件开始配置吧。

AT&T Global Network Client on Ubuntu 8.04

May 19th, 2008

一直以来,阻碍我使用 Ubuntu 的一大原因就是无法拨入公司的内部办公网络,因为公司给出的拨入客户端只有 Windows 版。前些日子突然想到,既然我们用的是 AT&T VPN 服务,那何不去 AT&T 找找看有没有提供对 Linux 的支持。于是有了以下发现。

其实 AT&T 官方提供了支持 Linux 的客户端,可惜的是,只支持 RHEL 和 SuSE。但没关系,万能的 google 找到了一条变通之法 :-)

首先,从 AT&T 下载其最新 Linux 客户端,我载的是 agnclient-1.0-2.0.1.3000.i386.rpm。当然,这个 rpm 包无法直接用,也不可以直接用 alien 转化成 deb 包之后来安装,因为还有很多的依赖关系和配置需要解决。

接着,解决问题的人 André F. Macêdo 来了,从他的 BLOG 下载一个超有用的脚本 ubuntu_rpm2deb.sh

好了,可以开始工作了!

安装 tcl
$ sudo apt-get install tcl8.5

给脚本执行权限
$ chmod +x ubuntu_rpm2deb.sh

安装依赖关系
$ ./ubuntu_rpm2deb.sh --deps

转化包格式
$ ./ubuntu_rpm2deb.sh agnclient-1.0-2.0.1.3000.i386.rpm
这将生成我们的目标文件 agnclient_1.0~2.0.1.3000-1.1_i386.deb

安装新得到的 deb 包
$ sudo dpkg -i agnclient_1.0~2.0.1.3000-1.1_i386.deb

就这么多,现在可以启动 AT&T Global Network Client 了,如下图:

AT&T Global Network Client 

点击绿色的 CONNECT 按钮,在跳出的对话框中输入 Account / User Name / Password 即可开始连接。

Enjoy! 

“正确”地安装 iTunes

May 12th, 2008

有没有搞错,安装 iTunes 如此简单的软件还需要指南?Hmm… 如果你一贯是缺省型,的确不需要;如果你非常讨厌有人采取“买一送N”的策略在你机器上额外装上 N 个你根本不需要的组件、插件、工具、etc,就很有必要了。尤其是在水果于3月份利用 Apple Software Update 强行推送 Safari 这一事件之后,我们更有理由要当心安装了。

下载 iTunes 安装包之后,不要直接就开始安装,因为安装向导不给你任何定制安装的机会。而是用解压缩工具(比如 7-Zip)打开这个文件,你会发现 iTunesSetup.exe 包括:

  • iTunes.msi
  • QuickTime.msi
  • AppleSoftwareUpdate.msi
  • AppleMobileDeviceSupport.msi
  • Bonjour.msi
  • iTunesSetupAdmin.exe

如果你跟我一样,只是要拿 iTunes 当 podcast client 和 music player,那么就只需要安装 QuickTime.msi、iTunes.msi。其他的都不需要,比如 Bojour 是水果用来实现资源共享的一种机制,用的人应该是不多;Apple Software Update 看起来蛮有用的,其实也普通了,通常小更新并不关键,而大的改进下载新版即可,尤其是水果强推 Safari 事件后,我们更应当心此“后门”。

P.S. 再加强一下,如果你不需要使用 QuickTime player,就连 QuickTime.msi 都不必安装,完全可以用轻量级的 QT Lite 来代替。

P.S.2. 安装时要保持 iTunesSetupAdmin.exe 与 iTunes.msi 在同一目录中,否则安装过程会报错退出。

Getting Started with S2AP in 1 Minute

May 3rd, 2008

我承认,这篇 post 有标题党嫌疑… -_-

不过如果你觉得 SpringSource 官方用户指南有点儿长、没时间但又想快速玩玩 S2AP,俺这篇“一分钟快速起步指南”就有点儿用了。

安装

解开下载的 S2AP 1.0.0 beta 包即可。
$ unzip springsource-ap-1.0.0.beta.zip

设定环境变量

$ export PLATFORM_HOME=/opt/springsource-ap-1.0.0.beta

个人觉得这个变量名不好,太 general 了,最好能改为类似 $S2AP_PLATFORM_HOME 或者 $SPRING_PLATFORM_HOME 这样的名字。

启动

常规启动:
$ bin/startup.sh

调试模式启动:
$ bin/startup.sh -debug
将会运行一个 debug agent,默认监听 8000 端口。可以在 -debug 参数后面跟一个数字参数来修改监听端口,比如:
$ bin/startup.sh -debug 8001

允许 JMX 访问模式启动:
$ bin/startup.sh -jmxremote
将允许本地 JMX 访问。如果需要远程 JMX 访问,在 -jmxremote 后跟一个端口参数即可,比如:
$ bin/startup.sh -jmxremote 9009

启动成功后,可以尝试访问其管理页面 http://localhost:8080/admin 缺省的用户名和密码是 admin/springsource

停止

$ bin/shutdown.sh

Now start exploring, have fun!

Spring + OSGi + Container = ?

May 2nd, 2008

今年年初,SpringSource 收购了 Covalent,然后 Rod Johnson 又公开说 (from Javalobby)

we're basically seeing the decline of the traditional Java EE server.

而技术社区近来总有关于 OSGi 和 container 等方面的话题,加以关联,貌似 SpringSource 想借 Spring Framework 成功之东风进入 container 领域、而且打算利用 OSGi 来构建。

于是,在四月结束的时候,标题等式中的问号有了答案:SpringSource Application Platform,可以简写为 S2AP。从名字上看,很容易联想到 Eclipse RCP,不同的是,RCP 专注 client 端,而 S2AP 专注 server 端。接受访问时,Rod Johnson 在解释为什么使用 platform 这个词、而不是 server 这个看起来更常规的词来命名时,说:

We didn't want to call it a server because it will be able to be extended and accept different deployment modules, so it will be broader in scope than a typical server.

看来蛮有野心和决心的。

SpringSource Application Platform 

刚刚发布是的是 1.0.0 beta,基于 GPL v3。

简单地试用了一下,S2AP 有三点让我印象深刻:

1,S2AP 支持三种应用部署方式:热部署(Hot Deploy)、控制台部署(Admin Console)、编程部署(Programmatic)。其中的热部署方式很好,直接将 WAR 包丢入 pickup 目录或者从 pickup 中删除就可以完成部署或移除应用。需要说明的是,S2AP 目前还不支持混合方式,即,部署和移除的方式要一致。

2,S2AP 不仅自身是构建在 OSGi 之上,而且它还允许开发者将自己开发的 OSGi bundle 部署到其中,这一点很难得,对于推动 OSGi 在 server 端应用很有好处。目前的主流应用服务器在向 OSGi 靠拢时还只是将自身构建于 OSGi 之上,尚不允许开发者部署自己的 OSGi bundle。

3,SpringSource 提供了一个在线的 bundle repository,这似乎是一个“技术含量”不那么高的举措,但是非常有意义。我在做 TPTP 开发时就发现,不同的 projects 经常对同一个第三方 library 进行封装,这完全没有必要嘛。目前 SpringSource Bundle Repository 包含的内容还少,以 Apache 旗下组件为主,相信会慢慢丰富起来的。

libstdc++-libc6.2-2.so.3 on Ubuntu 8.04

April 30th, 2008

一个小贴士,对于使用最新出来的 Hardy Heron (Ubuntu 8.04) 的人可能有点儿帮助。

因为要测试最新的 TPTP 4.5.0 Candidate Build,我需要用到 Agent Controller,其指南上载明需要 libstdc++-libc6.2-2.so.3,且该文件必须位于 /usr/lib 目录下。

libstdc++-libc6.2-2.so.3 属于 libstdc++2.10-glibc2.2 包,不幸的是,Hardy 的源中没有这个包,不过幸运的是,在前几个版本中都有这个包,这里我选择了 7.04 Feisty 的源:

deb http://archive.ubuntu.com/ubuntu/ feisty universe

然后:

$ sudo apt-get install libstdc++2.10-glibc2.2

安装完毕后,记得删除这个临时的 Feisty 源。 

Make WinXP Leopard-like

March 22nd, 2008

去年把 Windows XP 系统风格换成 Tiger,到今天为止,用了有一阵子了,感觉还不错,不过最近发现 Leopard 似乎更好看、更酷一点,所以就又换了一下。

deviantART 中可以搜到很多 Leopard 风格。国内还有一个 Nick Zone 苹果模拟专题站,也提供 Leopard 风格主题下载,不仅如此,Nick 还很 nice 地提供一个 all-in-one 安装包,包含了常用的几个模拟软件,比如 RK Launcher, Y'z Shadow, etc. 不过我还是喜欢逐一自己来配置,步骤不变,在前文中有具体描述。

下面说一下如何让 Firefox 看起来像 Leopard 下的 Safari.

第一步,安装 Foxdie (Aqua)

安装 Foxdie (Aqua) 过程很简单,但有以下两点要注意。

1,把下面这句话加到 userContent.css 中:

@import url("userChrome.css");

在 Windows XP 中,这两个 css 文件位于 C:\Documents and Settings\[username]\Application Data\Mozilla\Firefox\Profiles\xxxxxxxx.default\chrome 中,如果这两个文件不存在,就复制该目录下的 userContent-example.cssuserChrome-example.css 来新建就好了。

2,Foxdie 不支持 Tab Mix Plus, 如果你有安装该 extension, 需要换成 Tab Mix Lite CE.

第二步,选用 Leopard subskins

打开 Firefox Add-ons (附加软件)管理器,切换至“主题”标签,右击 Foxdie 条目,选中“关于 Foxdie”就可以打开 Foxdie subskins. 在 Toolbar Buttons 和 Extreme Ways 中均选中 Leopard, 在 The Others 中选中 Bigger Font, iTunes' Scrollbar. 然后重启 Firefox.

Hmm… 看起来与 Safari 很相像了,但似乎还差了点什么…

第三步,安装 Hide Menubar

没错,在 Mac 中通常是没有窗口顶部的 menubar 的,我们可以使用 Hide Menubar 来隐藏。

顺便说一句,如果想要把 Windows 资源管理器、IE 的主菜单条屏蔽掉,你需要使用一些外部工具,比如 Styler.

第四步,安装 Fission (可选)

Safari 的进度条(progress bar)和地址栏(address bar)是合在一起的,我们可以通过 Fission 来实现这个效果。

到此为止就大功告成了,下面是我的 Firefox 效果:

Firefox

顺便放一个我当前的 Windows XP 桌面整体截屏,效果还是不错滴~

ARM Introduction

March 12th, 2008

我打算写一个系列来介绍 ARM,包括概念、实现、开发、以及与现存的管理软件产品的协作使用,预计包括四到五篇文章。不知何时能写完,不管了,今天先开个头,简单绍介绍介先 :)

开始之前要说明的是,本文所介绍的 ARM 并非那个著名的、做 RISC microprocessors 的 ARM 公司,而是由 The Open Group 制定并维护的、用于监控和衡量软件性能的一套开发标准。以下是引自 ARM 官方网站上的定义:

The Application Response Measurement (ARM) standard describes a common method for integrating enterprise applications as manageable entities. The ARM standard allows users to extend their enterprise management tools directly to applications creating a comprehensive end-to-end management capability that includes measuring application availability, application performance, application usage, and end-to-end transaction response time.

当前 ARM 标准最新版本是发布于2007年6月18日的 4.1 version 1,不过因为目前商业或开源实现基本都还只支持到 4.0 version 2,所以本文后面谈论的 ARM 除非特殊标明,均指的是 4.0 version 2.

1. ARM 能解决什么问题

随着软件技术逐渐融入各行各业、工作生活中,除了功能方面的需求,人们也对系统的性能、可靠性等方面的要求也越来越高,会越发关心类似以下问题:

  • 这些 transaction 成功了吗?
  • 是什么原因导致某个 transaction 失败了?
  • 客户体验到的系统响应时间是多少?
  • 在整个交易过程中哪个部分耗时最长?
  • 系统瓶颈在哪里?
  • 如何能提高应用系统的性能?
  • … …

ARM 正是用来回答这些问题的。通过在应用系统中引入 ARM APIs,可以让这些应用程序变得可管理、可监控,再配合相应的管理端系统,就可以捕获、分析运行时数据,回答以上这些问题了。

2. ARM 是如何工作的

Application & ARM interaction
Figure 1. Application - ARM management system interaction

典型的例子是这样的。应用程序在 transaction 开始或结束时呼叫(调用)ARM,接着 agent 收集诸如状态、响应时间、transaction 之间的父子关系等各种数据,并与管理端系统通信。管理端系统会分析得到的数据,并根据用户的要求给出各种数据报表。

3. Java Bindings

包括三个 Java 包:

  • org.opengroup.arm40.transaction 是使用最多的主要包,应用程序在 transaction 开始或结束时调用相应的方法,ARM 实现将会衡量响应时间等。
  • org.opengroup.arm40.tranreport 是一个替代包,除了衡量响应时间,还能形成报告。
  • org.opengroup.arm40.metric 结合 org.opengroup.arm40.transaction 来提供对额外衡量指标的监控。

在这三个包里的都是接口。 

4. ARM 实现

一个 ARM 实现包括两个部分:

  • ARM library 包含对以上三个包中定义的接口的实现类,在运行时它会被载入用户应用中。
  • ARM agent 用来接收和处理 ARM library 发来的数据。根据不同的设计,ARM agent 的差异性会很大,可能是一个简单的 jar library,也可能是一个独立的外部程序组件。我将会在后续文章中介绍具体的 ARM 实现时说明这一区别。