Re: debian can not update from 1.9.1 to 1.9.3
stefan <[email protected]>
| Newsgroups | gmane.linux.cluster.ssic.user |
|---|---|
| Message-ID | <[email protected]> |
Hello John,
> Hi Stefan. Could you please show me:
no problem :)
>
> 1. the output of the "blkid" command.
node1:~# blkid
/dev/hdc: TYPE="iso9660"
/dev/sda1: UUID="5ba7b585-b484-4a6d-98e4-e56d295f20df" SEC_TYPE="ext3"
TYPE="ext2" LABEL="/boot"
/dev/sda5: LABEL="/" UUID="f5636adf-3a20-466e-82fc-9095dab6af91"
SEC_TYPE="ext3" TYPE="ext2"
/dev/sda6: TYPE="swap"
/dev/drbd0: LABEL="/" UUID="f5636adf-3a20-466e-82fc-9095dab6af91"
SEC_TYPE="ext2" TYPE="ext3"
> 2. the output of:
>
> sh -x /sbin/ssi-ksync
node1:~# sh -x /sbin/ssi-ksync
+ clusternode_num
++ id -u
+ '[' 0 = 0 ']'
++ perl -I /cluster/lib -e 'use ssi_distro; print $bootloaderconf'
+ config=/boot/grub/menu.lst
+ clustertab=/etc/clustertab
++ perl -I /cluster/lib -e 'use ssi_distro; print $distro'
+ distro=debian
+ '[' 0 -gt 0 ']'
+ '[' -z '' ']'
+ echo -n 'Synchronizing network boot images: '
Synchronizing network boot images: +
ssi-ksync-network -c /boot/grub/menu.lst
+ echo succeeded
succeeded
+ '[' xdebian = xdebian ']'
+ '[' -f /etc/init.d/dhcp3-server ']'
+ invoke-rc.d dhcp3-server restart
Stopping DHCP server: dhcpd3.
Starting DHCP server: dhcpd3.
+ config=/boot/grub/menu.lst
+ '[' '!' -r /boot/grub/menu.lst ']'
++ grep -E '^[[:space:]]*(kernel|initrd)[[:space:]]' /boot/grub/menu.lst
++ awk '{print $2}'
++ sort -u
+ files=/initrd.img-2.4.27-3-386
/initrd.img-2.6.10-ssi-686-smp
/initrd.img-2.6.11-ssi-686-smp
/initrd.img-2.6.11-ssi-8k-686-smp
/vmlinuz-2.4.27-3-386
/vmlinuz-2.6.10-ssi-686-smp
/vmlinuz-2.6.11-ssi-686-smp
/vmlinuz-2.6.11-ssi-8k-686-smp
+ '[' -z '/initrd.img-2.4.27-3-386
/initrd.img-2.6.10-ssi-686-smp
/initrd.img-2.6.11-ssi-686-smp
/initrd.img-2.6.11-ssi-8k-686-smp
/vmlinuz-2.4.27-3-386
/vmlinuz-2.6.10-ssi-686-smp
/vmlinuz-2.6.11-ssi-686-smp
/vmlinuz-2.6.11-ssi-8k-686-smp' ']'
+ '[' debian = suse ']'
+ grubfiles=/boot/grub/*
+
echo /initrd.img-2.4.27-3-386 /initrd.img-2.6.10-ssi-686-smp /initrd.img-2.6.11-ssi-686-smp /initrd.img-2.6.11-ssi-8k-686-smp /vmlinuz-2.4.27-3-386 /vmlinuz-2.6.10-ssi-686-smp /vmlinuz-2.6.11-ssi-686-smp /vmlinuz-2.6.11-ssi-8k-686-smp
+ cut -f 1 -d ' '
+ sed 's/^\/\/*/\//'
+ grep '^/boot/'
+ '[' 1 -eq 0 ']'
+ src=/boot
++ echo /boot/grub/device.map
++ sed 's/^\/\/*boot//'
+ files=/initrd.img-2.4.27-3-386
/initrd.img-2.6.10-ssi-686-smp
/initrd.img-2.6.11-ssi-686-smp
/initrd.img-2.6.11-ssi-8k-686-smp
/vmlinuz-2.4.27-3-386
/vmlinuz-2.6.10-ssi-686-smp
/vmlinuz-2.6.11-ssi-686-smp
/vmlinuz-2.6.11-ssi-8k-686-smp /grub/device.map
++ echo /boot/grub/e2fs_stage1_5
++ sed 's/^\/\/*boot//'
+ files=/initrd.img-2.4.27-3-386
/initrd.img-2.6.10-ssi-686-smp
/initrd.img-2.6.11-ssi-686-smp
/initrd.img-2.6.11-ssi-8k-686-smp
/vmlinuz-2.4.27-3-386
/vmlinuz-2.6.10-ssi-686-smp
/vmlinuz-2.6.11-ssi-686-smp
/vmlinuz-2.6.11-ssi-8k-686-smp /grub/device.map /grub/e2fs_stage1_5
++ echo /boot/grub/fat_stage1_5
++ sed 's/^\/\/*boot//'
+ files=/initrd.img-2.4.27-3-386
/initrd.img-2.6.10-ssi-686-smp
/initrd.img-2.6.11-ssi-686-smp
/initrd.img-2.6.11-ssi-8k-686-smp
/vmlinuz-2.4.27-3-386
/vmlinuz-2.6.10-ssi-686-smp
/vmlinuz-2.6.11-ssi-686-smp
/vmlinuz-2.6.11-ssi-8k-686-smp /grub/device.map /grub/e2fs_stage1_5 /grub/fat_stage1_5
++ echo /boot/grub/jfs_stage1_5
++ sed 's/^\/\/*boot//'
+ files=/initrd.img-2.4.27-3-386
/initrd.img-2.6.10-ssi-686-smp
/initrd.img-2.6.11-ssi-686-smp
/initrd.img-2.6.11-ssi-8k-686-smp
/vmlinuz-2.4.27-3-386
/vmlinuz-2.6.10-ssi-686-smp
/vmlinuz-2.6.11-ssi-686-smp
/vmlinuz-2.6.11-ssi-8k-686-smp /grub/device.map /grub/e2fs_stage1_5 /grub/fat_stage1_5 /grub/jfs_stage1_5
++ echo /boot/grub/menu.lst
++ sed 's/^\/\/*boot//'
+ files=/initrd.img-2.4.27-3-386
/initrd.img-2.6.10-ssi-686-smp
/initrd.img-2.6.11-ssi-686-smp
/initrd.img-2.6.11-ssi-8k-686-smp
/vmlinuz-2.4.27-3-386
/vmlinuz-2.6.10-ssi-686-smp
/vmlinuz-2.6.11-ssi-686-smp
/vmlinuz-2.6.11-ssi-8k-686-smp /grub/device.map /grub/e2fs_stage1_5 /grub/fat_stage1_5 /grub/jfs_stage1_5 /grub/menu.lst
++ echo /boot/grub/menu.lst~
++ sed 's/^\/\/*boot//'
+ files=/initrd.img-2.4.27-3-386
/initrd.img-2.6.10-ssi-686-smp
/initrd.img-2.6.11-ssi-686-smp
/initrd.img-2.6.11-ssi-8k-686-smp
/vmlinuz-2.4.27-3-386
/vmlinuz-2.6.10-ssi-686-smp
/vmlinuz-2.6.11-ssi-686-smp
/vmlinuz-2.6.11-ssi-8k-686-smp /grub/device.map /grub/e2fs_stage1_5 /grub/fat_stage1_5 /grub/jfs_stage1_5 /grub/menu.lst /grub/menu.lst~
++ echo /boot/grub/minix_stage1_5
++ sed 's/^\/\/*boot//'
+ files=/initrd.img-2.4.27-3-386
/initrd.img-2.6.10-ssi-686-smp
/initrd.img-2.6.11-ssi-686-smp
/initrd.img-2.6.11-ssi-8k-686-smp
/vmlinuz-2.4.27-3-386
/vmlinuz-2.6.10-ssi-686-smp
/vmlinuz-2.6.11-ssi-686-smp
/vmlinuz-2.6.11-ssi-8k-686-smp /grub/device.map /grub/e2fs_stage1_5 /grub/fat_stage1_5 /grub/jfs_stage1_5 /grub/menu.lst /grub/menu.lst~ /grub/minix_stage1_5
++ echo /boot/grub/reiserfs_stage1_5
++ sed 's/^\/\/*boot//'
+ files=/initrd.img-2.4.27-3-386
/initrd.img-2.6.10-ssi-686-smp
/initrd.img-2.6.11-ssi-686-smp
/initrd.img-2.6.11-ssi-8k-686-smp
/vmlinuz-2.4.27-3-386
/vmlinuz-2.6.10-ssi-686-smp
/vmlinuz-2.6.11-ssi-686-smp
/vmlinuz-2.6.11-ssi-8k-686-smp /grub/device.map /grub/e2fs_stage1_5 /grub/fat_stage1_5 /grub/jfs_stage1_5 /grub/menu.lst /grub/menu.lst~ /grub/minix_stage1_5 /grub/reiserfs_stage1_5
++ echo /boot/grub/stage1
++ sed 's/^\/\/*boot//'
+ files=/initrd.img-2.4.27-3-386
/initrd.img-2.6.10-ssi-686-smp
/initrd.img-2.6.11-ssi-686-smp
/initrd.img-2.6.11-ssi-8k-686-smp
/vmlinuz-2.4.27-3-386
/vmlinuz-2.6.10-ssi-686-smp
/vmlinuz-2.6.11-ssi-686-smp
/vmlinuz-2.6.11-ssi-8k-686-smp /grub/device.map /grub/e2fs_stage1_5 /grub/fat_stage1_5 /grub/jfs_stage1_5 /grub/menu.lst /grub/menu.lst~ /grub/minix_stage1_5 /grub/reiserfs_stage1_5 /grub/stage1
++ echo /boot/grub/stage2
++ sed 's/^\/\/*boot//'
+ files=/initrd.img-2.4.27-3-386
/initrd.img-2.6.10-ssi-686-smp
/initrd.img-2.6.11-ssi-686-smp
/initrd.img-2.6.11-ssi-8k-686-smp
/vmlinuz-2.4.27-3-386
/vmlinuz-2.6.10-ssi-686-smp
/vmlinuz-2.6.11-ssi-686-smp
/vmlinuz-2.6.11-ssi-8k-686-smp /grub/device.map /grub/e2fs_stage1_5 /grub/fat_stage1_5 /grub/jfs_stage1_5 /grub/menu.lst /grub/menu.lst~ /grub/minix_stage1_5 /grub/reiserfs_stage1_5 /grub/stage1 /grub/stage2
++ echo /boot/grub/xfs_stage1_5
++ sed 's/^\/\/*boot//'
+ files=/initrd.img-2.4.27-3-386
/initrd.img-2.6.10-ssi-686-smp
/initrd.img-2.6.11-ssi-686-smp
/initrd.img-2.6.11-ssi-8k-686-smp
/vmlinuz-2.4.27-3-386
/vmlinuz-2.6.10-ssi-686-smp
/vmlinuz-2.6.11-ssi-686-smp
/vmlinuz-2.6.11-ssi-8k-686-smp /grub/device.map /grub/e2fs_stage1_5 /grub/fat_stage1_5 /grub/jfs_stage1_5 /grub/menu.lst /grub/menu.lst~ /grub/minix_stage1_5 /grub/reiserfs_stage1_5 /grub/stage1 /grub/stage2 /grub/xfs_stage1_5
+ '[' -r /boot/initrd.img-2.4.27-3-386 ']'
+ bootfiles= /initrd.img-2.4.27-3-386
+ '[' -r /boot/initrd.img-2.6.10-ssi-686-smp ']'
+ bootfiles= /initrd.img-2.4.27-3-386 /initrd.img-2.6.10-ssi-686-smp
+ '[' -r /boot/initrd.img-2.6.11-ssi-686-smp ']'
+
bootfiles= /initrd.img-2.4.27-3-386 /initrd.img-2.6.10-ssi-686-smp /initrd.img-2.6.11-ssi-686-smp
+ '[' -r /boot/initrd.img-2.6.11-ssi-8k-686-smp ']'
+
bootfiles= /initrd.img-2.4.27-3-386 /initrd.img-2.6.10-ssi-686-smp /initrd.img-2.6.11-ssi-686-smp /initrd.img-2.6.11-ssi-8k-686-smp
+ '[' -r /boot/vmlinuz-2.4.27-3-386 ']'
+
bootfiles= /initrd.img-2.4.27-3-386 /initrd.img-2.6.10-ssi-686-smp /initrd.img-2.6.11-ssi-686-smp /initrd.img-2.6.11-ssi-8k-686-smp /vmlinuz-2.4.27-3-386
+ '[' -r /boot/vmlinuz-2.6.10-ssi-686-smp ']'
+
bootfiles= /initrd.img-2.4.27-3-386 /initrd.img-2.6.10-ssi-686-smp /initrd.img-2.6.11-ssi-686-smp /initrd.img-2.6.11-ssi-8k-686-smp /vmlinuz-2.4.27-3-386 /vmlinuz-2.6.10-ssi-686-smp
+ '[' -r /boot/vmlinuz-2.6.11-ssi-686-smp ']'
+
bootfiles= /initrd.img-2.4.27-3-386 /initrd.img-2.6.10-ssi-686-smp /initrd.img-2.6.11-ssi-686-smp /initrd.img-2.6.11-ssi-8k-686-smp /vmlinuz-2.4.27-3-386 /vmlinuz-2.6.10-ssi-686-smp /vmlinuz-2.6.11-ssi-686-smp
+ '[' -r /boot/vmlinuz-2.6.11-ssi-8k-686-smp ']'
+
bootfiles= /initrd.img-2.4.27-3-386 /initrd.img-2.6.10-ssi-686-smp /initrd.img-2.6.11-ssi-686-smp /initrd.img-2.6.11-ssi-8k-686-smp /vmlinuz-2.4.27-3-386 /vmlinuz-2.6.10-ssi-686-smp /vmlinuz-2.6.11-ssi-686-smp /vmlinuz-2.6.11-ssi-8k-686-smp
+ '[' -r /boot/grub/device.map ']'
+
bootfiles= /initrd.img-2.4.27-3-386 /initrd.img-2.6.10-ssi-686-smp /initrd.img-2.6.11-ssi-686-smp /initrd.img-2.6.11-ssi-8k-686-smp /vmlinuz-2.4.27-3-386 /vmlinuz-2.6.10-ssi-686-smp /vmlinuz-2.6.11-ssi-686-smp /vmlinuz-2.6.11-ssi-8k-686-smp /grub/device.map
+ '[' -r /boot/grub/e2fs_stage1_5 ']'
+
bootfiles= /initrd.img-2.4.27-3-386 /initrd.img-2.6.10-ssi-686-smp /initrd.img-2.6.11-ssi-686-smp /initrd.img-2.6.11-ssi-8k-686-smp /vmlinuz-2.4.27-3-386 /vmlinuz-2.6.10-ssi-686-smp /vmlinuz-2.6.11-ssi-686-smp /vmlinuz-2.6.11-ssi-8k-686-smp /grub/device.map /grub/e2fs_stage1_5
+ '[' -r /boot/grub/fat_stage1_5 ']'
+
bootfiles= /initrd.img-2.4.27-3-386 /initrd.img-2.6.10-ssi-686-smp /initrd.img-2.6.11-ssi-686-smp /initrd.img-2.6.11-ssi-8k-686-smp /vmlinuz-2.4.27-3-386 /vmlinuz-2.6.10-ssi-686-smp /vmlinuz-2.6.11-ssi-686-smp /vmlinuz-2.6.11-ssi-8k-686-smp /grub/device.map /grub/e2fs_stage1_5 /grub/fat_stage1_5
+ '[' -r /boot/grub/jfs_stage1_5 ']'
+
bootfiles= /initrd.img-2.4.27-3-386 /initrd.img-2.6.10-ssi-686-smp /initrd.img-2.6.11-ssi-686-smp /initrd.img-2.6.11-ssi-8k-686-smp /vmlinuz-2.4.27-3-386 /vmlinuz-2.6.10-ssi-686-smp /vmlinuz-2.6.11-ssi-686-smp /vmlinuz-2.6.11-ssi-8k-686-smp /grub/device.map /grub/e2fs_stage1_5 /grub/fat_stage1_5 /grub/jfs_stage1_5
+ '[' -r /boot/grub/menu.lst ']'
+
bootfiles= /initrd.img-2.4.27-3-386 /initrd.img-2.6.10-ssi-686-smp /initrd.img-2.6.11-ssi-686-smp /initrd.img-2.6.11-ssi-8k-686-smp /vmlinuz-2.4.27-3-386 /vmlinuz-2.6.10-ssi-686-smp /vmlinuz-2.6.11-ssi-686-smp /vmlinuz-2.6.11-ssi-8k-686-smp /grub/device.map /grub/e2fs_stage1_5 /grub/fat_stage1_5 /grub/jfs_stage1_5 /grub/menu.lst
+ '[' -r /boot/grub/menu.lst~ ']'
+
bootfiles= /initrd.img-2.4.27-3-386 /initrd.img-2.6.10-ssi-686-smp /initrd.img-2.6.11-ssi-686-smp /initrd.img-2.6.11-ssi-8k-686-smp /vmlinuz-2.4.27-3-386 /vmlinuz-2.6.10-ssi-686-smp /vmlinuz-2.6.11-ssi-686-smp /vmlinuz-2.6.11-ssi-8k-686-smp /grub/device.map /grub/e2fs_stage1_5 /grub/fat_stage1_5 /grub/jfs_stage1_5 /grub/menu.lst /grub/menu.lst~
+ '[' -r /boot/grub/minix_stage1_5 ']'
+
bootfiles= /initrd.img-2.4.27-3-386 /initrd.img-2.6.10-ssi-686-smp /initrd.img-2.6.11-ssi-686-smp /initrd.img-2.6.11-ssi-8k-686-smp /vmlinuz-2.4.27-3-386 /vmlinuz-2.6.10-ssi-686-smp /vmlinuz-2.6.11-ssi-686-smp /vmlinuz-2.6.11-ssi-8k-686-smp /grub/device.map /grub/e2fs_stage1_5 /grub/fat_stage1_5 /grub/jfs_stage1_5 /grub/menu.lst /grub/menu.lst~ /grub/minix_stage1_5
+ '[' -r /boot/grub/reiserfs_stage1_5 ']'
+
bootfiles= /initrd.img-2.4.27-3-386 /initrd.img-2.6.10-ssi-686-smp /initrd.img-2.6.11-ssi-686-smp /initrd.img-2.6.11-ssi-8k-686-smp /vmlinuz-2.4.27-3-386 /vmlinuz-2.6.10-ssi-686-smp /vmlinuz-2.6.11-ssi-686-smp /vmlinuz-2.6.11-ssi-8k-686-smp /grub/device.map /grub/e2fs_stage1_5 /grub/fat_stage1_5 /grub/jfs_stage1_5 /grub/menu.lst /grub/menu.lst~ /grub/minix_stage1_5 /grub/reiserfs_stage1_5
+ '[' -r /boot/grub/stage1 ']'
+
bootfiles= /initrd.img-2.4.27-3-386 /initrd.img-2.6.10-ssi-686-smp /initrd.img-2.6.11-ssi-686-smp /initrd.img-2.6.11-ssi-8k-686-smp /vmlinuz-2.4.27-3-386 /vmlinuz-2.6.10-ssi-686-smp /vmlinuz-2.6.11-ssi-686-smp /vmlinuz-2.6.11-ssi-8k-686-smp /grub/device.map /grub/e2fs_stage1_5 /grub/fat_stage1_5 /grub/jfs_stage1_5 /grub/menu.lst /grub/menu.lst~ /grub/minix_stage1_5 /grub/reiserfs_stage1_5 /grub/stage1
+ '[' -r /boot/grub/stage2 ']'
+
bootfiles= /initrd.img-2.4.27-3-386 /initrd.img-2.6.10-ssi-686-smp /initrd.img-2.6.11-ssi-686-smp /initrd.img-2.6.11-ssi-8k-686-smp /vmlinuz-2.4.27-3-386 /vmlinuz-2.6.10-ssi-686-smp /vmlinuz-2.6.11-ssi-686-smp /vmlinuz-2.6.11-ssi-8k-686-smp /grub/device.map /grub/e2fs_stage1_5 /grub/fat_stage1_5 /grub/jfs_stage1_5 /grub/menu.lst /grub/menu.lst~ /grub/minix_stage1_5 /grub/reiserfs_stage1_5 /grub/stage1 /grub/stage2
+ '[' -r /boot/grub/xfs_stage1_5 ']'
+
bootfiles= /initrd.img-2.4.27-3-386 /initrd.img-2.6.10-ssi-686-smp /initrd.img-2.6.11-ssi-686-smp /initrd.img-2.6.11-ssi-8k-686-smp /vmlinuz-2.4.27-3-386 /vmlinuz-2.6.10-ssi-686-smp /vmlinuz-2.6.11-ssi-686-smp /vmlinuz-2.6.11-ssi-8k-686-smp /grub/device.map /grub/e2fs_stage1_5 /grub/fat_stage1_5 /grub/jfs_stage1_5 /grub/menu.lst /grub/menu.lst~ /grub/minix_stage1_5 /grub/reiserfs_stage1_5 /grub/stage1 /grub/stage2 /grub/xfs_stage1_5
++ mktemp /tmp/ssi-ksync.XXXXXX
+ boottab=/tmp/ssi-ksync.zJBGWs
+ '[' -z /tmp/ssi-ksync.zJBGWs ']'
+ mkdhcpd.conf -b -c /etc/clustertab
+ '[' 0 '!=' 0 ']'
++ tail +2 /tmp/ssi-ksync.zJBGWs
+ records=1/00:0C:29:C0:2A:0B/10.100.104.1:255.255.255.0//dev/sda1
2/00:0C:29:49:7A:C6/10.100.104.2:255.255.255.0//dev/sda1
++ clusternode_num
+ mynode=1
++ tail +2 /tmp/ssi-ksync.zJBGWs
++ grep '^1/'
+ myrec=1/00:0C:29:C0:2A:0B/10.100.104.1:255.255.255.0//dev/sda1
+ rm -f /tmp/ssi-ksync.zJBGWs
+ tmp=/tmp
+ '[' -h /tmp ']'
++ mktemp -d /tmp/ssi-ksync.mnt.XXXXXX
+ mnt=/tmp/ssi-ksync.mnt.G2iLMa
+ '[' -z /tmp/ssi-ksync.mnt.G2iLMa ']'
+ '[' -n '' ']'
+ echo 'Synchronizing local boot devices'
Synchronizing local boot devices
++ echo 1/00:0C:29:C0:2A:0B/10.100.104.1:255.255.255.0//dev/sda1
++ cut -f 4- -d /
+ bootdev=/dev/sda1
+ '[' -z /dev/sda1 ']'
+ cleanup_mnt
+ onnode '' umount /tmp/ssi-ksync.mnt.G2iLMa
++ echo 1/00:0C:29:C0:2A:0B/10.100.104.1:255.255.255.0//dev/sda1
++ cut -f 1 -d /
+ node=1
++ clusternode_num
+ '[' 1 -ne 1 ']'
+ '[' -z '' ']'
+ echo -n ' syncing /dev/sda1 on node 1: '
syncing /dev/sda1 on node 1: ++ clusternode_num
+ '[' 1 -ne 1 ']'
+ onnode 1 mount /dev/sda1 /tmp/ssi-ksync.mnt.G2iLMa
+ '[' -z '' ']'
+ echo FAILED
FAILED
+ echo 'ERROR: /sbin/ssi-ksync: failed to mount /dev/sda1 on node 1'
ERROR: /sbin/ssi-ksync: failed to mount /dev/sda1 on node 1
+ continue
++ echo 2/00:0C:29:49:7A:C6/10.100.104.2:255.255.255.0//dev/sda1
++ cut -f 4- -d /
+ bootdev=/dev/sda1
+ '[' -z /dev/sda1 ']'
+ cleanup_mnt
+ onnode 1 umount /tmp/ssi-ksync.mnt.G2iLMa
++ echo 2/00:0C:29:49:7A:C6/10.100.104.2:255.255.255.0//dev/sda1
++ cut -f 1 -d /
+ node=2
++ clusternode_num
+ '[' 1 -ne 2 ']'
+ '[' -n '' ']'
+++ cluster
++ grep ' 2 '
++ echo ' 1 '
+ avail=
+ '[' '' ']'
+ continue
+ cleanup 0
+ rm -f /tmp/ssi-ksync.zJBGWs
+ cleanup_mnt
+ onnode 2 umount /tmp/ssi-ksync.mnt.G2iLMa
+ rmdir /tmp/ssi-ksync.mnt.G2iLMa
+ exit 0
node1:~#
thanks
stefan
.
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/