2010年11月

下载地址(需免费注册并登陆才可以下载):http://www.vmlite.com/index.php/products/vboot/download/download
说明:http://www.vmlite.com/vboot/instructions.html
其实该软件可以让大部分系统安装在vhd镜像文件,vboot核心功能基于grub,很早就听说了grub已经的实现了通过映射光盘镜像和软盘镜像的方式来安装系统,一直没有更方便的管理工具,而vboot就应运而生了,以下就是试用过程。
首先下载vboot,解压到C盘,拷贝C:vbootvbootldr和vbootldr.mbr到C盘根目录
修改boot.ini,增加一行

C:\vbootldr.mbr=VBOOT

输入以下命令创建一个20G容量的vhd文件

c:\vboot\tools\x86\vbootctl.exe createhd c:\winxp.vhd /size 20

拷贝XP的ISO到C盘根目录,并改名为winxp-sp2.iso
注:改成这个名字是为了免去更改vboot的配置文件,偷了个懒,嘿嘿
重新启动计算机,开机选择VBOOT
然后选择xp install step1
之后和你插光盘安装XP一个步骤
在选择安装位置的时候,虚拟磁盘并不是C盘,不过不要担心,因为这个时候你的真实硬盘还存在的
重起以后,选择xp install step2
在这时候虚拟盘已经是C盘了(不过看不到,呵呵),等你装好系统后,选择XP VHD启动就可以啦
启动完后,就可以看到C盘已经是虚拟的20G盘,而原来的C盘已经变到后面了
接着试用了一下快照功能
在启动选择XP VHD的时候,按s就可以为当前系统创建一个快照
并且新创建一个文件,winxp-s1.vhd,值得注意的是,这个是winxp.vhd的差分盘,变化越多文件越大,开始时只有几百兆
有一点需要注意,一旦一个vhd有了一个快照,它本身就不能再用于启动了,但你可以通过这个vhd创建一个新的和它一样内容的快照来启动。
经过多台计算机的测试发现,并不是所有计算机都兼容,有些计算机在挂载iso安装系统的时候直接蓝屏了,有两种方法解决:
第一种方法,在运行正常的计算机上安装好vhd系统后,在vhd系统中进行封装,也就是像做完能ghost一样的步骤,之后关机拷贝该vhd文件到别的计算机上就可以正常运行了
第二种方法,在不兼容计算机上正常安装XP或者2003,手动添加硬件,指向C:\vboot\floppies\vboot-img\i386\vbootdsk.inf或C:\vboot\floppies\vboot-2k3-img\i386\vbootsmp.inf,然后用Win7的PE加载vhd文件拷贝已安装系统到vhd中即可。

今天日本同事和我说日本的邮件服务器(邮件服务器使用的是Postfix)无法发送给特定邮件域了,我登到服务器上看了一下,大致是收件方拒收了,错误日志如下:

connect to xxx.com[x.x.x.x]:25: Connection refused
 host xxx.com[x.x.x.x] refused to talk to me: 554- (RTR:SC) http://postmaster.info.aol.com/errors/554rtrsc.html 554 Connecting IP: x.x.x.x
 delivery temporarily suspended: host xxx.com[x.x.x.x] refused to talk to me: 421 4.7.1 [TS03] All messages from x.x.x.x will be permanently deferred; Retrying will NOT succeed. See http://postmaster.yahoo.com/421-ts03.html

基本上确定了,不是有人中毒,就是有帐户有弱口令被垃圾邮件者利用了
因为已经拒收信了,所以,直接去查看邮件队列

postqueue -p

可以看到大量垃圾邮件队列,从数量上很容易判断出问题帐号,马上对问题帐号进行修改密码或者暂时禁用,然后清除邮件队列中的垃圾邮件,以下是清除邮件队列中特定邮箱发出的邮件

mailq | awk "/test@test.com/ {print $1}" | tr -d "*" | xargs -n 1 postsuper -d

处理完毕后,等一段时间,如果对方仍然拒收的话,按照日志提供的网址去提交申请解封就可以了,如果是合作伙伴公司的话,最好直接申请加到白名单,这样比较省事,找垃圾邮件厂商申请的话,通常时间周期很长,而且得不到解决的可能性会非常大,我在国内的邮件服务器就曾经因为服务器IP在对方垃圾邮件规则的动态IP范围而导致邮件被拒收,最后只能通过改邮件发送服务器的IP才解决的。

新买了个带USB接口的无线路由器(中兴H118B),终于可以尝试把PXE网络启动服务全装在路由器上了,以前只是路由器上配置dhcp指向局域网的一台TFTP,现在可以完全跑在路由器上了。
方法很简单,刷机成openwrt,这个就不说了,太简单了,我刷的是http://downloads.openwrt.org/backfire/10.03/brcm-2.4/openwrt-brcm-2.4-squashfs.trx
如果只需要传统的pxe,也就是dhcp+tftp的话,openwrt全都自带,ssh登录进路由器,输入以下指令即可

 uci set dhcp.@dnsmasq[0].enable_tftp=1
 uci set dhcp.@dnsmasq[0].tftp_root=/mnt/usb/tftp
 uci set dhcp.@dnsmasq[0].dhcp_boot=/mnt/usb/tftp/gpxelinux.0
 uci commit dhcp

注:/mnt/usb/目录是我U盘的位置
由于我用gpxe,所以还加入了ftp的配置,这样可以网络启动通过ftp来传输引导文件

 #opkg install pure-ftpd
 #vi /etc/config/pure-ftpd #按下面进行修改
config pure-ftpd
 option port "21"
 option noanonymous "0"
 option chrooteveryone "0"
 option maxclientsperip "5"
 option maxclientsnumber "4"
 option peruserlimits "3:4"
 option umask "133:022"
 option authentication "unix"
 option enabled "1"
 #vi /etc/passwd #增加下面一行创建ftp匿名访问的账户
ftp:x:500:500:Linux User,,,:/mnt/usb/tftp:/bin/false

注:这里配置的ftp为开发匿名访问,如果不需要匿名把option的noanonymous改成1就可以了

更多uci命令请参考http://wiki.openwrt.org/zh-cn/doc/uci

SVN用户多了之后管理会变得越来越繁琐,由于我有Windows域环境,于是考虑让SVN使用域用户认证。
当然SVN本身是没办法支持域认证的,我们要依赖Apache,Apache上众多模块可以满足我们的需求,本例中我们使用的均是官方提供的模块。
先下载需要的软件
Apache:在http://apache.freelamp.com//httpd/binaries/win32/ 下面有最新版本,这里我下载的是httpd-2.2.17-win32-x86-openssl-0.9.8o.msi
SVN服务端有很多,有兴趣的可以去http://subversion.apache.org/packages.html 找自己喜欢的,我下载的是http://sourceforge.net/projects/win32svn/上的Setup-Subversion-1.6.13.msi
好了,经过N个下一步以后,重启使svn的path目录生效,接下来我们开始配置
首先确定一下SVN主目录,如D:SVN,我们所有SVN库都放到这个文件夹下
然后先创建一个库用于配置测试

cd d:\svn
svnadmin create test

接下来拷贝SVN的模块文件(mod_authz_svn.so和mod_dav_svn.so在Subversionbin目录下)到Apache的modules文件夹下
修改Apache的conf/http.conf文件
增加模块,找到

#LoadModule dav_module modules/mod_dav.so
#LoadModule dav_fs_module modules/mod_dav_fs.so

修改为

LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so

增加svn和域认证的配置,这里我们使用svn为主目录做配置,不单独配置库的目录

 DAV svn
 # SVNPath c:/subversion/repositories/repo1
 SVNParentPath d:/svn
 SVNListparentPath on
 Order allow,deny
 Allow from all
 AuthType Basic
 AuthBasicProvider ldap
 AuthzLDAPAuthoritative off
 AuthName "SVN Server"
 AuthzSVNAccessFile d:/svn/svn.authz
 AuthLDAPURL "ldap://dc.local/DC=dc,DC=local?sAMAccountName?sub?(objectClass=*)"
 AuthLDAPBindDN "CN=apache_bind,CN=users,DC=example,DC=com"
 AuthLDAPBindPassword "password"
 #AuthLDAPFollowReferrals off
 AuthLDAPGroupAttributeIsDN on
 AuthLDAPGroupAttribute member
 #SSLRequireSSL
 #require ldap-group CN=svnusers,CN=Users,DC=example,DC=com
 require valid-user

根据自己实际情况在进行修改,然后再创建d:/svn/svn.authz文件,这里为了测试方便,所有域用户都可以读写,生产应用的话根据自己需要设置权限即可

 [/]
 * = rw