2009年5月20日星期三
卡巴斯基在 Windows Server 2003 中的安装方案
2009年5月13日星期三
Performance Monitor - Get System Counter Values (CPU, Memory, etc.)
--
snigoal,HUST,Wuhan,China
2009年5月9日星期六
ubuntu下java的安装
方法一:
首先我明确一下我的环境:
我是通过虚拟机安装的,宿主环境是windows xp sp3.
虚拟机是 virtualbox 1.6中文版
客户机是Ubuntu8.04
安装jdk
开始时我想下载那个.bin的jdk安装包,但又查到Ubuntu8.04上面有更好的安装方式如下:
sudo apt-get install sun-java6-jdk
如果你只想安装JAVA运行环境就用下面的指令
sudo apt-get iinstall sun-java6-jre
注意这两个命令会要求你管理员的权限。
我在安装的过程中并没有发现什么怪异的情况,有一个需要说明的是在安装过程中会弹出来个JDK的简介画面,在画面下部有一个确定按钮,一定要用TAB键选中然后按回车键,继续在旨出的"YES/NO"选项中依旧用TAB中选择确定后按回画。为了这个让我白等了好长时间,开始我以为是系统在后台执行,没想到是让我响应。看来LINUX的用户友好性还是差一些啊。
说明一下,apt-get的方式是在线下载的方式,如果你没有连接网络请不要用这种方式安装。我在安装的过程中中断退出过,后来重新执行后系统会从中断的地方继续安装,这一点非常好。
过几天我会介绍如何安装NetBens6.1中文版。
方法二:
以前在linux下使用jdk是在redhat下.还从来没有在debian系下安装过.
这个系安装比较特别.
于是开始动手.
动因是因为我在windows下死活不能下载的freemind在ubuntu上面竟然轻易就打开sf.net站点并且下载这个java开发的思维导图软件.使用这个软件就必须安装jdk或者jre.因为要用java感谢别的事情,所以还是安装jdk.
1.安装java-package
本来在完善找到很多安装方法,但是必需要java-package这个软件,我的sources.list是默认的,没有被修改.
直接 apt-get install java-package,竟然提示java-package不存在,难道是sources的原因,于是修改/etc/apt/sources.list
添加国内的一个镜像站点 debian.cn99.com/ubuntu,接着更新源
apt-get update
提示的中文,我看得懂,说我的debian.cn99.com被忽略.那就别说了,
apt-get install java-package肯定是失败的.
后来才发现有的文章已经介绍在哪里获取java-package软件.地址是:
deb http://gb.archive.ubuntu.com/ubuntu/ dapper main restricted
deb http://gb.archive.ubuntu.com/ubuntu/ dapper universe multiverse
使用方法:
su命令到root下.
sudo gedit /etc/apt/sources.list
把上面的两个地址张贴到最后.
然后运行
apt-get update 更新源.
然后就是安装java-package咯.
apt-get install java-package
2.安装jdk,其实这个过程很简单的.就是花一点时间.到http://java.sun.com/javase/downloads/index.jsp下载最新版本的JDK,
目前的版本号是JDK 5.0 Update 10。选择Linux self-extracting file(注意,不是RPM!是以bin结尾的自解压文件)
将jdk-1_5_0_10-linux-i586.bin下载到本地。
在命令行下进入该文件所在的目录,用如下命令制作适用于Ubuntu的安装文件:
fakeroot make-jpkg jdk-1_5_0_10-linux-i586.bin
如果你没有fakeroot这个软件,直接apt-get fakeroot安装就可以了.但是没有java-package
就会提示make-jpkg无效.
在这个过程中你会看到屏幕上出现许多错误提示,这些都没有关系。回答几次yes之后,安
装文件就制作完成了。这个文件的文件名是sun-j2sdk1.5_1.5.0+update10_i386.deb。
通过如下命令将这个软件包安装到Ubuntu上:
sudo dpkg -i sun-j2sdk1.5_1.5.0+update10_i386.deb
在命令行下运行java -version,可以发现最新版本的JDK已经被成功地安装在你的系统上了。
不过,如
果运行java,发现使用的还是Ubuntu缺省安装的gcj虚拟机。进入/etc/alternatives
目录,运行如下命令:
rm java
ln -s /usr/lib/j2sdk1.5-sun/bin/java java
再次运行java命令,就会发现使用的是刚刚安装完成的Sun 公司的虚拟机了。
如果想每次登录就有java环境,你还得设置一下
$ sudo gedit /etc/profile 在文件最后添加
#set java environment
JAVA_HOME=/opt/jdk1.6.0_01(jdk的安装路径)
export JRE_HOME=/opt/jdk1.6.0_01/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
(java环境变量的配置原文件好像有点问题,我改过来了,已经验证)
安装方法三
不要骂我,为什么把简单的方法放在后面,使用命令来安装有助于对ubuntu的熟悉和了解.最起码的软件安装会有个概念.
这个方法特别简单,是在ubuntu的一个台湾wiki上看到的,安装方法比windows下的软件安装一样简单.
具体方法:
点击桌面的"应用程序"->"添加/删除..."
然后再搜索里面输入"java",回车,就可以看到java相关的软件了,
这个时候你可以选择jdk或者jre来安装(选中复选框).然后点击"确定",开始安装.
安装结束你的java环境就已经搭建好了.
就这么简单.嘿嘿..以前在linux下使用jdk是在redhat下.还从来没有在debian系下安装过.
这个系安装比较特别.
于是开始动手.
动因是因为我在windows下死活不能下载的freemind在ubuntu上面竟然轻易就打开sf.net站点并且下载这个java开发的思维导图软件.使用这个软件就必须安装jdk或者jre.因为要用java感谢别的事情,所以还是安装jdk.(这个方法我没试,有兴趣的朋友可以试一下)
--
snigoal,HUST,Wuhan,China
2009年5月6日星期三
用MPI_Pack()打包C语言的struct
--
snigoal,HUST,Wuhan,China
2009年5月5日星期二
TinyXML——xml解析器
snigoal,HUST,Wuhan,China
libxml——The XML C parser and toolkit of Gnome
The XML C parser and toolkit of Gnome
libxml
--
snigoal,HUST,Wuhan,China
MPI程序示例
snigoal,HUST,Wuhan,China
Windows下MPI并行程序运行环境的搭建
http://mryang.blogbus.com/logs/17396382.html
这几日对并行计算有了大概的了解,其中关键的还是并行程序的设计,搞了一早上终于弄清楚了在Windows下的MPI并行程序运行环境的搭建。
什么是MPI?
MPI(Message Passing Interface),消息传递编程接口,是全球工业、科研和政府部联合建立的一个消息传递编程标准。是目前最为通用的并行编程方式。MPI标准中定了一组函数接口,用于进程间的消息传递。函数的具体实现由各计算机厂商来完成,然这些都是要付费的;也有一些免费的通用MPI系统,比较著名的就是MPICH(http://www.mcs.anl.gov/research/projects/mpich2/)和LAM MPI(http://www.lam-pi.org)。[1]
单来说,要让你的单个PC机能运行并行程序的运行,就需要有MPI的运行环境。而PICH几乎支持所有的Linux/Unix和Windows,可以在单台PC或工作站上模拟MPI并行程,也可以在SMP系统或者机群环境上建立实用的并行计算环境。
这里将在一台双核的PC上,利用虚拟机及MPICH2建立一个由3台PC节点构成的一个机群行计算环境。
软硬件准备
硬件:一台普通PC,当然硬盘和内存越大越好,我是用的是160G的硬盘,1G的内存。
软件:
- VMware Workstation 6.0,在VM上虚拟两个PC,与物理主机构成3个节点的机群可以安装一个虚拟PC,然后实用VM的克隆功能。
- Microsoft Windows XP Pro:每个节点的操作系统;
- Microsoft .NET Framework 2.0:每个节点必须的环境;
- vcredist_x86.exe(VC8运行库):在安装MPICH2时需要,安装时会提示Visual C++2005 sp1的提示,安装vcredist_x86.exe后,就可以正常安装MPICH2了;
- mpich2-1.0.6p1-win32-ia32.msi:MPICH2安装程序,可到http://www.mcs.anl.gov/research/projects/mpich2/的Downloads中下载。
环境搭建
在每台机器上均安装上Microsoft .NET Framework2.0和MPICH2。MPICH2的默认安装路在C:\Program Files\MPICH2,将MPICH2\bin加入系统环境变量的Path中。
每个节点中新建一个用户,该用户应该具有管理员权限。我这里新建了用户mpi,密为111,隶属Administrators组。
在每个节点新建相同的目录,来存放并行程序,该目录都应该在相同的位置。我这里的C:\mpitest。
单机测试
首先需要注册一个用户,运行MPICH2的wmpiregister.exe,在开始->所有成程序-MPICH2中可以找到。将上一步中的用户名和密码在这里进行注册即可。
后可以采用MPICH2提供的GUI界面进行测试,可以在在开始->所有成程序->MPICH2中到wmpiexec.exe;在MPICH2的examples下有个测试程序cpi.exe,选择后执行即可。
可以到命令行方式执行命令:mpiexec -n 2 C:\Program Files\MPICH2examples\cpi.exe即可。命令中-n是参数,后面的2表示有两个节点并行计算。
联机测试
这里将在具有3个节点的PC集群上测试。首先将cpi.exe程序拷贝到每个节点的C:\mpitest目录中,然后执行命令:
mpiexec -hosts 3 210.45.*.* 210.45.*.* 210.45.*.* C:\mpitest\cpi.exe

注意:在联机测试时将XP的防火墙关闭。
与VC++ 6.0集成开发环境
有了MPI的运行环境后,还需要一个MPI的开发环境。MPICH2可以和VC开发环境集成,集的方法很简单,将MPICH2的Include和lib添加到VC的Directories的Include files和ibary files中即可。同时在Project Settings中将mpi.lib添加到Object/library modules中,然后就可以采用VC++ 6.0开发MPI的并行程序了。
[1] 张林波,尺学斌等.并行计算导论. 北京:清华大学出版社,2006年7月
snigoal,HUST,Wuhan,China
Linux集群的安装与并行计算
1.linux安装
安装过程就不多说了。需要注意的是安装时,如果机群不与外界联网则可以不考虑安全
方面的因素而把rsh选为可信赖的服务,注意安装相应的软件包;如果还要与外界保持联
网,出于安全需要应把ssh选为可信赖的服务。安装以后,应该保证各节点之间能够用s
sh相互登录。每个节点的sshd都应该能正常提供服务。主机名:node1...noden (我所构
建的系统n=2)
2.创建NFS服务
在服务器节点public目录下建立mpi目录,并将其配置成NFS服务器,在/etc/exports文
件中加入一行:
/public/mpi node1(rw) node2(rw)
在客户端节点的/etc/fstab文件中增加一行:
sever :/pubilc/mpi nfs rw , bg , soft 0 0
将/public/mpi这个目录从服务器节点输出,并装载在各客户端,从而便于在各节点间分
发任务
3.修改/etc/hosts文件,将所有节点名称极其ip地址填入。例如:
127.0.0.1
localhost.localdomain localhost
192.168.1.1
node1
192.168.1.2
node2
…………………….
每个节点都进行类似的配置。这样做的目的是使节点之间能够通过node1 ... noden的名
称相互访问。你可以通过ping noden 或 ssh noden进行测试。
4.修改(或创建)/etc/hosts.equiv文件
将所有你允许访问本机进行mpi计算的机器名填入,一行一个机器名。这一步是为了使节
点对其它的节点放权。
例如,我的node1是我用于启动mpi集群计算的机器,其他的节点是参与计算者,在node
1的/etc/hosts.equiv文件是这样的:
node1 #给自己放权,这样在只有一台机器时也可以模拟并行计算环境
node2
.....
noden
在node2...noden的/etc/hosts.equiv文件:
node1 #对node1放权
node2
......
noden
5.修改~/.bash_profile文件
首先决定一个用于启动集群计算的用户名,不提倡使用root进行集群计算。这里在每个
节点上建立新用户chief,他们的主目录都是/home/chief,必须采用同样的密码,将来
的计算程序必须放在相同的路径上。譬如你的程序为:fpi.f和a.out,则必须把a.out放
在同样的路境内,比如~/mpirun/a.out,每个节点都是如此。 修改~/.bash_profile文
件,主要是加入下列几行脚本:
export PATH=$PATH:/usr/local/mpich/bin
export MPI_USEP4SSPORT=yes
export MPI_P4SSPORT=22
export P4_RSHCOMMAND=rsh 或ssh
这里我们预定了将来mpich的运行环境安装在目录/usr/local/mpich下面。其余的三个变
量是用来通知mpi运行环境采用rsh(或ssh)来作为远程shell。linux的运行环境到此就配
置完毕了。
6.配置rsh 或ssh
对于采用rsh来作为远程shell运行MPI的用户只要保证在各个节点上都具有相同的用户,
并把这一用户的密码设为空密码就可以运行了。
若采用ssh作为远程shell则按如下配置:以你设定的用于启动mpi计算的用户登录,运行
ssh-keygen,这将生成一个私有/公开密钥对,分别存放在~/.ssh/identity和~/.ssh/i
dentity.pub文件内。然后进行访问授权,运行:
cp ~/.ssh/identity.pub ~/.ssh/authorized_keys
chmod go-rwx ~/.ssh/authorized_keys
ssh-agent $SHELL
ssh-add
在每个节点重复一遍。试着在某一节点上登录其它节点,ssh noden,则在.ssh/下生成
一个known_hosts2文件,里面放着访问该主机的密钥,把所有密钥收集起来,在各个节
点上作同样的拷贝。这样做的目的是使各节点相互之间访问无需输入密码。
7.开启各项必需的服务
如果是以根用户root 登陆系统的则可以用ntsysv命令启动ntsysv实用程序。ntsysv 实
用程序允许使用简单的菜单界面启动或关闭各种运行等级的服务。在其中我们选择开启
rsh ,rlogin,telnet等。也可以关闭一些服务以加快启动速度如sendmail。
如果是使用su命令转为root用户的则很可能运行ntsysv并不出现ntsysvs实用程序。此时
可以直接去修改/etc/xinetd.d下的rlogin, rsh ,telenet的设置。用vi编辑器打开xin
etd.d:
vi /etc/xinetd.d
则可看到如下所示的配置文件:
关于rsh的设置如下
# default: off
# description: The rshd server is the server for the rcmd(3) routine and, \
# consequently, for the rsh(1) program. The server provides \
# remote execution facilities with authentication based on \
# privileged port numbers from trusted hosts.
service shell
{
disable = yes
socket_type = stream
wait = no
user = root
log_on_success += USERID
log_on_failure += USERID
server = /usr/sbin/in.rshd
}
关于rlogin的设置如下
# default: off
# description: rlogind is the server for the rlogin(1) program. The server
\
# provides a remote login facility with authentication based on \
# privileged port numbers from trusted hosts.
service login
{
disable = yes
socket_type = stream
wait = no
user = root
log_on_success += USERID
log_on_failure += USERID
server = /usr/sbin/in.rlogind
}
关于telnet的设置如下
# default: off
# description: The telnet server serves telnet sessions; it uses \
# unencrypted username/password pairs for authentication.
service telnet
{
disable = yes
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
}
所有这些服务在安装完系统之后都是默认为禁用的,要进行修改来打开这些服务。如要
通过修改启动telenet则就需要改disable = yes为disable = no。对于其他的服务的启
动的修改与之相同。若启动这些服务则只需要简单执行:
#/etc/rc.d/init.d/xinetd restart
或重起计算机就可以使所作的更改生效。
C.在服务器节点编译、安装Fortran90编译器
先将Fortran90(我用的是Intel的)编译器拷贝至/tmp下,然后用tar xvfz fortran90
.tar.gzj解压缩。运行
./install
选择你所要安装的类型,如果你的机器是基于IA-32,就选择1。如果你的机器是基于It
anium(TM)-based system就选择2。如果要停止安装,就选择X。选择过之后安回车进入
下一步,此时会要求你选择 :
1. Intel(R) Fortran Complier for 32-bit Applications,Version 6.0 build 02031
2Z
2. 2.Linux Applicationdebugger for 32-bit Applications,Version 6.0 buid 2002
0
x. Exit
按顺序选择1,2 。最后选择X 完成安装并退出。在选择完1之后会要求你看版权声明,
输入Accept继续安装。默认的安装路径为/opt/intel,选择默认路径按Enter继续。选2之
后的情形与1相同。如果不注册可以用90天。
D. 在服务器节点编译、安装mpich 1.2.3
将mpich 1.2.4:ftp://ftp.mcs.anl.gov/pub/mpi/mpich.tar.gz。拷贝到一个临时目录
下,放在/tmp下了。用root用户登录进行编译安装。
1. 对mpich的安装进行预处理:
首先,用tar xvfz mpich.tar.gz解压。生成mpich-1.2.3目录。切换到mpich-1.2.3目录
。运行预处理:
./configure --prefix=/usr/local/mpi --对应于用rsh进行远程登录的系统
./configure --prefix=/usr/local/mpi -rsh=ssh --对应于用ssh进行远程登录的
系统
这里我们通知编译系统mpich的安装位置为/usr/local/mpich,运行环境的远程shell为
rsh或ssh。
2.编译:
make
运行此命令后mpich软件包会自动编译形成MPI系统的函数库,需要数分钟的时间,根据
不同的机器可以略有不同。
3.安装:
make install
运行此命令可以将MPI软件包安装到由./configure --prefix选项指定MPICH安装目录即
/usr/local/mpi
修改文件/usr/local/mpi/share/util/machines/machines.LINUX。如下:
node1
ndoe2
......
ndoen
这一步是通知mpich运行环境都有那些节点可供集群计算。每个节点都这样输入一遍。
4.测试安装是否正确
在/usr/local/mpi/examples/basics下编译cpi.c:
make cpi
用命令行:
../../bin/mpirun -np 2 cp
运行。将会获得如下信息。
Processes 0 on node1
Processes 1 on node2
……..………………..
如果能正常运行即证明mpich软件包安装完全成功。
snigoal,HUST,Wuhan,China
Linux内核有多少代码是来自华人的贡献?
统计可以看出绝大多数贡献来自于一些大公司,比如 Redhat、Intel、IBM、SUN、Google、Analog、MontaVista等。而更该被记住的是那些标记为 Hobbyists 也即不是供职于大公司而纯粹是出于个人兴趣爱好的贡献者,比如 ZhangLe。
Linux 内核有多少代码是来自华人的贡献?这里有一个统计 http://www.remword.com/kps_result/china.php
所有的统计基于 KPS (Kernel Patch Statistic),这里的 Chinese 指的是华人,并不限定国籍是中国人。
http://www.remword.com/kps_result/all_china.html 页面统计了2005年4月16日至现在华人贡献的补丁数据。可以看到, 在这段时间内有219位华人一共贡献了 5021 个补丁。
按照补丁数量排序,排第一的是 Herbert xu,一共贡献了 735 个补下。herbert xu目前供职于 Redhat,曾经是 Debian Developer。
而按照补丁行数排序,排第一的是 Bryan Wu,贡献了 101637 行补丁。Bryan Wu供职于 Analog,和他的团队在维护 Blackfin 支持的相关代码。
另外还有一些熟悉的名字,比如开发 readahead 预读补丁的吴峰光(貌似目前在 Intel),来自 Intel 上海开源技术中心的王振宇,来自西安邮电大学的学生孔建军。
从这个统计可以看出绝大多数贡献来自于一些大公司,比如 Redhat、Intel、IBM、SUN、Google、Analog、MontaVista等。而更该被记住的是那些标记为 Hobbyists 也即不是供职于大公司而纯粹是出于个人兴趣爱好的贡献者,比如 ZhangLe。Zhangle 是一位 Gentoo Developer,一直在进行龙芯相关的开发工作。
还有太多的我就不认识啦,让我们记住他们的贡献。有了这么多的人贡献,GNU/Linux 才越来越好,越来越强。
www.mobileuncle.com
snigoal,HUST,Wuhan,China



