2008年8月19日星期二

在64位机器上安装CMSSW

安装framework:
tcsh
setenv VO_CMS_SW_DIR $PWD
setenv SCRAM_ARCH slc4_ia32_gcc345
setenv LANG "C"
wget -O $VO_CMS_SW_DIR/bootstrap.sh http://cmsrep.cern.ch/cmssw/cms/bootstrap.sh
mkdir /tmp/$USER
sh -x $VO_CMS_SW_DIR/bootstrap.sh setup -path $VO_CMS_SW_DIR -arch $SCRAM_ARCH >& $VO_CMS_SW_DIR/bootstrap_$SCRAM_ARCH.log
source $VO_CMS_SW_DIR/$SCRAM_ARCH/external/apt/0.5.15lorg3.2-CMS19c/etc/profile.d/init.csh
apt-get update
apt-get install cms+cmssw+CMSSW_2_0_0_pre8
创建工作环境:
mkdir cms_work
source cmsset_default.sh
eval `scramv1 runtime -sh`
scramv1 list看一下可用的cmssw版本
scram p CMSSW CMSSW_x_y_z
go to the src directory and create a subdirectory and cd into it
Run mktsel
Edit the code
修改config/Buildfile.xml,参见https://twiki.cern.ch/twiki/bin/view/CMS/HamburgWikiComputingLocal#Compiling_CMSSW_with_the_slc3_Ar
Compile using scram b(之前需要先修改buildfile添加一些依赖关系,比如root)
Add gSystem->Load("/FULL/path/to/libNameOfYourSelector.so") to your rootlogon.C
in ROOT, connect to PROOF and then run chain->SetProof(); chain->Process("NameOfYourSelector")

2008年8月3日星期日

安装MPICH以及Lattice QCD测试环境

A: 我的笔记本,32位,fedora9,一个双核cpu B: DESY的测试机器hpbl1 64位 SL5 2个4核cpu


1.安装MPICH,我基本是按照这上面做的
http://hi.baidu.com/motioo/blog/item/a2a73bd02b2bd08da0ec9cc8.html

2.从这里下载BenchMZ.tar.gz,照着readme的说法往下做
http://www-zeuthen.desy.de/~yangsuli/

3.Make中遇到的问题:

/bin/mpicc不存在: 设置环境变量MPIR_HOME

cc1: 错误:无法识别的命令行选项“-fno-force-mem” -fno-force-mem这个选项在gcc4.3已经被remove了,在4.3下面no-op. 在fc下重新装了一个gcc3.4.6
配置选项:../configure --prefix=/usr/local/gcc34 --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enable-threads=posix --disable-checking --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-java-awt=gtk
这是DESY机器gcc的标准配置,我只是改了prefix,另外把--host=x86_64_redhat_linux删掉了

check1.c:1: error: CPU you selected does not support x86-64 instruction set
check1.c:1: error: -malign-double makes no sense in the 64bit mode
Makefile里指定了只有32位机器才能用的编译选项...i586啥的...没啥说的,只能改
但是到底怎么改,必须有一个统一的说法。 还有就是天知道源代码里有没有针对32位机器的优化...

4. 执行过程中遇到的问题
Actual CPU 和 NPROC数目不符....他把CPU GRID的规模指定在源代码里了...(include/global.h)
在我自己的笔记本上是先用mpirun -n 32虚拟了一个32core的环境...估计还得改原代码...sigh

TODO:
查查互联网上有人做lattice QCD benchmarking的结果,这老兄写的BenchMZ也太不靠谱了...
看看他打的这个包跟人家真正给的做计算的代码有哪些差别,跟supervisor讨论一个合理的编译flag出来

2008年7月14日星期一

[转载]VirtualBox网络配置详解

作者:leemars


下面简单介绍一下Test-bed Environment:

Host : 偶的本本
OS : Arch Linux (Kernel Version 2.6.20) 已安装uml_utilities(包含tunctl工具)和bridge-utils(包含brctl工具)两个包.
Username : leemars
LAN IP : 192.168.1.106/24
Interface : ath0

Guest : 偶的本本上的一个虚拟机
OS : Win2003
Host Interface : tap0

Non-Host : 偶的台式机
OS : WinXP
LAN IP : 192.168.1.120/24

Wireless Router:
LAN IP : 192.168.1.1/24 Gateway
WAN IP : 172.18.60.55/24 绑定MAC
Router开启了DHCP

Network Environment :
Non-Host直接接在无线路由上, Host通过无线网卡与无线路由连接. 无线路由开启了DHCP功能.

===================================

最简单的方案 : NAT(by VirtualBox)

Host :
直接使用VirtualBox提供的NAT功能.

Guest :
网卡设置为使用DHCP.

Guest -> WAN :
由VirtualBox的NAT提供WAN的访问服务.

Guest -> Host :
需要注意的是, 如果直接访问Guest拿到的网关IP, 会发现这个IP似乎是Host. 不过事实上不能直接访问网关IP来访问Host. 因为这个IP是由VirtualBox负责的, 只实现了NAT的功能, 其他的一些功能并不能正常运行(如FTP). 如果要访问Host, 应该访问Host的真实IP.

Host -> Guest :
不可访问. 虽然VirtualBox的NAT功能中包括了Port Forwarding的功能, 但截至到1.3.6 Snapshot, 这个功能仍没有出现在GUI中. 不过在OSE Version中已经可以使用这个功能. 通过Port Forwarding可以实现部分的向内访问.

VirtualBox NAT没有什么玩法了. 下面的方案都是使用VirtualBox的Host Interface功能.

-----------------------------------------------------------------------------
方案一 : NAT(by Linux) + Route

Host :
#echo 1 > /proc/sys/net/ipv4/ip_forward #打开转发功能
#iptables -t nat -A POSTROUTING -j MASQUERADE #利用iptables完成NAT功能

#chmod 0666 /dev/net/tun #设置访问权限
#tunctl -t tap0 -u leemars #建立一个tap设备, 名字为tap0, 所有者为leemars
#ifconfig tap0 up #激活tap0
#ifconfig tap0 10.10.10.1 netmask 255.255.255.0 #为tap0指定IP和网段, 为10.10.10.1/24.

Guest :
网卡设置如下:
IP : 10.10.10.10
Netmask : 255.255.255.0
Gateway : 10.10.10.1

Guest -> WAN :
由Linux的iptables完成NAT功能, 提供WAN的访问服务.

Guest -> Host :
10.10.10.1是真实的Host. Guest对Host的任何访问都可以通过访问10.10.10.1来完成.

Host -> Guest :
10.10.10.10是真实的Guest. Host对Guest的任何访问都可以通过访问10.10.10.10来完成.

Non-Host -> Guest :
因为Guest是在Host的NAT之后的一个私有子网中, 所以直接访问是不行的. 不过可以通过iptables来完成Port Forwarding, 实现部分的向内访问.

-----------------------------------------------------------------------------

方案二 : Transparent Bridge (Layer 2)

在我的机器上测试下来的结果很遗憾, 无线网卡似乎不能配合Bridge工作. 建好Bridge之后, Guest只能访问Host, 连网关都访问不到. 所以我改用有线网卡来进行测试, 有线网卡为eth0, IP地址同ath0.

Host :

#chmod 0666 /dev/net/tun #设置访问权限
#tunctl -t tap0 -u leemars #建立一个tap设备, 名字为tap0, 所有者为leemars

#ifconfig eth0 0.0.0.0 promisc #使eth0进入promiscuous模式
#ifconfig tap0 0.0.0.0 promisc #使tap0进入promiscuous模式
#brctl addbr br0 #增加一个网桥
#brctl addif br0 eth0 #将eth0加入网桥
#ifconfig eth0 up #激活eth0
#dhclient br0 #为br0设置IP地址
#brctl addif br0 tap0 #将tap0加入网桥
#ifconfig tap0 up #激活tap0

Guest :
网卡设置为DHCP. 或者在设置为Host的Subnet中的一个IP地址, 如下例:
IP : 192.168.1.201
Netmask : 255.255.255.0
Gateway : 192.168.1.1

Guest -> WAN :
由网关提供WAN的访问服务.

Guest -> Host :
直接访问Host的IP地址即可.

Host -> Guest :
直接访问Guest的IP地址即可.

Non-Host -> Guest :
直接访问Guest的IP地址即可.
(由于建立了eth0和tap0的Bridge, Non-Host的ARP包被eth0接收到后, 被Brideg转发至tap0上, 数据链路得以建立.)

-----------------------------------------------------------------------------

方案三 : Transparent IP (Layer 3) proxy ARP bridge (by parprouted)

Host :
#echo 1 > /proc/sys/net/ipv4/ip_forward #打开转发功能

#chmod 0666 /dev/net/tun #设置访问权限
#tunctl -t tap0 -u leemars #建立一个tap设备, 名字为tap0, 所有者为leemars
#ip link set tap0 up #激活tap0
#ip addr add 169.1.1.1/32 dev tap0 #为tap0任意指定一个私有地址
#parprouted [-d] ath0 tap0 #启动parprouted监听ath0和tap0. -d参数为Debug模式

Guest :
网卡设置如下:
IP : 192.168.1.201
Netmask : 255.255.255.0
Gateway : 192.168.1.1

Guest -> WAN :
由网关来提供WAN的访问服务.

Guest -> Host :
直接访问Host的IP地址即可.

Host -> Guest :
直接访问Guest的IP地址即可.

Non-Host -> Guest :
直接访问Guest的IP地址即可.

Troubleshooting:
这个parprouted软件有时会出现无法连通的情况. 这时可以尝试更换Guest的IP地址来解决问题. 这个貌似是parprouted软件的BUG.

-----------------------------------------------------------------------------

方案四 : ARP Proxy(by Linux) + Route

Host :
#echo 1 > /proc/sys/net/ipv4/ip_forward #打开转发功能

#chmod 0666 /dev/net/tun #设置访问权限
#tunctl -t tap0 -u leemars #建立一个tap设备, 名字为tap0, 所有者为leemars
#ip link set tap0 up #激活tap0
#route add -host 192.168.1.201 dev tap0 #增加一个路由, 将192.168.1.201定向到tap0
#echo 1 > /proc/sys/net/ipv4/conf/ath0/proxy_arp #打开ath0上的ARP Proxy
#echo 1 > /proc/sys/net/ipv4/conf/tap0/proxy_arp #打开tap0上的ARP Proxy

Guest :
网卡设置如下:
IP : 192.168.1.201
Netmask : 255.255.255.0
Gateway : 192.168.1.1

Guest -> WAN :
由网关来提供WAN的访问服务.

Guest -> Host :
直接访问Host的IP地址即可.

Host -> Guest :
直接访问Guest的IP地址即可.

Non-Host -> Guest :
直接访问Guest的IP地址即可.

2008年2月28日星期四

Dell D630下安装fedora 8

主要是源的配置,以及声卡,无线网卡的驱动
显示效果我觉得还可以忍,就不打算去找显卡驱动了.....

1.教育网源的设置
开了国际网了,f8自带的repo都可以保留下来
速度还是不错的
但是官方源没有mplayer,unrar之类的东西,所以还是需要stju的源
这个源比较小,依赖关系解决得很糟糕
优点可能是中国人比较喜欢用的软件包它那有吧
在/etc/yum.repo.d下加一个repo文件就好
内容大致象这样
[stjuupdates]
name=stju updates
baseurl=ftp://ftp.sjtu.edu.cn/fedora/linux/updates/$releasever/$basearch/
enabled=1
gpgcheck=0
[stjufedora]
name=Fedora $releasever - $basearch
baseurl=ftp://ftp.sjtu.edu.cn/fedora/linux/releases/$releasever/Everything/$basearch/os/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora
file:///etc/pki/rpm-gpg/RPM-GPG-KEY
照着站点的配置文件抄就行,但是注意最上面的方括号里的东西不要跟别的repo重复了

2.声卡
2.6几以上的内核就直接支持D630的声卡,恩
modprobe一下相应的模块就好,不知道probe什么模块可以看/proc/asound下的信息

3.无线网卡
参考这篇文章http://www.5dlinux.com/article/1/2007/linux_9888_2.html
我之前用的就是这个,这次不知道为啥不行.....
回头再研究研究,估计是下的文件有损坏了
4.vpn和root
没啥可说的,vpn照着Loudly的帖子配
root下下来./configuer,make,make install就行了
make的时候记得加j2