2008
Hyper-V CentOS 5.2 Distributions
Update: 22nd May 2009 - This does not work with CentOS 5.3 or RedHat 5.3.
Update: 29th December 2008 - I have compacted the original vhd files rather better, and the total download for each version is now about 2.3 Gbytes.
To make life easier for everyone, I have put together a couple of VHD files for Hyper-V that contain a pre-built x86 and x86_64 (x64) distribution of CentOS 5.2 including pre-installed Linux Integration Components. They are fully patched up to date, including the latest kernel version available, as of Christmas 2008.
The root password for each of them is the word “password” (without the quotes).
To construct each one, go to the relevant directories for
the x86 (32-bit)
or x64 (64-bit)
versions and download all the zip files in the directory.
Unpack each zip file and you will have a string of files partaa, partab, partac and so on.
On a Windows system you can join these together into the .vhd file with the command (in a normal Command Prompt window)
x86: copy /B partaa+partab+partac+partad+partae+partaf+partag+partah+partai+partaj+partak+partal CentOS5.2.x86.vhd
(all of that should be on one line)
x64: copy /B partaa+partab+partac+partad+partae+partaf+partag+partah+partai+partaj+partak+partal CentOS5.2.x64.vhd
(all of that should be on one line)
You should end up with a single .vhd file with the following size:
x86: 16173279232 bytes
x64: 18433592832 bytes
Then just build a virtual machine around each one with the .vhd file as the IDE hard disk, and with a Network Adapter (not a Legacy Network Adapter) in it.
Remember that the root password is the word “password” (without the quotes).
You will need to edit these files
and then run the command “setup” to configure the IP address and so on of the “seth0” network device. Then just reboot and you’re away.
If you need a graphical interface with a mouse and such, then change the “3” to a “5” in the “default” line in /etc/inittab and reboot. But I would advise leaving it in text-only mode.
Update: 29th December 2008 - I have compacted the original vhd files rather better, and the total download for each version is now about 2.3 Gbytes.
To make life easier for everyone, I have put together a couple of VHD files for Hyper-V that contain a pre-built x86 and x86_64 (x64) distribution of CentOS 5.2 including pre-installed Linux Integration Components. They are fully patched up to date, including the latest kernel version available, as of Christmas 2008.
The root password for each of them is the word “password” (without the quotes).
To construct each one, go to the relevant directories for
the x86 (32-bit)
or x64 (64-bit)
versions and download all the zip files in the directory.
Unpack each zip file and you will have a string of files partaa, partab, partac and so on.
On a Windows system you can join these together into the .vhd file with the command (in a normal Command Prompt window)
x86: copy /B partaa+partab+partac+partad+partae+partaf+partag+partah+partai+partaj+partak+partal CentOS5.2.x86.vhd
(all of that should be on one line)
x64: copy /B partaa+partab+partac+partad+partae+partaf+partag+partah+partai+partaj+partak+partal CentOS5.2.x64.vhd
(all of that should be on one line)
You should end up with a single .vhd file with the following size:
x86: 16173279232 bytes
x64: 18433592832 bytes
Then just build a virtual machine around each one with the .vhd file as the IDE hard disk, and with a Network Adapter (not a Legacy Network Adapter) in it.
Remember that the root password is the word “password” (without the quotes).
You will need to edit these files
- /etc/hosts
- /etc/resolv.conf
- /etc/sysconfig/network
and then run the command “setup” to configure the IP address and so on of the “seth0” network device. Then just reboot and you’re away.
If you need a graphical interface with a mouse and such, then change the “3” to a “5” in the “default” line in /etc/inittab and reboot. But I would advise leaving it in text-only mode.
Comments
Creating iPhone Ringtones
18/12/08 19:42 Filed in: iPhone
The easiest way to create iPhone ringtones is to use audiko.net.
You upload an MP3 track, cut out the bit you want to use as a ring tone, add a fade-in or fade-out if you want to, then just click the button to generate a .m4r file to use as an iPhone ringtone. Save the m4r file and drag it onto the “Library” heading in your iTunes.
You upload an MP3 track, cut out the bit you want to use as a ring tone, add a fade-in or fade-out if you want to, then just click the button to generate a .m4r file to use as an iPhone ringtone. Save the m4r file and drag it onto the “Library” heading in your iTunes.
Speeding Up Ext3 Filesystems
02/12/08 15:22 Filed in: Linux
There are a few things you can do to speed up the ext3 filesystem, and when combined they make a lot of difference!
Firstly, you probably don’t need to store the “last accessed” time of every file and/or every directory, so add “noatime,nodiratime” to the mount options in /etc/fstab (add a comma then that text straight after the word “defaults” in the relevant line of /etc/fstab).
Furthermore, you can optimise the caching of data in the filesystem by adding “data=writeback” to the mount options in /etc/fstab. This is pretty safe as long as your system isn’t very busy and liable to lose power without warning. The only downside is that should it lose power while writing to the disk, a few files may end up with slightly old content in them.
The last one is a little more complicated, but well worth doing. You can change the directories to be B-trees instead of lists, which are a lot faster if you have many files in each directory. Say your filesystem is mounted off /dev/sdb1, for example.
Firstly, you probably don’t need to store the “last accessed” time of every file and/or every directory, so add “noatime,nodiratime” to the mount options in /etc/fstab (add a comma then that text straight after the word “defaults” in the relevant line of /etc/fstab).
Furthermore, you can optimise the caching of data in the filesystem by adding “data=writeback” to the mount options in /etc/fstab. This is pretty safe as long as your system isn’t very busy and liable to lose power without warning. The only downside is that should it lose power while writing to the disk, a few files may end up with slightly old content in them.
The last one is a little more complicated, but well worth doing. You can change the directories to be B-trees instead of lists, which are a lot faster if you have many files in each directory. Say your filesystem is mounted off /dev/sdb1, for example.
- Unmount the filesystem, having stopped all processes that are using it, with “umount /dev/sdb1”.
- Change the directory indexing with “tune2fs -O dir_index /dev/sdb1”.
- Re-build all the existing directories with “e2fsck -D /dev/sdb1”.
- Reboot, or else remount the filesystem and start the processes back up. Rebooting is simpler
- That should make your filesystem run a whole lot faster!
Overnight EyeTV Exports
06/11/08 09:38 Filed in: Mac | AppleScript
I have taken a script written by someone else and totally re-written it.
It takes your EyeTV recordings archive and produces exported versions of all the recordings in a format of your choice. It either puts these in the packages with the other EyeTV files for that recording, or saves them all out to a new directory of your choice with a filename that is made up of “ - .”. You get to choose the format, and the extension.
You can download the JKFEyeTVExport.scpt script here or the plain text version of it.
You can run it regularly by simply using a cron job, as detailed at the top of the script. Alternatively, you can create a repeating iCal alarm which runs the script, if you are scared of using cron!
It takes your EyeTV recordings archive and produces exported versions of all the recordings in a format of your choice. It either puts these in the packages with the other EyeTV files for that recording, or saves them all out to a new directory of your choice with a filename that is made up of “
You can download the JKFEyeTVExport.scpt script here or the plain text version of it.
You can run it regularly by simply using a cron job, as detailed at the top of the script. Alternatively, you can create a repeating iCal alarm which runs the script, if you are scared of using cron!
Installing Mailman
20/10/08 09:26 Filed in: Email
Fortunately, to make life very easy, there is a copy of the latest Mailman included with RedHat 5.2 or CentOS, so just
yum install mailman
yum update
and you’re on your way.
However, Mailman 2 currently does not support virtual email domains, so I have applied a small patch by hand to add this functionality.
The Mailman Installation Manual is very good and will walk you through all the configuration steps required, which shouldn’t take you more than an hour or two at most. You will find most of it has been done for you by the RPM packagers at RedHat. About the only bits you need to bother with are
If you are moving from Majordomo to Mailman, you may be interested in my majordomo2mailman script which will do all the hard work for you.
yum install mailman
yum update
and you’re on your way.
However, Mailman 2 currently does not support virtual email domains, so I have applied a small patch by hand to add this functionality.
The Mailman Installation Manual is very good and will walk you through all the configuration steps required, which shouldn’t take you more than an hour or two at most. You will find most of it has been done for you by the RPM packagers at RedHat. About the only bits you need to bother with are
- 7 Review your site defaults
- 8 Create a site-wide mailing list
- 11 Check the hostname settings
- 12 Create the site password
- 13 Create your first mailing list
If you are moving from Majordomo to Mailman, you may be interested in my majordomo2mailman script which will do all the hard work for you.
Converting Majordomo Mailing Lists to Mailman
20/10/08 09:08 Filed in: Email
This appears to be a fairly common problem, with very few decent solutions to the problem. It’s all very well converting lists over by hand if you only have a few, but if you have hundreds of them then that is not practical.
So I have taken a script originally written by Brad Marshall (b.marshall@cqu.edu.au) and fixed some bugs, extended it and improved it.
You can download the resulting majordomo2mailman script here.
If you run it as “majordomo2mailman --help” then it will show you how to use it.
You will need to edit the settings at the top of the script to match the layout of your server, as it needs a copy of the Majordomo lists directory and the Majordomo aliases file to work from. I wrote this to work with sendmail, but converting it to work with any other MTA should be trivial, you just need to bash your aliases database into a file that looks like a sendmail one, i.e. one alias per line, with the format
alias: value
on each line.
To start with, you might want to enable debugging, which you can do at the top of the script.
If you use it, I would greatly appreciate a small donation. I have an Amazon.co.uk wishlist. Thank you.
Don’t forget to make the majordomo2mailman script executable after you have downloaded it!
So I have taken a script originally written by Brad Marshall (b.marshall@cqu.edu.au) and fixed some bugs, extended it and improved it.
You can download the resulting majordomo2mailman script here.
If you run it as “majordomo2mailman --help” then it will show you how to use it.
You will need to edit the settings at the top of the script to match the layout of your server, as it needs a copy of the Majordomo lists directory and the Majordomo aliases file to work from. I wrote this to work with sendmail, but converting it to work with any other MTA should be trivial, you just need to bash your aliases database into a file that looks like a sendmail one, i.e. one alias per line, with the format
alias: value
on each line.
To start with, you might want to enable debugging, which you can do at the top of the script.
If you use it, I would greatly appreciate a small donation. I have an Amazon.co.uk wishlist. Thank you.
Don’t forget to make the majordomo2mailman script executable after you have downloaded it!
Windows Vista Speed-Ups
16/09/08 20:41 Filed in: Windows Vista
This is a brief description of some of the things I have done to make Windows Vista usable on a laptop. It starts a lot of services that you don’t need, and enables lots of graphics features that you may not have hardware support for. So turn them off!
The main one to hit is Start / Administration Tools / Services. If you don’t have that, then right-click on the Start button as add Administration Tools to the Start menu.
The services that are enabled on my system are these. You may not have some of these due to software I have installed (mostly Apple stuff), and you may have a few extras due to extra software you have installed, which is probably mostly obvious.
You need these enabled:
All other services, I have disabled. This is actually quite a few, despite the length of the above list. All the ones listed above are Started after a normal boot.
Before changing the list of services you have enabled, I strongly advise creating a restore point (My Computer / Properties / somewhere).
I am using Superfetch as a bit of a test. This is the service that tries to guess which programs you will run depending on the day of the week. It will learn over time, so gradually improve performance. That’s the idea anyway. If you don’t like it, or run a totally random unpredictable set of programs when you boot each time, then disable the Superfetch service as well.
Using the setup above, I have got Windows Vista running at a vaguely usable speed. It’s still to start up applications, but that’s due to Microsoft dropping direct support for the graphics API that all Windows apps have always used. That was doomed to cause immense trouble for them, whatever anyone did. Virtually no normal apps use DirectX, and that’s all they support now. So every app in the book runs horribly slowly through an emulation layer. Fools.
But other than that, this gets Vista working just about as fast as you’ll get it going. Look up “Speed up Windows Vista” in Google too, that will give you some tricks I have also done and forgotten about here.
- Disable User Account Control. In Start / Control Panel / User Accounts / Turn User Account Control on or off, turn it off.
- Disable Transparency and a few of the nice graphics effects. This is all in Start / Control Panel / Personalize / Windows Color and Appearance.
- Also in Start / Control Panel / Personalize / Windows Color and Appearance / Open classic appearance... / Advanced... there you can change the size of the Active Title Bar to its minimum, and the Active Window Border to its minimum, and it will look less like it’s all been drawn with a 5-year old’s crayon.
The main one to hit is Start / Administration Tools / Services. If you don’t have that, then right-click on the Start button as add Administration Tools to the Start menu.
The services that are enabled on my system are these. You may not have some of these due to software I have installed (mostly Apple stuff), and you may have a few extras due to extra software you have installed, which is probably mostly obvious.
You need these enabled:
- Adobe Active File Monitor V6
- Apple Mobile Device
- Application Experience
- Background Intelligent Transfer Service
- Base Filtering Engine
- Bluetooth Support Service
- CNG Key Isolation
- COM_ Event System
- Computer Browser
- Cryptographic Services
- DCOM Server Process Launcher
- Desktop Window Manager Session Manager
- DHCP Client
- Diagnostic Policy Service
- Diagnostic System Host
- DNS Client
- Extensible Authentication Protocol
- F-PROT Antivirus for Windows system
- Group Policy Client
- GtFlashSwitch
- Human Interface Device Access
- IKE and AuthIP IPsec Keying Modules
- iPod Service
- IviRegMgr
- KtmRm for Distributed Transaction Coordinator
- Multimedia Class Scheduler
- Network Connections
- Network List Service
- Network Location Awareness
- Network Store Interface Service
- NSUService
- Personal Secure Drive Service
- PGPserv
- Plug and Play
- Print Spooler
- Program Compatibility Assistant Service
- ReadyBoost
- Remote Access Connection Manager
- Remote Procedure Call (RPM))
- Secondary Logon
- Secure Socket Tunneling Protocol Service
- Security Accounts Manager
- Security Center
- Security Platform Management Service
- Server
- Shell Hardware Detection
- Software Licensing
- SSDP Discovery
- Superfetch
- System Event Notification Service
- Task Scheduler
- TCP/IP NetBIOS Helper
- Telephony
- Themes
- TPM Base Services
- Trusted Playform Core Service
- User Profile Service
- VAIO Entertainment Database Service
- VAIO Entertainment File Import Service
- VAIO Entertainment TV Device Arbitration Service
- VAIO Entertainment UPnp Client Adapter
- VAIO Event Service
- Windows Audio
- Windows Audio Endpoint Builder
- Windows Driver Foundation - User-mode Driver Framework
- Windows Error Reporting Service
- Windows Event Log
- Windows Firewall
- Windows Management Instrumentation
- Windows Presentation Foundation Font Cache 3.0.0.0
- Windows Update
- WLAN AutoConfig
- Workstation
- XAudioService
All other services, I have disabled. This is actually quite a few, despite the length of the above list. All the ones listed above are Started after a normal boot.
Before changing the list of services you have enabled, I strongly advise creating a restore point (My Computer / Properties / somewhere).
I am using Superfetch as a bit of a test. This is the service that tries to guess which programs you will run depending on the day of the week. It will learn over time, so gradually improve performance. That’s the idea anyway. If you don’t like it, or run a totally random unpredictable set of programs when you boot each time, then disable the Superfetch service as well.
Using the setup above, I have got Windows Vista running at a vaguely usable speed. It’s still to start up applications, but that’s due to Microsoft dropping direct support for the graphics API that all Windows apps have always used. That was doomed to cause immense trouble for them, whatever anyone did. Virtually no normal apps use DirectX, and that’s all they support now. So every app in the book runs horribly slowly through an emulation layer. Fools.
But other than that, this gets Vista working just about as fast as you’ll get it going. Look up “Speed up Windows Vista” in Google too, that will give you some tricks I have also done and forgotten about here.
MailScanner Watermarks from Exchange Server 2007
29/08/08 10:33 Filed in: MailScanner | Exchange Server 2007
Someone has written a very handy utility for Exchange Server 2007 so that it can generate MailScanner-compatible “watermarks”. This means that you don’t need to send all your outgoing mail through a MailScanner server just to get the watermark added. The watermarks are added so that when you get a bounce notification (a DSN), MailScanner knows that it generated the original mail, and will therefore let the bounce error message through. By default, MailScanner will delete bounce notifications that it didn’t generate, as these are spam on the whole.
It is all documented here:
http://ifyoudo.net/post/2008/08/07/MailScannerWatermark-Plugin-For-Microsoft-Exchange-2007.aspx
It is all documented here:
http://ifyoudo.net/post/2008/08/07/MailScannerWatermark-Plugin-For-Microsoft-Exchange-2007.aspx
Hyper-V Linux Integration Components RC2 Download
To make it easy to find, the RC2 of the Microsoft Windows Server 2008 Hyper-V Linux Integration Components can be found here: Linux-IC-RC2.
Speeding Up ext3 Filesystems
22/07/08 12:13 Filed in: Linux
There are a few things you can do to speed up the operation of ext3 filesystems, by changing some of the ways in which it behaves by default.
This is all for /dev/sda1, change it to suit the partition you are working with. Make sure you have an ext3 filesystem on there already, and ensure you have unmounted the filesystem first.
umount /dev/sda1
tune2fs -Ohas_journal -o journal_data_writeback /dev/sda1
tune2fs -O dir_index /dev/sda1
e2fsck -D /dev/sda1
Add ",noatime,nodiratime" to the list of options in the relevant line in /etc/fstab.
mount /dev/sda1
This is all for /dev/sda1, change it to suit the partition you are working with. Make sure you have an ext3 filesystem on there already, and ensure you have unmounted the filesystem first.
umount /dev/sda1
tune2fs -Ohas_journal -o journal_data_writeback /dev/sda1
tune2fs -O dir_index /dev/sda1
e2fsck -D /dev/sda1
Add ",noatime,nodiratime" to the list of options in the relevant line in /etc/fstab.
mount /dev/sda1
Hyper-V Linux Integration Components in x86_64 and x86 CentOS and RHEL
22/07/08 11:53 Filed in: Hyper-V | Windows Server 2008
Update: 16th February 2010: Added “unifdef” to the list of required RPMs to build the kernel.
Update: 10th September 2008: This page has been updated for the final release version of the Linux Integration Components.
Update: 19th September 2008: This page has been updated for CentOS and RedHat x86_64 and x86 releases, so all 4 variations are covered.
Update: 2nd December 2008: Link to Hyper-V Tools updated to 1.0 finally.
Update: 22nd May 2009: This does not work with CentOS 5.3 or RedHat 5.3.
This page tells you how to install the Windows Server 2008 virtualization Hyper-V Linux Integration Components in CentOS and RHEL (RedHat Enterprise Linux) 5. I initially did it all in x86_64 (or x64) as it is much more interesting and useful. There are also notes below about setting it up on 32-bit systems where there are differences.
Installing the ICs in CentOS 5.2 or RHEL 5.2 is rather harder than in SuSE 10.
By the time you reach the end of this guide, you will be able to use the RedHat or CentOS “setup” program and /etc/sysconfig/network-scripts/ifcfg-eth0 and ifcfg-seth0 files to set your seth0 interface as the primary interface to use in the virtual machine.
You need to copy the code off the CDROM ISO image, so let’s start by doing that. Using the “Media” menu in the Hyper-V “Connect...” window, choose “DVD Drive”, “Insert Disk...” and select the Linux Integration Components ISO image, usually called “LinuxIC.iso”. Then
mkdir -p /mnt/cdrom
mount /dev/cdrom /mnt/cdrom
cp -rp /mnt/cdrom /opt/linux_ic
umount /mnt/cdrom
I strongly advise at this point that you make sure you have the latest patches and updates on your system, so do “yum update“.
Next, get the kernel source for the exact version of kernel you are using. “rpm -q kernel” will tell you what kernel you have. Remember that a “yum update” may change the kernel version. For this example HOWTO, “rpm -q kernel” produced “kernel-2.6.18-92.el5” so my kernel source RPM will be “kernel-2.6.18-92.el5.src.rpm”.
Once you have the the kernel version, go and find the kernel source SRPM.
RedHat: You can get this from ftp://ftp.redhat.com/pub/redhat/linux/enterprise/5Server/en/os/SRPMS/kernel-2.6.18-92.el5.src.rpm.
CentOS: You can get this from ftp://mirrorservice.org/sites/mirror.centos.org/5.2/updates/SRPMS/kernel-2.6.18-92.1.10.el5.src.rpm.
You will obviously have to get networking working using the legacy network adapter so that you can reach ftp.redhat.com to fetch this file.
yum install redhat-rpm-config gcc rpm-build make gnupg unifdef
If you are not sure, run that command anyway, it will not do any harm if you already have the packages installed.
Install the SRPM with the command
rpm -ivh kernel-*.src.rpm
which will get you the full kernel source in /usr/src/redhat/SOURCES (along with all RedHat’s patches) and the spec file in /usr/src/redhat/SPECS/kernel-2.6.spec. You need to edit the spec file, so make a backup copy of it first for safety.
Before the “%build” line, insert this line:
64-bit systems: patch -p1 -d ../linux-%{kversion}.%{_target_cpu} < /opt/linux_ic/patch/x2v-x64-rhel.patch
32-bit systems: patch -p1 -d ../linux-%{kversion}.%{_target_cpu} < /opt/linux_ic/patch/x2v-x32-rhel.patch
You also want to only build the “xen” version of the kernel. So find the line that defined “%define with_xen” and change it to
%define with_xen 1
and the line containing “%define with_xenonly”, if there is one, needs to be changed to
%define with_xenonly 1
You can now build the RPM, which will construct the xen one which is what you need. So
cd /usr/src/redhat/SPECS
64-bit systems: rpmbuild -ba kernel-2.6.spec
32-bit systems: rpmbuild -ba --target i686 kernel-2.6.spec
Be warned, this will take *hours* on a on a virtual machine.
If, shortly after that starts, you get an error about “Not enough random bytes available” then do this to make some more entropy:
1. Press Ctrl-Z
2. Run the command “du / ; grep -r hello /“
3. Let this run for 30 seconds or so, then press Ctrl-C
4. Run the command “fg”
5. If nothing happens immediately, go back to step 1, just above, and try again.
32-bit systems: cd /usr/src/redhat/RPMS/i686
rpm -ivh kernel-xen-2*rpm
rpm -Uvh kernel-xen-devel-2*rpm
If either of those “rpm” commands give any errors, add “--force” to the command and run it again.
Build the x2v version of the kernel
cd /opt/linux_ic
perl setup.pl x2v /boot/grub/grub.conf
Check the /boot/grub/grub.conf file, especially the “kernel” line, but no changes should be needed on simple RedHat 64-bit single-operating-system setups.
64-bit systems: The first section of the file should look like this:
title Red Hat Enterprise Linux Server (2.6.18-92.el5xen)
root (hd0,0)
kernel /x2v-64.gz
module /vmlinuz-2.6.18-92.el5xen ro root=/dev/VolGroup00/LogVol00 rhgb quiet
module /initrd-2.6.18-92.el5xen.img
32-bit systems: The first section of the file should look like this:
title Red Hat Enterprise Linux Server (2.6.18-92.el5xen)
root (hd0,0)
kernel /x2v-pae.gz
module /vmlinuz-2.6.18-92.el5xen ro root=/dev/VolGroup00/LogVol00 rhgb quiet
module /initrd-2.6.18-92.el5xen.img
Now double-check the “kernel” line, and make sure it says “pae” and not “32”.
Reboot, and it should boot your newly built kernel with the X2V shims in place.
To fix the “build” link, make it point into the kernel source that you have been building from, with something like this:
cd /lib/modules/`uname -r`
ln -nsf /usr/src/kernels/`uname -r`-`arch` build
Note: Please note that in the preceding commands, the quotes are single backquotes, not apostrophes or anything else.
RedHat systems:
cd /opt/linux_ic
perl setup.pl drivers
CentOS systems:
cd /opt/linux_ic
Edit setup.pl and look for the string “kernel-devel”. Change that to “kernel-xen-devel” and save the file.
perl setup.pl drivers
You should now have the drivers running. If you have added a network adapter (not a “Legacy Network Adapter&rdquo to your virtual machine, you should find that “ifconfig -a” outputs a new network device “seth0”. When you reboot, the vmbus module willl automatically be started, along with the other synthetic device drivers, such as the SCSI storage driver and the network driver.
Update: 10 Sept 2008: This step does not appear to be required
To build a new initrd image, so that all the correct drivers are detected every time your virtual machine boots, you need to do this (note this is one very long command, all on one line):
mkinitrd -f --preload vmbus --preload storvsc --preload netvsc --preload blkvsc --force-ide-probe --force-scsi-probe --force-lvm-probe /boot/initrd-2.6.18-92.el5xen.img 2.6.18-92.el5xen
Update: 10 Sept 2008: This section does not appear to be required
yum install xorg-x11-server-sdk xorg-x11-proto-devel
Note that for that “yum” command to work with RedHat Linux, you must be subscribed to their update service so that you can fetch the package, or else you will have to go and find them on your installation DVD/CDs.
Then
cd /opt/linux_ic
cd drivers/dist
make inputvsc_install
At this point, you might want to reboot to be sure that your new network devices are configured how you expected at boot time, and that any SCSI disks specified in /etc/fstab are mounted as you expected.
You now have the same ICs running in CentOS 5.2 or RHEL 5.2 as Microsoft intended to run in SuSE Linux.
Update: 10th September 2008: This page has been updated for the final release version of the Linux Integration Components.
Update: 19th September 2008: This page has been updated for CentOS and RedHat x86_64 and x86 releases, so all 4 variations are covered.
Update: 2nd December 2008: Link to Hyper-V Tools updated to 1.0 finally.
Update: 22nd May 2009: This does not work with CentOS 5.3 or RedHat 5.3.
This page tells you how to install the Windows Server 2008 virtualization Hyper-V Linux Integration Components in CentOS and RHEL (RedHat Enterprise Linux) 5. I initially did it all in x86_64 (or x64) as it is much more interesting and useful. There are also notes below about setting it up on 32-bit systems where there are differences.
Installing the ICs in CentOS 5.2 or RHEL 5.2 is rather harder than in SuSE 10.
Configuring the Virtual Machine
Using the Hyper-V Manager, edit the settings of your new RHEL or CentOS virtual machine, and add a Network Adapter (in addition to the Legacy Network Adapter you already have) and a SCSI Controller with a Hard Drive attached to it. Ensure the Network Adapter is assigned to the virtual network that contains your physical external network card. The hardware settings window should look similar to this:By the time you reach the end of this guide, you will be able to use the RedHat or CentOS “setup” program and /etc/sysconfig/network-scripts/ifcfg-eth0 and ifcfg-seth0 files to set your seth0 interface as the primary interface to use in the virtual machine.
Fetching the Tools
You first need to fetch a copy of the ISO image from the zip of the Linux Integration Components.You need to copy the code off the CDROM ISO image, so let’s start by doing that. Using the “Media” menu in the Hyper-V “Connect...” window, choose “DVD Drive”, “Insert Disk...” and select the Linux Integration Components ISO image, usually called “LinuxIC.iso”. Then
mkdir -p /mnt/cdrom
mount /dev/cdrom /mnt/cdrom
cp -rp /mnt/cdrom /opt/linux_ic
umount /mnt/cdrom
I strongly advise at this point that you make sure you have the latest patches and updates on your system, so do “yum update“.
Next, get the kernel source for the exact version of kernel you are using. “rpm -q kernel” will tell you what kernel you have. Remember that a “yum update” may change the kernel version. For this example HOWTO, “rpm -q kernel” produced “kernel-2.6.18-92.el5” so my kernel source RPM will be “kernel-2.6.18-92.el5.src.rpm”.
Once you have the the kernel version, go and find the kernel source SRPM.
RedHat: You can get this from ftp://ftp.redhat.com/pub/redhat/linux/enterprise/5Server/en/os/SRPMS/kernel-2.6.18-92.el5.src.rpm.
CentOS: You can get this from ftp://mirrorservice.org/sites/mirror.centos.org/5.2/updates/SRPMS/kernel-2.6.18-92.1.10.el5.src.rpm.
You will obviously have to get networking working using the legacy network adapter so that you can reach ftp.redhat.com to fetch this file.
Building the Kernel
In order to install and build the kernel, there are a few packages you need to ensure you have installed. If you installed everything, then don’t worry. If you didn’t, then you will find you will need to do this, which should install all the packages you actually need:yum install redhat-rpm-config gcc rpm-build make gnupg unifdef
If you are not sure, run that command anyway, it will not do any harm if you already have the packages installed.
Install the SRPM with the command
rpm -ivh kernel-*.src.rpm
which will get you the full kernel source in /usr/src/redhat/SOURCES (along with all RedHat’s patches) and the spec file in /usr/src/redhat/SPECS/kernel-2.6.spec. You need to edit the spec file, so make a backup copy of it first for safety.
Before the “%build” line, insert this line:
64-bit systems: patch -p1 -d ../linux-%{kversion}.%{_target_cpu} < /opt/linux_ic/patch/x2v-x64-rhel.patch
32-bit systems: patch -p1 -d ../linux-%{kversion}.%{_target_cpu} < /opt/linux_ic/patch/x2v-x32-rhel.patch
You also want to only build the “xen” version of the kernel. So find the line that defined “%define with_xen” and change it to
%define with_xen 1
and the line containing “%define with_xenonly”, if there is one, needs to be changed to
%define with_xenonly 1
You can now build the RPM, which will construct the xen one which is what you need. So
cd /usr/src/redhat/SPECS
64-bit systems: rpmbuild -ba kernel-2.6.spec
32-bit systems: rpmbuild -ba --target i686 kernel-2.6.spec
Be warned, this will take *hours* on a on a virtual machine.
If, shortly after that starts, you get an error about “Not enough random bytes available” then do this to make some more entropy:
1. Press Ctrl-Z
2. Run the command “du / ; grep -r hello /“
3. Let this run for 30 seconds or so, then press Ctrl-C
4. Run the command “fg”
5. If nothing happens immediately, go back to step 1, just above, and try again.
Installing the Kernel
64-bit systems: cd /usr/src/redhat/RPMS/x86_6432-bit systems: cd /usr/src/redhat/RPMS/i686
rpm -ivh kernel-xen-2*rpm
rpm -Uvh kernel-xen-devel-2*rpm
If either of those “rpm” commands give any errors, add “--force” to the command and run it again.
Build the x2v version of the kernel
cd /opt/linux_ic
perl setup.pl x2v /boot/grub/grub.conf
Check the /boot/grub/grub.conf file, especially the “kernel” line, but no changes should be needed on simple RedHat 64-bit single-operating-system setups.
64-bit systems: The first section of the file should look like this:
title Red Hat Enterprise Linux Server (2.6.18-92.el5xen)
root (hd0,0)
kernel /x2v-64.gz
module /vmlinuz-2.6.18-92.el5xen ro root=/dev/VolGroup00/LogVol00 rhgb quiet
module /initrd-2.6.18-92.el5xen.img
32-bit systems: The first section of the file should look like this:
title Red Hat Enterprise Linux Server (2.6.18-92.el5xen)
root (hd0,0)
kernel /x2v-pae.gz
module /vmlinuz-2.6.18-92.el5xen ro root=/dev/VolGroup00/LogVol00 rhgb quiet
module /initrd-2.6.18-92.el5xen.img
Now double-check the “kernel” line, and make sure it says “pae” and not “32”.
Reboot, and it should boot your newly built kernel with the X2V shims in place.
Building the Hypervisor, Network and Storage Drivers
The next step is to build the drivers. There are a problem that needs fixing first, the “build” link in the /lib/modules/ directory will be broken, and you need a module build environment.To fix the “build” link, make it point into the kernel source that you have been building from, with something like this:
cd /lib/modules/`uname -r`
ln -nsf /usr/src/kernels/`uname -r`-`arch` build
Note: Please note that in the preceding commands, the quotes are single backquotes, not apostrophes or anything else.
Build the Drivers
RedHat systems:
cd /opt/linux_ic
perl setup.pl drivers
CentOS systems:
cd /opt/linux_ic
Edit setup.pl and look for the string “kernel-devel”. Change that to “kernel-xen-devel” and save the file.
perl setup.pl drivers
You should now have the drivers running. If you have added a network adapter (not a “Legacy Network Adapter&rdquo to your virtual machine, you should find that “ifconfig -a” outputs a new network device “seth0”. When you reboot, the vmbus module willl automatically be started, along with the other synthetic device drivers, such as the SCSI storage driver and the network driver.
Update: 10 Sept 2008: This step does not appear to be required
To build a new initrd image, so that all the correct drivers are detected every time your virtual machine boots, you need to do this (note this is one very long command, all on one line):
mkinitrd -f --preload vmbus --preload storvsc --preload netvsc --preload blkvsc --force-ide-probe --force-scsi-probe --force-lvm-probe /boot/initrd-2.6.18-92.el5xen.img 2.6.18-92.el5xen
Update: 10 Sept 2008: This section does not appear to be required
Building the X Mouse Driver
The last step is to build the mouse driver for use by X. This is very simple, you just need to install a couple of extra packages withyum install xorg-x11-server-sdk xorg-x11-proto-devel
Note that for that “yum” command to work with RedHat Linux, you must be subscribed to their update service so that you can fetch the package, or else you will have to go and find them on your installation DVD/CDs.
Then
cd /opt/linux_ic
cd drivers/dist
make inputvsc_install
That’s it!
You can now use the “setup” command to configure the networking and then edit the /etc/sysconfig/network-scripts/ifcfg-*eth* files to configure the new “seth0” interface to start on boot, and configure the old legacy “eth0” interface to not start on boot (set “ONBOOT=no” in /etc/sysconfig/network-scripts/ifcfg-eth0).At this point, you might want to reboot to be sure that your new network devices are configured how you expected at boot time, and that any SCSI disks specified in /etc/fstab are mounted as you expected.
You now have the same ICs running in CentOS 5.2 or RHEL 5.2 as Microsoft intended to run in SuSE Linux.
Hyper-V Virtual LANs
The Microsoft documentation for this is pretty non-existent. It is actually all very simple. In the docs, they refer a lot to the “parent domain”. All that means is the networking used by the host operating system, the Windows 2008 installation on the physical hardware.
You need a network card that can handle 802.1q VLAN tagging, and you plug in a feed that has multiple tagged vlans on it, like what comes straight out of your Cisco or whatever corporate network. This is not something you are likely to have at home.
Using the Hyper-V Network Manager, you add a new network with the parent VLAN tag set to the VLAN tag number corresponding to the main IP address you want your host operating system to be running in.
In each virtual machine, you then assign the network adapter to the network you just created, and you can set the VLAN tag number for network packets destined for that virtual machine.
Note: Windows automatically attaches all the correct protocols to the correct network adapters, so don’t go over-riding its choices here unless you know exactly what you’re doing, in which case you probably aren’t reading this anyway Don’t assign IPv4 or IPv6 to a network interface because you think Windows forgot and got it wrong. It didn’t. You have misunderstood. It gets it right.
You set the parent domain VLAN tag to 14, and give the virtual network adapter that just got created (it’s in your list of network connections) an IP address that corresponds to the IP range used by VLAN 14 (Servers). You set the VLAN tag of the VM’s network adapter to 10, and set the IP address in the VM to one in the IP range used by VLAN 10 (DMZ).
Then you can administer the physical server, and get to the console of the VM, by just talking to your Servers VLAN on your internal network, safe in the knowledge that no-one accessing your VM (your corporate web site or mail server, for example) can access anything other than the VM in the DMZ, with your firewall protecting your internal network from nasties in the DMZ.
You need a network card that can handle 802.1q VLAN tagging, and you plug in a feed that has multiple tagged vlans on it, like what comes straight out of your Cisco or whatever corporate network. This is not something you are likely to have at home.
Using the Hyper-V Network Manager, you add a new network with the parent VLAN tag set to the VLAN tag number corresponding to the main IP address you want your host operating system to be running in.
In each virtual machine, you then assign the network adapter to the network you just created, and you can set the VLAN tag number for network packets destined for that virtual machine.
Note: Windows automatically attaches all the correct protocols to the correct network adapters, so don’t go over-riding its choices here unless you know exactly what you’re doing, in which case you probably aren’t reading this anyway Don’t assign IPv4 or IPv6 to a network interface because you think Windows forgot and got it wrong. It didn’t. You have misunderstood. It gets it right.
Example
So say your Servers VLAN is tag 14, and your DMZ is tag 10. You want your physical server to live in your internal Servers VLAN so you can administer it nice and easily without your firewall getting in the way. But you want your virtual machine, say your corporate web site or mail server, to live in the DMZ where it is nice and safely outside your main internal network.You set the parent domain VLAN tag to 14, and give the virtual network adapter that just got created (it’s in your list of network connections) an IP address that corresponds to the IP range used by VLAN 14 (Servers). You set the VLAN tag of the VM’s network adapter to 10, and set the IP address in the VM to one in the IP range used by VLAN 10 (DMZ).
Then you can administer the physical server, and get to the console of the VM, by just talking to your Servers VLAN on your internal network, safe in the knowledge that no-one accessing your VM (your corporate web site or mail server, for example) can access anything other than the VM in the DMZ, with your firewall protecting your internal network from nasties in the DMZ.
Summary
That’s really all there is to it. If you can’t get it working, then first thing to check is that the relevant tagged VLAN packets are actually being sent down the cable to your server, which may need extra configuration on your corporate network routers/switches. Once the tagged VLAN packets are getting to your Win2008 server, there’s not much that can go wrong.Mac Internet Sharing to Squeezebox or XBox 360
26/06/08 10:00 Filed in: Mac
If you try to share a Mac internet connection, and you can’t get your Squeezebox or XBox 360 to get an IP address from it, read on:
The important file here is /etc/bootpd.plist. If this file doesn’t exist when Internet Sharing starts, it will create it, and remove it when it stops. But if the file already exists when it starts, the Mac will leave it alone and not overwrite or remove it.
Now just check that your value of 0 is still there in /etc/bootpd.plist, it should have survived.
Your Squeezebox or XBox 360 will now happily get an IP address from your Mac’s Internet Sharing.
The important file here is /etc/bootpd.plist. If this file doesn’t exist when Internet Sharing starts, it will create it, and remove it when it stops. But if the file already exists when it starts, the Mac will leave it alone and not overwrite or remove it.
- Start Internet Sharing
- Copy the file somewhere safe: “cp /etc/bootpd.plist /tmp/“
- Stop Internet Sharing
- Edit /tmp/bootpd.plist
- Look for the “reply_threshold_seconds” setting at the bottom of the file, it will be set to 4
- Change the 4 to 0
- Copy the file back in place: “sudo cp /tmp/bootpd.plist /etc/“
- Start Internet Sharing
Now just check that your value of 0 is still there in /etc/bootpd.plist, it should have survived.
Your Squeezebox or XBox 360 will now happily get an IP address from your Mac’s Internet Sharing.
Extracting OLE Objects from Word Documents
12/06/08 18:12 Filed in: Linux
Many people have asked me how to extract the file embedded inside an OLE object that has been inserted into a Microsoft Word document, or similar.
I reverse-engineered the file format, it’s very simple. Not this code doesn’t always appear to work, but it gets 95% of them out.
Use it at your own peril. Please credit me (Julian Field jules@jules.fm) where/when/if you use this code or any derivative of it, including translations into other languages.
$byte = "";
$buffer = "";
#$infh = new FileHandle;
#sysopen $infh, "$explodeinto/$inname", O_RDONLY;
Open the infh filehandle with the "inname" file containing the OLE object.
sysseek $infh, 6, SEEK_SET; # Skip 1st 6 bytes
Skip the first 6 bytes, these appear to be useless
$outname = "";
$finished = 0;
$length = 0;
until ($byte eq "\0" || $finished || $length>1000) {
# Read a C-string into $outname
sysread($infh, $byte, 1) or $finished = 1;
$outname .= $byte;
$length++;
}
Read a null-terminated string of bytes,
this becomes the output filename.
next OLEFILE if $length>1000; # Bail out if it went wrong
If the filename was way too long, this is probably corrupt.
$finished = 0;
$byte = 1;
$length = 0;
until ($byte eq "\0" || $finished || $length>1000) { # Throw away a C-string
sysread($infh, $byte, 1) or $finished = 1;
$length++;
}
Throw away the next null-terminated string of bytes.
next OLEFILE if $length>1000; # Bail out if it went wrong
If the string was way too long, this is probably corrupt.
sysseek $infh, 4, Fcntl::SEEK_CUR or next OLEFILE; # Skip next 4 bytes
Skip the next 4 bytes of the file.
sysread $infh, $number, 4 or next OLEFILE;
$number = unpack 'V', $number;
Read the next 4 bytes into a 4-byte int called "$number".
#print STDERR "Skipping $number bytes of header filename\n";
if ($number>0 && $number<1_000_000) {
sysseek $infh, $number, Fcntl::SEEK_CUR; # Skip the next bit of header (C-string)
} else {
next OLEFILE;
}
If the number $number was a reasonable size,
skip that many bytes of the file.
sysread $infh, $number, 4 or next OLEFILE;
$number = unpack 'V', $number;
Read the next 4 bytes in a 4-byte int called "$number".
This is the length of the real embedded file we want to extract.
#print STDERR "Reading $number bytes of file data\n";
sysread $infh, $buffer, $number
if $number>0 && $number < $size; # Sanity check
Read the $number number of bytes into memory into a chunk
of memory allocated which is at least $number bytes long.
Do a sanity check that the number of bytes we have asked it to read
is less than the total length of the input file.
$outfh = new FileHandle;
$outsafe = $this->MakeNameSafe($outname, $explodeinto);
sysopen $outfh, "$explodeinto/$outsafe", (O_CREAT | O_WRONLY)
or next OLEFILE;
Create an output file with a filename which is a sanitised safe
version of the filename we read at the top of this bit of code.
if ($number>0 && $number<1_000_000_000) { # Number must be reasonable!
syswrite $outfh, $buffer, $number or next OLEFILE;
}
close $outfh;
If the output file is less than 1Gbyte long, write out the data we just read.
This creates the file containing the embedded file we wanted to extract.
Then close that output file.
I reverse-engineered the file format, it’s very simple. Not this code doesn’t always appear to work, but it gets 95% of them out.
Use it at your own peril. Please credit me (Julian Field jules@jules.fm) where/when/if you use this code or any derivative of it, including translations into other languages.
$byte = "";
$buffer = "";
#$infh = new FileHandle;
#sysopen $infh, "$explodeinto/$inname", O_RDONLY;
Open the infh filehandle with the "inname" file containing the OLE object.
sysseek $infh, 6, SEEK_SET; # Skip 1st 6 bytes
Skip the first 6 bytes, these appear to be useless
$outname = "";
$finished = 0;
$length = 0;
until ($byte eq "\0" || $finished || $length>1000) {
# Read a C-string into $outname
sysread($infh, $byte, 1) or $finished = 1;
$outname .= $byte;
$length++;
}
Read a null-terminated string of bytes,
this becomes the output filename.
next OLEFILE if $length>1000; # Bail out if it went wrong
If the filename was way too long, this is probably corrupt.
$finished = 0;
$byte = 1;
$length = 0;
until ($byte eq "\0" || $finished || $length>1000) { # Throw away a C-string
sysread($infh, $byte, 1) or $finished = 1;
$length++;
}
Throw away the next null-terminated string of bytes.
next OLEFILE if $length>1000; # Bail out if it went wrong
If the string was way too long, this is probably corrupt.
sysseek $infh, 4, Fcntl::SEEK_CUR or next OLEFILE; # Skip next 4 bytes
Skip the next 4 bytes of the file.
sysread $infh, $number, 4 or next OLEFILE;
$number = unpack 'V', $number;
Read the next 4 bytes into a 4-byte int called "$number".
#print STDERR "Skipping $number bytes of header filename\n";
if ($number>0 && $number<1_000_000) {
sysseek $infh, $number, Fcntl::SEEK_CUR; # Skip the next bit of header (C-string)
} else {
next OLEFILE;
}
If the number $number was a reasonable size,
skip that many bytes of the file.
sysread $infh, $number, 4 or next OLEFILE;
$number = unpack 'V', $number;
Read the next 4 bytes in a 4-byte int called "$number".
This is the length of the real embedded file we want to extract.
#print STDERR "Reading $number bytes of file data\n";
sysread $infh, $buffer, $number
if $number>0 && $number < $size; # Sanity check
Read the $number number of bytes into memory into a chunk
of memory allocated which is at least $number bytes long.
Do a sanity check that the number of bytes we have asked it to read
is less than the total length of the input file.
$outfh = new FileHandle;
$outsafe = $this->MakeNameSafe($outname, $explodeinto);
sysopen $outfh, "$explodeinto/$outsafe", (O_CREAT | O_WRONLY)
or next OLEFILE;
Create an output file with a filename which is a sanitised safe
version of the filename we read at the top of this bit of code.
if ($number>0 && $number<1_000_000_000) { # Number must be reasonable!
syswrite $outfh, $buffer, $number or next OLEFILE;
}
close $outfh;
If the output file is less than 1Gbyte long, write out the data we just read.
This creates the file containing the embedded file we wanted to extract.
Then close that output file.
Talking from sendmail to Exchange over SMTP auth
05/06/08 09:42 Filed in: Exchange Server 2007 | Email
There are various things you can do in Exchange, such as control who can address distribution lists, that can be restricted to authenticated senders only. So how do you make your sendmail box an authenticated sender?
Start at http://www.sendmail.org/~ca/email/auth.html -- about half way down it starts talking about “Using sendmail as a client with AUTH”. That tells you how to setup your sendmail box (which is the client) so that it talks SMTP auth to Exchange (which is the server).
Start at http://www.sendmail.org/~ca/email/auth.html -- about half way down it starts talking about “Using sendmail as a client with AUTH”. That tells you how to setup your sendmail box (which is the client) so that it talks SMTP auth to Exchange (which is the server).
RedHat 5.2 yum update errors
04/06/08 17:21 Filed in: Linux
If you install RedHat 5.2 and try to do a “yum update” command, you get loads of errors about libxslt and libvorbis.
To solve these errors, type the following commands before you do a “yum update”.
# rpm -e --nodeps --allmatches libvorbis
# rpm -e --nodeps --allmatches libxslt-python libxslt-devel
# rpm -e --nodeps --allmatches libxslt
# rpm -e --nodeps --allmatches libvorbis-devel
# yum -y install libvorbis libxslt
Then you will find that “yum update” works as expected.
To solve these errors, type the following commands before you do a “yum update”.
# rpm -e --nodeps --allmatches libvorbis
# rpm -e --nodeps --allmatches libxslt-python libxslt-devel
# rpm -e --nodeps --allmatches libxslt
# rpm -e --nodeps --allmatches libvorbis-devel
# yum -y install libvorbis libxslt
Then you will find that “yum update” works as expected.
Obfuscating Email Addresses for Web Pages
03/06/08 14:04 Filed in: Email
http://www.fingerlakesbmw.org/main/flobfuscate.php
That will generate a very obfuscated version of the HTML of an email address, suitable for putting on a web page, so there is far less chance that the spammers will be able to harvest it for their address lists.
That will generate a very obfuscated version of the HTML of an email address, suitable for putting on a web page, so there is far less chance that the spammers will be able to harvest it for their address lists.
X Windows ModeLine Generators
03/06/08 14:01 Filed in: X Windows
The XFree86 Modeline Generator
Colas XFree Modeline Generator
used to generate the modeline for a black MacBook, just tell it 1280x800.
To find others, do a Google search for web "modeline calculator".
Colas XFree Modeline Generator
used to generate the modeline for a black MacBook, just tell it 1280x800.
To find others, do a Google search for web "modeline calculator".
X in Solaris 10 on a MacBook
Section "ServerLayout"
Identifier "X.org Configured"
Screen 0 "Screen0" 0 0
InputDevice "Mouse0" "CorePointer"
InputDevice "Keyboard0" "CoreKeyboard"
EndSection
Section "Files"
RgbPath "/usr/X11/lib/X11/rgb"
ModulePath "/usr/X11/lib/modules"
FontPath "/usr/X11/lib/X11/fonts/TrueType/"
FontPath "/usr/X11/lib/X11/fonts/Type1/"
FontPath "/usr/X11/lib/X11/fonts/Type1/sun/"
FontPath "/usr/X11/lib/X11/fonts/F3bitmaps/"
FontPath "/usr/X11/lib/X11/fonts/misc/"
FontPath "/usr/X11/lib/X11/fonts/100dpi/"
FontPath "/usr/X11/lib/X11/fonts/75dpi/"
EndSection
Section "Module"
Load "IA"
Load "Xst"
Load "dbe"
Load "extmod"
Load "record"
Load "xtrap"
Load "glx"
Load "bitstream"
Load "type1"
EndSection
Section "InputDevice"
Identifier "Keyboard0"
Driver "keyboard"
EndSection
Section "InputDevice"
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/mouse"
EndSection
Section "Monitor"
Identifier "Monitor0"
VendorName "Monitor Vendor"
ModelName "Monitor Model"
ModeLine "MacBook13" 172.73 1280 1336 1616 1728 800 802 814 840
EndSection
Section "Device"
### Available Driver options are:-
### Values: : integer,: float, : "True"/"False",
###: "String", : " Hz/kHz/MHz"
### [arg]: arg optional
#Option "ShadowFB" # []
#Option "DefaultRefresh" # []
Identifier "Card0"
Driver "vesa"
VendorName "Unknown Vendor"
BoardName "Unknown Board"
BusID "PCI:0:2:0"
EndSection
Section "Screen"
Identifier "Screen0"
Device "Card0"
Monitor "Monitor0"
SubSection "Display"
Viewport 0 0
Virtual 1280 800
Depth 1
Modes "1280x800"
# Modes "MacBook13"
EndSubSection
SubSection "Display"
Viewport 0 0
Virtual 1280 800
Depth 4
Modes "1280x800"
# Modes "MacBook13"
EndSubSection
SubSection "Display"
Viewport 0 0
Virtual 1280 800
Depth 8
Modes "1280x800"
# Modes "MacBook13"
EndSubSection
SubSection "Display"
Viewport 0 0
Virtual 1280 800
Depth 15
Modes "1280x800"
# Modes "MacBook13"
EndSubSection
SubSection "Display"
Viewport 0 0
Virtual 1280 800
Depth 16
Modes "1280x800"
# Modes "MacBook13"
EndSubSection
SubSection "Display"
Viewport 0 0
Virtual 1280 800
Depth 24
Modes "1280x800"
# Modes "MacBook13"
EndSubSection
EndSection
# Option "dpms"
#EndSection
#
#Section "Device"
# Identifier "Videocard0"
# Driver "vesa"
# VendorName "Videocard vendor"
# BoardName "VESA driver (generic)"
#EndSection
#
#Section "Screen"
# Identifier "Screen0"
# Device "Videocard0"
# Monitor "Monitor0"
# DefaultDepth 24
# SubSection "Display"
# Viewport 0 0
# Virtual 1280 800
# Depth 8
# Modes "MacBook13"
# EndSubSection
# SubSection "Display"
# Viewport 0 0
# Virtual 1280 800
# Depth 16
# Modes "MacBook13"
# EndSubSection
# SubSection "Display"
# Viewport 0 0
# Virtual 1280 800
# Depth 24
# Modes "MacBook13"
# EndSubSection
#EndSection
#
#Section "DRI"
# Group 0
# Mode 0666
#EndSection
Identifier "X.org Configured"
Screen 0 "Screen0" 0 0
InputDevice "Mouse0" "CorePointer"
InputDevice "Keyboard0" "CoreKeyboard"
EndSection
Section "Files"
RgbPath "/usr/X11/lib/X11/rgb"
ModulePath "/usr/X11/lib/modules"
FontPath "/usr/X11/lib/X11/fonts/TrueType/"
FontPath "/usr/X11/lib/X11/fonts/Type1/"
FontPath "/usr/X11/lib/X11/fonts/Type1/sun/"
FontPath "/usr/X11/lib/X11/fonts/F3bitmaps/"
FontPath "/usr/X11/lib/X11/fonts/misc/"
FontPath "/usr/X11/lib/X11/fonts/100dpi/"
FontPath "/usr/X11/lib/X11/fonts/75dpi/"
EndSection
Section "Module"
Load "IA"
Load "Xst"
Load "dbe"
Load "extmod"
Load "record"
Load "xtrap"
Load "glx"
Load "bitstream"
Load "type1"
EndSection
Section "InputDevice"
Identifier "Keyboard0"
Driver "keyboard"
EndSection
Section "InputDevice"
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/mouse"
EndSection
Section "Monitor"
Identifier "Monitor0"
VendorName "Monitor Vendor"
ModelName "Monitor Model"
ModeLine "MacBook13" 172.73 1280 1336 1616 1728 800 802 814 840
EndSection
Section "Device"
### Available Driver options are:-
### Values: : integer,
###
### [arg]: arg optional
#Option "ShadowFB" # [
#Option "DefaultRefresh" # [
Identifier "Card0"
Driver "vesa"
VendorName "Unknown Vendor"
BoardName "Unknown Board"
BusID "PCI:0:2:0"
EndSection
Section "Screen"
Identifier "Screen0"
Device "Card0"
Monitor "Monitor0"
SubSection "Display"
Viewport 0 0
Virtual 1280 800
Depth 1
Modes "1280x800"
# Modes "MacBook13"
EndSubSection
SubSection "Display"
Viewport 0 0
Virtual 1280 800
Depth 4
Modes "1280x800"
# Modes "MacBook13"
EndSubSection
SubSection "Display"
Viewport 0 0
Virtual 1280 800
Depth 8
Modes "1280x800"
# Modes "MacBook13"
EndSubSection
SubSection "Display"
Viewport 0 0
Virtual 1280 800
Depth 15
Modes "1280x800"
# Modes "MacBook13"
EndSubSection
SubSection "Display"
Viewport 0 0
Virtual 1280 800
Depth 16
Modes "1280x800"
# Modes "MacBook13"
EndSubSection
SubSection "Display"
Viewport 0 0
Virtual 1280 800
Depth 24
Modes "1280x800"
# Modes "MacBook13"
EndSubSection
EndSection
# Option "dpms"
#EndSection
#
#Section "Device"
# Identifier "Videocard0"
# Driver "vesa"
# VendorName "Videocard vendor"
# BoardName "VESA driver (generic)"
#EndSection
#
#Section "Screen"
# Identifier "Screen0"
# Device "Videocard0"
# Monitor "Monitor0"
# DefaultDepth 24
# SubSection "Display"
# Viewport 0 0
# Virtual 1280 800
# Depth 8
# Modes "MacBook13"
# EndSubSection
# SubSection "Display"
# Viewport 0 0
# Virtual 1280 800
# Depth 16
# Modes "MacBook13"
# EndSubSection
# SubSection "Display"
# Viewport 0 0
# Virtual 1280 800
# Depth 24
# Modes "MacBook13"
# EndSubSection
#EndSection
#
#Section "DRI"
# Group 0
# Mode 0666
#EndSection
X in CentOS/RHEL 5 on a MacBook
# Xorg configuration created by pyxf86config
Section "ServerLayout"
Identifier "Default Layout"
Screen 0 "Screen0" 0 0
InputDevice "Keyboard0" "CoreKeyboard"
EndSection
Section "InputDevice"
Identifier "Keyboard0"
Driver "kbd"
Option "XkbModel" "pc105"
Option "XkbLayout" "us"
EndSection
Section "Device"
Identifier "Videocard0"
Driver "vesa"
EndSection
Section "Monitor"
Identifier "Monitor0"
VendorName "MonitorVendor"
ModelName "MonitorModel"
Horizsync 28-50
EndSection
Section "Screen"
Identifier "Screen0"
Device "Videocard0"
Monitor "Monitor0"
DefaultDepth 24
SubSection "Display"
Viewport 0 0
Virtual 1280 800
Modes "1280x800"
Depth 24
EndSubSection
EndSection
Section "ServerLayout"
Identifier "Default Layout"
Screen 0 "Screen0" 0 0
InputDevice "Keyboard0" "CoreKeyboard"
EndSection
Section "InputDevice"
Identifier "Keyboard0"
Driver "kbd"
Option "XkbModel" "pc105"
Option "XkbLayout" "us"
EndSection
Section "Device"
Identifier "Videocard0"
Driver "vesa"
EndSection
Section "Monitor"
Identifier "Monitor0"
VendorName "MonitorVendor"
ModelName "MonitorModel"
Horizsync 28-50
EndSection
Section "Screen"
Identifier "Screen0"
Device "Videocard0"
Monitor "Monitor0"
DefaultDepth 24
SubSection "Display"
Viewport 0 0
Virtual 1280 800
Modes "1280x800"
Depth 24
EndSubSection
EndSection
X in CentOS/RHEL 4 on a MacBook Pro
# Xorg configuration created by system-config-display
Section "ServerLayout"
Identifier "single head configuration"
Screen 0 "Screen0" 0 0
InputDevice "Mouse0" "CorePointer"
InputDevice "Keyboard0" "CoreKeyboard"
EndSection
Section "Files"
# RgbPath is the location of the RGB database. Note, this is the name of the
# file minus the extension (like ".txt" or ".db"). There is normally
# no need to change the default.
# Multiple FontPath entries are allowed (they are concatenated together)
# By default, Red Hat 6.0 and later now use a font server independent of
# the X server to render fonts.
RgbPath "/usr/X11R6/lib/X11/rgb"
FontPath "unix/:7100"
EndSection
Section "Module"
Load "dbe"
Load "extmod"
Load "fbdevhw"
Load "glx"
Load "record"
Load "freetype"
Load "type1"
Load "dri"
EndSection
Section "InputDevice"
# Specify which keyboard LEDs can be user-controlled (eg, with xset(1))
# Option "Xleds" "1 2 3"
# To disable the XKEYBOARD extension, uncomment XkbDisable.
# Option "XkbDisable"
# To customise the XKB settings to suit your keyboard, modify the
# lines below (which are the defaults). For example, for a non-U.S.
# keyboard, you will probably want to use:
# Option "XkbModel" "pc102"
# If you have a US Microsoft Natural keyboard, you can use:
# Option "XkbModel" "microsoft"
#
# Then to change the language, change the Layout setting.
# For example, a german layout can be obtained with:
# Option "XkbLayout" "de"
# or:
# Option "XkbLayout" "de"
# Option "XkbVariant" "nodeadkeys"
#
# If you'd like to switch the positions of your capslock and
# control keys, use:
# Option "XkbOptions" "ctrl:swapcaps"
# Or if you just want both to be control, use:
# Option "XkbOptions" "ctrl:nocaps"
#
Identifier "Keyboard0"
Driver "kbd"
Option "XkbModel" "pc105"
Option "XkbLayout" "us"
EndSection
Section "InputDevice"
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "IMPS/2"
Option "Device" "/dev/input/mice"
Option "ZAxisMapping" "4 5"
Option "Emulate3Buttons" "yes"
EndSection
Section "Monitor"
# HorizSync 21.5 - 150.0
# VertRefresh 30.0 - 150.0
Identifier "Monitor0"
VendorName "Monitor Vendor"
ModelName "LCD Panel 1680x1050"
ModeLine "MacBookPro17" 136.3 1680 1720 1856 2096 1050 1053 1056 1084
Option "dpms"
EndSection
Section "Device"
Identifier "Videocard0"
Driver "vesa"
VendorName "Videocard vendor"
BoardName "VESA driver (generic)"
EndSection
Section "Screen"
Identifier "Screen0"
Device "Videocard0"
Monitor "Monitor0"
DefaultDepth 24
SubSection "Display"
Viewport 0 0
Virtual 1680 1050
Depth 8
Modes "MacBookPro17"
EndSubSection
SubSection "Display"
Viewport 0 0
Virtual 1680 1050
Depth 16
Modes "MacBookPro17"
EndSubSection
SubSection "Display"
Viewport 0 0
Virtual 1680 1050
Depth 24
Modes "MacBookPro17"
EndSubSection
EndSection
Section "DRI"
Group 0
Mode 0666
EndSection
Section "ServerLayout"
Identifier "single head configuration"
Screen 0 "Screen0" 0 0
InputDevice "Mouse0" "CorePointer"
InputDevice "Keyboard0" "CoreKeyboard"
EndSection
Section "Files"
# RgbPath is the location of the RGB database. Note, this is the name of the
# file minus the extension (like ".txt" or ".db"). There is normally
# no need to change the default.
# Multiple FontPath entries are allowed (they are concatenated together)
# By default, Red Hat 6.0 and later now use a font server independent of
# the X server to render fonts.
RgbPath "/usr/X11R6/lib/X11/rgb"
FontPath "unix/:7100"
EndSection
Section "Module"
Load "dbe"
Load "extmod"
Load "fbdevhw"
Load "glx"
Load "record"
Load "freetype"
Load "type1"
Load "dri"
EndSection
Section "InputDevice"
# Specify which keyboard LEDs can be user-controlled (eg, with xset(1))
# Option "Xleds" "1 2 3"
# To disable the XKEYBOARD extension, uncomment XkbDisable.
# Option "XkbDisable"
# To customise the XKB settings to suit your keyboard, modify the
# lines below (which are the defaults). For example, for a non-U.S.
# keyboard, you will probably want to use:
# Option "XkbModel" "pc102"
# If you have a US Microsoft Natural keyboard, you can use:
# Option "XkbModel" "microsoft"
#
# Then to change the language, change the Layout setting.
# For example, a german layout can be obtained with:
# Option "XkbLayout" "de"
# or:
# Option "XkbLayout" "de"
# Option "XkbVariant" "nodeadkeys"
#
# If you'd like to switch the positions of your capslock and
# control keys, use:
# Option "XkbOptions" "ctrl:swapcaps"
# Or if you just want both to be control, use:
# Option "XkbOptions" "ctrl:nocaps"
#
Identifier "Keyboard0"
Driver "kbd"
Option "XkbModel" "pc105"
Option "XkbLayout" "us"
EndSection
Section "InputDevice"
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "IMPS/2"
Option "Device" "/dev/input/mice"
Option "ZAxisMapping" "4 5"
Option "Emulate3Buttons" "yes"
EndSection
Section "Monitor"
# HorizSync 21.5 - 150.0
# VertRefresh 30.0 - 150.0
Identifier "Monitor0"
VendorName "Monitor Vendor"
ModelName "LCD Panel 1680x1050"
ModeLine "MacBookPro17" 136.3 1680 1720 1856 2096 1050 1053 1056 1084
Option "dpms"
EndSection
Section "Device"
Identifier "Videocard0"
Driver "vesa"
VendorName "Videocard vendor"
BoardName "VESA driver (generic)"
EndSection
Section "Screen"
Identifier "Screen0"
Device "Videocard0"
Monitor "Monitor0"
DefaultDepth 24
SubSection "Display"
Viewport 0 0
Virtual 1680 1050
Depth 8
Modes "MacBookPro17"
EndSubSection
SubSection "Display"
Viewport 0 0
Virtual 1680 1050
Depth 16
Modes "MacBookPro17"
EndSubSection
SubSection "Display"
Viewport 0 0
Virtual 1680 1050
Depth 24
Modes "MacBookPro17"
EndSubSection
EndSection
Section "DRI"
Group 0
Mode 0666
EndSection
X in Ubuntu on a MacBook Pro
# /etc/X11/xorg.conf (xorg X Window System server configuration file)
#
# This file was generated by dexconf, the Debian X Configuration tool, using
# values from the debconf database.
#
# Edit this file with caution, and see the /etc/X11/xorg.conf manual page.
# (Type "man /etc/X11/xorg.conf" at the shell prompt.)
#
# This file is automatically updated on xserver-xorg package upgrades *only*
# if it has not been modified since the last upgrade of the xserver-xorg
# package.
#
# If you have edited this file but would like it to be automatically updated
# again, run the following command:
# sudo dpkg-reconfigure -phigh xserver-xorg
Section "Files"
FontPath "/usr/share/X11/fonts/misc"
FontPath "/usr/share/X11/fonts/cyrillic"
FontPath "/usr/share/X11/fonts/100dpi/:unscaled"
FontPath "/usr/share/X11/fonts/75dpi/:unscaled"
FontPath "/usr/share/X11/fonts/Type1"
FontPath "/usr/share/X11/fonts/100dpi"
FontPath "/usr/share/X11/fonts/75dpi"
FontPath "/usr/share/fonts/X11/misc"
# path to defoma fonts
FontPath "/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType"
EndSection
Section "Module"
Load "i2c"
Load "bitmap"
Load "ddc"
Load "dri"
Load "extmod"
Load "freetype"
Load "glx"
Load "int10"
Load "type1"
Load "vbe"
EndSection
Section "InputDevice"
Identifier "Generic Keyboard"
Driver "kbd"
Option "CoreKeyboard"
Option "XkbRules" "xorg"
Option "XkbModel" "pc105"
Option "XkbLayout" "us"
Option "XkbOptions" "lv3:ralt_switch"
EndSection
Section "InputDevice"
Identifier "Configured Mouse"
Driver "mouse"
Option "CorePointer"
Option "Device" "/dev/input/mice"
Option "Protocol" "ExplorerPS/2"
Option "ZAxisMapping" "4 5"
Option "Emulate3Buttons" "true"
EndSection
Section "InputDevice"
Driver "wacom"
Identifier "stylus"
Option "Device" "/dev/wacom" # Change to
# /dev/input/event
# for USB
Option "Type" "stylus"
Option "ForceDevice" "ISDV4" # Tablet PC ONLY
EndSection
Section "InputDevice"
Driver "wacom"
Identifier "eraser"
Option "Device" "/dev/wacom" # Change to
# /dev/input/event
# for USB
Option "Type" "eraser"
Option "ForceDevice" "ISDV4" # Tablet PC ONLY
EndSection
Section "InputDevice"
Driver "wacom"
Identifier "cursor"
Option "Device" "/dev/wacom" # Change to
# /dev/input/event
# for USB
Option "Type" "cursor"
Option "ForceDevice" "ISDV4" # Tablet PC ONLY
EndSection
Section "Device"
Identifier "Videocard0"
Driver "vesa"
VendorName "Videocard Vendor"
BoardName "VESA driver (generic)"
BusID "PCI:0:2:0"
EndSection
Section "Monitor"
Identifier "Monitor0"
Option "DPMS"
ModelName "LCD Panel 1680x1050"
Modeline "MacBookPro17" 136.3 1680 1720 1856 2096 1050 1053 1056 1084
EndSection
Section "Screen"
Identifier "Default Screen"
Device "Videocard0"
Monitor "Monitor0"
DefaultDepth 24
SubSection "Display"
Depth 1
Modes "1024x768" "800x600" "640x480"
EndSubSection
SubSection "Display"
Depth 4
Modes "1024x768" "800x600" "640x480"
EndSubSection
SubSection "Display"
Depth 8
Modes "1024x768" "800x600" "640x480"
EndSubSection
SubSection "Display"
Depth 15
Modes "1024x768" "800x600" "640x480"
EndSubSection
SubSection "Display"
Depth 16
Modes "1024x768" "800x600" "640x480"
EndSubSection
SubSection "Display"
Viewport 0 0
Virtual 1680 1050
Depth 24
Modes "MacBookPro17"
EndSubSection
EndSection
Section "ServerLayout"
Identifier "Default Layout"
Screen "Default Screen"
InputDevice "Generic Keyboard"
InputDevice "Configured Mouse"
InputDevice "stylus" "SendCoreEvents"
InputDevice "cursor" "SendCoreEvents"
InputDevice "eraser" "SendCoreEvents"
EndSection
Section "DRI"
Mode 0666
EndSection
#
# This file was generated by dexconf, the Debian X Configuration tool, using
# values from the debconf database.
#
# Edit this file with caution, and see the /etc/X11/xorg.conf manual page.
# (Type "man /etc/X11/xorg.conf" at the shell prompt.)
#
# This file is automatically updated on xserver-xorg package upgrades *only*
# if it has not been modified since the last upgrade of the xserver-xorg
# package.
#
# If you have edited this file but would like it to be automatically updated
# again, run the following command:
# sudo dpkg-reconfigure -phigh xserver-xorg
Section "Files"
FontPath "/usr/share/X11/fonts/misc"
FontPath "/usr/share/X11/fonts/cyrillic"
FontPath "/usr/share/X11/fonts/100dpi/:unscaled"
FontPath "/usr/share/X11/fonts/75dpi/:unscaled"
FontPath "/usr/share/X11/fonts/Type1"
FontPath "/usr/share/X11/fonts/100dpi"
FontPath "/usr/share/X11/fonts/75dpi"
FontPath "/usr/share/fonts/X11/misc"
# path to defoma fonts
FontPath "/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType"
EndSection
Section "Module"
Load "i2c"
Load "bitmap"
Load "ddc"
Load "dri"
Load "extmod"
Load "freetype"
Load "glx"
Load "int10"
Load "type1"
Load "vbe"
EndSection
Section "InputDevice"
Identifier "Generic Keyboard"
Driver "kbd"
Option "CoreKeyboard"
Option "XkbRules" "xorg"
Option "XkbModel" "pc105"
Option "XkbLayout" "us"
Option "XkbOptions" "lv3:ralt_switch"
EndSection
Section "InputDevice"
Identifier "Configured Mouse"
Driver "mouse"
Option "CorePointer"
Option "Device" "/dev/input/mice"
Option "Protocol" "ExplorerPS/2"
Option "ZAxisMapping" "4 5"
Option "Emulate3Buttons" "true"
EndSection
Section "InputDevice"
Driver "wacom"
Identifier "stylus"
Option "Device" "/dev/wacom" # Change to
# /dev/input/event
# for USB
Option "Type" "stylus"
Option "ForceDevice" "ISDV4" # Tablet PC ONLY
EndSection
Section "InputDevice"
Driver "wacom"
Identifier "eraser"
Option "Device" "/dev/wacom" # Change to
# /dev/input/event
# for USB
Option "Type" "eraser"
Option "ForceDevice" "ISDV4" # Tablet PC ONLY
EndSection
Section "InputDevice"
Driver "wacom"
Identifier "cursor"
Option "Device" "/dev/wacom" # Change to
# /dev/input/event
# for USB
Option "Type" "cursor"
Option "ForceDevice" "ISDV4" # Tablet PC ONLY
EndSection
Section "Device"
Identifier "Videocard0"
Driver "vesa"
VendorName "Videocard Vendor"
BoardName "VESA driver (generic)"
BusID "PCI:0:2:0"
EndSection
Section "Monitor"
Identifier "Monitor0"
Option "DPMS"
ModelName "LCD Panel 1680x1050"
Modeline "MacBookPro17" 136.3 1680 1720 1856 2096 1050 1053 1056 1084
EndSection
Section "Screen"
Identifier "Default Screen"
Device "Videocard0"
Monitor "Monitor0"
DefaultDepth 24
SubSection "Display"
Depth 1
Modes "1024x768" "800x600" "640x480"
EndSubSection
SubSection "Display"
Depth 4
Modes "1024x768" "800x600" "640x480"
EndSubSection
SubSection "Display"
Depth 8
Modes "1024x768" "800x600" "640x480"
EndSubSection
SubSection "Display"
Depth 15
Modes "1024x768" "800x600" "640x480"
EndSubSection
SubSection "Display"
Depth 16
Modes "1024x768" "800x600" "640x480"
EndSubSection
SubSection "Display"
Viewport 0 0
Virtual 1680 1050
Depth 24
Modes "MacBookPro17"
EndSubSection
EndSection
Section "ServerLayout"
Identifier "Default Layout"
Screen "Default Screen"
InputDevice "Generic Keyboard"
InputDevice "Configured Mouse"
InputDevice "stylus" "SendCoreEvents"
InputDevice "cursor" "SendCoreEvents"
InputDevice "eraser" "SendCoreEvents"
EndSection
Section "DRI"
Mode 0666
EndSection
Exchange Server 2007 Rejecting Unknown Recipients
02/06/08 12:21 Filed in: Exchange Server 2007
Start up the Exchange Management Shell
cd “C:\Program Files\Microsoft\Exchange Server\Scripts”
.\install-AntiSpamAgents.ps1
Open up Start / Administrative Tools / Services.
Restart the “Microsoft Exchange Transport” service.
Start up the Exchange Management Console.
In Organization Configuration / Hub Transport, there is now an “Anti-spam” tab.
Right-click on “Recipient Filtering” and choose “Properties”.
In the “Blocked Recipients” tab, tick the tick box “Block messages sent to recipients not listed in the Global Address List”.
Click “Okay”.
You may well want to disable some of the anti-spam tests if you do not intend to use them.
cd “C:\Program Files\Microsoft\Exchange Server\Scripts”
.\install-AntiSpamAgents.ps1
Open up Start / Administrative Tools / Services.
Restart the “Microsoft Exchange Transport” service.
Start up the Exchange Management Console.
In Organization Configuration / Hub Transport, there is now an “Anti-spam” tab.
Right-click on “Recipient Filtering” and choose “Properties”.
In the “Blocked Recipients” tab, tick the tick box “Block messages sent to recipients not listed in the Global Address List”.
Click “Okay”.
You may well want to disable some of the anti-spam tests if you do not intend to use them.
Windows 2008 Hyper-V and Solaris 10
04/04/08 12:20 Filed in: Hyper-V
Update 8 April 2008 --- Microsoft broke the legacy network adapter in Hyper-V RC. Apparently Sun and Microsoft are working together to make Solaris work as a guest operating system, so hopefully this will be fixed in a future update.
This documents my experiments with OpenSolaris 10 (Solaris Express), Jan 2008 edition, getting it to run under Hyper-V (release candidate) on Windows Server 2008 (public product release).
The current (2008 Q1) release of Solaris 10 does not work on the release candidate of Hyper-V due to bugs in the Hyper-V BIOS (according to Sun). The 2008 Q2 release, which is otherwise known as Solaris 10 Update 5, will apparently work with Hyper-V, according to Sun. So at the moment I am limited to OpenSolaris 10 (January 2008 release) which is why I chose it and not the official Sun Solaris 10 product.
Creating The Virtual Machine
When creating the virtual machine,
don’t skimp the RAM allocated. It requires a minimum of about 900Mb and it will install significantly quicker with more than that, as otherwise it will swap, which is very slow. I gave it 1300 Mbytes and it did not appear to swap.
In the BIOS settings, set it to boot off IDE then CD, which will prevent it repeating the installation should you forget to eject the DVD image at the end of the installation process.
Remove the network adapter and add a ‘Legacy Network Adapter’ connected to your virtual network in Hyper-V that connects to the external physical network adapter.
Fetching the ISO
You can download the ISO image of OpenSolaris from http://www.opensolaris.org/os/project/indiana/resources/getit/, which will link through to www.sun.com to do the actual download. You will need to register on www.sun.com if you haven’t already done so.
Installation Choices
When you start it up, it will present a text menu of different installation choices. For the easiest and most reliable way to install, choose option 4 (interactive console session). Do not press Return!
Your network adapter should appear as device dnet0. When partitioning the hard disk, I would advise editing the default layout. Remove the /export/home slice altogether, and increase the size of the / slice to fill all available space left on the disk. By default, Solaris always gives you a tiny / partition, which causes endless trouble later when lots of space is needed to install patches and their back-out information. You really do want a / as big as possible.
Set it to manually eject the CD/DVD and manually reboot.
Install all the software. The OEM support is not necessary, but install everything else. The total installation should take around 2½ to 3 hours including all the time taken for you to setup the networking and disk layout, before the software installation process begins.
Note from Russ Blaine at Sun:
Just beware of one thing: Solaris doesn't work in 64-bit mode due to
Hyper-V bug #336932. After you install OpenSolaris, configure it to
boot 32-bit by removing $ISADIR from all paths in the grub entry.
Unfortunately I have set it to auto-reboot at the end of the installation process, so I’m going to have to try to boot single-user to change this, or modify the boot command-line at boot time to remove whatever $ISADIR might look like in reality, then edit it in multi-user mode if it gets that far.
Only Works in 32-bit Mode, not 64-bit Mode
So when it reboots, I choose “Failsafe” from the boot menu, and get into single-user mode. The new system it just built is available in /a, so I
At the end of the installation, before it reboots
TERM=vt100
export TERM
and then edit the /a/boot/grub/menu.lst file in the new installed system. Remove all mention is “$ISADIR/” from the boot entries in this file. If you don’t, it will crash as soon as it tries to boot. OpenSolaris only works in 32-bit mode, and the $ISADIR stuff will boot it in 64-bit mode.
Once you’ve fixed this, “reboot” and let it boot the default choice in the boot menu. Booting the first time will take several minutes.
Disabling Graphical Login Prompt
If you find it boots into graphical mode, and you are using it remotely via a Remote Desktop connection, you’re a bit screwed at this point as you have no mouse to do anything with. Let the machine settle, then reset it. Choose the “Failsafe” boot option which will eventually take you to a single-user prompt. You can’t edit the services database now, but you can edit the script that actually tries to start up the graphical login So edit /a/lib/svc/method/svc-kdmconfig and change the file to do “exit $SMF_EXIT_OK” just before it sets the “TERM” variable. Then reboot and boot normally.
Once you have rebooted and logged in as root, you can stop it trying to do the graphical login at all:
svcadm disable /application/graphical-login/gdm
svcadm disable /application/graphical-login/cde-login
Verbose Reconfiguraion Boot
A verbose reconfiguration boot can be triggered by:
reboot -- -rv -m verbose
This works on Intel hardware by adding a temporary menu entry to the GRUB configuration. This extra entry will of course have the “$ISADIR/” strings in it, and so will fail to boot. So as soon as the GRUB menu appears on the screen, choose the “Failsafe” boot option. Say “y” when it asks you about mounting the real Solaris installation on “/a”. Once it has booted single-user,
TERM=vt100
export TERM
cd /a/boot/grub
vi menu.lst
and remove the strings “$ISADIR/” from the new section it added to the bottom of the list. Save and exit, then “reboot”. Then it will successfully boot in a very verbose mode, showing you exactly what it is starting and when. It will remove the extra GRUB menu entry automatically.
Outstanding Problems
I have still not managed to get any life out of the virtual legacy network adapter. Solaris is seeing and configuring the device, but not actually getting any packets in or out of it.
This documents my experiments with OpenSolaris 10 (Solaris Express), Jan 2008 edition, getting it to run under Hyper-V (release candidate) on Windows Server 2008 (public product release).
The current (2008 Q1) release of Solaris 10 does not work on the release candidate of Hyper-V due to bugs in the Hyper-V BIOS (according to Sun). The 2008 Q2 release, which is otherwise known as Solaris 10 Update 5, will apparently work with Hyper-V, according to Sun. So at the moment I am limited to OpenSolaris 10 (January 2008 release) which is why I chose it and not the official Sun Solaris 10 product.
Creating The Virtual Machine
When creating the virtual machine,
don’t skimp the RAM allocated. It requires a minimum of about 900Mb and it will install significantly quicker with more than that, as otherwise it will swap, which is very slow. I gave it 1300 Mbytes and it did not appear to swap.
In the BIOS settings, set it to boot off IDE then CD, which will prevent it repeating the installation should you forget to eject the DVD image at the end of the installation process.
Remove the network adapter and add a ‘Legacy Network Adapter’ connected to your virtual network in Hyper-V that connects to the external physical network adapter.
Fetching the ISO
You can download the ISO image of OpenSolaris from http://www.opensolaris.org/os/project/indiana/resources/getit/, which will link through to www.sun.com to do the actual download. You will need to register on www.sun.com if you haven’t already done so.
Installation Choices
When you start it up, it will present a text menu of different installation choices. For the easiest and most reliable way to install, choose option 4 (interactive console session). Do not press Return!
Your network adapter should appear as device dnet0. When partitioning the hard disk, I would advise editing the default layout. Remove the /export/home slice altogether, and increase the size of the / slice to fill all available space left on the disk. By default, Solaris always gives you a tiny / partition, which causes endless trouble later when lots of space is needed to install patches and their back-out information. You really do want a / as big as possible.
Set it to manually eject the CD/DVD and manually reboot.
Install all the software. The OEM support is not necessary, but install everything else. The total installation should take around 2½ to 3 hours including all the time taken for you to setup the networking and disk layout, before the software installation process begins.
Note from Russ Blaine at Sun:
Just beware of one thing: Solaris doesn't work in 64-bit mode due to
Hyper-V bug #336932. After you install OpenSolaris, configure it to
boot 32-bit by removing $ISADIR from all paths in the grub entry.
Unfortunately I have set it to auto-reboot at the end of the installation process, so I’m going to have to try to boot single-user to change this, or modify the boot command-line at boot time to remove whatever $ISADIR might look like in reality, then edit it in multi-user mode if it gets that far.
Only Works in 32-bit Mode, not 64-bit Mode
So when it reboots, I choose “Failsafe” from the boot menu, and get into single-user mode. The new system it just built is available in /a, so I
At the end of the installation, before it reboots
TERM=vt100
export TERM
and then edit the /a/boot/grub/menu.lst file in the new installed system. Remove all mention is “$ISADIR/” from the boot entries in this file. If you don’t, it will crash as soon as it tries to boot. OpenSolaris only works in 32-bit mode, and the $ISADIR stuff will boot it in 64-bit mode.
Once you’ve fixed this, “reboot” and let it boot the default choice in the boot menu. Booting the first time will take several minutes.
Disabling Graphical Login Prompt
If you find it boots into graphical mode, and you are using it remotely via a Remote Desktop connection, you’re a bit screwed at this point as you have no mouse to do anything with. Let the machine settle, then reset it. Choose the “Failsafe” boot option which will eventually take you to a single-user prompt. You can’t edit the services database now, but you can edit the script that actually tries to start up the graphical login So edit /a/lib/svc/method/svc-kdmconfig and change the file to do “exit $SMF_EXIT_OK” just before it sets the “TERM” variable. Then reboot and boot normally.
Once you have rebooted and logged in as root, you can stop it trying to do the graphical login at all:
svcadm disable /application/graphical-login/gdm
svcadm disable /application/graphical-login/cde-login
Verbose Reconfiguraion Boot
A verbose reconfiguration boot can be triggered by:
reboot -- -rv -m verbose
This works on Intel hardware by adding a temporary menu entry to the GRUB configuration. This extra entry will of course have the “$ISADIR/” strings in it, and so will fail to boot. So as soon as the GRUB menu appears on the screen, choose the “Failsafe” boot option. Say “y” when it asks you about mounting the real Solaris installation on “/a”. Once it has booted single-user,
TERM=vt100
export TERM
cd /a/boot/grub
vi menu.lst
and remove the strings “$ISADIR/” from the new section it added to the bottom of the list. Save and exit, then “reboot”. Then it will successfully boot in a very verbose mode, showing you exactly what it is starting and when. It will remove the extra GRUB menu entry automatically.
Outstanding Problems
I have still not managed to get any life out of the virtual legacy network adapter. Solaris is seeing and configuring the device, but not actually getting any packets in or out of it.
Hyper-V beta Linux Integration Components
31/03/08 12:19 Filed in: Hyper-V
Update 31st March 2008: Microsoft have released the RC version of the Linux Integration Components and they are available at https://connect.microsoft.com/Downloads/Downloads.aspx?SiteID=495.
Currently, Microsoft have not made any version of the Linux Integration Components available for Windows Server 2008 Hyper-V virtualisation.
So, as a temporary solution until they get the new version out, I have made a copy available at http://www.jules.fm/hyperv_linux.zip
I don’t think Microsoft can complain much about me doing this, it’s just a temporary solution for the few people who need it now and cannot wait until the new version is released.
Currently, Microsoft have not made any version of the Linux Integration Components available for Windows Server 2008 Hyper-V virtualisation.
So, as a temporary solution until they get the new version out, I have made a copy available at http://www.jules.fm/hyperv_linux.zip
I don’t think Microsoft can complain much about me doing this, it’s just a temporary solution for the few people who need it now and cannot wait until the new version is released.
Activating Windows Server 2008
11/03/08 12:19 Filed in: Windows Server 2008
Microsoft Windows [Version 6.0.6001]
Copyright (c) 2006 Microsoft Corporation. All rights reserved.
C:\Users\Administrator>cscript \windows\system32\slmgr.vbs /ipk VPWVT-.....-.....-.....-.....
Microsoft (R) Windows Script Host Version 5.7
Copyright (C) Microsoft Corporation. All rights reserved.
Installed product key VPWVT-....-.....-.....-..... successfully.
C:\Users\Administrator>cscript \windows\system32\slmgr.vbs /ato
Microsoft (R) Windows Script Host Version 5.7
Copyright (C) Microsoft Corporation. All rights reserved.
Activating Windows Server(R), ServerEnterprise edition (bb1d27c4-959d-4f82-b0fd-c02a7be54732) ...
Product activated successfully.
C:\Users\Administrator>
As easy as that
Copyright (c) 2006 Microsoft Corporation. All rights reserved.
C:\Users\Administrator>cscript \windows\system32\slmgr.vbs /ipk VPWVT-.....-.....-.....-.....
Microsoft (R) Windows Script Host Version 5.7
Copyright (C) Microsoft Corporation. All rights reserved.
Installed product key VPWVT-....-.....-.....-..... successfully.
C:\Users\Administrator>cscript \windows\system32\slmgr.vbs /ato
Microsoft (R) Windows Script Host Version 5.7
Copyright (C) Microsoft Corporation. All rights reserved.
Activating Windows Server(R), ServerEnterprise edition (bb1d27c4-959d-4f82-b0fd-c02a7be54732) ...
Product activated successfully.
C:\Users\Administrator>
As easy as that
Exchange Server 2007 Availability and Autodiscover Service
06/03/08 12:18 Filed in: Exchange Server 2007
The availability service only works with client computers that are members of the domain, or else it can’t get the location of the autodiscovery stuff without Active Directory. The alternative to looking it up in AD is to create a website on an Exchange Server 2007 box called https://autodiscover.ecs.soton.ac.uk/Autodiscover. Note the requirement for https and not just http. It won’t work unless you have an SSL cert set up properly.
So create a new website with its own IP address (a necessity for a SSL site), called autodiscover.ecs.soton.ac.uk.
Create a new Autodiscover web service in it with this:
new-autodiscovervirtualdirectory -BasicAuthentication $true -DigestAuthentication $false -ExternalUrl https://autodiscover.ecs.soton.ac.uk/Autodiscover -InternalUrl https://autodiscover.ecs.soton.ac.uk/Autodiscover -Path "C:\Program Files\Microsoft\Exchange Server\ClientAccess\Autodiscover" -WebSiteName autodiscover -WindowsAuthentication $true
That command takes quite a few seconds to run.
You can then compare the output of the original with the new one
Get-AutodiscoveryVirtualDirectory -Identity “EXCH” | fl
You might as well tick the “require secure channel (SSL)” box in the website properties / Directory Security / Secure Communications / Edit dialog, as Outlook will only use it over https anyway.
Once the SSL cert is in place, you can switch the new site ‘on’ with
Set-AutodiscoverVirtualDirectory -Identity “EXCHANGE3\Autodiscover (autodiscover)” -BasicAuthentication $true -DigestAuthentication $false -WindowsAuthentication $true -ExternalUrl https://autodiscover.ecs.soton.ac.uk/Autodiscover -InternalUrl https://autodiscover.ecs.soton.ac.uk/Autodiscover
The format of the -Identity parameter is server-name\url-section (web-site-name).
It may then be worth re-testing the autodiscover functionality in Outlook 2007, from a PC that is not a member of the domain. Outlook logging goes into the %TEMP% directory (Start / Run... / %TEMP%). To enable it in Outlook 2007, go to Tools / Options / Other / Advanced / Enable logging (troubleshooting). The logs go into a file with a strange name (but I think it ends in .log) and a directory name something like olkas with up-to-the-minute log information files in it. You can search by modification date under %TEMP% if all else fails. Ctrl-click on the Outlook 2007 icon in the alerts toolbar (right end of task bar) and choose “Test Email configuration”. That should let you try everything out. Plus do it for real by creating a New Meeting Request and add hg or hcd or wh or hos to it and show the Schedule Assistant as that will attempt to get the Free/Busy information for them from the Exchange 2007 server.
This does indeed all now work. Free+Busy from Outlook 2007 clients that are not members of the domain works just fine, as does auto-configuration of new users in Outlook (any version).
So create a new website with its own IP address (a necessity for a SSL site), called autodiscover.ecs.soton.ac.uk.
Create a new Autodiscover web service in it with this:
new-autodiscovervirtualdirectory -BasicAuthentication $true -DigestAuthentication $false -ExternalUrl https://autodiscover.ecs.soton.ac.uk/Autodiscover -InternalUrl https://autodiscover.ecs.soton.ac.uk/Autodiscover -Path "C:\Program Files\Microsoft\Exchange Server\ClientAccess\Autodiscover" -WebSiteName autodiscover -WindowsAuthentication $true
That command takes quite a few seconds to run.
You can then compare the output of the original with the new one
Get-AutodiscoveryVirtualDirectory -Identity “EXCH” | fl
You might as well tick the “require secure channel (SSL)” box in the website properties / Directory Security / Secure Communications / Edit dialog, as Outlook will only use it over https anyway.
Once the SSL cert is in place, you can switch the new site ‘on’ with
Set-AutodiscoverVirtualDirectory -Identity “EXCHANGE3\Autodiscover (autodiscover)” -BasicAuthentication $true -DigestAuthentication $false -WindowsAuthentication $true -ExternalUrl https://autodiscover.ecs.soton.ac.uk/Autodiscover -InternalUrl https://autodiscover.ecs.soton.ac.uk/Autodiscover
The format of the -Identity parameter is server-name\url-section (web-site-name).
It may then be worth re-testing the autodiscover functionality in Outlook 2007, from a PC that is not a member of the domain. Outlook logging goes into the %TEMP% directory (Start / Run... / %TEMP%). To enable it in Outlook 2007, go to Tools / Options / Other / Advanced / Enable logging (troubleshooting). The logs go into a file with a strange name (but I think it ends in .log) and a directory name something like olkas with up-to-the-minute log information files in it. You can search by modification date under %TEMP% if all else fails. Ctrl-click on the Outlook 2007 icon in the alerts toolbar (right end of task bar) and choose “Test Email configuration”. That should let you try everything out. Plus do it for real by creating a New Meeting Request and add hg or hcd or wh or hos to it and show the Schedule Assistant as that will attempt to get the Free/Busy information for them from the Exchange 2007 server.
This does indeed all now work. Free+Busy from Outlook 2007 clients that are not members of the domain works just fine, as does auto-configuration of new users in Outlook (any version).
Exchange Server 2007 “Service Unavailable” on /public
03/03/08 12:18 Filed in: Exchange Server 2007
This appears to be caused by the Public Folders database not mounting correctly, despite the Exchange System Manager saying it has. This is usually due to replications being missing from some of the system public folders. Dismount and them re-mount your public folder database, then go in to Event Viewer and look at the application log. This will probably show you errors, the detail of which tells you the replication(s) that is(are) missing. Fix those, leave them to replicate, then try dismounting and remounting your public folder database again. You should get a clean mount in the Event Viewer.
Once it works, https://your-exchange.domain.com/public should produce a login box, and not just a “Service Unavailable” error.
Once it works, https://your-exchange.domain.com/public should produce a login box, and not just a “Service Unavailable” error.
ButYouDontLookSick.com
02/03/08 12:17 Filed in: Sick
This is a great little website, and it contains a very important essay which should be read by anyone who has a good friend who is sick. It describes an insight into the life of a sick person, and can be understood and appreciated by healthy people. It’s called the “Spoons Theory” and can be read at http://www.butyoudontlooksick.com/navigation/BYDLS-TheSpoonTheory.pdf.
I have found it very useful for referring friends to, as that way they get an insight into my life. The author deserves a medal for quality writing It’s only a couple of sides and will just take a few minutes to read, it’s well worth the investment of your time if you want to understand how the life of a sick person works, in comparison to that of their’s, a healthy person.
Here is a copy of the story, to save you needing a PDF viewer (Please do not print it in any way, and only link to the original article at www.butyoudontlooksick.com as shown in the paragraph above).
The Spoon Theory
by Christine Miserandino
www.butyoudontlooksick.com
My best friend and I were in the diner, talking. As usual, it was very late and we were eating French fries with gravy. Like normal girls our age, we spent a lot of time in the diner while in college, and most of the time we spent talking about boys, music or trivial things, that seemed very important at the time. We never got serious about anything in particular and spent most of our time laughing.
As I went to take some of my medicine with a snack as I usually did, she watched me with an awkward kind of stare, instead of continuing the conversation. She then asked me out of the blue what it felt like to have Lupus and be sick. I was shocked not only because she asked the random question, but also because I assumed she knew all there was to know about Lupus. She came to doctors with me, she saw me walk with a cane, and throw up in the bathroom. She had seen me cry in pain, what else was there to know?
I started to ramble on about pills, and aches and pains, but she kept pursuing, and didn't seem satisfied with my answers. I was a little surprised as being my roommate in college and friend for years; I thought she already knew the medical definition of Lupus. Then she looked at me with a face every sick person knows well, the face of pure curiosity about something no one healthy can truly understand. She asked what it felt like, not physically, but what it felt like to be me, to be sick.
As I tried to gain my composure, I glanced around the table for help or guidance, or at least stall for time to think. I was trying to find the right words. How do I answer a question I never was able to answer for myself? How do I explain every detail of every day being effected, and give the emotions a sick person goes through with clarity. I could have given up, cracked a joke like I usually do, and changed the subject, but I remember thinking if I don’t try to explain this, how could I ever expect her to understand. If I can’t explain this to my best friend, how could I explain my world to anyone else? I had to at least try.
At that moment, the spoon theory was born. I quickly grabbed every spoon on the table; hell I grabbed spoons off of the other tables. I looked at her in the eyes and said “Here you go, you have Lupus”. She looked at me slightly confused, as anyone would when they are being handed a bouquet of spoons. The cold metal spoons clanked in my hands, as I grouped them together and shoved them into her hands.
I explained that the difference in being sick and being healthy is having to make choices or to consciously think about things when the rest of the world doesn’t have to. The healthy have the luxury of a life without choices, a gift most people take for granted.
Most people start the day with unlimited amount of possibilities, and energy to do whatever they desire, especially young people. For the most part, they do not need to worry about the effects of their actions. So for my explanation, I used spoons to convey this point. I wanted something for her to actually hold, for me to then take away, since most people who get sick feel a “loss” of a life they once knew. If I was in control of taking away the spoons, then she would know what it feels like to have someone or something else, in this case Lupus, being in control.
She grabbed the spoons with excitement. She didn’t understand what I was doing, but she is always up for a good time, so I guess she thought I was cracking a joke of some kind like I usually do when talking about touchy topics. Little did she know how serious I would become?
I asked her to count her spoons. She asked why, and I explained that when you are healthy you expect to have a never- ending supply of "spoons". But when you have to now plan your day, you need to know exactly how many “spoons” you are starting with. It doesn’t guarantee that you might not lose some along the way, but at least it helps to know where you are starting. She counted out 12 spoons. She laughed and said she wanted more. I said no, and I knew right away that this little game would work, when she looked disappointed, and we hadn't even started yet. I’ve wanted more "spoons" for years and haven’t found a way yet to get more, why should she? I also told her to always be conscious of how many she had, and not to drop them because she can never forget she has Lupus.
I asked her to list off the tasks of her day, including the most simple. As, she rattled off daily chores, or just fun things to do; I explained how each one would cost her a spoon. When she jumped right into getting ready for work as her first task of the morning, I cut her off and took away a spoon. I practically jumped down her throat. I said " No! You don’t just get up. You have to crack open your eyes, and then realize you are late. You didn’t sleep well the night before. You have to crawl out of bed, and then you have to make your self something to eat before you can do anything else, because if you don’t, you can't take your medicine, and if you don’t take your medicine you might as well give up all your spoons for today and tomorrow too." I quickly took away a spoon and she realized she hasn’t even gotten dressed yet. Showering cost her spoon, just for washing her hair and shaving her legs. Reaching high and low that early in the morning could actually cost more than one spoon, but I figured I would give her a break; I didn’t want to scare her right away. Getting dressed was worth another spoon. I stopped her and broke down every task to show her how every little detail needs to be thought about. You cannot simply just throw clothes on when you are sick. I explained that I have to see what clothes I can physically put on, if my hands hurt that day buttons are out of the question. If I have bruises that day, I need to wear long sleeves, and if I have a fever I need a sweater to stay warm and so on. If my hair is falling out I need to spend more time to look presentable, and then you need to factor in another 5 minutes for feeling badly that it took you 2 hours to do all this.
I think she was starting to understand when she theoretically didn’t even get to work, and she was left with 6 spoons. I then explained to her that she needed to choose the rest of her day wisely, since when your “spoons” are gone, they are gone. Sometimes you can borrow against tomorrow’s "spoons", but just think how hard tomorrow will be with less "spoons". I also needed to explain that a person who is sick always lives with the looming thought that tomorrow may be the day that a cold comes, or an infection, or any number of things that could be very dangerous. So you do not want to run low on "spoons", because you never know when you truly will need them. I didn’t want to depress her, but I needed to be realistic, and unfortunately being prepared for the worst is part of a real day for me.
We went through the rest of the day, and she slowly learned that skipping lunch would cost her a spoon, as well as standing on a train, or even typing at her computer too long. She was forced to make choices and think about things differently. Hypothetically, she had to choose not to run errands, so that she could eat dinner that night.
When we got to the end of her pretend day, she said she was hungry. I summarized that she had to eat dinner but she only had one spoon left. If she cooked, she wouldn’t have enough energy to clean the pots. If she went out for dinner, she might be too tired to drive home safely. Then I also explained, that I didn’t even bother to add into this game, that she was so nauseous, that cooking was probably out of the question anyway. So she decided to make soup, it was easy. I then said it is only 7pm, you have the rest of the night but maybe end up with one spoon, so you can do something fun, or clean your apartment, or do chores, but you can’t do it all.
I rarely see her emotional, so when I saw her upset I knew maybe I was getting through to her. I didn’t want my friend to be upset, but at the same time I was happy to think finally maybe someone understood me a little bit. She had tears in her eyes and asked quietly “Christine, How do you do it? Do you really do this everyday?” I explained that some days were worse then others; some days I have more spoons then most. But I can never make it go away and I can’t forget about it, I always have to think about it. I handed her a spoon I had been holding in reserve. I said simply, “I have learned to live life with an extra spoon in my pocket, in reserve. You need to always be prepared”
It’s hard, the hardest thing I ever had to learn is to slow down, and not do everything. I fight this to this day. I hate feeling left out, having to choose to stay home, or to not get things done that I want to. I wanted her to feel that frustration. I wanted her to understand, that everything everyone else does comes so easy, but for me it is one hundred little jobs in one. I need to think about the weather, my temperature that day, and the whole day's plans before I can attack any one given thing. When other people can simply do things, I have to attack it and make a plan like I am strategizing a war. It is in that lifestyle, the difference between being sick and healthy. It is the beautiful ability to not think and just do. I miss that freedom. I miss never having to count "spoons".
After we were emotional and talked about this for a little while longer, I sensed she was sad. Maybe she finally understood. Maybe she realized that she never could truly and honestly say she understands. But at least now she might not complain so much when I can't go out for dinner some nights, or when I never seem to make it to her house and she always has to drive to mine. I gave her a hug when we walked out of the diner. I had the one spoon in my hand and I said “Don’t worry. I see this as a blessing. I have been forced to think about everything I do. Do you know how many spoons people waste everyday? I don’t have room for wasted time, or wasted “spoons” and I chose to spend this time with you.”
Ever since this night, I have used the spoon theory to explain my life to many people. In fact, my family and friends refer to spoons all the time. It has been a code word for what I can and cannot do. Once people understand the spoon theory they seem to understand me better, but I also think they live their life a little differently too. I think it isn’t just good for understanding Lupus, but anyone dealing with any disability or illness. Hopefully, they don’t take so much for granted or their life in general. I give a piece of myself, in every sense of the word when I do anything. It has become an inside joke. I have become famous for saying to people jokingly that they should feel special when I spend time with them, because they have one of my "spoons".
© 2003 by Christine Miserandino Butyoudontlooksick.com
Please note that this story is copyrighted and should not be reprinted in any form without permission from the author.
Feel free link to “The Spoon Theory” at www.butyoudontlooksick.com/the_spoon_theory - Thank you!
I have found it very useful for referring friends to, as that way they get an insight into my life. The author deserves a medal for quality writing It’s only a couple of sides and will just take a few minutes to read, it’s well worth the investment of your time if you want to understand how the life of a sick person works, in comparison to that of their’s, a healthy person.
Here is a copy of the story, to save you needing a PDF viewer (Please do not print it in any way, and only link to the original article at www.butyoudontlooksick.com as shown in the paragraph above).
The Spoon Theory
by Christine Miserandino
www.butyoudontlooksick.com
My best friend and I were in the diner, talking. As usual, it was very late and we were eating French fries with gravy. Like normal girls our age, we spent a lot of time in the diner while in college, and most of the time we spent talking about boys, music or trivial things, that seemed very important at the time. We never got serious about anything in particular and spent most of our time laughing.
As I went to take some of my medicine with a snack as I usually did, she watched me with an awkward kind of stare, instead of continuing the conversation. She then asked me out of the blue what it felt like to have Lupus and be sick. I was shocked not only because she asked the random question, but also because I assumed she knew all there was to know about Lupus. She came to doctors with me, she saw me walk with a cane, and throw up in the bathroom. She had seen me cry in pain, what else was there to know?
I started to ramble on about pills, and aches and pains, but she kept pursuing, and didn't seem satisfied with my answers. I was a little surprised as being my roommate in college and friend for years; I thought she already knew the medical definition of Lupus. Then she looked at me with a face every sick person knows well, the face of pure curiosity about something no one healthy can truly understand. She asked what it felt like, not physically, but what it felt like to be me, to be sick.
As I tried to gain my composure, I glanced around the table for help or guidance, or at least stall for time to think. I was trying to find the right words. How do I answer a question I never was able to answer for myself? How do I explain every detail of every day being effected, and give the emotions a sick person goes through with clarity. I could have given up, cracked a joke like I usually do, and changed the subject, but I remember thinking if I don’t try to explain this, how could I ever expect her to understand. If I can’t explain this to my best friend, how could I explain my world to anyone else? I had to at least try.
At that moment, the spoon theory was born. I quickly grabbed every spoon on the table; hell I grabbed spoons off of the other tables. I looked at her in the eyes and said “Here you go, you have Lupus”. She looked at me slightly confused, as anyone would when they are being handed a bouquet of spoons. The cold metal spoons clanked in my hands, as I grouped them together and shoved them into her hands.
I explained that the difference in being sick and being healthy is having to make choices or to consciously think about things when the rest of the world doesn’t have to. The healthy have the luxury of a life without choices, a gift most people take for granted.
Most people start the day with unlimited amount of possibilities, and energy to do whatever they desire, especially young people. For the most part, they do not need to worry about the effects of their actions. So for my explanation, I used spoons to convey this point. I wanted something for her to actually hold, for me to then take away, since most people who get sick feel a “loss” of a life they once knew. If I was in control of taking away the spoons, then she would know what it feels like to have someone or something else, in this case Lupus, being in control.
She grabbed the spoons with excitement. She didn’t understand what I was doing, but she is always up for a good time, so I guess she thought I was cracking a joke of some kind like I usually do when talking about touchy topics. Little did she know how serious I would become?
I asked her to count her spoons. She asked why, and I explained that when you are healthy you expect to have a never- ending supply of "spoons". But when you have to now plan your day, you need to know exactly how many “spoons” you are starting with. It doesn’t guarantee that you might not lose some along the way, but at least it helps to know where you are starting. She counted out 12 spoons. She laughed and said she wanted more. I said no, and I knew right away that this little game would work, when she looked disappointed, and we hadn't even started yet. I’ve wanted more "spoons" for years and haven’t found a way yet to get more, why should she? I also told her to always be conscious of how many she had, and not to drop them because she can never forget she has Lupus.
I asked her to list off the tasks of her day, including the most simple. As, she rattled off daily chores, or just fun things to do; I explained how each one would cost her a spoon. When she jumped right into getting ready for work as her first task of the morning, I cut her off and took away a spoon. I practically jumped down her throat. I said " No! You don’t just get up. You have to crack open your eyes, and then realize you are late. You didn’t sleep well the night before. You have to crawl out of bed, and then you have to make your self something to eat before you can do anything else, because if you don’t, you can't take your medicine, and if you don’t take your medicine you might as well give up all your spoons for today and tomorrow too." I quickly took away a spoon and she realized she hasn’t even gotten dressed yet. Showering cost her spoon, just for washing her hair and shaving her legs. Reaching high and low that early in the morning could actually cost more than one spoon, but I figured I would give her a break; I didn’t want to scare her right away. Getting dressed was worth another spoon. I stopped her and broke down every task to show her how every little detail needs to be thought about. You cannot simply just throw clothes on when you are sick. I explained that I have to see what clothes I can physically put on, if my hands hurt that day buttons are out of the question. If I have bruises that day, I need to wear long sleeves, and if I have a fever I need a sweater to stay warm and so on. If my hair is falling out I need to spend more time to look presentable, and then you need to factor in another 5 minutes for feeling badly that it took you 2 hours to do all this.
I think she was starting to understand when she theoretically didn’t even get to work, and she was left with 6 spoons. I then explained to her that she needed to choose the rest of her day wisely, since when your “spoons” are gone, they are gone. Sometimes you can borrow against tomorrow’s "spoons", but just think how hard tomorrow will be with less "spoons". I also needed to explain that a person who is sick always lives with the looming thought that tomorrow may be the day that a cold comes, or an infection, or any number of things that could be very dangerous. So you do not want to run low on "spoons", because you never know when you truly will need them. I didn’t want to depress her, but I needed to be realistic, and unfortunately being prepared for the worst is part of a real day for me.
We went through the rest of the day, and she slowly learned that skipping lunch would cost her a spoon, as well as standing on a train, or even typing at her computer too long. She was forced to make choices and think about things differently. Hypothetically, she had to choose not to run errands, so that she could eat dinner that night.
When we got to the end of her pretend day, she said she was hungry. I summarized that she had to eat dinner but she only had one spoon left. If she cooked, she wouldn’t have enough energy to clean the pots. If she went out for dinner, she might be too tired to drive home safely. Then I also explained, that I didn’t even bother to add into this game, that she was so nauseous, that cooking was probably out of the question anyway. So she decided to make soup, it was easy. I then said it is only 7pm, you have the rest of the night but maybe end up with one spoon, so you can do something fun, or clean your apartment, or do chores, but you can’t do it all.
I rarely see her emotional, so when I saw her upset I knew maybe I was getting through to her. I didn’t want my friend to be upset, but at the same time I was happy to think finally maybe someone understood me a little bit. She had tears in her eyes and asked quietly “Christine, How do you do it? Do you really do this everyday?” I explained that some days were worse then others; some days I have more spoons then most. But I can never make it go away and I can’t forget about it, I always have to think about it. I handed her a spoon I had been holding in reserve. I said simply, “I have learned to live life with an extra spoon in my pocket, in reserve. You need to always be prepared”
It’s hard, the hardest thing I ever had to learn is to slow down, and not do everything. I fight this to this day. I hate feeling left out, having to choose to stay home, or to not get things done that I want to. I wanted her to feel that frustration. I wanted her to understand, that everything everyone else does comes so easy, but for me it is one hundred little jobs in one. I need to think about the weather, my temperature that day, and the whole day's plans before I can attack any one given thing. When other people can simply do things, I have to attack it and make a plan like I am strategizing a war. It is in that lifestyle, the difference between being sick and healthy. It is the beautiful ability to not think and just do. I miss that freedom. I miss never having to count "spoons".
After we were emotional and talked about this for a little while longer, I sensed she was sad. Maybe she finally understood. Maybe she realized that she never could truly and honestly say she understands. But at least now she might not complain so much when I can't go out for dinner some nights, or when I never seem to make it to her house and she always has to drive to mine. I gave her a hug when we walked out of the diner. I had the one spoon in my hand and I said “Don’t worry. I see this as a blessing. I have been forced to think about everything I do. Do you know how many spoons people waste everyday? I don’t have room for wasted time, or wasted “spoons” and I chose to spend this time with you.”
Ever since this night, I have used the spoon theory to explain my life to many people. In fact, my family and friends refer to spoons all the time. It has been a code word for what I can and cannot do. Once people understand the spoon theory they seem to understand me better, but I also think they live their life a little differently too. I think it isn’t just good for understanding Lupus, but anyone dealing with any disability or illness. Hopefully, they don’t take so much for granted or their life in general. I give a piece of myself, in every sense of the word when I do anything. It has become an inside joke. I have become famous for saying to people jokingly that they should feel special when I spend time with them, because they have one of my "spoons".
© 2003 by Christine Miserandino Butyoudontlooksick.com
Please note that this story is copyrighted and should not be reprinted in any form without permission from the author.
Feel free link to “The Spoon Theory” at www.butyoudontlooksick.com/the_spoon_theory - Thank you!
Exchange Server 2007 “Service Unavailable” on OWA
02/03/08 12:16 Filed in: Exchange Server 2007
This is apparently caused by installing important security patches, noticeably anything to do with .Net. It installs the 32-bit version of .Net 2.0 Service Pack 1, where Exchange Server 2007 requires the 64-bit version and will only work with the 64-bit version.
In the Event Viewer it generates an error 2268 or 2274.
The event text includes “ISAPI Filter ‘C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\\aspnet_filter.dll’”.
Fortunately, this one is easy to fix. Look up http://support.microsoft.com/kb/894435 and follow the instructions give in the “ASP.NET 2.0, 64-bit version” section.
To run the 64-bit version of ASP.NET 2.0, follow these steps:
1. Click Start, click Run, type cmd, and then click OK.
2. Type the following command to disable the 32-bit mode:
cscript %SYSTEMDRIVE%\inetpub\adminscripts\adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 0
3. Type the following command to install the version of ASP.NET 2.0 and to install the script maps at the IIS root and under:
%SYSTEMROOT%\Microsoft.NET\Framework64\v2.0.50727\aspnet_regiis.exe -i
4. Make sure that the status of ASP.NET version 2.0.50727 is set to Allowed in the Web service extension list in Internet Information Services Manager.
Note The build version of ASP.NET 2.0 may differ depending on what the currently released build version is. These steps are for build version 2.0.50727.
Then you should find that OWA (Outlook Web Access) and Entourage 2008 support start working again.
In the Event Viewer it generates an error 2268 or 2274.
The event text includes “ISAPI Filter ‘C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\\aspnet_filter.dll’”.
Fortunately, this one is easy to fix. Look up http://support.microsoft.com/kb/894435 and follow the instructions give in the “ASP.NET 2.0, 64-bit version” section.
To run the 64-bit version of ASP.NET 2.0, follow these steps:
1. Click Start, click Run, type cmd, and then click OK.
2. Type the following command to disable the 32-bit mode:
cscript %SYSTEMDRIVE%\inetpub\adminscripts\adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 0
3. Type the following command to install the version of ASP.NET 2.0 and to install the script maps at the IIS root and under:
%SYSTEMROOT%\Microsoft.NET\Framework64\v2.0.50727\aspnet_regiis.exe -i
4. Make sure that the status of ASP.NET version 2.0.50727 is set to Allowed in the Web service extension list in Internet Information Services Manager.
Note The build version of ASP.NET 2.0 may differ depending on what the currently released build version is. These steps are for build version 2.0.50727.
Then you should find that OWA (Outlook Web Access) and Entourage 2008 support start working again.
Entourage 2008 and Exchange Server 2007
29/02/08 12:16 Filed in: Exchange Server 2007 | Mac
Out of the box, even with an Exchange 2007 server installation including support for Exchange 2003 and earlier (ie. a “legacy” install), Entourage 2008 simply does not connect to the Exchange 2007 Server. That’s pretty poor in my view, they are both the latest versions of Microsoft’s own products, and it just does not work. Pretty crap
Hopefully this note will help you get them working together properly.
Start up an Exchange 2007 Management Shell from the Exchange 2007 Programs menu, and the IIS manager from “Administrative Tools”.
Delete the Exchange subweb from IIS on the Exchange 2007 server.
This only deletes it from IIS, it doesn’t take it out of the Exchange 2007 Active Directory data.
So when you try to create it with New-OwaVirtualDirectory, it will give an error saying it already exists.
So do this:
remove-owavirtualdirectory -Identity "exchange3\Exchange (default web site)"
remove-owavirtualdirectory -Identity "exchange3\Public (default web site)"
exactly as given, except for the “exchange3” which should be replaced with the name of your Exchange 2007 server. This is assuming your Exchange 2007 server is called “exchange3”, so edit it appropriately.
Then
New-OwaVirtualDirectory -name Exchange -OWAVersion Exchange2003or2000 -VirtualDirectoryType mailboxes
New-OwaVirtualDirectory -name Exchange -OWAVersion Exchange2003or2000 -VirtualDirectoryType PublicFolders
Also read
http://support.microsoft.com/kb/931350
In the Account properties “Edit Account” dialog box, set this
Account ID: exchange3.ecs.soton.ac.uk/exchange/your-username@ecs.soton.ac.uk
Domain:
Password:
Leave the Domain blank and the Password blank.
Ok this dialog, then quit and restart Entourage 2008.
If that Account ID setting doesn’t work, try this instead:
Account ID: ECS2000\jkf-private
where “ECS2000” is your Active Directory domain name, and “jkf-private” is your username. Again, leave the “Domain” and “Password” blank, it will prompt you for the password. Never type in anything into the “Domain” box, always leave that blank.
I still cannot get Public Folders working from Entourage 2008. Sorry.
Let me know if this helps or not.
Hopefully this note will help you get them working together properly.
Start up an Exchange 2007 Management Shell from the Exchange 2007 Programs menu, and the IIS manager from “Administrative Tools”.
Delete the Exchange subweb from IIS on the Exchange 2007 server.
This only deletes it from IIS, it doesn’t take it out of the Exchange 2007 Active Directory data.
So when you try to create it with New-OwaVirtualDirectory, it will give an error saying it already exists.
So do this:
remove-owavirtualdirectory -Identity "exchange3\Exchange (default web site)"
remove-owavirtualdirectory -Identity "exchange3\Public (default web site)"
exactly as given, except for the “exchange3” which should be replaced with the name of your Exchange 2007 server. This is assuming your Exchange 2007 server is called “exchange3”, so edit it appropriately.
Then
New-OwaVirtualDirectory -name Exchange -OWAVersion Exchange2003or2000 -VirtualDirectoryType mailboxes
New-OwaVirtualDirectory -name Exchange -OWAVersion Exchange2003or2000 -VirtualDirectoryType PublicFolders
Also read
http://support.microsoft.com/kb/931350
In the Account properties “Edit Account” dialog box, set this
Account ID: exchange3.ecs.soton.ac.uk/exchange/your-username@ecs.soton.ac.uk
Domain:
Password:
Leave the Domain blank and the Password blank.
Ok this dialog, then quit and restart Entourage 2008.
If that Account ID setting doesn’t work, try this instead:
Account ID: ECS2000\jkf-private
where “ECS2000” is your Active Directory domain name, and “jkf-private” is your username. Again, leave the “Domain” and “Password” blank, it will prompt you for the password. Never type in anything into the “Domain” box, always leave that blank.
I still cannot get Public Folders working from Entourage 2008. Sorry.
Let me know if this helps or not.
Building an MX the Easy Way
Boot off RHEL5 disk 1.
linux rescue
Activate network interface eth0 (first interface).
Give IP and so on.
Use fdisk to create
/dev/sda1 /boot Linux 100Mb
/dev/sda2 Linux swap 2048Mb
/dev/sda3 / Linux all the rest
mkfs.ext3 /dev/sda1
mkfs.ext3 /dev/sda3
mkswap /dev/sda2
mkdir /mnt2
mount /dev/sda1 /mnt2
ssh crow ‘dump 0f - /dev/sda3’ | ( cd /mnt2 && restore -rf - )
umount /mnt2
mount /dev/sda3 /mnt2
ssh crow.ecs.soton.ac.uk ‘dump 0f - /dev/mapper/VolGroup00-LogVol00’ | ( cd /mnt2 && restore -rf - )
or else
ssh crow.ecs.soton.ac.uk ‘cd / && tar clf - .’ | ( cd /mnt2 && tar xvBpf - )
Fix /mnt2/etc/fstab so it points to all the right partitions.
If you really want to use partition labels, use the “e2label” command to set the label of each partition so that your shiny new /etc/fstab can find them. Syntax is obvious: /sbin/e2label device [ new-label ]
umount /mnt2
Installing Grub
Cloning an RHEL4 system using the RHEL5 rescue disc? You must use Grub from RHEL4 to setup a boot record for an RHEL4 system. So mount the (newly copied) root filesystem in /mnt2 and copy /mnt2/sbin/grub to /sbin/grub. Then follow the instructions below.
mkdir /boot
mount /dev/sda1 /boot
rm -rf /boot/boot
grub
grub> root (hd0,0)
grub> setup (hd0)
Edit /boot/grub/grub.conf and change the root command to (hd0,0) and the kernel root-filesystem argument to /dev/sda3.
Repeat that edit for all the other kernels available.
Unplug network interface
Reboot and it should boot from hard disk
cd /var/spool/mqueue.in
rm -f *
cd /var/spool/mqueue
rm -f *
cd /var/spool/MailScanner/quarantine
rm -rf *
cd ../incoming
rm -rf *
cd ../archive
rm -rf *
cd /var/log
Remove all old logs
service syslog restart
Fix ethernet and IP address in /etc/sysconfig/network-scripts/ifcfg-eth0 and /etc/sysconfig/network
Fix /etc/hosts
Repair ownership and permissions of /home/* and /usr/local/share/clamav (and subdirectories).
Fix extra ClamAV databases so that “MailScanner --lint” runs correctly.
Reboot with network interface connected.
Re-register with RedHat network for yum updates, get the info from the Systems KB.
yum update
linux rescue
Activate network interface eth0 (first interface).
Give IP and so on.
Use fdisk to create
/dev/sda1 /boot Linux 100Mb
/dev/sda2 Linux swap 2048Mb
/dev/sda3 / Linux all the rest
mkfs.ext3 /dev/sda1
mkfs.ext3 /dev/sda3
mkswap /dev/sda2
mkdir /mnt2
mount /dev/sda1 /mnt2
ssh crow ‘dump 0f - /dev/sda3’ | ( cd /mnt2 && restore -rf - )
umount /mnt2
mount /dev/sda3 /mnt2
ssh crow.ecs.soton.ac.uk ‘dump 0f - /dev/mapper/VolGroup00-LogVol00’ | ( cd /mnt2 && restore -rf - )
or else
ssh crow.ecs.soton.ac.uk ‘cd / && tar clf - .’ | ( cd /mnt2 && tar xvBpf - )
Fix /mnt2/etc/fstab so it points to all the right partitions.
If you really want to use partition labels, use the “e2label” command to set the label of each partition so that your shiny new /etc/fstab can find them. Syntax is obvious: /sbin/e2label device [ new-label ]
umount /mnt2
Installing Grub
Cloning an RHEL4 system using the RHEL5 rescue disc? You must use Grub from RHEL4 to setup a boot record for an RHEL4 system. So mount the (newly copied) root filesystem in /mnt2 and copy /mnt2/sbin/grub to /sbin/grub. Then follow the instructions below.
mkdir /boot
mount /dev/sda1 /boot
rm -rf /boot/boot
grub
grub> root (hd0,0)
grub> setup (hd0)
Edit /boot/grub/grub.conf and change the root command to (hd0,0) and the kernel root-filesystem argument to /dev/sda3.
Repeat that edit for all the other kernels available.
Unplug network interface
Reboot and it should boot from hard disk
cd /var/spool/mqueue.in
rm -f *
cd /var/spool/mqueue
rm -f *
cd /var/spool/MailScanner/quarantine
rm -rf *
cd ../incoming
rm -rf *
cd ../archive
rm -rf *
cd /var/log
Remove all old logs
service syslog restart
Fix ethernet and IP address in /etc/sysconfig/network-scripts/ifcfg-eth0 and /etc/sysconfig/network
Fix /etc/hosts
Repair ownership and permissions of /home/* and /usr/local/share/clamav (and subdirectories).
Fix extra ClamAV databases so that “MailScanner --lint” runs correctly.
Reboot with network interface connected.
Re-register with RedHat network for yum updates, get the info from the Systems KB.
yum update
USB Serial Port Adapter for Mac
22/01/08 12:14 Filed in: Mac
I have bought a couple of USB serial port adapters which work as serial ports on Mac OSX. They are from SerialIO.com.
Drivers can be downloaded from http://serialio.com/products/adaptors/usb_serial.php and installation instructions and so on are at http://serialio.com/support/OSX/USB-Serial-plug.php.
You have to stop them being used as network adapters so that the serial devices are available as ports for minicom and the like.
You can build minicom from the MacOS Ports system with “port install minicom”. You have to bodge one little bit that doesn’t compile, by turning a compile of static variables into normal globals, but otherwise it builds okay. Hopefully someone will fix the compilation problem by the time this is needed.
Drivers can be downloaded from http://serialio.com/products/adaptors/usb_serial.php and installation instructions and so on are at http://serialio.com/support/OSX/USB-Serial-plug.php.
You have to stop them being used as network adapters so that the serial devices are available as ports for minicom and the like.
You can build minicom from the MacOS Ports system with “port install minicom”. You have to bodge one little bit that doesn’t compile, by turning a compile of static variables into normal globals, but otherwise it builds okay. Hopefully someone will fix the compilation problem by the time this is needed.
MAPI/CDO with Exchange Server 2007
08/01/08 12:14 Filed in: Exchange Server 2007
In all previous versions of Exchange prior to 2007, Microsoft shipped the MAPI client library and CDO library as part of Exchange.
In Exchange Server 2007, they have stopped doing this. If you need the libraries, you need to download them from here:
http://www.microsoft.com/downloads/thankyou.aspx?familyId=e17e7f31-079a-43a9-bff2-0a110307611e&displayLang=en
In Exchange Server 2007, they have stopped doing this. If you need the libraries, you need to download them from here:
http://www.microsoft.com/downloads/thankyou.aspx?familyId=e17e7f31-079a-43a9-bff2-0a110307611e&displayLang=en
Applying Exchange Server 2007 Service Pack 1
05/01/08 12:13 Filed in: Exchange Server 2007
Due to us having a scheduled lack of internet connection, we chose this as a good time to patch the management’s Exchange 2007 server.
Be warned: to get this service pack to apply, you must first install .Net 2.0 service pack 1 which they chose not to bundle with the enormous Exchange service pack 1. Why not? Who knows! The service pack doesn’t fit on a CD anyway, so why not just include a copy of .Net 2 SP1 with it? Finding the service pack on their website is not trivial either, as it’s very badly titled and so most of the obvious search terms don’t help you. Go to www.microsoft.com and search their downloads for “.Net 2 SP1”. This will find you the x86 version, and there is a link to the x64 version near the bottom of the page, as well as the ia64 Itanic release if you need that instead. It’s currently at:
http://www.microsoft.com/downloads/details.aspx?FamilyId=029196ED-04EB-471E-8A99-3C61D19A4C5A&displaylang=en
Install that and then reboot. The server needs to be able to see the Active Directory schema master as well, so I hope your internal network is working (our’s wasn’t due to our campus network managers’ incompetence at their stunning inability to hire a generator to keep a few routers up and running).
After this, install the Exchange SP1. It installed perfectly on our server, and the whole process took about 20 or 30 minutes and did not require a reboot afterwards.
The only damage it appears to have done is set the “https required” flag on the default website in IIS. I have this switched off and do an auto-redirect from http://exchange...../ to https://exchange...../owa, which saves our users a lot of typing and saves us a lot of “I can’t get at the webmail” complaints.
Be warned: to get this service pack to apply, you must first install .Net 2.0 service pack 1 which they chose not to bundle with the enormous Exchange service pack 1. Why not? Who knows! The service pack doesn’t fit on a CD anyway, so why not just include a copy of .Net 2 SP1 with it? Finding the service pack on their website is not trivial either, as it’s very badly titled and so most of the obvious search terms don’t help you. Go to www.microsoft.com and search their downloads for “.Net 2 SP1”. This will find you the x86 version, and there is a link to the x64 version near the bottom of the page, as well as the ia64 Itanic release if you need that instead. It’s currently at:
http://www.microsoft.com/downloads/details.aspx?FamilyId=029196ED-04EB-471E-8A99-3C61D19A4C5A&displaylang=en
Install that and then reboot. The server needs to be able to see the Active Directory schema master as well, so I hope your internal network is working (our’s wasn’t due to our campus network managers’ incompetence at their stunning inability to hire a generator to keep a few routers up and running).
After this, install the Exchange SP1. It installed perfectly on our server, and the whole process took about 20 or 30 minutes and did not require a reboot afterwards.
The only damage it appears to have done is set the “https required” flag on the default website in IIS. I have this switched off and do an auto-redirect from http://exchange...../ to https://exchange...../owa, which saves our users a lot of typing and saves us a lot of “I can’t get at the webmail” complaints.
Hyper-V Integration Components in x86_64 CentOS and RHEL
02/01/08 12:12 Filed in: Hyper-V
Update 13th July 2008: New version of this HOWTO is available with information on Linux Integration Components RC2.
This page tells you how to install the Windows Server 2008 virtualization Hyper-V Linux Integration Components in CentOS and RHEL (RedHat Enterprise Linux) 5. I did it all in x86_64 (or x64) as it is much more interesting and useful.
Installing the ICs in CentOS 5.1 or RHEL 5.1 is rather harder than in SuSE 10.
You need to copy the code off the CDROM ISO image, so let’s start by doing that:
mkdir -p /mnt/cdrom
mount /dev/cdrom /mnt/cdrom
mkdir /opt/linux_ic
( cd /mnt/cdrom && tar cf - . ) | ( cd /opt/linux_ic && tar xvBpf - )
umount /mnt/cdrom
Next, get the kernel source for the exact version of kernel and kernel-headers you are using. “rpm -qa | grep kernel” will tell you what kernel-headers you have. Remember that a “yum update” may change the kernel version.
Once you have the the kernel version, go and find the kernel source SRPM. You can get this from http://mirrors.centos.org/centos/5/updates/SRPMS/ or http://mirrors.centos.org/centos/5/os/SRPMS/.
Install the SRPM which will get you the full kernel source in /usr/src/redhat/SOURCES (along with all RedHat’s patches) and the spec file in /usr/src/redhat/SPECS. You need to edit the spec file, so make a backup copy of it first. Find the “buildid” definition line, uncomment it, remove the extra space after % and change it to something like
%define buildid .JKF1
The tools supplied with RHEL5 and CentOS 5 are not good enough to build the kernel-headers, due to a lack of support for “unifdef” in GNU make. So find the line that sets “with_headers” and change it to
%define with_headers 0
Just before the “%build” line, you need to add the patch for the Hypervisor code. 2 of the parts of the Microsoft-supplied patch do not apply successfully, due to differences in the source code where it doesn’t match what Microsoft think it is. So do a “rpmbuild -bp kernel-2.6.spec” to build a patched source tree in /usr/src/redhat/BUILD. Then cd into it and try to apply the patch in /opt/linux_ic/patch/. You will find 2 bits of it don’t apply correctly. Look at the .rej file for each failed patch and apply the changes by hand. Copy the 2 manually patched source files to somewhere convenient like /root. Before the “%build” line, add a chunk of shell script that does something like this: (I am assuming here that you know what you’re doing
cd /usr/src/redhat/BUILD/kernel-2.6.18
( patch -p0 < /opt/linux_ic/patch/x2c-x64-sles.patch ; /bin/true )
cp -f /root/head64-xen.c linux-2.6.18.x86_64/arch/x86_64/kernel/
cp -f /root/pgalloc.h linux-2.6.18.x86_64/include/asm-x86_64/mach-xen/asm/
You can now build the RPM, which will construct several kernels, including the xen one which is what you need. So
cd /usr/src/redhat/SPECS
rpmbuild -ba kernel-2.6.spec
Be warned, this will take *hours* on a on a virtual machine.
Now install the xen version of the new kernel:
cd /usr/src/redhat/RPMS/x86_64
rpm -ivh --force kernel-xen-2*.JKF2*rpm
Build the x2v version of the kernel
cd /opt/linux_ic
perl setup.pl x2v /boot/grub/grub.conf
Now you need to fix up the /boot/grub/grub.conf file. For the section that includes the x2v-64 stuff, remove the “/boot” leading path, as all paths must be given relative to /boot. You *do* need the leading “/” though. The final section you get should look like this:
title CentOS (2.6.18-53.1.4.el5.JKF2xen)
root (hd0,0)
kernel /x2v-64.gz
module /vmlinuz-2.6.18-53.1.4.el5.JKF2xen ro root=/dev/VolGroup00/LogVol00 rhgb quiet
module /initrd-2.6.18-53.1.4.el5.JKF2xen.img
I strongly advise you comment out the “hiddenmenu” setting, and set the default to this kernel (they are numbered from 0=start of file).
Now reboot, and it should boot your newly built kernel with the X2V shims in place.
Next step is to build the drivers. There is one problem that needs fixing first, the “build” link in the /lib/modules/ directory will be broken. To fix this, make it point into the kernel source that you have been building from, with something like this:
cd /lib/modules/`uname -r`
ln -nsf /usr/src/rdhat/BUILD/kernel-2.6.18/linux-2.6.18.x86_64 build
Now build the drivers:
cd /opt/linux_ic
perl setup.pl drivers
You should now have the drivers running, and should have just seen the output of the “modprobe vmbus” command. And you should find that “ifconfig” outputs a new network device “seth0”. When you reboot, the vmbus module willl automatically be started. Unfortunately, it loads too late in time for it to be used for the seth0 network interface to be the sole external network interface, nor in time for the SCSI device to mount filesystems stored on virtual SCSI disks. Moving the init.d script to S04vmbus doesn’t help, as kudzu does not see the device and so removes it from the /etc/sysconfig/network-scripts directory. UPDATE -- appears to work okay as a network interface, like on SuSE 10.
If you try to attach the network interface automatically at boot time, you will need to do this after the machine has booted:
service network start
service sshd restart
along with any other network-connected daemons you have started, such as MailScanner or sendmail.
You now have the same ICs running in CentOS 5.1 or RHEL 5 as Microsoft intended to run in SuSE 10.
This page tells you how to install the Windows Server 2008 virtualization Hyper-V Linux Integration Components in CentOS and RHEL (RedHat Enterprise Linux) 5. I did it all in x86_64 (or x64) as it is much more interesting and useful.
Installing the ICs in CentOS 5.1 or RHEL 5.1 is rather harder than in SuSE 10.
You need to copy the code off the CDROM ISO image, so let’s start by doing that:
mkdir -p /mnt/cdrom
mount /dev/cdrom /mnt/cdrom
mkdir /opt/linux_ic
( cd /mnt/cdrom && tar cf - . ) | ( cd /opt/linux_ic && tar xvBpf - )
umount /mnt/cdrom
Next, get the kernel source for the exact version of kernel and kernel-headers you are using. “rpm -qa | grep kernel” will tell you what kernel-headers you have. Remember that a “yum update” may change the kernel version.
Once you have the the kernel version, go and find the kernel source SRPM. You can get this from http://mirrors.centos.org/centos/5/updates/SRPMS/ or http://mirrors.centos.org/centos/5/os/SRPMS/.
Install the SRPM which will get you the full kernel source in /usr/src/redhat/SOURCES (along with all RedHat’s patches) and the spec file in /usr/src/redhat/SPECS. You need to edit the spec file, so make a backup copy of it first. Find the “buildid” definition line, uncomment it, remove the extra space after % and change it to something like
%define buildid .JKF1
The tools supplied with RHEL5 and CentOS 5 are not good enough to build the kernel-headers, due to a lack of support for “unifdef” in GNU make. So find the line that sets “with_headers” and change it to
%define with_headers 0
Just before the “%build” line, you need to add the patch for the Hypervisor code. 2 of the parts of the Microsoft-supplied patch do not apply successfully, due to differences in the source code where it doesn’t match what Microsoft think it is. So do a “rpmbuild -bp kernel-2.6.spec” to build a patched source tree in /usr/src/redhat/BUILD. Then cd into it and try to apply the patch in /opt/linux_ic/patch/. You will find 2 bits of it don’t apply correctly. Look at the .rej file for each failed patch and apply the changes by hand. Copy the 2 manually patched source files to somewhere convenient like /root. Before the “%build” line, add a chunk of shell script that does something like this: (I am assuming here that you know what you’re doing
cd /usr/src/redhat/BUILD/kernel-2.6.18
( patch -p0 < /opt/linux_ic/patch/x2c-x64-sles.patch ; /bin/true )
cp -f /root/head64-xen.c linux-2.6.18.x86_64/arch/x86_64/kernel/
cp -f /root/pgalloc.h linux-2.6.18.x86_64/include/asm-x86_64/mach-xen/asm/
You can now build the RPM, which will construct several kernels, including the xen one which is what you need. So
cd /usr/src/redhat/SPECS
rpmbuild -ba kernel-2.6.spec
Be warned, this will take *hours* on a on a virtual machine.
Now install the xen version of the new kernel:
cd /usr/src/redhat/RPMS/x86_64
rpm -ivh --force kernel-xen-2*.JKF2*rpm
Build the x2v version of the kernel
cd /opt/linux_ic
perl setup.pl x2v /boot/grub/grub.conf
Now you need to fix up the /boot/grub/grub.conf file. For the section that includes the x2v-64 stuff, remove the “/boot” leading path, as all paths must be given relative to /boot. You *do* need the leading “/” though. The final section you get should look like this:
title CentOS (2.6.18-53.1.4.el5.JKF2xen)
root (hd0,0)
kernel /x2v-64.gz
module /vmlinuz-2.6.18-53.1.4.el5.JKF2xen ro root=/dev/VolGroup00/LogVol00 rhgb quiet
module /initrd-2.6.18-53.1.4.el5.JKF2xen.img
I strongly advise you comment out the “hiddenmenu” setting, and set the default to this kernel (they are numbered from 0=start of file).
Now reboot, and it should boot your newly built kernel with the X2V shims in place.
Next step is to build the drivers. There is one problem that needs fixing first, the “build” link in the /lib/modules/
ln -nsf /usr/src/rdhat/BUILD/kernel-2.6.18/linux-2.6.18.x86_64 build
Now build the drivers:
cd /opt/linux_ic
perl setup.pl drivers
You should now have the drivers running, and should have just seen the output of the “modprobe vmbus” command. And you should find that “ifconfig” outputs a new network device “seth0”. When you reboot, the vmbus module willl automatically be started. Unfortunately, it loads too late in time for it to be used for the seth0 network interface to be the sole external network interface, nor in time for the SCSI device to mount filesystems stored on virtual SCSI disks. Moving the init.d script to S04vmbus doesn’t help, as kudzu does not see the device and so removes it from the /etc/sysconfig/network-scripts directory. UPDATE -- appears to work okay as a network interface, like on SuSE 10.
If you try to attach the network interface automatically at boot time, you will need to do this after the machine has booted:
service network start
service sshd restart
along with any other network-connected daemons you have started, such as MailScanner or sendmail.
You now have the same ICs running in CentOS 5.1 or RHEL 5 as Microsoft intended to run in SuSE 10.
TomTom Update for HP iPAQ
If you have problems reading maps other than the original free one, and you are using an HP iPAQ and Navigator 6, there is an update to Navigator 6 available.
Start TomTom Home, and then in IE go to http://www.tomtom.com/support/index.php?FID=6736&Lid=1 and there will be a Download button. This will download the new Navigator and make it available in the “on your computer” list of objects you can install to your PDA.
Start TomTom Home, and then in IE go to http://www.tomtom.com/support/index.php?FID=6736&Lid=1 and there will be a Download button. This will download the new Navigator and make it available in the “on your computer” list of objects you can install to your PDA.