<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Aikidoka Technologies</title>
	<atom:link href="http://wordpress.aikidokatech.com/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://wordpress.aikidokatech.com</link>
	<description></description>
	<lastBuildDate>Thu, 29 Jul 2010 15:25:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>What can drive Apple&#8217;s methods?</title>
		<link>http://wordpress.aikidokatech.com/?p=38</link>
		<comments>http://wordpress.aikidokatech.com/?p=38#comments</comments>
		<pubDate>Thu, 29 Jul 2010 15:23:49 +0000</pubDate>
		<dc:creator>Adam Oliver</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[gaming]]></category>
		<category><![CDATA[mac]]></category>

		<guid isPermaLink="false">http://wordpress.aikidokatech.com/?p=38</guid>
		<description><![CDATA[I have to say I found the antenna fiasco quite amusing mainly because I thought it would not become much.  However, I always believed that the iPhone market had the potential to drive a change at Apple.  I have read &#8230; <a href="http://wordpress.aikidokatech.com/?p=38">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I have to say I found the antenna fiasco quite amusing mainly because I thought it would not become much.  However, I always believed that the iPhone market had the potential to drive a change at Apple.  I have read the articles about deleted Apple support forums posts and the silence when it comes to acknowledging a problem.  Cell phones have become a vital part of the consumer and business markets.  There is not a lot of room for a &#8220;finicky&#8221; cell phone.  Users will want quick answers followed by firmware or hardware fixes.<span id="more-38"></span></p>
<p>I have met the people who believe Apple products are perfect.  I have also met those that despise them just because they are who they are.  I like to believe I fit into the category of those that use what gets the job done.  I now own a mac mini so I can run Xcode.  It is what is needed to serve that purpose.  This makes me more inclined to pay attention to Apple&#8217;s responses to technical issues.  Apple&#8217;s press conference signaled a change in response to problems that can only improve their great customer support reputation.</p>
<p>Now throw gaming into the mix.  Steam recently came to the Mac.  I have tried Portal, Half-Life 2, and Torchlight on my mini.  Today I stared looking for reviews on running StarCraft 2 on the Mac.  Regardless of Apple&#8217;s consumer reputation I look at this as a new territory for the company and want to see others&#8217; experiences before dishing out money for the Mac version of a game.  I found many complaints of graphic performance in OSX, while comments that using boot camp to run the game through Windows experienced no issue.  It seems that there was also a comment from Steam that 10.6.4 has some issues and nothing can be done at this time.  OSX updates could be a month or more in between.  This could keep people from considering the Mac a potential platform for gaming.</p>
<p>As Macs grow in popularity will gaming have the potential to push Apple into a different type of release schedule for graphics drivers?  Those that have seen the Mac and PC parody commercials probably remember the Mac with ductaped wrists stating how he was tied to his firmware.  Apple is breaking out of the niche market as the graphic artist&#8217;s machine.  Will their methods change to better cater to gamers or is just having gaming on the Mac good enough for the company at this time?  After all, the acceptance of Blu-ray has not pushed Apple to include the drives in Macs.  Only time will tell.</p>
]]></content:encoded>
			<wfw:commentRss>http://wordpress.aikidokatech.com/?feed=rss2&amp;p=38</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>xe-edit-bootloader, Found 2 for VM, but only 1 is allowed.</title>
		<link>http://wordpress.aikidokatech.com/?p=23</link>
		<comments>http://wordpress.aikidokatech.com/?p=23#comments</comments>
		<pubDate>Wed, 12 May 2010 23:28:43 +0000</pubDate>
		<dc:creator>Adam Oliver</dc:creator>
				<category><![CDATA[Virtualization]]></category>
		<category><![CDATA[XenServer]]></category>
		<category><![CDATA[grub]]></category>

		<guid isPermaLink="false">http://wordpress.aikidokatech.com/?p=23</guid>
		<description><![CDATA[This may come up following my two ubuntu on XenServer guides.  I figured I would explain what is happening and how to fix the error &#8220;Found 2 for VM, but only 1 is allowed&#8221; error from xe-edit-bootloader. You do not &#8230; <a href="http://wordpress.aikidokatech.com/?p=23">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>This may come up following my two ubuntu on XenServer guides.  I figured I would explain what is happening and how to fix the error &#8220;Found 2 for VM, but only 1 is allowed&#8221; error from xe-edit-bootloader.</p>
<p><span id="more-23"></span>You do not see them when running vdi-disk-list against a VM, but cdroms also have a vbd associated with them.  They are also marked bootable and for some reason xe-edit-bootloader does not have written into it the ability to filter out a cdrom drive.  If you need to run xe-edit-bootloader and are getting this error, do the following:</p>
<pre>xe vm-cd-list uuid=&lt;UUID of the VM&gt;
xe vbd-param-set uuid&lt;UUID of the cdrom&gt; bootable=false
</pre>
<p>Now you should be able to run xe-edit-bootloader.</p>
]]></content:encoded>
			<wfw:commentRss>http://wordpress.aikidokatech.com/?feed=rss2&amp;p=23</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adobe crash in Vista/2008</title>
		<link>http://wordpress.aikidokatech.com/?p=25</link>
		<comments>http://wordpress.aikidokatech.com/?p=25#comments</comments>
		<pubDate>Thu, 29 Apr 2010 23:35:08 +0000</pubDate>
		<dc:creator>Adam Oliver</dc:creator>
				<category><![CDATA[Windows]]></category>
		<category><![CDATA[Adobe Reader]]></category>
		<category><![CDATA[AppData]]></category>
		<category><![CDATA[Crash]]></category>

		<guid isPermaLink="false">http://wordpress.aikidokatech.com/?p=25</guid>
		<description><![CDATA[Recently I ran into an annoying little Adobe Reader 9.3 crash while doing product testing.  My first thought was that the product being tested was causing the problem, but I first started with a Google search to make sure it &#8230; <a href="http://wordpress.aikidokatech.com/?p=25">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Recently I ran into an annoying little Adobe Reader 9.3 crash while doing product testing.  My first thought was that the product being tested was causing the problem, but I first started with a Google search to make sure it was not a known Adobe issue.  I found many a person with my runtime error, but mostly because of redirecting AppData to a UNC path.  In my situation I was not doing any redirection.</p>
<p><span id="more-25"></span>The error was accompanied by an Event View message.</p>
<p>&#8220;Faulting application AcroRd32.exe, version 9.3.0.148, time stamp 0x4b309800, faulting module MSVCR80.dll, version&#8230;..&#8221;</p>
<p>So I started a long process of testing various cases.  Then it dawned on me that I had ProcessMonitor on this server.  Since it was happening for users with roaming profiles I filtered out just about everything that was not occurring inside the locally cache profile.  This led me to an entry where Adobe Reader attempted to access LocalLow under AppData.  ProcessMonitor indicated that the attempt failed.  I manually created the LocalLow folder and Adobe opened without issue!  I then did some more searching and found a <a href="http://support.microsoft.com/kb/955555" target="_blank">hotfix</a> on Microsoft&#8217;s site.  Now for me I still have to confirm the product I am testing is not preventing the creation of LocalLow, but perhaps this information can help others.</p>
]]></content:encoded>
			<wfw:commentRss>http://wordpress.aikidokatech.com/?feed=rss2&amp;p=25</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ubuntu 10.04 beta server DomU on XenServer 5.6 beta</title>
		<link>http://wordpress.aikidokatech.com/?p=32</link>
		<comments>http://wordpress.aikidokatech.com/?p=32#comments</comments>
		<pubDate>Wed, 21 Apr 2010 18:50:09 +0000</pubDate>
		<dc:creator>Adam Oliver</dc:creator>
				<category><![CDATA[Virtualization]]></category>
		<category><![CDATA[XenServer]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://wordpress.aikidokatech.com/?p=32</guid>
		<description><![CDATA[I&#8217;m one that always likes to test out the latest and greatest.  As frustrating as it can sometimes be, I do enjoy it.  So once I had ubuntu 9.10 server up on XenServer, I wanted to try ubuntu 10.04 server &#8230; <a href="http://wordpress.aikidokatech.com/?p=32">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m one that always likes to test out the latest and greatest.  As frustrating as it can sometimes be, I do enjoy it.  So once I had ubuntu 9.10 server up on XenServer, I wanted to try ubuntu 10.04 server beta.  It is almost exactly the same as 9.10, but changes in grub have made it a little more involved.</p>
<p><span id="more-32"></span><strong>What kernel?</strong></p>
<p>The xen kernel is gone as all support was built into the server kernel as of ubuntu 8.10.  Now with 10.04 server beta, ubuntu actually uses the generic-pae kernel.  If you check the config file under /boot you will see that all the Xen and PV stuff is added to generic-pae.  You are good to go with the out of box kernel.</p>
<p><strong>Pygrub, ext4, and Grub 2<br />
</strong></p>
<p>Pygrub and xe-edit-bootloader cannot handle an ext4 partition.  Make sure the partition containing /boot is ext3.  xe-boot-loader cannot handle grub 2, but can be edited to allow the reading of grub.cfg.  Pygrub has some support for grub 2.  Out of the box it can handle ubuntu 9.10, if /boot is not a separate partition, but it cannot handle the format of the 10.04 grub.conf.  This is due to options after the menu entry title and the use of quotes in more areas.  Fortunately there is a XenSource patch floating around to address that.  More further down.</p>
<ol>
<li>First create a VM in XenCenter.  I used the other install media template.</li>
<li>Install ubuntu to your liking. Just in case anything goes wrong with getting console output, it is recommended that you install the SSH server.  If you want to use something other than ext3, make a small first partition for /boot formatted as ext3.  Now you can make the remaining partitions whichever file system you like.  Once done, update the OS if you desire.</li>
<li>The console for the DomU in PV mode will be hvc0.  You will need to tell getty to use this.  Copy the existing tty1.conf and edit it to replace &#8220;tty1&#8243; with &#8220;hvc0&#8243;.
<pre>sudo cp /etc/init/tty1.conf /etc/init/hvc0.conf
nano -w /etc/init/hvc0</pre>
</li>
<li>If you so not want to alter scripts on the XenServer take note of the default menu entry in grub.cfg as you will need to place the options in XenServer.  If you do not, you will at least have to alter xe-edit-bootloader.</li>
<li>Shutdown the VM.</li>
<li>Retrieve the UUID for the VM.  Assuming your VM is named &#8220;ubuntu10&#8243;:
<pre>xe vm-list name-label=ubuntu10 params=uuid</pre>
</li>
<li>Retrieve the VBD UUID for the storage attached to the VM.
<pre>xe vm-disk-list uuid=&lt;UUID&gt;</pre>
</li>
<li>Clear out the HVM boot policy.
<pre>xe vm-param-set uuid=&lt;UUID&gt; HVM-boot-policy=</pre>
</li>
<li>Set the PV bootloader to pygrub.
<pre>xe vm-param-set uuid=&lt;UUID&gt; PV-bootloader=pygrub</pre>
</li>
<li>Lastly, set the VBD for the VM to be bootable.
<pre>xe vbd-param-set uuid=&lt;VBD UUID&gt; bootable=true</pre>
</li>
<li>Since pygrub cannot handle the grub.cfg format of ubuntu 10.04, we must make some alterations on XenServer.  If you do not want to do this, skip to step 14 and specify the kernel in XenServer.</li>
<li>If you made /boot a separate partition, add support to pygrub by editing /usr/bin/pygrub.  Go to line 395 and you should see the file list for grub 2.  It is only searching for /boot/grub/grub.cfg.  Like in the grub section, it needs to search for the file when /boot is the root of the partition also.  Add /grub/grub.cfg to that list.  Otherwise you can skip this step.</li>
<li>Now we need to patch /usr/lib/python2.4/site-packages/grub/GrubConf.py.  Create a patch file there and paste the patch contents from <a href="http://old.nabble.com/-xen-3.4-testing--pygrub:-further-improve-grub2-support-td28013758.html" target="_blank">XenSource</a>.  This one is from 3/24/2010.  There is one on the XenSource list from <a href="http://lists.xensource.com/archives/html/xen-changelog/2010-03/msg00074.html" target="_blank">3/15/2010</a>, but it could not patch a few sections of my file.  Then patch the file as you normally would.  &#8220;man patch&#8221; if you are unfamiliar.  I highly recommend manually making a back up copy of GrubConf.py!  Once patched successfully pygrub will be able to parse grub.cfg from ubuntu 10.04.  Skip to step &lt;next step&gt;.</li>
<li>If you are hesitant to edit the pygrub python script or GrubConf.py, simplify specify the arguments you need for the VM.  Specify the kernel, ramdisk, and other options that are present in the VMs grub.cfg.  Make sure you use the entries from your grub file, not these specific ones.
<pre>xe vm-param-set uuid=&lt;UUID&gt; PV-bootloader-args="--kernel=vmlinuz-2.6.31-14-server \
--ramdisk=initrd.img-2.6.31-14-server"
xe vm-param-set uuid=&lt;UUID&gt; PV-args="root=UUID=&lt;UUID from grub root entry&gt; ro quiet splash"</pre>
</li>
<li>Start the VM and login.  If your console fails to appear or seems to hang, try connecting to the VM using SSH.  If you missed they step about getting getty to output to hvc0, the console will appear to be hung.  In actuality it is just not displaying the login prompt on hvc0.</li>
<li>Attach the xs-tools.iso to the VM and mount the image.  Mount will claim /dev/cdrom1 does not exist if it has not yet been attached to the VM in XenCenter.
<pre>sudo mount /dev/cdrom1 /mnt</pre>
</li>
<li>Install the XenServer tools.  Make sure you use the proper file for your architecture (amd64 or i386).  A quick &#8220;ls&#8221; will confirm the version of the utilities in you xs-tools.iso.  My file name my differ.
<pre>sudo dpkg -i /mnt/Linux/xe-guest-utilities_5.5.901-562_i386.deb</pre>
</li>
<li>Unmount the iso image and then detach it in XenCenter.
<pre>sudo umount /mnt</pre>
</li>
<li>You are now up and running.  Update the system with aptitude if you like.  Keep in mind that if you update your kernel and you specified PV-bootloader-args, you will have to go back and update those accordingly.  I still have some issue like XenCenter not reporting the NIC IP and no performance data.  Hopefully that can be resolved soon so I can update this article.</li>
</ol>
<h1>Troubleshooting</h1>
<p><strong>I need to use xe-edit-bootloader.</strong></p>
<p>To add grub2 support, edit /opt/xensource/bin/xe-edit-bootloader. On line 18 add the grub2 configuration files to the list.</p>
<pre>default_file_list="/boot/grub/grub.cfg /grub/grub.cfg /boot/grub/menu.lst /grub/menu.lst"</pre>
<p><strong>After updating the kernel it continues to boot the old kernel.</strong></p>
<p>If the new kernel is listed as the first and default entry in your grub file, make sure your PV-bootloader-args are not specified.  Retrieve the UUID of the VM using step 6 from the article.  Check the PV-bootloader-args parameter.</p>
<pre>xe vm-param-list uuid=&lt;UUID&gt;</pre>
<p>If you have specified PV-bootloader-args you need to update them to specify the new kernel.  You can use xe-edit-bootloader to find these values.  If you have decided to use pygrub to read the grub config at boot, then clear out the PV-bootloader-args and PV-args fields.</p>
<pre>xe vm-param-set uuid=&lt;UUID&gt; PV-bootloader-args=</pre>
<pre>xe vm-param-set uuid=&lt;UUID&gt; PV-args=</pre>
<p><strong>Can&#8217;t I just use PV-kernel and PV-ramdisk?</strong></p>
<p>These parameters on a VM are actually for when the kernel and ramdisk on on the XenServer (Dom0) filesystem.  The article here is for using the kernel inside the actual VM (DomU) itself.  For that, PV-bootloader-argsd is used.</p>
<p><strong>Can&#8217;t type at login prompt.</strong></p>
<p>I ran into one instance where I could see the login prompt but nothing I typed appeared.  First, make sure you click inside the console window.  If that does not resolve the issue, close and reopen XenCenter.  This fixed the issue when I encountered it.</p>
<p><strong>PV is not working and I need to get the VM back up.</strong></p>
<p>It is possible to get the VM back up if either PV mode will just not work or you need to go back and redo a step.  To do this simply shutdown the VM and respecify the HVM-boot-policy parameter. This parameter is case-sensitive!</p>
<pre>xe vm-param-set uuid=&lt;UUID&gt; HVM-boot-policy="BIOS order"</pre>
<p>To return to PV mode, clear the HVM-boot-policy parameter.</p>
<pre>xe vm-param-set uuid=&lt;UUID&gt; HVM-boot-policy=</pre>
]]></content:encoded>
			<wfw:commentRss>http://wordpress.aikidokatech.com/?feed=rss2&amp;p=32</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>ubuntu 9.10 server DomU on XenServer 5.6 beta</title>
		<link>http://wordpress.aikidokatech.com/?p=30</link>
		<comments>http://wordpress.aikidokatech.com/?p=30#comments</comments>
		<pubDate>Wed, 21 Apr 2010 18:48:34 +0000</pubDate>
		<dc:creator>Adam Oliver</dc:creator>
				<category><![CDATA[Virtualization]]></category>
		<category><![CDATA[XenServer]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://wordpress.aikidokatech.com/?p=30</guid>
		<description><![CDATA[I&#8217;ve been trying to get ubuntu up an running as a DomU in PV mode under XenServer for a while.  The Citrix blog article is horribly old and some info is no longer accurate.  There are a few key things &#8230; <a href="http://wordpress.aikidokatech.com/?p=30">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been trying to get ubuntu up an running as a DomU in PV mode under XenServer for a while.  The Citrix blog article is horribly old and some info is no longer accurate.  There are a few key things to getting this done that I discovered along they way.</p>
<p><span id="more-30"></span><strong>Where&#8217;s Xen kernel?</strong></p>
<p>The xen kernel is gone as all support is now built into the server kernel.  Check near the bottom of <a href="http://www.ubuntu.com/products/whatisubuntu/serveredition/technologies/virtualization" target="_blank">this ubuntu article</a>.  You can look inside the kernel config files in /boot to see what support is compiled in and what is modules.</p>
<p><strong>Pygrub, ext4, and Grub 2<br />
</strong></p>
<p>Pygrub and xe-edit-bootloader cannot handle an ext4 partition.  Make sure the partition containing /boot is ext3.  xe-boot-loader cannot handle grub 2, but can be edited to allow the reading of grub.cfg.  Pygrub has some support for grub 2.  Out of the box it can handle ubuntu 9.10, but only if /boot is not a separate partition.  I&#8217;ll cover that a little later.</p>
<p><strong>Note:</strong> I don&#8217;t see any support for grub.cfg in pygrub on XenServer 5.5 update 1.  I find it easier to just specify the kernel and ramdisk then to try and get grub 2 support into 5.5.  In this case altering xe-edit-bootloader is very helpful!</p>
<ol>
<li>First create a VM in XenCenter.  I used the other install media template.</li>
<li>Install ubuntu to your liking. Just in case anything goes wrong with getting console output, it is recommended that you install the SSH server.  If you want to use something other than ext3, make a small first partition for /boot formatted as ext3.  Now you can make the remaining partitions whichever file system you like.  Once done, update the OS if you desire.</li>
<li>The console for the DomU in PV mode will be hvc0.  You will need to tell getty to use this.  Copy the existing tty1.conf and edit it to replace &#8220;tty1&#8243; with &#8220;hvc0&#8243;.
<pre>sudo cp /etc/init/tty1.conf /etc/init/hvc0.conf
nano -w /etc/init/hvc0</pre>
</li>
<li>If you placed /boot on its own partition and do not want to alter any of the XenServer files, take note of the default menu entry in grub.cfg as you will need to place the options in XenServer.</li>
<li>Shutdown the VM.</li>
<li>Retrieve the UUID for the VM.  Assuming your VM is named &#8220;ubuntu&#8221;:
<pre>xe vm-list name-label=ubuntu params=uuid</pre>
</li>
<li>Retrieve the VBD UUID for the storage attached to the VM.
<pre>xe vm-disk-list uuid=&lt;UUID&gt;</pre>
</li>
<li>Clear out the HVM boot policy.
<pre>xe vm-param-set uuid=&lt;UUID&gt; HVM-boot-policy=</pre>
</li>
<li>Set the PV bootloader to pygrub.
<pre>xe vm-param-set uuid=&lt;UUID&gt; PV-bootloader=pygrub</pre>
</li>
<li>Lastly, set the VBD for the VM to be bootable.
<pre>xe vbd-param-set uuid=&lt;VBD UUID&gt; bootable=true</pre>
</li>
<li>If /boot is a separate partition you must either modify pygrub on the XenServer, or specify your menuentry items now.  If /boot is not a separate partition, skip to step 14.</li>
<li>To add support to pygrub for /boot to be a separate partition, edit /usr/bin/pygrub.  Go to line 395 and you should see the file list for grub 2.  It is only searching for /boot/grub/grub.cfg.  Like in the grub section, it needs to search for the file when /boot is the root of the partition also.  Add /grub/grub.cfg to that list.  Skip to step 14.</li>
<li>If you are hesitant to edit the pygrub python script, simplify specify the arguments you need for the VM.   Specify the kernel, ramdisk, and other options that are present in the VMs grub.cfg.  Make sure you use the entries from your grub file, not these specific ones.
<pre>xe vm-param-set uuid=&lt;UUID&gt; PV-bootloader-args="--kernel=vmlinuz-2.6.31-14-server \
--ramdisk=initrd.img-2.6.31-14-server"
xe vm-param-set uuid=&lt;UUID&gt; PV-args="root=UUID=&lt;UUID from grub root entry&gt; ro quiet splash"</pre>
</li>
<li>Start the VM and login.  If your console fails to appear or seems to hang, try connecting to the VM using SSH.  If you missed they step about getting getty to output to hvc0, the console will appear to be hung.  In actuality it is just not displaying the login prompt on hvc0.</li>
<li>Attach the xs-tools.iso to the VM and mount the image.  Mount will claim /dev/cdrom1 does not exist if it has not yet been attached to the VM in XenCenter.
<pre>sudo mount /dev/cdrom1 /mnt</pre>
</li>
<li>Install the XenServer tools.  Make sure you use the proper file for your architecture (amd64 or i386).  A quick &#8220;ls&#8221; will confirm the version of the utilities in you xs-tools.iso.  My file name my differ.
<pre>sudo dpkg -i /mnt/Linux/xe-guest-utilities_5.5.901-562_i386.deb</pre>
</li>
<li>Unmount the iso image and then detach it in XenCenter.
<pre>sudo umount /mnt</pre>
</li>
<li>You are now up and running.  Update the system with aptitude if you like.  Keep in mind that if you update your kernel and you specified PV-bootloader-args, you will have to go back and update those accordingly.  I still have some issue like XenCenter not reporting the NIC IP and no performance data.  Hopefully that can be resolved soon so I can update this article.</li>
</ol>
<h1>Troubleshooting</h1>
<p><strong>I need to use xe-edit-bootloader.</strong></p>
<p>To add grub2 support, edit /opt/xensource/bin/xe-edit-bootloader. On line 18 add the grub2 configuration files to the list.</p>
<pre>default_file_list="/boot/grub/grub.cfg /grub/grub.cfg /boot/grub/menu.lst /grub/menu.lst"</pre>
<p><strong>After updating the kernel it continues to boot the old kernel.</strong></p>
<p>If the new kernel is listed as the first and default entry in your grub file, make sure your PV-bootloader-args are not specified.  Retrieve the UUID of the VM using step 6 from the article.  Check the PV-bootloader-args parameter.</p>
<pre>xe vm-param-list uuid=&lt;UUID&gt;</pre>
<p>If you have specified PV-bootloader-args you need to update them to specify the new kernel.  You can use xe-edit-bootloader to find these values.  If you have decided to use pygrub to read the grub config at boot, then clear out the PV-bootloader-args and PV-args fields.</p>
<pre>xe vm-param-set uuid=&lt;UUID&gt; PV-bootloader-args=</pre>
<pre>xe vm-param-set uuid=&lt;UUID&gt; PV-args=</pre>
<p><strong>Can&#8217;t I just use PV-kernel and PV-ramdisk?</strong></p>
<p>These parameters on a VM are actually for when the kernel and ramdisk on on the XenServer (Dom0) filesystem.  The article here is for using the kernel inside the actual VM (DomU) itself.  For that, PV-bootloader-argsd is used.</p>
<p><strong>Can&#8217;t type at login prompt.</strong></p>
<p>I ran into one instance where I could see the login prompt but nothing I typed appeared.  First, make sure you click inside the console window.  If that does not resolve the issue, close and reopen XenCenter.  This fixed the issue when I encountered it.</p>
<p><strong>PV is not working and I need to get the VM back up.</strong></p>
<p>It is possible to get the VM back up if either PV mode will just not work or you need to go back and redo a step.  To do this simply shutdown the VM and respecify the HVM-boot-policy parameter. This parameter is case-sensitive!</p>
<pre>xe vm-param-set uuid=&lt;UUID&gt; HVM-boot-policy="BIOS order"</pre>
<p>To return to PV mode, clear the HVM-boot-policy parameter.</p>
<pre>xe vm-param-set uuid=&lt;UUID&gt; HVM-boot-policy=</pre>
]]></content:encoded>
			<wfw:commentRss>http://wordpress.aikidokatech.com/?feed=rss2&amp;p=30</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Xen Desktop on ESX backend</title>
		<link>http://wordpress.aikidokatech.com/?p=28</link>
		<comments>http://wordpress.aikidokatech.com/?p=28#comments</comments>
		<pubDate>Tue, 20 May 2008 23:38:08 +0000</pubDate>
		<dc:creator>Adam Oliver</dc:creator>
				<category><![CDATA[Virtualization]]></category>
		<category><![CDATA[XenDesktop]]></category>
		<category><![CDATA[ESX]]></category>

		<guid isPermaLink="false">http://wordpress.aikidokatech.com/?p=28</guid>
		<description><![CDATA[Getting Xen Desktop 2.0 Beta up and running on a VMWare ESX backend. This is compiled from documentation and forum posts.  I&#8217;ve put it here to assist anybody and to have a record for myself.  I take no credit for &#8230; <a href="http://wordpress.aikidokatech.com/?p=28">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Getting Xen Desktop 2.0 Beta up and running on a VMWare ESX backend.</p>
<p><span id="more-28"></span>This is compiled from documentation and forum posts.  I&#8217;ve put it here to assist anybody and to have a record for myself.  I take no credit for this information as it was all in actual documentation or posted by others in the Citrix forums.  Here is how I got my test environment up and running.</p>
<ol>
<li>Install the Desktop Delivery Controller (DDC) on a physical or virtual server.  I used a dedicated virtual machine for this. </li>
<li>Make sure you add the CDS-TP.lic file to the license manager so you have actual licenses to test with.</li>
<li>Copy the default certificate from your Virtual Center server to the DDC machine. C:\Documents and Settings\All Users\Application Data\VMware\VMware VirtualCenter\SSL\rui.crt</li>
<li>On the DDC machine, run mmc and add the Certificates snap-in for the Computer Account.</li>
<li>Expand Certificates, then Trusted Root Certification Authorities.</li>
<li>Under Trusted Root Certification Authorities, right-click Certificates and chose Import.</li>
<li>Browse to the rui.crt file you copied and import it.</li>
<li>Open the hosts file on the DDC machine, c:\windows\system32\drivers\etc\hosts, and add the Virtual Center machine&#8217;s IP for the hostname &#8220;vmware&#8221;.  If must be vmware as this is the name on the default certificate.  If you make a new cert with the FQDN you should be find without this step as long as you import that cert.</li>
<li>Run the Access Management Console on the DDC machine.</li>
<li>If you hadn&#8217;t done the initial wizard, complete it now.</li>
<li>Expand Citrix Resources\Desktop Delivery Controller\&lt;Your Farm Name&gt;.</li>
<li>Righ-click on Desktop Groups and select Create Desktop Group.</li>
<li>Pick the Assignment type you want.</li>
<li>Set the Hosting Infrastructure to &#8220;VMWare virtualization&#8221; and hit Next.</li>
<li>Enter https://vmware/sdk as the address. If you have a cert for the FQDN, use that instead of vmware.  Enter a username and password of an account with the necessary permission in Virtual Center.  Hit Next.</li>
<li>Add the virtual machines to be part of the pool.</li>
<li>Add the users allow to access the pool.</li>
<li>Complete the rest of the wizard to match the settings you want.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://wordpress.aikidokatech.com/?feed=rss2&amp;p=28</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Joomla Tooltips</title>
		<link>http://wordpress.aikidokatech.com/?p=4</link>
		<comments>http://wordpress.aikidokatech.com/?p=4#comments</comments>
		<pubDate>Thu, 15 May 2008 22:53:39 +0000</pubDate>
		<dc:creator>Adam Oliver</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Joomla]]></category>

		<guid isPermaLink="false">http://wordpress.aikidokatech.com/?p=4</guid>
		<description><![CDATA[In my porting of Zoom Media Gallery to Joomla 1.5 I had to figure out how to recode the tooltips. Here you&#8217;ll find the most basic way to fully customizing your tip. To start, you must activate the tooltip behavior. &#8230; <a href="http://wordpress.aikidokatech.com/?p=4">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>In my porting of Zoom Media Gallery to Joomla 1.5 I had to figure out how to recode the tooltips. Here you&#8217;ll find the most basic way to fully customizing your tip.</p>
<p><span id="more-4"></span>To start, you must activate the tooltip behavior. This is done with the following line of code:</p>
<pre>JHTML::_('behavior.tooltip');</pre>
<h3>The built-in Joomla method</h3>
<p>The easiest way to create a tooltip is using the JHTML::tooltip method.. The api docs should be here. <a href="http://api.joomla.org/Joomla-Framework/HTML/JHTML.html#tooltip" target="_blank">http://api.joomla.org/Joomla-Framework/HTML/JHTML.html#tooltip</a> However here is the method definition. For those unfamiliar with method definitions, the brackets mean the parameter is optional. The equals specifies the default if you do not pass that parameter.</p>
<pre>void tooltip (string $tooltip, [string $title = ''], [string $image = 'tooltip.png'],
	[string $text = ''], [string $href = ''], [boolean $link = 1])</pre>
<p>The following is a basic tooltip. Keep in mind that the image variable must be in reference to ‘includes/js/ThemeOffice’. Use the prefix ‘../../../’ to reference from the root of the Joomla installation.</p>
<pre>JHTML::tooltip('This is the tooltip text', 'Tooltip title', 'tooltip.png', '', 'http://www.joomla.org');</pre>
<p>The above will make a tooltip on the tooltip.png image. Clicking the image will take you to www.joola.org.</p>
<pre>JHTML::tooltip('This is the tooltip text', 'Tooltip title', 'tooltip.png', '', '', false);</pre>
<p>The above is almost the same except the image will not be a link.</p>
<p>NOTE: Specifying the $text parameter will override any image you have passed to tooltip!</p>
<h3>Creation by class name</h3>
<p>That is the easy way to do it. You can also apply the “hasTip” class to something to make it a tool tip. This will make it possible to easily do your own custom tips later. I’ve adapted information here from the <a href="http://demos.mootools.net/" target="_blank">mootools demo</a>.</p>
<pre>&lt;span title="My Tooltip Title :: Here is my tip's text"&gt;Mootools.net&lt;/span&gt;</pre>
<p>This produces a tool tip on the span. The title attribute specifies what is in the tool tip. The format is “Tip Title::Tip Text”.</p>
<h3>Designing the tooltip</h3>
<p>The default toottips, whether using the JHTML::tooltip method or class method, use the following three CSS classes:<br />
.tool-tip<br />
.tool-title<br />
.tool-text</p>
<p>Here are the default styles.</p>
<pre>/* Tooltips */</pre>
<pre>.tool-tip {</pre>
<pre>    float: left;</pre>
<pre>    background: #ffc;</pre>
<pre>    border: 1px solid #D4D5AA;</pre>
<pre>    padding: 5px;</pre>
<pre>    max-width: 200px;</pre>
<pre>}</pre>
<pre>.tool-title {</pre>
<pre>    padding: 0;</pre>
<pre>    margin: 0;</pre>
<pre>    font-size: 100%;</pre>
<pre>    font-weight: bold;</pre>
<pre>    margin-top: -15px;</pre>
<pre>    padding-top: 15px;</pre>
<pre>    padding-bottom: 5px;</pre>
<pre>    background: url(../images/selector-arrow.png) no-repeat;</pre>
<pre>}</pre>
<pre>.tool-text {</pre>
<pre>    font-size: 100%;</pre>
<pre>    margin: 0;</pre>
<pre>}</pre>
<p>Dump this into your custom CSS file if you have one and alter it to your liking.</p>
<h3>Customizing your tooltips</h3>
<p>Ok, time to get down and dirty. This is based on the <a href="http://demos.mootools.com/" target="_blank">mootools demo</a>. Don’t want anybody to think I discovered it on my own! Now we are going to make our own tip definitions that include a very cool fade in and out. First create a JavaScript file or simply put this code directly into your code. Pick a name for the class to use. I used “zoomTip” as I was playing with Zoom Gallery while learning this.</p>
<pre>window.addEvent('domready', function(){</pre>
<pre>    //do your tips stuff in here...</pre>
<pre>    var zoomTip = new Tips($$('.zoomTip'), {</pre>
<pre>        className: 'custom', //this is the prefix for the CSS class</pre>
<pre>        initialize:function(){</pre>
<pre>            this.fx = new Fx.Style(this.toolTip, 'opacity', {duration: 500, wait: false}).set(0);</pre>
<pre>        },</pre>
<pre>        onShow: function(toolTip) {</pre>
<pre>            this.fx.start(1);</pre>
<pre>        },</pre>
<pre>        onHide: function(toolTip) {</pre>
<pre>            this.fx.start(0);</pre>
<pre>        }</pre>
<pre>    });</pre>
<pre>});</pre>
<p>I’m only going to cover one line of that code here. Please look over the mootools library for more information. I read in their forum that their slider library is not compatible with the tooltips. The 4th line is the prefix for the CSS classes that will be used. In this example the classes will be the following:<br />
.custom-tip<br />
.custom-title<br />
.custom-text</p>
<p>Here is some example CSS straight from the <a href="http://demos.mootools.net/" target="_blank">mootools demo</a>.</p>
<pre>.custom-tip {</pre>
<pre>    color: #000;</pre>
<pre>    width: 130px;</pre>
<pre>    z-index: 13000;</pre>
<pre>}</pre>
<pre>.custom-title {</pre>
<pre>    font-weight: bold;</pre>
<pre>    font-size: 11px;</pre>
<pre>    margin: 0;</pre>
<pre>    color: #3E4F14;</pre>
<pre>    padding: 8px 8px 4px;</pre>
<pre>    background: #C3DF7D;</pre>
<pre>    border-bottom: 1px solid #B5CF74;</pre>
<pre>}</pre>
<pre>.custom-text {</pre>
<pre>    font-size: 11px;</pre>
<pre>    padding: 4px 8px 8px;</pre>
<pre>    background: #CFDFA7;</pre>
<pre>}</pre>
<p>Notice that .custom-title does not have a background property. This tool tip will be a box <em>without</em> the neat little arrow pointing at the mouse. If you wanted to change the colors in the box and use the arrows you would have to alter the image to have the color you want and add that property into your .custom-title CSS. Now you must create the items using the class method and not using JHTML::tooltip. JHTML::tooltip applies the classes “editlinktip” and “hasTip”. I have not seen any way to easily alter that. The code below will create a tip using this new js code.</p>
<pre>&lt;span title="My Tooltip Title :: Here is my tip's text"&gt;Mootools.net&lt;/span&gt;</pre>
<p>Notice the only difference from the previous example using a span is the class name.</p>
<p>Created 6/28/2007</p>
<p>So there is what I discovered the past couple of days. I&#8217;ll edit this as things come up and/or corrections are made.</p>
<p>Joomla API &#8211; <a href="http://api.joomla.org/" target="_blank">http://api.joomla.org</a><br />
Mootools &#8211; <a href="http://api.joomla.org/" target="_blank">http://www.mootools.net/</a><br />
Mootools demos &#8211; <a href="http://api.joomla.org/" target="_blank">http://demos.mootools.net/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://wordpress.aikidokatech.com/?feed=rss2&amp;p=4</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Joomla popup button</title>
		<link>http://wordpress.aikidokatech.com/?p=10</link>
		<comments>http://wordpress.aikidokatech.com/?p=10#comments</comments>
		<pubDate>Mon, 05 May 2008 22:57:04 +0000</pubDate>
		<dc:creator>Adam Oliver</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Joomla]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://wordpress.aikidokatech.com/?p=10</guid>
		<description><![CDATA[Joomla 1.5 has a nice pop up button class. This will dim the webpage and popup a smaller page over it. I found that it doesn&#8217;t work quite right outside a toolbar, so here&#8217;s how to manually do it. First &#8230; <a href="http://wordpress.aikidokatech.com/?p=10">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Joomla 1.5 has a nice pop up button class. This will dim the webpage and popup a smaller page over it. I found that it doesn&#8217;t work quite right outside a toolbar, so here&#8217;s how to manually do it.</p>
<p><span id="more-10"></span>First we must load the modal behavior. Take note that in the examples I split some code over multiple lines for display purposes in the article.</p>
<pre>JHTML::_('behavior.modal');</pre>
<p>Then simply put in this link with the information you want.</p>
<pre>&lt;a href="http://www.google.com'" mce_href="http://www.google.com'"
    rel="{handler: 'iframe', size: {x: 500, y: 400}}"&gt;
        &lt;span title="&lt;some title&gt;"&gt;
            &lt;img src="&lt;path to image file&gt;" border="0" name="&lt;name&gt;" title="&lt;title&gt;" alt="&lt;alt text&gt;" /&gt;
        &lt;/span&gt;
&lt;/a&gt;</pre>
<p>You can even combine this with tooltips! Of course you must load the proper behavior.</p>
<pre> JHTML::_('behavior.tooltip');</pre>
<p>Then put in this link.</p>
<pre>&lt;a href="http://www.google.com'" mce_href=<a href="http://www.google.com'/">http://www.google.com'/</a>
    rel="{handler: 'iframe', size: {x: 500, y: 400}}"&gt;
        &lt;span title="tip title::tip text"&gt;
            &lt;img src="&lt;path to image file&gt;" border="0" name="&lt;name&gt;" title="&lt;title&gt;" alt="&lt;alt text&gt;" /&gt;
        &lt;/span&gt;
&lt;/a&gt;</pre>
<p>Now to make this more useful, what if you wanted to load some code from a view? This example calls a function in a view to display the page. Here&#8217;s the function.</p>
<pre>function displayPopup() {</pre>
<pre> ?&gt;</pre>
<pre> &lt;!-- The HTML for the page goes here. --&gt;</pre>
<pre>&lt;?php</pre>
<pre>}</pre>
<p>We can call this function using the controller.</p>
<pre>function popup() {</pre>
<pre> 	$view = &amp; $this-&gt;getView('&lt;view name&gt;', 'html');

	// Get/Create the model
	$model = &amp; $this-&gt;getModel('&lt;model name&gt;');

	// Push the model into the view (as default)
	$view-&gt;setModel($model, true);

	// Display the view
	$view-&gt;displayPopup();</pre>
<pre>}</pre>
<p>Now here is the link that could trigger this popup. This assumes that you are using $task to trigger methods in your controller. Take note that the last tmpl=component should appear exactly as that. This makes the popup be only the code you put in the view.</p>
<pre>$mainframe-&gt;getCfg('live_site').'/index.php?option=&lt;your component&gt;&amp;
controller=&lt;controller if no default&gt;&amp;task=popup&amp;tmpl=component</pre>
]]></content:encoded>
			<wfw:commentRss>http://wordpress.aikidokatech.com/?feed=rss2&amp;p=10</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Playing with the Joomla WYSIWYG editor</title>
		<link>http://wordpress.aikidokatech.com/?p=7</link>
		<comments>http://wordpress.aikidokatech.com/?p=7#comments</comments>
		<pubDate>Mon, 05 May 2008 22:55:30 +0000</pubDate>
		<dc:creator>Adam Oliver</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Joomla]]></category>

		<guid isPermaLink="false">http://wordpress.aikidokatech.com/?p=7</guid>
		<description><![CDATA[One thing I had to figure out was how to set the editor&#8217;s contents via JavaScript and get its contents in my controller. It turns out that Joomla 1.5&#8242;s API provides a way to do so without knowing what editor &#8230; <a href="http://wordpress.aikidokatech.com/?p=7">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>One thing I had to figure out was how to set the editor&#8217;s contents via JavaScript and get its contents in my controller. It turns out that Joomla 1.5&#8242;s API provides a way to do so without knowing what editor you are actually using.</p>
<p><span id="more-7"></span> The first thing to do is grab and instance of your preferred editor.</p>
<pre>$editor =&amp; JFactory::getEditor();</pre>
<p>Next, output the editor&#8217;s code via the display method. Either append this to a variable you will be echoing out in your template or echo it directly if it&#8217;s in your template.</p>
<pre>echo $editor-&gt;display('descText', 'Some text', '100%', '200', '75', '20', false);</pre>
<p>&#8220;descText&#8221; will be the html id of the editor, the next argument in any default text to appear in the editor, and the next four deal with the editor&#8217;s size. The last argument determines if the image, page break, and read more options should be available. Passing true or leaving it blank will show the options. Passing false will cause them to not show.</p>
<p>Now a brief explanation of buttons. When you create one with the button tag or in a toolbar, they trigger a javascript function called submitbutton. By default it works like this.</p>
<pre>function submitbutton(task) {
	submitform(task);
}</pre>
<p>So, we&#8217;ll need to redeclare it with our own Javascript. I do it using the JDocument object.</p>
<pre>$document =&amp; JFactory::getDocument();
$document-&gt;addScriptDeclaration("function submitbutton(task) {
	var text = ".$editor-&gt;getContent('descText') ."
	if (task == 'save') {
		".$editor-&gt;save()."
		submitform(task);
	}
}");</pre>
<p>The javascript function will come out in your html code like this.</p>
<pre>function submitbutton(task) {
	 var text=tinyMCE.getContent();
	if (task == 'save') {
		 tinyMCE.triggerSave();
		submitform(task);
	}
}</pre>
<p>Remember that &#8220;descText&#8221; was the id we gave the editor. This assumes that you named your task that needs to access the editor&#8217;s content to &#8220;save&#8221;. By default your component will be using controller.php to look for tasks. You could manually specify one by putting the following line in your html form.</p>
<pre>&lt;input type="hidden" name="controller" value="customcontroller" /&gt;</pre>
<p>This will look for customcontroller.php in your components controllers directory. Whichever you are using, you can get the editor&#8217;s contents with the following:</p>
<pre>$editorText = JRequest::getVar('descText', '', 'post', 'string', JREQUEST_ALLOWRAW);</pre>
<p>That covers the basic getting of your editor&#8217;s contents. Now onto setting them. Create a javascript function such as the following:</p>
<pre>$document-&gt;addScriptDeclaration("function updateEditor(text) {
	".$editor-&gt;setContent('descText', 'text')."
}");</pre>
<p>The javascript function will come out in your html like this.</p>
<pre>function updateEditor(text) {
	tinyMCE.setContent(text);
}</pre>
<p>Once again, &#8220;descText&#8221; is the id of the editor. The second argument is the name of the javascript variable that will hold the new content.</p>
]]></content:encoded>
			<wfw:commentRss>http://wordpress.aikidokatech.com/?feed=rss2&amp;p=7</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
