The Sky of William Jiang http://www.superhaiou.com No pains, no gains Wed, 30 Dec 2009 17:59:09 +0000 http://wordpress.org/?v=2.7.1 en hourly 1 如何创建并管理root分区镜像 http://www.superhaiou.com/articles/%e5%a6%82%e4%bd%95%e5%88%9b%e5%bb%ba%e5%b9%b6%e7%ae%a1%e7%90%86root%e5%88%86%e5%8c%ba%e9%95%9c%e5%83%8f.html http://www.superhaiou.com/articles/%e5%a6%82%e4%bd%95%e5%88%9b%e5%bb%ba%e5%b9%b6%e7%ae%a1%e7%90%86root%e5%88%86%e5%8c%ba%e9%95%9c%e5%83%8f.html#comments Fri, 18 Dec 2009 14:53:35 +0000 superhaiou http://www.superhaiou.com/?p=84170 Solaris的root分区是整个系统的核心部分,因为跟系统运行相关的大部分数据都处于这个分区,如果这个分区被破坏,整个系统将无法正常使用。因此,创建一个root分区的镜像非常重要,本文将重点介绍如何创建并管理root分区的镜像。
首先需要使用命令format->disk->partition来确保附属盘和主盘拥有相同的label。我操作的一台Sparc机器使用以上命令后的输出如下:
format> partition
PARTITION MENU:
0 - change `0' partition
1 - change `1' partition
2 - change `2' partition
3 - change `3' partition
4 - change `4' partition
5 - change `5' partition
6 - change `6' partition
7 - change `7' partition
select - select a predefined table
modify - modify a predefined partition table
name - name the current table
print - display the current table
label - write partition map and label to the disk
! - execute , then return
quit
partition> 0
Part Tag Flag Cylinders Size Blocks
0 root wm 259 - 3251 5.82GB (2993/0/0) 12211440
将附属root盘添加到主root盘所在的存储池中。
# zpool attach rpool c1t1d0s0 c2t0d0s0
确保使用installboot来使c2t0d0s0可启动,可以使用zpool status rpool来查看附属盘的状态。
接下来安装启动块:
SPARC# installboot -F zfs /usr/platform/`uname -i`/lib/fs/zfs/bootblk /dev/rdsk/c2t0d0s0
x86# installgrub /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/c2t0d0s0
现在就可以来确认是否可以使用附属盘来启动了。

当root池中的一个镜像盘出问题,你可以用一块新盘来替代然后再卸下问题盘,具体步骤如下:
如果你的系统支持热插拔,就可以直接对被破坏的盘进行替换,否则就必须先使系统离线然后将被破坏的盘分离出来。
# zpool offline rpool c1t0d0s0
# cfgadm -c unconfigure c1::dsk/c1t0d0
替换被破坏的盘并重新配置让zfs知道
# cfgadm -c configure c1::dsk/c1t0d0
# zpool replace rpool c1t0d0s0
使配置好的新硬盘处于online状态
# zpool online rpool c1t0d0s0

参考文献:http://hub.opensolaris.org/bin/view/Community+Group+zfs/zfsrootpools

]]>
http://www.superhaiou.com/articles/%e5%a6%82%e4%bd%95%e5%88%9b%e5%bb%ba%e5%b9%b6%e7%ae%a1%e7%90%86root%e5%88%86%e5%8c%ba%e9%95%9c%e5%83%8f.html/feed
让Solaris的domU支持VNC访问 http://www.superhaiou.com/articles/%e8%ae%a9solaris%e7%9a%84domu%e6%94%af%e6%8c%81vnc%e8%ae%bf%e9%97%ae.html http://www.superhaiou.com/articles/%e8%ae%a9solaris%e7%9a%84domu%e6%94%af%e6%8c%81vnc%e8%ae%bf%e9%97%ae.html#comments Sun, 13 Dec 2009 13:45:29 +0000 superhaiou http://www.superhaiou.com/?p=84169 在基于Xen的Solaris虚拟化体系结构中,我们有时候需要通过VNC登录到domU的图形界面进行操作,但是默认并不支持对domU的VNC操作。本文主要介绍了如何在Solaris domU配置VNC,让domU支持gdm和cde的图形化登录。
1. 如何配置VNC为Solaris的domU提供gdm(GNOME Display Manager)图形化登录环境。
你可以安装VNC为domU提供图形化的登录界面。但是要注意VNC并没有加密,任何人都可以监听你的VNC会话,包括你输入的密码。
启动GDM的XDMCP服务
# printf '[xdmcp]\nEnable=true\n' >>/etc/X11/gdm/custom.conf
# svcadm restart gdm
• 保证GDM正在运行
# svcadm enable -s gdm
• 让X11-server监听tcp端口
# svccfg -s x11-server
svc:/application/x11/x11-server>
svc:/application/x11/x11-server> setprop options/tcp_listen=true
• 启动xvnc-inetd服务
# svcadm enable xvnc-inetd

2. 如何配置VNC为Solaris的domU提供cde的图形化登录环境
• 开启xdmcp
# svccfg -s cde-login
svc:/application/graphical-login/cde-login>
svc:/application/graphical-login/cde-login> setprop dtlogin/args=""
• 让X11-server监听tcp端口.
# svccfg -s x11-server
svc:/application/x11/x11-server>
svc:/application/x11/x11-server> setprop options/tcp_listen=true
• 启动xvnc-inetd服务.
# svcadm enable xvnc-inetd
然后再在另一个Solaris终端使用以下命令即可。
# vncviewer domU:0
参考文献:http://hub.opensolaris.org/bin/view/Community+Group+xen/setupvnc

]]>
http://www.superhaiou.com/articles/%e8%ae%a9solaris%e7%9a%84domu%e6%94%af%e6%8c%81vnc%e8%ae%bf%e9%97%ae.html/feed
入手HP Pavilion dm1 http://www.superhaiou.com/articles/%e5%85%a5%e6%89%8bhp-pavilion-dm1.html http://www.superhaiou.com/articles/%e5%85%a5%e6%89%8bhp-pavilion-dm1.html#comments Wed, 09 Dec 2009 11:16:34 +0000 superhaiou http://www.superhaiou.com/?p=82934 由于自己出差比较多,每次扛着五六斤的Thinkpad T61感觉过于笨重,于是买一款小巧的本本成了一种需要。不想买上网本,逛了两天电脑城,发现目前预装正版win7的质量稍好点的轻薄电脑只有Dell 11z和HP Pavilion dm1两款,两者配置差不多,都是Intel SU4100处理器、2G内存(HP为DDR3,Dell为DDR2)、250G硬盘(Dell的已经有320G的硬盘了),报价也差不多,但是HP dm1是六星的电池,而Dell 11z是三星的电池。经测试,HP dm1的待机时间超长,即使用来一直上网或处理文档也能坚持至少六个小时。Dell 11z加电池不到3公斤,而HP dm1则要重半斤左右。个人感觉HP dm1的外观更炫,特别是全金属键盘让我爱不释手,而Dell 11z则更轻薄。纠结了好久,最后我选择了HP dm1。

HP Pavilion dm1

HP Pavilion dm1

HP Pavilion dm1

HP dm1 & Thinkpad T61

HP dm1 & Thinkpad T61

HP dm1 & Thinkpad T61

]]>
http://www.superhaiou.com/articles/%e5%85%a5%e6%89%8bhp-pavilion-dm1.html/feed
虚拟化在中国 http://www.superhaiou.com/articles/%e8%99%9a%e6%8b%9f%e5%8c%96%e5%9c%a8%e4%b8%ad%e5%9b%bd.html http://www.superhaiou.com/articles/%e8%99%9a%e6%8b%9f%e5%8c%96%e5%9c%a8%e4%b8%ad%e5%9b%bd.html#comments Mon, 07 Dec 2009 12:22:38 +0000 superhaiou http://www.superhaiou.com/?p=84167 近年来,虚拟化一直是一个炙手可热的研究领域,虚拟化的浪潮席卷服务器、存储、网络、PC机等各个领域。虚拟化最突出的优势就是节省资金、整合服务器、最 大化资源利用率。Amazon、EMC、Microsoft、IBM、Google、Citrix、Cisco、Sun等公司在虚拟化市场展开了激烈的竞 争,而以虚拟化为基石的云计算技术的发展则使竞争愈演愈烈。与此同时,虚拟化在我国也得到了迅速的发展和应用。我国的开发人员在虚拟化的开源社区里发挥着 越来越重要的作用,一些企业和单位开始部署虚拟化解决方案,部分高校也正在进行虚拟化领域的研究工作。

2009年11月19日,2009 Xen Summit(Xen峰会)在Intel上海紫竹园区的研发基地拉开帷幕。国内外虚拟化领域的专家学者、Xen开发者和爱好者等200余人共聚一堂,共同 探讨虚拟化的成果及创新理念,展望虚拟化的机遇和未来。Intel于2004年11月公布了首个Xen虚拟化技术代码,开启了全面支持Xen虚拟化的序 幕。过去5年中,Intel为Xen的发展做出了巨大贡献,其对Xen 3.0的贡献在社区中排名第二,仅次于Citrix。正如中国开源软件推进联盟主席陆首群教授所说的那样,Xen峰会在中国召开,象征着中国软件开发者正 在从国际开源社区资源的消费者转向贡献者,在开源社区的top contribution list里涌现出了越来越多中国人的名字。

在我国,越来越多的企业开始部署虚拟化解决方案。中国联通开始采用Novell公司先进的虚拟化解决方案,使用SUSE Linux Enterprise Server和智能工作负载管理套件,为其打造架构灵活、易于扩展的互联网数据中心(IDC)平台;华为公司也采用了Novell公司的SUSE Linux Enterprise Server、PlateSpin Migrate及PlateSpin Orchestrate等产品为其构建数据中心虚拟化平台;腾迅公司也将虚拟化技术应用到自己的产品中,如QQ 2009 SP4 云端专版就采用云端的虚拟化技术,让QQ表情和聊天记录全部存于本机系统盘之外的缓存文件夹。此外,中国石油、上海电信、北京电视台等单位也都采用了微软 的虚拟化解决方案。

国内高校的虚拟化研究工作也正在火热进行中。在2009 Xen summit大会上,“计算系统虚拟化基础理论与方法研究”国家973项目首席科学家、华中科技大学计算机科学与技术学院院长金海教授介绍了目前中国在开 源虚拟化基础研究方面的进展。该973项目由华中科技大学牵头,并与北京大学、清华大学、上海交通大学、国防科技大学、浙江大学、江南计算技术研究所、航 天部二院等高校或单位一起承担,分为计算系统虚拟化的理论模型及体系结构研究、单计算系统资源虚拟化方法研究、多计算系统资源虚拟化方法研究、虚拟计算系 统普适化运行环境研究、虚拟计算系统安全可信机制研究、虚拟计算系统评测理论与方法研究、基于高效能计算机的虚拟化技术研究、虚拟化仿真系统应用研究等子 方向。该项目与 EMC、Intel等著名虚拟化厂商密切合作,已发表顶级国际学术论文多篇,申请国际专利多项,研究成果已达到国际先进水平。

虽然目前中国的虚拟化进程仍处于起步阶段,但我国的政府、企业和研究机构已经看到了虚拟化把有限、固定的资源按需重新规划并最大化利用率的巨大潜力,我们有理由相信虚拟化在中国拥有一个美好的未来。

]]>
http://www.superhaiou.com/articles/%e8%99%9a%e6%8b%9f%e5%8c%96%e5%9c%a8%e4%b8%ad%e5%9b%bd.html/feed
Solaris Cluster 3.2 11/09新特性 http://www.superhaiou.com/articles/solaris-cluster-32-1109%e6%96%b0%e7%89%b9%e6%80%a7.html http://www.superhaiou.com/articles/solaris-cluster-32-1109%e6%96%b0%e7%89%b9%e6%80%a7.html#comments Fri, 04 Dec 2009 16:29:33 +0000 superhaiou http://www.superhaiou.com/?p=82649 Solaris Cluster是基于Solaris平台、高可用性和灾难恢复领域的一个非常优秀的解决方案,数十年来一直是该领域的业界领先者。它能有效地保证各种应用服务、本地及分布式数据中心的完整性和高可用性,从而使得Solaris成为一个真正的集群操作系统。
Solaris Cluster 3.2 11/09是Solaris Cluster 3.2的一个升级版本,它继承了Sun公司二十多年来一直秉承的创新理念,不管是在高可用性、灾难恢复、虚拟化,还是在灵活性、易用性等方面都带来了更多 的惊喜。新版本对Solaris Container Clusters以及failover Solaris Container、LDoms等虚拟化方面的功能进行了拓展,在文件系统和卷管理方面提供了更多的选择,并在灾难恢复方面增加了新的复制方案。除了提供 稳定的服务支持外,这个版本还对一些最新的第三方应用软件提供了支持。
Solaris Container集群支持了更多的Oracle解决方案,如Oracle电子商务套件、Siebel CRM 8、单一示例Oracle数据库和Oracle RAC等,并对IPsec、SCTP、故障管理、轮转负载平衡提供了更好的支持,开始支持更多的应用程序和代理,如针对LDoms客户domain的HA Agent这个新的代理, 以及SWIFTAlliance Access& Gateway 6.3这个新版本的应用程序。此外,它还支持日立通用复制软件支持、基于脚本的复制模块插件、MySQL的复制等。
由于Solaris Cluster的各种优良特性,2010年在加拿大温哥华举行的冬季奥运会和残奥会将使用Solaris Cluster来搭建一个信息传播系统,用来支持比赛的时间安排以及比赛结果的实时传递。若要了解更多,可从http://www.sun.com/software/solaris/cluster/get.html下载该版本的Solaris Cluster。

]]>
http://www.superhaiou.com/articles/solaris-cluster-32-1109%e6%96%b0%e7%89%b9%e6%80%a7.html/feed
通过Crossbow虚拟化技术搭建VLAN http://www.superhaiou.com/articles/%e9%80%9a%e8%bf%87crossbow%e8%99%9a%e6%8b%9f%e5%8c%96%e6%8a%80%e6%9c%af%e6%90%ad%e5%bb%bavlan.html http://www.superhaiou.com/articles/%e9%80%9a%e8%bf%87crossbow%e8%99%9a%e6%8b%9f%e5%8c%96%e6%8a%80%e6%9c%af%e6%90%ad%e5%bb%bavlan.html#comments Wed, 02 Dec 2009 17:07:57 +0000 superhaiou http://www.superhaiou.com/?p=82520 VLAN(Virtual Local Area Network),即"虚拟局域网",是一种将局域网(LAN)设备从逻辑上划分成一个个网段,从而实现虚拟工作单元的数据交换技术。VLAN 的出现,使得管理员可以根据实际需求,把同一物理局域网内的不同用户逻辑地划分成不同的广播域,每一个VLAN都包含一组有着相同需求的PC要或工作站, 与物理上形成的LAN有着相同的属性。由于它是从逻辑上划分,所以同一个 VLAN内的各个PC机或工作站并没有限制在同一个物理范围中,即它们可以在不同物理LAN网段。由于一个VLAN内部的广播和单播流量都不会转发到其他 VLAN中,从而有助于控制流量、减小arp等广播报文的范围、减少设备投资、简化网络管理、提高网络的稳定性和安全性。本文主要介绍如何在OpenSolaris下使用Crossbow虚拟化技术来实现VLAN体系结构。
   物理交换机通过将其端口与特定的VLAN标识相关联,从而实现不同VLAN通信的分离。Crossbow虚拟交换机则将VNIC(虚拟网卡)和VLAN 标识(VID)关联起来,通过MAC地址来对各个VNIC的数据进行分类。同时,虚拟交换机也实现了每个VLAN的广播域,使得标记的广播帧只会传送到与 该VLAN标识匹配的VNIC上。从效率和安全性来看,Crossbow的VLAN实现有两个重要的特性:一是能防止不必要的帧复制,二是能保证帧在 VLAN传输的正确性和完整性。
  图一中有两个独立的子网,并且它们使用同样的IP地址。

图一 两个拥有相同IP的独立子网

  如果能在不更改机器IP配置的前提下将两个子网整合到一起,将不仅能减少成本,而且能增强其服务的可靠性。这两个子网的整合需要做到:
  1. 必须保留现在有的IP地址。因为像防火墙、代理、目录服务等都与IP地址密切相关,重新分配IP地址将会破坏这些服务的可用性。
  2. 整合后必须保证两个子网通信的独立性和无干扰性。
   将两个子网整合到同一物理网络的传统方法是给每个子网分配一个VLAN ID,然后将交换机的端口与相应的子网VLAN ID关联起来。最后,每台机器都连接到正确的端口,如图二所示。但是,整合后机器的数量和与交换机端口的连接数量并未改变。我们也可以使用虚拟化技术来实 现,使用两个虚拟机来代替两台服务器,它们共存于一台服务器上。

图二 两个物理的VLAN

  在将NIC分配给虚拟机时,可以有有多种选择。最常用的办法就是给每个虚拟机 都分配物理网卡,但这样就失去了节约成本和高可用性的意义。当一个NIC(网卡)出错了,所有建立在这块NIC之上的虚拟机都将不可用,同时,这样还会因 为有限的物理NIC数量来降低配置的可靠性。
  一种更好的办法就是首先创建一个link aggregation,与NIC绑定。aggregation然后被虚拟化成多个VNIC并分配给相应的虚拟机,如图三所示。VNIC建立在相应虚拟机 VLAN ID的基础上,当整个VLAN虚拟化过程完成后,仍能保证不同虚拟机之间的正常通信。

图三 两个虚拟的VLAN

  我们可以通过以下的命令来创建link aggregation、VNIC,最后建立起虚拟化的VLAN体系结构:
  dladm create-aggr -l nxge0 -l nxge1 aggr0
  dladm create-vnic -l aggr0 -v 1 vnic1

参考文献:Crossbow Virtual Wire: Network in a Box; Sunay Tripathi, Nicolas Droux, Kais Belgaied, Shrikrishna Khare;Solaris Kernel Networking, Sun Microsystems, Inc.

]]>
http://www.superhaiou.com/articles/%e9%80%9a%e8%bf%87crossbow%e8%99%9a%e6%8b%9f%e5%8c%96%e6%8a%80%e6%9c%af%e6%90%ad%e5%bb%bavlan.html/feed
在OpenSolaris使用Crossbow简化QoS配置 http://www.superhaiou.com/articles/%e5%9c%a8opensolaris%e4%bd%bf%e7%94%a8crossbow%e7%ae%80%e5%8c%96qos%e9%85%8d%e7%bd%ae.html http://www.superhaiou.com/articles/%e5%9c%a8opensolaris%e4%bd%bf%e7%94%a8crossbow%e7%ae%80%e5%8c%96qos%e9%85%8d%e7%bd%ae.html#comments Wed, 02 Dec 2009 16:23:22 +0000 superhaiou http://www.superhaiou.com/?p=82519   通常配置系统的QoS(Quality of Service)策略是一项非常艰苦的工作。举个例子,假如我们需要将TCP流量控制在1000Mb/s,在Solaris 10上一般使用IPQoS来解决问题,而在Linux上则使用tc技术,但是需要经历定义队列规则、分类、过滤规则等各种复杂的步骤。本文将介绍如何在 OpenSolaris下使用Crossbow来简化QoS配置,分为Solaris zone和Xen两部分。
  首先介绍在Solaris zone里的配置方法。
   在一个zone里使用crossbow来限制带宽的操作非常简单。你仅仅需要创建一个有带宽限额的VNIC(虚拟网卡),并将它分配给相应的zone即 可。举个例子,如果我们要限制一个zone的带宽不超过100Mb/s的话,只需使用以下命令创建一个最大带宽值为100的VNIC:
  dladm create-vnic -p maxbw=100 -l e1000g0 vnic1
  zone创建以后,我们在配置文件中将vnic1作为它的网卡,这样该zone通过vnic1发送和接收的带宽就被限制在100Mb/s了。这个设置是永久的,即使在系统重启后也有效。如果我们要把带宽修改为200Mb/s,可使用以下命令:
  dladm set-linkprop -p maxbw=200 vnic1
  可以使用以下命令查看VNIC和zone的对应情况:
  dladm show-linkprop -p zone vnic1
   LINK  PROPERTY PERM VALUE
   vnic1 zone         rw    zone1
  接下来介绍如何在Xen里配置QoS。
   当使用OpenSolaris作为dom0时,Crossbow可非常方便地实现对domU带宽限额的设置,其配置过程跟在zone上差不多。我们可以 在domU上跑OpenSolaris、Solaris 10、Linux、Windows或其它Xen支持的操作系统,但是带宽的配置过程却与domU上的OS无关。 当Xen上的一个domU被创建后,Crossbow默认会创建一个VNIC并分配给domU。如果要给domU设置带宽限额,就需要显式地创建一个 VNIC,并在domU创建的时候分配给domU。这时就可以通过设置VNIC的maxbw属性来设置domU的带宽限额了,操作如下:
  dladm create-vnic -p maxbw=300 -l e1000g0 vnic1
  把这块新创建的vnic1配置成domU的网卡,并将以下内容包含在domU的template.xml配置文件中即可。同时,使用dladm show-vnic命令可以显示vnic1的MAC地址。
  <interface type=’bridge’>
  <source bridge=’vnic1’/>
  <mac address=’vnic1’s mac address/>
  <script path=’vif-dedicated’/>
  </interface>
  最后使用命令virsh create template.xml来创建domU。
  当我们将Xen domU的带宽限制在300Mb/s后,又需要将其中的100Mb/s用作TCP通信,可以通过以下命令实现:
  flowadm add-flow -p maxbw=100 -a transport=tcp -l vnic1 tcp-flow1

  为了能方便地发现系统的性能瓶颈,Crossbow提供了一些工具来查看系统各种统计信息,如收包率、丢包率等。
  可以使用dlstat来打印各个vnic的动态数据信息。
  dlstat vnic1
   LINK IPKTS IBYTES OPKTS OBYTES
   vnic1 9.9M 2.3G 4.8M 0.3G
  加上-i 5选项可以实现每5秒钟实时更新数据。同时,dlstat命令还支持统计数据的离线查看和分析,使用acctadm命令将数据写入特定的日志文件,而dlstat -u则可从日志文件中提取出有用的历史数据。
  dlstat命令主要是用来操作vnic,而flowstat命令则用于查询各种数据流的网络统计信息。
  flowstat tcp-flow
   FLOW LINK IBYTES OPKTS OBYTES
   tcp-flow vnic1 2.3G 4.8M 0.3G
参 考文献:Crossbow Virtual Wire: Network in a Box; Sunay Tripathi, Nicolas Droux, Kais Belgaied, Shrikrishna Khare;Solaris Kernel Networking, Sun Microsystems, Inc.

]]>
http://www.superhaiou.com/articles/%e5%9c%a8opensolaris%e4%bd%bf%e7%94%a8crossbow%e7%ae%80%e5%8c%96qos%e9%85%8d%e7%bd%ae.html/feed
华中科技大学火狐技术活动——XUL编程 http://www.superhaiou.com/articles/%e5%8d%8e%e4%b8%ad%e7%a7%91%e6%8a%80%e5%a4%a7%e5%ad%a6%e7%81%ab%e7%8b%90%e6%8a%80%e6%9c%af%e6%b4%bb%e5%8a%a8%e2%80%94%e2%80%94xul%e7%bc%96%e7%a8%8b.html http://www.superhaiou.com/articles/%e5%8d%8e%e4%b8%ad%e7%a7%91%e6%8a%80%e5%a4%a7%e5%ad%a6%e7%81%ab%e7%8b%90%e6%8a%80%e6%9c%af%e6%b4%bb%e5%8a%a8%e2%80%94%e2%80%94xul%e7%bc%96%e7%a8%8b.html#comments Sun, 29 Nov 2009 04:02:49 +0000 superhaiou http://www.superhaiou.com/?p=82296 为了能让更多大一、大二的低年级学生了解使用Firefox浏览器并加入到XUL开发Firefox的队伍中来,我们计算机学院联合软件学院组织并开展了一场关于使用XUL作Firefox开发的讲座。讲座邀请了X... ]]>

为了能让更多大一、大二的低年级学生了解使用Firefox浏览器并加入到XUL开发Firefox的队伍中来,我们计算机学院联合软件学院组织并开展了一场关于使用XULFirefox开发的讲座。讲座邀请了XUL开发高手曹祺和张勤同学到场,在给大家奉献了精彩的demo的同时,也针对大家提出的问题作出了精彩的解答。我们也给大家演示了强大的无线传感器SunSPOT,并让部分观众参与进来,将本次技术活动引向高潮。本次活动共吸引了约150人到场,每人都获得了我们提供的精美礼品。

活动时间:1122日晚19:30-22:00

活动地点:华中科技大学软件学院106

活动安排如下:

19:30-20:20 Firefox简介&SunSPOT 华中科技大学研究生 蒋海鸥

20:20-21:00 如何使用XUL编程 武汉大学 曹祺

21:00-21:30 如何开发Firefox插件 华中科技大学 张勤

21:30-22:00 Q&A All


p9250111


p92501091


p9250115


e8aeb2e5baa7e590ace4bc97


]]>
http://www.superhaiou.com/articles/%e5%8d%8e%e4%b8%ad%e7%a7%91%e6%8a%80%e5%a4%a7%e5%ad%a6%e7%81%ab%e7%8b%90%e6%8a%80%e6%9c%af%e6%b4%bb%e5%8a%a8%e2%80%94%e2%80%94xul%e7%bc%96%e7%a8%8b.html/feed
使用VirtualBox虚拟机和KGDB调试Linux内核 http://www.superhaiou.com/articles/%e4%bd%bf%e7%94%a8virtualbox%e8%99%9a%e6%8b%9f%e6%9c%ba%e5%92%8ckgdb%e8%b0%83%e8%af%95linux%e5%86%85%e6%a0%b8.html http://www.superhaiou.com/articles/%e4%bd%bf%e7%94%a8virtualbox%e8%99%9a%e6%8b%9f%e6%9c%ba%e5%92%8ckgdb%e8%b0%83%e8%af%95linux%e5%86%85%e6%a0%b8.html#comments Thu, 26 Nov 2009 16:54:57 +0000 superhaiou http://www.superhaiou.com/?p=82182 搞过内核开发的人都知道,内核调试是个脑力活,也是个体力活,因为底层的内核开发和应用程序开发有着较大的差别。应用程序的开发在操作系统之上,有许多优 秀的IDE供我们选择,从而能够非常方便进行调试;而内核级的开发则不一样,操作系统的内核调试器除完成一般的调试功能外,还必须工作在内核中。在 Linux中,内核调试方法有多种,可以在内核中插入printk()函数来调试分析,可以使用/proc文件系统对内核进行分析,也可以使用kgdb进 行内核源代码级的调试。本文将介绍如何使用VirtualBox 3.0.12 + RHEL 5 + KGDB的方式调试Linux内核(在一台主机运行RHEL 5,用VirtualBox 3.0.12虚拟两个RHEL 5代替两台机器,并在两台虚拟机上配置KGDB来进行内核的调试)。
kgdb提供了一种使用gdb调试Linux内核的机制。使用kgdb调试内核需要准备两台机器,一台作为开发机(用来远程查看内核信息并调试内核),另一台作为目标机(跑有要调试的内核), 并通过串口将它们连接起来。在2.6.26以前的Linux内核中使用kgdb需要打上补丁,而在2.6.26及以后的内核里已经加入了对kgdb的支 持。当kgdb内核调试环境搭好后,目标机上运行的是打了kgdb补丁的Linux内核,而开发机上运行gdb,gdb通过串口与要调试的内核进行通信, 对目标机上的内核进行控制,从而实现远程对内核的调试。
首先从http://www.virtualbox.org下 载for RHEL5的VirtualBox,目前的最新版本是VirtualBox 3.0.12。装上VirtualBox后,就可以虚拟出两个RHEL 5虚拟机来代替两台机器了。当然我们也可以使用VirtualBox的clone功能,如果第一台虚拟机的文件名为rhel1.vdi,可使用命令VBoxManage clonevdi rhel1.vdi rhel2.vdi命令迅速克隆出另一台虚拟机。我们将一台虚拟机用作目标机,另一台用作开发机。
我 们可以利用主机的命名管道来完成两台虚拟机间的通信。一台虚拟机在主机中创建命名管道并将其串口与管道相连,另外一台虚拟机也将自己的串口连接到主机的命 名管道上,这样就实现了两个虚拟机串口的连接。两台虚拟机都使用自己的COM1端口,主机的命名管道同为/tmp/vbox,在配置时由一台虚拟机创建, 另一台则不创建。我们可使用以下的方式来测试两虚拟机的串口是否连接成功:
(1)首先启动创建管道的虚拟机,再启动另一台虚拟机,然后使用命令stty ispeed 115200 ospeed 115200 -F /dev/ttyS0将各自COM1端口的输入输出波特率都设为115200。
(2)在其中一台虚拟机v1终端上执行cat /dev/ttyS0, 在另一台虚拟机v2上执行 echo ok > /dev/ttyS0, 这时如果虚拟机v1的终端接受到v2发来的ok消息,则说明两虚拟机的串口通信正常,连接成功。
由 于作为目标机的虚拟机上跑的RHEL 5内核版本是2.6.18,可以使用kgdb for 2.6.18的patch对内核打补丁并重新编译来使用kgdb,点击此处下载2.6.18的kgdb补丁。由于在2.6.26及以后的内核里已经加入了 对kgdb的支持,我选择了2.6.31的内核进行重新编译。如果我们在主机RHEL 5下载了2.6.31的源代码,并希望共享给虚拟机中的RHEL 5(共享给目标机),这就涉及到VirtualBox硬盘资源共享,具体过程如下:
(1)设备->安装增强功能,然后再使用以下命令将增强功能的iso文件挂接:
mkdir /mnt/vboxadd
mount /dev/hdc /mnt/vboxadd
(2)根据自己的机器和OS类型选择相应的安装程序,x86的RHEL 5上的安装如下:
cd /mnt/vboxadd
./VBoxLinuxAdditions-x86.run  (需要保证kernel-devel、gcc已经存在并更新,可使用yum install kernel-devel和yum install gcc安装并更新)
(3)安装后使用命令modprobe vboxvfs导入模块
设备->分配数据空间,选择要共享的文件夹,使用命令mount -t vboxsf home /mnt/home即可将名为home的数据空间挂载到/mnt/home下了。
资源共享成功后,接下来就可以重新编译内核2.6.31了:
(1)从http://www.kernel.org下载2.6.31稳定版内核,使用命令tar xjvf linux-2.6.31.6.tar.bz2 -C /usr/src将内核代码解压到/usr/src目录下。
(2)make menuconfig进行配置:进入kernel hacking ,在保证Compile the kernel with debug info被勾上的同时,选中KGDB: kernel debugging with remote gdb,save配置信息。
(3)make bzImage
make modules
make modules_install
make install
由于要使用串口来调试内核,所以在grub的内核启动参数上要加上kgdbwait,它的作用是在系统内核启动时停下来等待调试。我们可使用 kgdb8250驱动来改变串口的参数,当内核启动参数为kgdb8250=0,115200时,0代表使用串口0(/dev /ttyS0),115200代表波特率是115200。
配置好grub后,重新启动虚拟机,进入grub界面后选择2.6.31,会发现kernel停住不动等待调试。这时切换到作为开发机的虚拟机上并进入到源码目录下,运行gdb ./vmlinux。gdb启动后,使用以下命令设置波特率和调试终端:
(gdb)set remotebaud 115200
(gdb)target remote /dev/ttyS0
这样我们就可以享受在一台机器上使用两台虚拟机调试内核带来的愉悦了。

]]>
http://www.superhaiou.com/articles/%e4%bd%bf%e7%94%a8virtualbox%e8%99%9a%e6%8b%9f%e6%9c%ba%e5%92%8ckgdb%e8%b0%83%e8%af%95linux%e5%86%85%e6%a0%b8.html/feed
Tech Lead, new start~ http://www.superhaiou.com/articles/tech-lead-new-start.html http://www.superhaiou.com/articles/tech-lead-new-start.html#comments Mon, 23 Nov 2009 07:34:21 +0000 superhaiou http://www.superhaiou.com/?p=82014 Program仍在继续,希... ]]> 今天我被汪总正式提升为整个CA Program的Tech Lead,这意味着我作为intern在Sun CA Program已经爬到了顶峰。这个有点珊珊来迟的头衔也算是对我两年来在Sun工作的承认和鼓励。

Program仍在继续,希望Sun和Oracle能最终联姻成功,也希望我们的项目能在新的环境下继续存在并发展壮大。

]]>
http://www.superhaiou.com/articles/tech-lead-new-start.html/feed