<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>Adam Salvo (z) - Technology|Virtualization</title>
    <link>http://blog.salvoz.com/</link>
    <description>newtelligence powered</description>
    <language>en-us</language>
    <copyright>Adam Salvo</copyright>
    <lastBuildDate>Thu, 21 May 2009 09:00:00 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.2.8279.16125</generator>
    <managingEditor>adam@salvoz.com</managingEditor>
    <webMaster>adam@salvoz.com</webMaster>
    <item>
      <trackback:ping>http://blog.salvoz.com/Trackback.aspx?guid=9e5eccb3-ba6e-4de4-b3c3-08a960980c8e</trackback:ping>
      <pingback:server>http://blog.salvoz.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.salvoz.com/PermaLink,guid,9e5eccb3-ba6e-4de4-b3c3-08a960980c8e.aspx</pingback:target>
      <dc:creator>Adam Salvo</dc:creator>
      <wfw:comment>http://blog.salvoz.com/CommentView,guid,9e5eccb3-ba6e-4de4-b3c3-08a960980c8e.aspx</wfw:comment>
      <wfw:commentRss>http://blog.salvoz.com/SyndicationService.asmx/GetEntryCommentsRss?guid=9e5eccb3-ba6e-4de4-b3c3-08a960980c8e</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Some recent events have led me to do some experimenting with <a href="http://www.microsoft.com/windowsembedded/en-us/products/wexpe/default.mspx" target="_blank">Windows
Embedded Standard</a>, or WES. This is an upgraded version of Windows XP embedded.
WES adds support for .Net 3.5 and Software Update Services, which are the top two
new features that caught my eye. One of the nice things of WES over say, WinCE, is
that you have a much richer development ecosystem to work with. Everything from the
Full .Net Framework, WPF, WCF, to a huge library of open source tools and utilities,
and not to mention driver support. 
</p>
        <p>
I’ve done some WinCE development in the past, and one of the best tools you can have,
is the WinCE emulator. So when it came to WES, I wanted something where I could test
stuff out without needing any hardware. The following walk illustrates what is needed
to get a basic (and I do mean basic) WES image created and running in a Hyper-V vitalization
environment. The following instructions were created were created from with help of
the the Windows Embedded Standard (WES) help files, and a <a href="http://www.sjjmicro.com/Video_Basic_Build.html" target="_blank">video
tutorial</a> by <a href="http://www.sjjmicro.com/" target="_blank">SJJ Embedded Micro
Solutions</a>. 
</p>
        <p>
Each WES image must include 7 Core Components. 
</p>
        <ul>
          <li>
Computer Componet/HAL 
</li>
          <li>
Shell Component 
</li>
          <li>
Language Component 
</li>
          <li>
NT Loader Component 
</li>
          <li>
File System and format components 
</li>
          <li>
Logon Component</li>
        </ul>
        <p>
I am going to select two macro components (macro components are components that are
only made up of other components) in order to get those 7 core components. One of
the macro components is provided for us, the other is one that we will create in order
to get a HAL for a Hyper-V based VM.
</p>
        <ol>
          <li>
Installed Windows Embedded Standard Trial edition on a Windows XP Pro SP3 Virtual
Machine in Hyper-V 
</li>
          <li>
Navigate to C:\Program Files\Windows Embedded\utilities and run Tap.exe as an administrator.
This creates a devices.pmq file in the same directory as the Tap program 
</li>
          <li>
Open Component Designer and from the File menu, choose Import. Select the .pmq file
you created in step 2, then click start. 
</li>
          <li>
After the import is complete, click Save from the file menu to save the .sld file 
</li>
          <li>
From the tools menu, choose component database manager 
</li>
          <li>
On the database tab, click import and browse to your .sld file created in step 4 and
then import. 
</li>
          <li>
Close Component Designer and component database manager 
</li>
          <li>
Open target designer and create a new target named HyperV_Test (or whatever you want
to name it) 
</li>
          <li>
Your new component should be at the bottom of the components tree on the left hand
side of the IDE, double click it to add it to your target 
</li>
          <li>
Under Software\Test &amp; Development, double click the Runtime Quick Start Helper
marco. This adds the explorer shell, FAT, NTFS and a few other essentials 
</li>
          <li>
Go to the Configuration menu option and click check dependencies. This will add additional
components, such as all those required by the Component we created from the .pmq file. 
</li>
          <li>
From the tools menu, click Build. According to the video by SJJ, you must select release,
but I think they were using the previous version of Target Designer. I only tried
release. Also, you will want to specify the exact destination that you want the “image”
to be created. Target Designer will delete everything in the destination folder. I
decided to use a folder structure like /WESBuilds/HyperVTest/ 
</li>
          <li>
Copy the resulting image to a bootable partition. I created a new VHD file and attached
it to another VM running XP. From within the running VM, I used Disk Management to
partition, format and mark the partition as active. Finally I copied my image files
over to the root of the new partition. 
</li>
          <li>
Attach VHD to a new VM and boot. The first time an image is booted, the First Boot
Agent (FBA) runs and completes the creation of the image.</li>
        </ol>
        <p>
So what did I end up with? Well, I had a WES image running in Hyper-V that used 210MB
of disk space. This is a very, very basic image. The shell has an empty start menu,
there is no logon, no command prompt, no networking, pretty much the bare minimum.
So while this would be a good start for a final production build depending on requirements,
its not very functional for development. I hope to be able to expand on this image
and add the following: 
</p>
        <ul>
          <li>
Hyper-V extensions? 
</li>
          <li>
.Net Framework 3.5 SP1? 
</li>
          <li>
Networking and Firewall?</li>
        </ul>
        <p>
One question I have is, if you leave something out of an image, is there anyway to
add it at a later time? For example, if you have no requirements for a web browser,
and a media player initially, but need to add support in the future, what is the best
way to implement? 
</p>
        <p>
Lot’s of potential with WES, and I’m looking forward to learning more about it.
</p>
        <img width="0" height="0" src="http://blog.salvoz.com/aggbug.ashx?id=9e5eccb3-ba6e-4de4-b3c3-08a960980c8e" />
        <br />
        <hr />
This weblog is sponsored by <a href="http://www.salvoz.com">Adam Salvo</a>. 
</body>
      <title>Windows Embedded Standard Image for Hyper-V</title>
      <guid isPermaLink="false">http://blog.salvoz.com/PermaLink,guid,9e5eccb3-ba6e-4de4-b3c3-08a960980c8e.aspx</guid>
      <link>http://blog.salvoz.com/2009/05/21/WindowsEmbeddedStandardImageForHyperV.aspx</link>
      <pubDate>Thu, 21 May 2009 09:00:00 GMT</pubDate>
      <description>&lt;p&gt;
Some recent events have led me to do some experimenting with &lt;a href="http://www.microsoft.com/windowsembedded/en-us/products/wexpe/default.mspx" target="_blank"&gt;Windows
Embedded Standard&lt;/a&gt;, or WES. This is an upgraded version of Windows XP embedded.
WES adds support for .Net 3.5 and Software Update Services, which are the top two
new features that caught my eye. One of the nice things of WES over say, WinCE, is
that you have a much richer development ecosystem to work with. Everything from the
Full .Net Framework, WPF, WCF, to a huge library of open source tools and utilities,
and not to mention driver support. 
&lt;/p&gt;
&lt;p&gt;
I’ve done some WinCE development in the past, and one of the best tools you can have,
is the WinCE emulator. So when it came to WES, I wanted something where I could test
stuff out without needing any hardware. The following walk illustrates what is needed
to get a basic (and I do mean basic) WES image created and running in a Hyper-V vitalization
environment. The following instructions were created were created from with help of
the the Windows Embedded Standard (WES) help files, and a &lt;a href="http://www.sjjmicro.com/Video_Basic_Build.html" target="_blank"&gt;video
tutorial&lt;/a&gt; by &lt;a href="http://www.sjjmicro.com/" target="_blank"&gt;SJJ Embedded Micro
Solutions&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;
Each WES image must include 7 Core Components. 
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Computer Componet/HAL 
&lt;li&gt;
Shell Component 
&lt;li&gt;
Language Component 
&lt;li&gt;
NT Loader Component 
&lt;li&gt;
File System and format components 
&lt;li&gt;
Logon Component&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
I am going to select two macro components (macro components are components that are
only made up of other components) in order to get those 7 core components. One of
the macro components is provided for us, the other is one that we will create in order
to get a HAL for a Hyper-V based VM.
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Installed Windows Embedded Standard Trial edition on a Windows XP Pro SP3 Virtual
Machine in Hyper-V 
&lt;li&gt;
Navigate to C:\Program Files\Windows Embedded\utilities and run Tap.exe as an administrator.
This creates a devices.pmq file in the same directory as the Tap program 
&lt;li&gt;
Open Component Designer and from the File menu, choose Import. Select the .pmq file
you created in step 2, then click start. 
&lt;li&gt;
After the import is complete, click Save from the file menu to save the .sld file 
&lt;li&gt;
From the tools menu, choose component database manager 
&lt;li&gt;
On the database tab, click import and browse to your .sld file created in step 4 and
then import. 
&lt;li&gt;
Close Component Designer and component database manager 
&lt;li&gt;
Open target designer and create a new target named HyperV_Test (or whatever you want
to name it) 
&lt;li&gt;
Your new component should be at the bottom of the components tree on the left hand
side of the IDE, double click it to add it to your target 
&lt;li&gt;
Under Software\Test &amp;amp; Development, double click the Runtime Quick Start Helper
marco. This adds the explorer shell, FAT, NTFS and a few other essentials 
&lt;li&gt;
Go to the Configuration menu option and click check dependencies. This will add additional
components, such as all those required by the Component we created from the .pmq file. 
&lt;li&gt;
From the tools menu, click Build. According to the video by SJJ, you must select release,
but I think they were using the previous version of Target Designer. I only tried
release. Also, you will want to specify the exact destination that you want the “image”
to be created. Target Designer will delete everything in the destination folder. I
decided to use a folder structure like /WESBuilds/HyperVTest/ 
&lt;li&gt;
Copy the resulting image to a bootable partition. I created a new VHD file and attached
it to another VM running XP. From within the running VM, I used Disk Management to
partition, format and mark the partition as active. Finally I copied my image files
over to the root of the new partition. 
&lt;li&gt;
Attach VHD to a new VM and boot. The first time an image is booted, the First Boot
Agent (FBA) runs and completes the creation of the image.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
So what did I end up with? Well, I had a WES image running in Hyper-V that used 210MB
of disk space. This is a very, very basic image. The shell has an empty start menu,
there is no logon, no command prompt, no networking, pretty much the bare minimum.
So while this would be a good start for a final production build depending on requirements,
its not very functional for development. I hope to be able to expand on this image
and add the following: 
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Hyper-V extensions? 
&lt;li&gt;
.Net Framework 3.5 SP1? 
&lt;li&gt;
Networking and Firewall?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
One question I have is, if you leave something out of an image, is there anyway to
add it at a later time? For example, if you have no requirements for a web browser,
and a media player initially, but need to add support in the future, what is the best
way to implement? 
&lt;/p&gt;
&lt;p&gt;
Lot’s of potential with WES, and I’m looking forward to learning more about it.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.salvoz.com/aggbug.ashx?id=9e5eccb3-ba6e-4de4-b3c3-08a960980c8e" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
This weblog is sponsored by &lt;a href="http://www.salvoz.com"&gt;Adam Salvo&lt;/a&gt;. </description>
      <comments>http://blog.salvoz.com/CommentView,guid,9e5eccb3-ba6e-4de4-b3c3-08a960980c8e.aspx</comments>
      <category>Technology</category>
      <category>Technology/Virtualization</category>
    </item>
    <item>
      <trackback:ping>http://blog.salvoz.com/Trackback.aspx?guid=501e3941-7292-4685-bc9f-89a4786452f6</trackback:ping>
      <pingback:server>http://blog.salvoz.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.salvoz.com/PermaLink,guid,501e3941-7292-4685-bc9f-89a4786452f6.aspx</pingback:target>
      <dc:creator>Adam Salvo</dc:creator>
      <wfw:comment>http://blog.salvoz.com/CommentView,guid,501e3941-7292-4685-bc9f-89a4786452f6.aspx</wfw:comment>
      <wfw:commentRss>http://blog.salvoz.com/SyndicationService.asmx/GetEntryCommentsRss?guid=501e3941-7292-4685-bc9f-89a4786452f6</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I went to RDP into one of my local Hyper-V virtual machines this morning, only to
find out I wasn’t able to connect. Browsing to the Hyper-V manager I saw that none
of my VM’s were running. At first I couldn’t figure out why this was, until I remembered
that my desktop machine was powered off this morning, indicating we had a brief power
outage. The laptop, which obviously has a battery, was able to withstand the power
outage, but the external hard drive, which requires external power was not. While
I do have a UPS, it’s a piece of crap that never worked. Maybe now would be a good
time to pick up another UPS on closeout from Circuit City, I’ll have to run that one
past my manager.
</p>
        <p>
I tried starting my VM’s, but most of them wouldn’t start, giving an error stating
that the VM couldn’t start in it’s current state (which appeared to be saved). I tried
to delete the saved state, and got an error stating that the saved state could not
be deleted in the current state. The common thing between the VM’s that would start,
and those that wouldn’t, was that the VM config files were also on the external hard
drive. Browsing to the external hard drive, showed that the folder that contained
the VM config files was empty (not a good sign). I checked the event log to see if
I could get some more information, and 100’s of warnings indicating a problem with
my external hard drive. I figured the best thing to do at this point was to shut down
my laptop, power cycle the external hard drive and double check all connections. 
</p>
        <p>
After the reboot, the drive was functional (well almost) again, and there were no
more warnings in the event log. While the VM config files were back where they were
supposed to be, I still couldn’t start the VM’s. I also could not delete the VM config
files from within Hyper-V manager. I went back to the config folder and went to Cut/Paste
(move) the config files someplace else thinking I would just recreate the VM config.
However, I couldn’t cut, move, delete or do anything other then browse (read) the
files and folders.
</p>
        <p>
Jumping back to Server Manager, I opened up Disk Management utility and saw that my
external hard drive was listed as read only. I looked in just about every place I
could think of, but could not find a way to make the disk read/write again. A Google
search yielded no usable results, as it seems this is a pretty obscure problem. Aside
from the legitimate answer of “does your removable media have a write protect switch”,
all the other answers seemed to focus around viruses and other seemingly unrelated
solutions. 
</p>
        <p>
Finally I decided to try my the only option that wasn’t grayed out for the read only
disk in Disk Manger, and that was to <strong>take the disk offline</strong>, then
bring it online again. Wow, that fixed it, the disk was now back in the standard read/write
mode, and finally my VM’s would start. It appears as if the VM config file on at least
one of the VM’s was corrupted, as I had to reselect my network adapters, but that
was an easy fix. 
</p>
        <img width="0" height="0" src="http://blog.salvoz.com/aggbug.ashx?id=501e3941-7292-4685-bc9f-89a4786452f6" />
        <br />
        <hr />
This weblog is sponsored by <a href="http://www.salvoz.com">Adam Salvo</a>. 
</body>
      <title>Hyper-V Virtual Machines Not starting, Read-Only Disk</title>
      <guid isPermaLink="false">http://blog.salvoz.com/PermaLink,guid,501e3941-7292-4685-bc9f-89a4786452f6.aspx</guid>
      <link>http://blog.salvoz.com/2009/02/27/HyperVVirtualMachinesNotStartingReadOnlyDisk.aspx</link>
      <pubDate>Fri, 27 Feb 2009 17:47:26 GMT</pubDate>
      <description>&lt;p&gt;
I went to RDP into one of my local Hyper-V virtual machines this morning, only to
find out I wasn’t able to connect. Browsing to the Hyper-V manager I saw that none
of my VM’s were running. At first I couldn’t figure out why this was, until I remembered
that my desktop machine was powered off this morning, indicating we had a brief power
outage. The laptop, which obviously has a battery, was able to withstand the power
outage, but the external hard drive, which requires external power was not. While
I do have a UPS, it’s a piece of crap that never worked. Maybe now would be a good
time to pick up another UPS on closeout from Circuit City, I’ll have to run that one
past my manager.
&lt;/p&gt;
&lt;p&gt;
I tried starting my VM’s, but most of them wouldn’t start, giving an error stating
that the VM couldn’t start in it’s current state (which appeared to be saved). I tried
to delete the saved state, and got an error stating that the saved state could not
be deleted in the current state. The common thing between the VM’s that would start,
and those that wouldn’t, was that the VM config files were also on the external hard
drive. Browsing to the external hard drive, showed that the folder that contained
the VM config files was empty (not a good sign). I checked the event log to see if
I could get some more information, and 100’s of warnings indicating a problem with
my external hard drive. I figured the best thing to do at this point was to shut down
my laptop, power cycle the external hard drive and double check all connections. 
&lt;/p&gt;
&lt;p&gt;
After the reboot, the drive was functional (well almost) again, and there were no
more warnings in the event log. While the VM config files were back where they were
supposed to be, I still couldn’t start the VM’s. I also could not delete the VM config
files from within Hyper-V manager. I went back to the config folder and went to Cut/Paste
(move) the config files someplace else thinking I would just recreate the VM config.
However, I couldn’t cut, move, delete or do anything other then browse (read) the
files and folders.
&lt;/p&gt;
&lt;p&gt;
Jumping back to Server Manager, I opened up Disk Management utility and saw that my
external hard drive was listed as read only. I looked in just about every place I
could think of, but could not find a way to make the disk read/write again. A Google
search yielded no usable results, as it seems this is a pretty obscure problem. Aside
from the legitimate answer of “does your removable media have a write protect switch”,
all the other answers seemed to focus around viruses and other seemingly unrelated
solutions. 
&lt;/p&gt;
&lt;p&gt;
Finally I decided to try my the only option that wasn’t grayed out for the read only
disk in Disk Manger, and that was to &lt;strong&gt;take the disk offline&lt;/strong&gt;, then
bring it online again. Wow, that fixed it, the disk was now back in the standard read/write
mode, and finally my VM’s would start. It appears as if the VM config file on at least
one of the VM’s was corrupted, as I had to reselect my network adapters, but that
was an easy fix. 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.salvoz.com/aggbug.ashx?id=501e3941-7292-4685-bc9f-89a4786452f6" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
This weblog is sponsored by &lt;a href="http://www.salvoz.com"&gt;Adam Salvo&lt;/a&gt;. </description>
      <comments>http://blog.salvoz.com/CommentView,guid,501e3941-7292-4685-bc9f-89a4786452f6.aspx</comments>
      <category>Technology/Virtualization</category>
    </item>
  </channel>
</rss>