<?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>Blog de Bill</title>
	<atom:link href="http://www.mrhandsome.org/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.mrhandsome.org/blog</link>
	<description></description>
	<lastBuildDate>Mon, 08 Feb 2010 00:40:48 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>For Linux, Google&#8217;s Chrome is More Important Than Just the Browser</title>
		<link>http://www.mrhandsome.org/blog/2009/06/for-linux-googles-chrome-is-more-important-than-just-the-browser/</link>
		<comments>http://www.mrhandsome.org/blog/2009/06/for-linux-googles-chrome-is-more-important-than-just-the-browser/#comments</comments>
		<pubDate>Wed, 10 Jun 2009 13:51:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[Chrome]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://mrhandsome.org/blog/2009/06/for-linux-googles-chrome-is-more-important-than-just-the-browser/</guid>
		<description><![CDATA[Don&#8217;t get me wrong. I love Linux and desperately want it to succeed. After years of monopolistic and predatory behavior by Microsoft, I still fear each update. Upon installing an app on Windows, the anxiety that Windows has easily allowed some corporation to take over my laptop sets in. As an extremely frugal guy, I [...]]]></description>
			<content:encoded><![CDATA[<p>Don&#8217;t get me wrong. I love Linux and desperately want it to succeed. After years of monopolistic and predatory behavior by Microsoft, I still fear <a href="http://www.google.com/search?q=microsoft+update+firefox+plugin">each update</a>. Upon installing an app on Windows, the anxiety that Windows has easily allowed some corporation to <a href="http://www.google.com/search?q=sony+rootkit">take over my laptop</a> sets in. As an extremely frugal guy, I know each continued day of Windows usage brings me one step closer to <a href="http://www.google.com/search?q=Windows+lockin">lock in</a> and complete assimilation by the Borg.</p>
<p>Even Macs, regardless of the hype, Unix underpinnings of the OS, and great usability leave me concerned. As a developer and one who whose most important tool is a laptop, I&#8217;ll never be comfortable trusting my means of living to a US corporation beholden to endless growth, higher profits, and corporate strategy. </p>
<p>Thus, I&#8217;ve been desperately rooting for Linux and open source software from the beginning. Unfortunately, after years of steady improvements, Linux on the desktop still hasn&#8217;t lived up to the hype. Ugly fonts, a dozen mediocre sound APIs, a thousand different apps for each main function, not a single once as good as the best Windows alternative (e.g. music players, word processors, graphics apps, &lt;strong&gt;browser&lt;/strong&gt;, etc.) leave a lot to be desired. </p>
<p>My biggest complaint, however, is the browser. Honestly, the browser is easily the most important app an average user will need these days. Firefox on Windows is pretty good – it&#8217;s fast, stable, and, with a few plug-ins, an extremely functional tool for web browsing.</p>
<p>Unfortunately, the version of Firefox for Linux, at least in my trials, has never compared to its Windows and Mac counterparts. The fonts are ugly, even with hours of tweaking. Flash never seems to work correctly. Pages often render strange. The browser itself has a nasty habit of locking up, sending my CPU into a tailspin, before finally crashing completely, taking down the multiple tabs I had open. I don&#8217;t know if the problems are the fault of Firefox, GTK, or the Linux kernel/apis itself. Really, I don&#8217;t have time these days to care. Windows XP works so much better than any of the Linux distros I&#8217;ve tried, I simply can&#8217;t bring myself to get excited upon each new release of Ubuntu, Fedora, etc. like I used to. </p>
<p>That said, it the Google developers can get Chrome to work as well on Linux as it already does on Windows, Linux would be that much more feasible as my day-to-day OS. I don&#8217;t use it on Windows as Firefox is already <em>good enough</em>, but it could really go a long way towards bringing Linux forward. If anyone can do it, it is the development team at Google. And with a huge pile of cash waiting to be freed from Microsoft&#8217;s annual earnings (based mostly on Windows and Office licenses), the incentive is there. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.mrhandsome.org/blog/2009/06/for-linux-googles-chrome-is-more-important-than-just-the-browser/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Related_Name attribute in Django Models</title>
		<link>http://www.mrhandsome.org/blog/2009/06/related_name-attribute-in-djano-models/</link>
		<comments>http://www.mrhandsome.org/blog/2009/06/related_name-attribute-in-djano-models/#comments</comments>
		<pubDate>Sat, 06 Jun 2009 10:24:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[django]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[related name]]></category>

		<guid isPermaLink="false">http://mrhandsome.org/blog/?p=50</guid>
		<description><![CDATA[Two Many-To-One Foreign Key Relationships to the Same Object
See Django&#8217;s official documentation on the subject: Backward Related Objects.
The database has a relationship between Film and Language. Each film has an explicitly defined many-to-one attribute called language via the attribute film.language, and inversely, Django creates an implicit set of each Language&#8217;s films via the attribute film.language_set. [...]]]></description>
			<content:encoded><![CDATA[<h3>Two Many-To-One Foreign Key Relationships to the Same Object</h3>
<p>See Django&#8217;s official documentation on the subject: <a href="http://docs.djangoproject.com/en/1.0/topics/db/queries/#backwards-related-objects">Backward Related Objects</a>.</p>
<p>The database has a relationship between <strong>Film</strong> and <strong>Language</strong>. Each film has an explicitly defined many-to-one attribute called language via the attribute <em>film.language</em>, and inversely, Django creates an implicit set of each Language&#8217;s films via the attribute <em>film.language_set</em>. A simple model is defined below:</p>
<pre>
<pre class="brush: python;">
from django.db import models

# Create your models here.

class Film(models.Model):

    title = models.CharField(max_length=255, db_index = True)
    language = models.ForeignKey('Language')

    def __unicode__(self):
        return self.title

class Language(models.Model):
    name = models.CharField(max_length=20, unique=True)

    def __unicode__(self):
        return u'%s' (self.name)    
</pre>
</pre>
<p>This validates fine, and we can create a few films and languages using the following code: </p>
<pre>
<pre class="brush: python;">
#!/usr/bin/python
from mysite.sakila.models import *

#truncate the two tables
Film.objects.all().delete()
Language.objects.all().delete()

english = Language(name='English')
spanish = Language(name='Spansih')

english.save()
spanish.save()

print '-------Languages-------'
for l in Language.objects.all():
    print l

film_1 = Film(title='film_1', language=english)
film_2 = Film(title='film_2', language=english)

film_3 = Film(title='film_3', language=spanish)
film_4 = Film(title='film_4', language=spanish)

print '--------Films---------'
for f in [film_1, film_2, film_3, film_4]:
    f.save()
    print f

print '----------English Films--------'
for ef in english.film_set.all():
    print ef

print '----------Spanish Films--------'
for sf in spanish.film_set.all():
    print sf
</pre>
</pre>
<p>Running this script gives the following output:</p>
<pre>
<pre class="brush: python;">
-------Languages-------
English
Spansih
--------Films---------
film_1 in English
film_2 in English
film_3 in Spansih
film_4 in Spansih
----------English Films--------
film_1 in English
film_2 in English
----------Spanish Films--------
film_3 in Spansih
film_4 in Spansih
</pre>
</pre>
<p>Notice Django&#8217;s automatic creation of the implicit one-to-many relationship between Language and Film. When the app is loaded, Django initially searches through each model object and creates in memory the implicit inverse relationships defined by many-to-one foreign keys. For example, the model above does <strong>not</strong> explicitly define the one-to-many relationship between language and films. Nonetheless, I can pull up any language from the database, and get a list of its films via the automatically created attribute setof films. Though not explicitly defined, I can still get a list of both Spanish and English films using the query manager called <em>film_set</em>. </p>
<p>Now let&#8217;s say we want to keep track of not only the language of the film, but also the original language of the film. Although it may be the same video, the language of the film is dubbed, and other attributes like title, description, etc. are all modified in order to localize better in the foreign market. For example, If we have the English film <em>Ghostbusters</em>, we could obtain the language object by accessing the attribute language, as in <em>ghostbusters.language</em>. Also, we have the Spanish language version of the film, this time called <em>Assaseinos de Fantasmas</em> defined by the variable <em>aseseino_de_fantasmas</em>, which is essentially a Spanish dub of the film Ghostbusters. This film would have an original language of English, and we could access this attribute as <em>asesino_de_fantasmas.original_language</em>. </p>
<p>The Language model is still the same as before, while the new Film model has another many-to-one foreign key relationship to the <em>Language</em> table: </p>
<pre>
<pre class="brush: python;">
from django.db import models

class Film(models.Model):
    title = models.CharField(max_length=255, db_index = True)
    language = models.ForeignKey('Language')
    original_language = models.ForeignKey('Language')

    def __unicode__(self):
        return %s in %s (original language: %s) % (self.title, self.language, self.original_language)

class Language(models.Model):
    name = models.CharField(max_length=20, unique=True)

    def __unicode__(self):
        return self.name  
</pre>
</pre>
<p>When we try to validate the app using Django&#8217;s <strong>manage.py</strong> tool with the <strong>validate</strong> command, we unfortunately get an error:</p>
<p class="code">Error: One or more models did not validate: sakila.film: Accessor for field &#8216;language&#8217; clashes with related field &#8216;Language.film_set&#8217;. Add a related_name argument to the definition for &#8216;language&#8217;. sakila.film: Accessor for field &#8216;original_language&#8217; clashes with related field &#8216;Language.film_set&#8217;. Add a related_name argument to the definition for &#8216;original_language&#8217;. </p>
<h3>The Problem with Multiple Foreign Keys to the same Table</h3>
<p>The clue to the problem is the term <strong>related_name</strong> within the error output, and is caused by the <em>Film</em> model having two many-to-one foreign key relationships to the same table &#8211; in this case both the <em>language</em> and <em>original_language</em> attributes. When Django attempts to create the implicit one-to-many relationship to the Film table, it discovers that there are actually two of these relationships. If one were to use, for example, <em>english.film_set</em>, would this set refer to the set of <em>languages</em> or <em>original_languages</em>? </p>
<h3>The Solution: <em>related_name</em> argument</h3>
<p>To remedy this problem, one only needs to add a <strong><em>related_name</em></strong> argument to the model definition either of the two many-to-one <em>Language</em> relationships of Film. I&#8217;ll just give <em>original_language</em> the related name of <strong>original_language_film</strong>. Now one can access the set of films in English using the original <em>english.film_set</em>; likewise, we can obtain all the films that were originally in English using <em>english.orig_lang_films</em>. </p>
<pre>
<pre class="brush: python;">
from django.db import models

class Film(models.Model):
    title = models.CharField(max_length=255, db_index = True)
    language = models.ForeignKey('Language')
    original_language = models.ForeignKey('Language', related_name='orig_lang_film')

    def __unicode__(self):
        return u'%s in %s (original language: %s)' % (self.title, self.language, self.original_language)

class Language(models.Model):
    name = models.CharField(max_length=20, unique=True)

    def __unicode__(self):
        return self.name
</pre>
</pre>
<p class="note">Don&#8217;t forget to recreate your database since we&#8217;ve modified the model and will now need to have Django resync it!</p>
<p>Our model now validates successfully! Now, let&#8217;s change the script to take into account our new <em>original language</em> attribute.</p>
<pre>
<pre class="brush: python;">
-------Languages-------
English
Spansih
--------Films---------
film_1 in English (original language: English)
film_2 in English (original language: Spansih)
film_3 in Spansih (original language: English)
film_4 in Spansih (original language: English)
----------English Films--------
film_1 in English (original language: English)
film_2 in English (original language: Spansih)
----------Spanish Films--------
film_3 in Spansih (original language: English)
film_4 in Spansih (original language: English)
----------Oringal Language English Films--------
film_4 in Spansih (original language: English)
film_4 in Spansih (original language: English)
film_4 in Spansih (original language: English)
----------Oringal Spanish English Films--------
film_4 in Spansih (original language: English)
</pre>
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.mrhandsome.org/blog/2009/06/related_name-attribute-in-djano-models/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Thinkpad On Screen Display Fix</title>
		<link>http://www.mrhandsome.org/blog/2009/05/thinkpad-on-screen-display-fix/</link>
		<comments>http://www.mrhandsome.org/blog/2009/05/thinkpad-on-screen-display-fix/#comments</comments>
		<pubDate>Sat, 23 May 2009 04:11:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[laptop]]></category>
		<category><![CDATA[fn]]></category>
		<category><![CDATA[function key]]></category>
		<category><![CDATA[green brightness]]></category>
		<category><![CDATA[green volume]]></category>
		<category><![CDATA[hotkey]]></category>
		<category><![CDATA[IBM]]></category>
		<category><![CDATA[lenovo]]></category>
		<category><![CDATA[On Screen Display]]></category>
		<category><![CDATA[thinkpad]]></category>

		<guid isPermaLink="false">http://mrhandsome.org/blog/?p=89</guid>
		<description><![CDATA[
Thinkpad On Screen Display

I love the Thinkpad line of notebooks, formerly sold by IBM, though now via Lenovo of China. Currently I&#8217;m using a T61 laptop. Though it came with Vista, I downgraded it to XP and have had few problems in a year of use. Likewise, it runs decently on Linux (Ubuntu), though my [...]]]></description>
			<content:encoded><![CDATA[<div class="wp-caption alignright" id="onscreendisplay"><img title="regedit_on_screen_display" alt="IBM Lenovo Thinkpad On Screen Display" src="http://mrhandsome.org/blog/wp-content/uploads/2009/05/onscreen_photo.jpg" />
<p class="wp-caption-text">Thinkpad On Screen Display</p>
</p></div>
<p>I love the Thinkpad line of notebooks, formerly sold by IBM, though now via Lenovo of China. Currently I&#8217;m using a T61 laptop. Though it came with Vista, I downgraded it to XP and have had few problems in a year of use. Likewise, it runs decently on Linux (Ubuntu), though my laptop was upgraded to a discrete graphics card from NVidia – the <a href="http://www.nvidia.com/object/quadro_nvs_notebook.html">Quadro NVS 140</a>.</p>
<p>Unfortunately, I accidentally downloaded an update to the NVidia card via Windows Update. Big Mistake, as it is better to only use provided updates from Lenovo as some of their components are, I suppose, customized for their laptops. Either way, I lost my <strong>on screen display</strong> notifications for both brightness and volume. The volume display itself is actually kinda important as the speakers on my laptop are already extremely weak; sometimes I can&#8217;t even hear poorly encoded videos from YouTube with the volume maxed out. </p>
<p>I did a Google search and came up empty handed. Only a few days later did I find a post on the Lenovo forums that explained a fix. This may or may not work if you&#8217;re having the same problem, but it is worth a try. In my specific case, after upgrading all drivers relating to video, power management, hotkeys, etc, I was actually able to see a very small on screen display on the bottom of my screen when using the special function keys to change volume/brightness. And I also noticed that the latest upgrades put a special <strong>On Screen Display</strong> configuration tab within the advanced properties of my video display (<em>Right Click Desktop -&gt; Properties -&gt; Settings -&gt; Advanced -&gt; On Screen Display</em>). Unfortunately, the <em>size</em> setting is buggy, and will hopefully be fixed by Lenovo soon</p>
<p>In the meantime, you might have success using the following registry fix. </p>
<div class="wp-caption alignright" id="regedit_onscreendisplay"><a href="http://mrhandsome.org/blog/wp-content/uploads/2009/05/regedit_onscreendisplay.jpg"><img title="regedit_on_screen_display" alt="Editing the Registry to fix the On Screen Display" src="http://mrhandsome.org/blog/wp-content/uploads/2009/05/regedit_onscreendisplay_thumb.jpg" /></a>
<p class="wp-caption-text">Editing the Registry to fix the On Screen Display</p>
</p></div>
<ul>
<li>Open up the registry editor by hitting <em>Windows Key + R</em> and typing <strong>regedit</strong> </li>
<li>Go to <em>HKEY_CURRENT_USER</em> </li>
<li>Click on <em>Software</em> </li>
<li>Click on <em>IBM</em> </li>
<li>Click on <em>TPHOTKEY</em> </li>
<li>Choose <em>OnScreenDisplay</em> </li>
<li>Double Click the <em>Size</em> value </li>
<li>Change the hex key to the following: <code>0000 14 1E 28 14</code> </li>
<li>Hit Okay, close <strong>Regedit</strong> and reboot your machine.</li>
</ul>
<ul>
<p>Hopefully your Thinkpad&#8217;s On Screen Display is working again. Also, I don&#8217;t even mess with the previously mentioned On Screen Display settings via the display manager. Might be wise to lay off of it until Lenovo puts out a patched upgrade! </p>
</p>
<ol></ol>
<ol></ol>
</p>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.mrhandsome.org/blog/2009/05/thinkpad-on-screen-display-fix/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Ctrl-Z Keyboard Shortcut in VMware</title>
		<link>http://www.mrhandsome.org/blog/2009/05/ctrl-z-keyboard-shortcut-in-vmware/</link>
		<comments>http://www.mrhandsome.org/blog/2009/05/ctrl-z-keyboard-shortcut-in-vmware/#comments</comments>
		<pubDate>Sat, 09 May 2009 00:34:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[VMware]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[ctrl-z]]></category>
		<category><![CDATA[keyboard]]></category>

		<guid isPermaLink="false">http://mrhandsome.org/blog/2009/05/ctrl-z-keyboard-shortcut-in-vmware/</guid>
		<description><![CDATA[Go ahead and search Google using the keywords Ctrl-z vmware and you&#8217;ll get back a few pages of similar complaints regarding this awful choice of a keyboard shortcut.
Vmware has many useful shortcuts that allow one to quickly switch context between the host OS and the guest OS running in the VM. Ctrl-G and Ctrl-alt are [...]]]></description>
			<content:encoded><![CDATA[<p>Go ahead and search <a href="http://www.google.com/search?q=ctrl-z+vmware">Google</a> using the keywords <strong>Ctrl-z vmware</strong> and you&#8217;ll get back a few pages of similar complaints regarding this awful choice of a keyboard shortcut.</p>
<p>Vmware has many useful shortcuts that allow one to quickly switch context between the host OS and the guest OS running in the VM. <strong>Ctrl-G</strong> and <strong>Ctrl-alt</strong> are the most important combos, as they change the keyboard context into the guest OS and return it back to the Host OS in the order listed. However, another one of VMware&#8217;s keyboard combos is <strong>Ctrl-Z</strong>, which is the <strong>suspend function</strong> that immediately causes the guest operating to, uh&#8230;, suspend immediately and shut down.</p>
<h2>The Problem with Ctrl-Z</h2>
<div class="wp-caption alignright" id="ctrl_z_vmware"><a href="http://mrhandsome.org/blog/wp-content/uploads/2009/05/ctrl_z_vmware.jpg"><img title="Ctrl-Z keyboard shortcut in VMware" alt="Hitting Ctrl-z in VMware" src="http://mrhandsome.org/blog/wp-content/uploads/2009/05/ctrl_z_vmware_thumb.jpg" /></a>
<p class="wp-caption-text">Accidentally hitting Ctrl-z</p>
</p></div>
<p> <strong>Ctrl-Z</strong> is, unfortunately, also a significant shortcut in both Windows and Linux. In Windows and Linux Guis, <strong>Ctrl-z</strong> is mapped to the <strong>undo</strong> function. Even worse, under the Linux console, <strong>Ctrl-Z</strong> is mapped to the actual <strong>suspend</strong> foreground app function. Personally, I run Windows XP on my laptop, with a VMware provided <a href="http://mrhandsome.org/blog/2009/03/arch-linux-under-vmware-and-windows/">Linux console</a> as an application. I&#8217;ll often <strong>Alt-tab</strong> between apps, and stop on the VMware Linux app. Of course, many times I forget to forward the keyboard context into Linux (using the previously mentioned <strong>Ctrl-g</strong> shortcut). If I then hit a <strong>Ctrl-z</strong>, attempting to suspend the current process running in the Linux terminal, I instead suspend the whole damn Virtual Machine, which can take anywhere from 10-15 seconds. I then get to restart the whole Linux guest, which takes me another 30 seconds or so. </p>
<p>From the Google results mentioned previously, or more exactly, a question posed on <a href="http://stackoverflow.com/questions/197170/vmware-ctrl-z-key-binding-how-to-remove">Stackoverflow.com</a>, it seems the only way to fix this is via a significantly complicated hack:</p>
<blockquote><p>You could use a resource editor on vmware.exe to remove the keybinding for ctrl-z. Obviously not for the faint of heart.</p></blockquote>
<p>Anyway, if you&#8217;re listening Vmware execs and developers: Change this shortcut or at least provide an easy way to disable it!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mrhandsome.org/blog/2009/05/ctrl-z-keyboard-shortcut-in-vmware/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Arch Linux under VMware and Windows</title>
		<link>http://www.mrhandsome.org/blog/2009/03/arch-linux-under-vmware-and-windows/</link>
		<comments>http://www.mrhandsome.org/blog/2009/03/arch-linux-under-vmware-and-windows/#comments</comments>
		<pubDate>Sat, 14 Mar 2009 23:16:53 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[Arch Linux]]></category>
		<category><![CDATA[VMware]]></category>

		<guid isPermaLink="false">http://mrhandsome.org/blog/?p=11</guid>
		<description><![CDATA[

Arch Linux meets VMware 6.5 on Windows XP

Software Used

VMware Workstation 6.5 
Arch Linux 2009.02 
VMware Player 

References 

Installing Archlinux in VMware 
All VMware 6.5 Workstation Documentation 
VMware 6.5 Workstation User Manual (pdf) 
Timekeeping in VMware Virtual Machine (pdf) 
Arch Linux Official Install Guide 

Why Linux in a VM 
I&#8217;m not a big fan of Linux [...]]]></description>
			<content:encoded><![CDATA[<p align="left">
<div class="wp-caption aligncenter" id="blog_logo"><img title="Arch VMware Logos" alt="VMware and Arch Linux Logos" src="http://mrhandsome.org/blog/wp-content/uploads/2009/03/vm_arch_xp_logo.jpg" />
<p class="wp-caption-text">Arch Linux meets VMware 6.5 on Windows XP</p>
</p></div>
<h2>Software Used</h2>
<ul>
<li><a href=" http://www.vmware.com/download/ws/">VMware Workstation 6.5</a> </li>
<li><a href="http://www.archlinux.org/download/">Arch Linux 2009.02</a> </li>
<li><a href="http://www.vmware.com/download/player/">VMware Player</a> </li>
</ul>
<h2>References </h2>
<ul>
<li><a href="http://wiki.archlinux.org/index.php/Installing_archlinux_in_VMWare">Installing Archlinux in VMware</a> </li>
<li><a href="http://www.vmware.com/support/pubs/ws_pubs.html">All VMware 6.5 Workstation Documentation</a> </li>
<li><a href="http://www.vmware.com/pdf/ws65_manual.pdf">VMware 6.5 Workstation User Manual (pdf)</a> </li>
<li><a href="http://www.vmware.com/pdf/vmware_timekeeping.pdf">Timekeeping in VMware Virtual Machine (pdf)</a> </li>
<li><a href="http://wiki.archlinux.org/index.php/Official_Arch_Linux_Install_Guide">Arch Linux Official Install Guide</a> </li>
</ul>
<h2>Why Linux in a VM </h2>
<p>I&#8217;m not a big fan of Linux on the Desktop, especially with a laptop. While Linux has come a very long way in the years since I&#8217;ve been using it, there are still some problems: Ugly fonts, problems with ACPI (i.e. Standby, Hibernate, etc), an increasingly inferior Linux version of Firefox (versus its Windows counterpart), etc. Really, Windows XP is more than adequate for the majority of my desktop needs; the only part of a real *nix OS that I miss is the command line. </p>
<p>With this in mind, I&#8217;m looking for a fast and lightweight Linux version that I can run within VMware under Windows. The latest versions of Ubuntu, Fedora, Suse, etc. have their advantages, but are becoming so big and bulky that even a Linux guru would have a hard time figuring out what all the files under <em>/etc</em> do. What I really want is a distro where I can, actually, understand each file in <em>/etc</em>, uses standard Unix initialization scripts, and does not require a GUI at all since I&#8217;m not planning on installing X Windows. After browsing <a href="http://distrowatch.com/&quot;">Distrowatch.com</a>, it looks as if <a href="http://www.archlinux.org/">Arch Linux</a> fits the bill perfectly &#8211; optimized for 686 processors, a lightweight ISO download (about 300 megs), a nice package manager, <a href="http://wiki.archlinux.org/index.php/Pacman">Pacman</a>, and a traditional BSD style init system that I can completely understand! </p>
<h2>Download and Install VMware </h2>
<p>Download VMware Workstation from the above link. VMware Workstation is not a free product, though you can register with an email address and get a 30 day trial version which will suffice for now. The activation code will be sent to the email you used to register, and you will need it to install the product. The installation itself is as easy as clicking on the downloaded installer and following the prompts. Although VMware Workstation isn&#8217;t free, we only need the full version to create the Arch Linux virtual machine &#8211; once we&#8217;ve created it, we can uninstall the Workstation and install <a href="http://www.vmware.com/download/player/">VMware Player</a> which will allow us to continue to use our Arch VM. </p>
<p>Also download the latest version of <a href="http://www.archlinux.org/download/">Arch Linux</a>, which currently is 2009.02. I went ahead and downloaded the full ISO which is only about 3.5 GB &#8211; not too bad considering Red Hat now requires a full DVD. Impressively, you won&#8217;t even need to virtually mount or burn the iso to disc &#8211; VMware can use just the downloaded ISO file itself! </p>
<h2>Configuring the Virtual Machine </h2>
<p>After you&#8217;ve installed and activated VMware and downloaded the Arch iso, we&#8217;re ready to create the virtual machine: </p>
<div class="wp-caption alignright" id="vmware_setup"><a href="http://mrhandsome.org/blog/wp-content/uploads/2009/03/final_vmware_arch_settings.jpg"><img title="VMware Setup" alt="Final settings for the Linux virtual machine" src="http://mrhandsome.org/blog/wp-content/uploads/2009/03/final_vmware_arch_settings_thumb.jpg" /></a>
<p class="wp-caption-text">Final settings for the Linux virtual machine </p>
</p></div>
<ul>
<li>Open up VMware and click on the <em>New Virtual Machine</em> button. </li>
<li>Choose the <em>Typical</em> option unless you have some very strange configuration needs, such as non-standard SCSI disc types, multiple processors, etc. </li>
<li>Choose <em>Installer disc Image file(iso)</em> and browse to the location where you downloaded the Arch iso. </li>
<li>Choose <em>Linux</em> as the <em>Guest Operating System Type</em> and select <em>Other Linux 2.6.x Kernel</em> as your version. Be careful in choosing between 32 and 64 bit depending on your processor type. </li>
<li>Select a name (I just used <em>Arch 2009.02</em>) and location for the virtual machine file. The file will need about 8 Gigs of free space depending on how large you want your VM to be. </li>
<li>Set your size &#8211; I went with the default of 8 Gigs which should be more than enough for now. VMware can increase the size later if you need more. </li>
<li>Finally, you can modify any other settings. The default ram setting allows for 256 megs, but my laptop has 2 Gigs, so I bumped this up to 512 MB. The only other setting you&#8217;re likely to modify is the network type. I went with NAT, which will set the Linux VM similar to how a PC is configured when using a typical home router to share a cable/DSL internet connection among multiple users. </li>
</ul>
<h2>Installing Arch </h2>
<div class="wp-caption alignright" id="arch_setup"><a href="/blog/wp-content/uploads/2009/03/arch_setup.jpg"><img title="arch setup" alt="Arch Linux Setup" src="/blog/wp-content/uploads/2009/03/arch_setup_thumb.jpg" /></a>
<p class="wp-caption-text">Setup Arch Linux within VMware. </p>
</p></div>
<p>Immediately after confirming your settings, VMware will boot the ISO up as if it were physically in the CD-Rom drive and you had reboot the PC. </p>
<p>Installing Linux now is exactly the same as if you really had booted the CD physically. The only thing to remember is that the hard disc that the Linux kernel will &#8217;see&#8217; is the VM file that is on your hard drive. The kernel can absolutely *not* access any part of the disc outside of this file. Therefore, when partitioning your system, you can go ahead and choose a typical partition scheme without worrying that Linux will overwrite the actual hard drive (i.a. the partition that Windows physically boots and lives). </p>
<p>Depending on which view (full screen, unity, etc) you are using to see the VM, you may have problems with the mouse/keyboard at first, especially since there is no mouse support in the standard Arch console. In other words, once you click into the Arch VM, you will not be able to access your mouse to get out of the VMware window and back to the Windows desktop. The solution is to use the following kb shortcuts: </p>
<p class="note">To go from the Windows desktop into the Arch VM, either click inside the VM window or <strong>Ctrl-g</strong>     <br />To get out of the VM and back to Windows: <strong>Ctrl-alt</strong>. </p>
<h2>Setup Arch Linux </h2>
<p>Login as <em>root</em> and run <code>/arch/setup</code> </p>
<h3>0 &#8211; Select Source </h3>
<p>Since we downloaded the full install iso, we can choose <em>Cd-Rom</em> as our source. If you only downloaded the ftp iso (which is several gigabytes smaller), you&#8217;ll need to choose <em>ftp/http</em> option. With the ftp option, you&#8217;ll have to also figure out to setup the network adapter in order to access the package repositories. This is covered in a later section </p>
<h3>1 &#8211; Set Clock </h3>
<p>Both Linux and Windows obtain the current time from the Bios. If this were a default install on a non-dual-boot/non-vm machine sharing Windows, <em>UTC</em> would be the best option. Windows, however, will &#8216;modify&#8217; the Bios clock to what it considers <em>Local Time</em>, and like many other options, Windows cannot/will not allow modifications, while Linux, of course, is not so demanding, and can work around Windows&#8217; limitations. On a dual-boot machine, we would have to use <em>Local Time</em> so that Linux would not corrupt the internal clock with regards to the Windows install. However, since Linux will be running in a virtual machine, the actual &#8216;bios&#8217; that it sees is not the hardware itself, but instead the virtual hardware provided by VMware. This includes the &#8216;virtual&#8217; bios and its clock. Thus, we can go ahead and <strong>use UTC</strong> and also setup the correct time zone. </p>
<p class="note">After setting the time zone, the Linux time was still several hours behind the actual local time. For now, we&#8217;ll just ignore this; later, we&#8217;ll use VMware Tools to keep the Linux VM in sync with our Windows install, which itself uses NTP to synchronize time with time servers on the internet. </p>
<h3>2 &#8211; Prepare Hard Drive </h3>
<p>You may partition your hard drive any way you like, including using the default Arch settings by choosing <em>Auto-Prepare</em>. The one thing to remember, though, is that the Linux kernel running in the virtual machine does <strong>not</strong> see the actual physical hard drive(s). Instead, it only sees a virtual hard drive provided by VMware; this virtual hard drive is essentially mapped to the virtual machine image file on Windows. There, unless you&#8217;re using a very strange virtual hardware setup, you&#8217;ll see your hard drive from within Linux as a single 8 gig (or whatever size you choose during the VM configuration) drive mapped as <code>sda</code>. I went ahead and choose <em>Auto-Prepare</em> which created the following partitions: </p>
<table border="0">
<tbody>
<tr>
<th>File </th>
<th>Size </th>
</tr>
</tbody>
<tbody>
<tr>
<td><code>/boot</code> </td>
<td>32 MB </td>
</tr>
<tr>
<td><code>Swap</code> </td>
<td>512 MB </td>
</tr>
<tr>
<td><code>/</code> </td>
<td>6.5 GB </td>
</tr>
<tr>
<td><code>/home</code> </td>
<td>1.1 GB </td>
</tr>
</tbody>
</table>
<p>For my file system type, I went ahead with <em>Ext3</em>; though ext4 is currently available, it is still quite new and there are probably a few bugs lurking within the code. </p>
<h3>3 &#8211; Select Packages </h3>
<p>I choose both the <em>base</em> and <em>base-dev</em> packages and used the default individual apps presented. I went ahead and added <em>openssh, openssl, and sudo</em>, also, so I can run an SSH server (allowing me to transfer files via SFTP from the host). </p>
<h3>4 &#8211; Install Packages </h3>
<p>This will have been completed after selecting your packages as outlined in the previous section. If you downloaded the full ISO, and selected <em>CD-Rom</em> as your source in step one, this will only take a minute or two. </p>
<h3>5 &#8211; Configure System </h3>
<p>With the packages installed, we now need to setup our virtual machine, including network settings, servers, etc. The two editors you may choose from our Vi and Nano. If you&#8217;ve never heard of either, you&#8217;ll definitely want to use Nano. Furthermore, most of these files are already nicely explained in the <a href="http://wiki.archlinux.org/index.php/Official_Arch_Linux_Install_Guide">Arch Install Guide</a>, so we&#8217;ll just concentrate on the differences as dictated by running Arch within VMware. </p>
<h4 class="directory">/etc/rc.conf </h4>
<div class="wp-caption alignnone"><img title="VMware Setup" alt="Final settings for the Linux virtual machine" src="http://mrhandsome.org/blog/wp-content/uploads/2009/03/vmware_nat_diagram.jpg" />
<p class="wp-caption-text">VMware NAT setup (from VMware manual) </p>
</p></div>
<p class="clear"><a href="http://wiki.archlinux.org/index.php/Rc.conf">rc.conf</a> is definitely the most important config file for BSD like systems, including Arch. Most of the lines will have already been set to the correct settings from previous configuration options and/or can be left alone. However, we do need to figure out how VMware has set up our virtual network. Since I choose NAT during the VM setup, we will be using DHCP to obtain our network settings, including ip address and dns servers. To find out how VMware has set up the NAT/DHCP servers, hit <em>ctrl-alt</em> to switch between Linux and Windows. Go back to the VMware window and click on <em>edit -&gt; Virtual Network Editor</em>. By default, VMware will create a <em>Virtual Switch</em> named <strong>VMnet8</strong> to handle NAT. </p>
<div class="wp-caption alignleft"><a href="src="><img title="VMware NAT" alt="VMware NAT Tab" src="http://mrhandsome.org/blog/wp-content/uploads/2009/03/vmware_network_editor_nat_thumb.jpg" /></a>
<p class="wp-caption-text">VMware VMnet8 NAT configuration </p>
</p></div>
<p>If we switch to the <strong>NAT</strong> tab and select <strong>VMnet8</strong>, we see that the gateway IP address from the point of view of the Linux VM is <em>192.168.2.17</em> with a subnet mask of <em>255.255.255.0</em>. Therefore, the following lines in the <em>Networking</em> section of <strong>rc.conf</strong> are modified: </p>
<p class="code clear">HARDWARECLOCK=&quot;UTC&quot;    <br />eth0=&quot;dhcp&quot;     <br />INTERFACES=(eth0)     <br />gateway=&quot;default gw 192.168.17.2&quot;     <br />ROUTES=gateway </p>
<p>Also, we add <strong>sshd</strong> to our <em>daemons</em> line in order to allow SSH server to start up on boot: </p>
<p class="code">DAEMONS=(syslog-ng, network, netfs, crond, sshd) </p>
<p>Refer to <a href="http://www.vmware.com/pdf/ws65_manual.pdf">VMware Workstation Manual</a> chapters 14 and 15 for more help in understanding how VMware sets up the Network. </p>
<h4 class="directory clear">/etc/resolv.conf </h4>
<p>As long as we&#8217;re using DHCP and have set up our network configuration correctly as per above, this file can be left untouched as the DHCP client will overwrite this file with the correct settings upon system bootup. </p>
<h4 class="directory">/etc/hosts, /etc/hosts.allow, /etc/hosts.deny </h4>
<p>hosts.deny may be left alone. However, we want to initially allow our Windows install to be able to transfer files via SFTP to the Linux virtual machine. Therefore, allow <em>ssh</em> connections to be allowed into the Arch machine. We could limit it to just the host machine&#8217;s ip address, but since VMware&#8217;s NAT will already allow block, by default, connections not originating from the host, there is no reason to get paranoid. On a real production server(s) running in a VM, there is a quite a bit of tweaking one could do to these files to allow the proper access controls. </p>
<p>Running on a virtual machine under VMware, the only host will need to allow connections from is our host Windows operating system, and the only line we need is: </p>
<h4>/etc/hosts.allow </h4>
<p class="code">sshd: 192.168.17.</p>
<p>We&#8217;ll add our single localhost name to the hosts file. Since I left the default hostname as <em>myhost</em> in <em>/etc/rc.conf</em>, I&#8217;ll use it here. If you used another hostname, you&#8217;ll have to make the appropriate substitution here. </p>
<h4>/etc/hosts </h4>
<p class="code">127.0.0.1 localhost.localdomain localhost    <br />127.0.0.1 myhost.localdomain myhost </p>
<p class="note">Forgetting to set this correctly will cause all sorts of strange problems. The first time I did this, opening up a file with a text editor would take nearly 30 seconds. It took a bit of Googling to figure out that the <em>hosts</em> file was the culprit. </p>
<p>For more info on these files, see the man pages: </p>
<ul>
<li><a href="http://linux.die.net/man/5/hosts&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=">hosts.allow</a> </li>
<li><a href="http://linux.die.net/man/5/hosts.deny">hosts.deny</a> </li>
</ul>
<h4 class="directory">/etc/pacman.d/mirrorlist </h4>
<p>In the past, this file would not need to be modified; however, the first mirror is by default set to the ArchLinux official ftp repository. Unfortunately, this is now being throttled, and your package upgrades and installs will be very slow if this is your first line in the mirrorlist. Therefore, just comment out the first line assuming it points to <em>ftp.archlinux.org&#8230;</em> </p>
<p class="code">#Server = ftp://ftp.archlinux.org/$repo/os/i686</p>
<h4>Root Password </h4>
<p>Finally, make sure you set a root password. Normally, you&#8217;d want to make this a very hard-to-guess word; however, when running in the virtual machine under a standard Windows install, no network connections not based within the VM will be able to access the Linux VM, so you can be a little less cautious <img src='http://www.mrhandsome.org/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  </p>
<p>After finishing the configuration file section, go back to the main menu. The Arch setup program will create the initial ram disk the Kernel will use to bootstrap itself. </p>
<h3>6 &#8211; Install Bootloader </h3>
<p>Choose <strong>Grub</strong> as the default bootloader. You&#8217;ll then be thrown into an editor in order to configure the options. When dual-booting, you&#8217;d normally have to make sure that your Windows partition(s) were listed here. However, within a virtual machine, no other partitions can be seen since, as noted previously, the hard drive that is actually being written in the VMware virtual file. The only setting I made was to increase the size of my console, as the default was a little small on my 14 inch widescreen. I used a standard <em>1024/768</em> console size with color by appending the following to my default kernel line: <code>vga=775</code> </p>
<p>Finally, go ahead and choose <em>/dev/sda</em> as the partition on which Grub should be installed. Though Linux will think it is writing to the MBR of the main hard drive, it is really just writing an MBR on the virtual image&#8217;s file. </p>
<h2>Finishing Up </h2>
<div class="wp-caption alignright"><a href="src="><img title="VMware Setup Finish" alt="Finish VM Setup" src="http://mrhandsome.org/blog/wp-content/uploads/2009/03/setup_finish_thumb.jpg" /></a>
<p class="wp-caption-text">reboot and click <em>I Finished Installing</em> </p>
</p></div>
<p>Your system should be completely setup and installed now. In the bottom of the VMware window within Windows, you&#8217;ll notice a few buttons to <em>finish installing, change discs, cancel</em>. Luckily, Arch Linux is contained on a single disc (one of the reasons I prefer Arch), so we can go ahead and complete the install. Exit the setup menu, and go ahead and type <em>reboot</em> at the prompt. Arch Linux will now reset and automatically start up Grub. Choose the default Kernel to boot, and when it finishes booting up, switch back to Windows with a <em>ctrl-alt</em>. Click on the <em>Finished Installing</em> button in the VMware window. </p>
<p>Your virtual Linux machine should be ready to go! </p>
<p class="note">On the first reboot, a few problems crept up that are due (I&#8217;m guessing) to an error with the time settings. First, when I check the time in Linux, an incorrect time is given that is several hours before the actual time. Also, a bunch of errors were listed on first boot regarding the file system (when it is checked for errors). Warnings included comments to the effect that some file system accesses had been done in the future. Obviously, since the last time these file systems were mounted was during the install, and I&#8217;m guessing the errors are due to the clock being out of sync upon the reboot. Will have to look more into this&#8230; </p>
<p>If you reboot the system, Arch Linux should now start <em>vm-tools</em> automatically. At this point, we have a nice and fresh Linux system easily available to us from within Windows. If there are any other apps that you know you&#8217;ll always want as part of your <em>default</em> system, go ahead and install them now with Pacman. For example, I went ahead and installed the following:</p>
<ul>
<li><strong>Emacs</strong> &#8211; not a big <strong>vi</strong> fan, myself </li>
<li><strong>man-pages</strong> &#8211; the default Arch Linux install does not include quite a few of these. After installing the package, go ahead and run the command <strong>makewhatis</strong> &#8211; in order to index the man page database, which you can search through with the <strong>apropos</strong> command. </li>
<li><strong>htop</strong> &#8211; nice replacement for the standard <strong>top</strong> process viewer. </li>
<li><strong>most</strong> &#8211; colorful replacement for <strong>less</strong> </li>
</ul>
<p>Now that you&#8217;ve got your <em>required</em> apps, one last thing to do would be to update the system in order to install the latest patches. Pacman makes this easy:</p>
<p class="code">pacman -Su</p>
<h2>Installing VMware Tools </h2>
<p>VMware Tools is a group of several services that run on the guest operating system. It helps provide time synchronization, message passing, file sharing, shutdown abilities from the host, mouse and resolution support, etc. Since we are <strong>not</strong> going to be installing X-Windows, support for screen size and mouse use isn&#8217;t important. </p>
<p>Fortunately, Arch Linux provides an open source version of of the tools known as <a href="http://open-vm-tools.sourceforge.net/">Open VM Tools</a> in its repository. There are a few caveats to follow when using a version of VMware prior to 6.5. However, it is now extremely easy to setup the tools with version 6.5. Following the <a href="http://wiki.archlinux.org/index.php/Installing_archlinux_in_VMWare">Arch Linux in VMware Tutorial</a>, we&#8217;ll sync the package manager database and also install the tools with Pacman: </p>
<p class="code">pacman -Sy    <br />pacman -S open-vm-tools </p>
<p>The tools and its few dependencies will be downloaded and installed. The service script will be installed under <em>/etc/rc.d</em>. If you look in the directory, you&#8217;ll see that Pacman has installed a script for starting <em>open-vm-tools</em>. By default, Arch starts all scripts that are configured within <em>/etc/rc.conf</em>. In this file, make sure the <em>Daemons</em> line includes the tools: </p>
<p class="code">DAEMONS=(syslog-ng network netfs crond sshd open-vm-tools) </p>
<h3>Installing the Shutdown / Restart / Suspend Scripts</h3>
<p>Begin by clicking on the VM menu link within Windows, and select <strong>Install VMware Tools.</strong> This will essentially mount a virtual CD image with the tools within the Linux guest VM. Go back into Arch Linux, and as root mount the cd:</p>
<p class="code">mount /dev/sr0 /mnt/cdrom</p>
<p class="notes">For some reason, my cdrom is now showing up as <em>/dev/sr0</em> and not <em>/dev/cdrom</em> as usual. You may have to use <em>mount /dev/cdrom /mnt/cdrom</em> if your cdrom is configured as expected by the Kernel&#8230;</p>
<p>After mounting, you should cp the file <strong>VMware Tools-X.X.X.tar.gz</strong> to a permanent directory, untar and unzip it: </p>
<p class="code">cp VMware Tools-X.X.X.tar.gz ~    <br />cd ~     <br />tar xvzf VMware Tools-X.X.X.tar.gz </p>
<p class="note">For some reason, <strong>open-vm-tools</strong> does not install the correct scripts that allow one to shutdown/restart/suspend the Linux guest from within Windows via VMware. Therefore, we need to mount the official <strong>VMware-tools</strong> package from Windows, unzip the distro, and copy the scripts on over to are Linux install.</p>
<p>Within the new directory that you&#8217;ve just expanded, go into the <em>/etc</em> directory and copy the following scripts to newly created <em>VMware-tools</em> directory within <em>/etc</em> </p>
<p class="code">mkdir /etc/VMware-tools    <br />cp poweroff-vm-default /etc/VMware-tools     <br />cp poweron-vm-default /etc/VMware-tools     <br />cp resume-vm-default /etc/VMware-tools     <br />cp suspend-vm-default /etc/VMware-tools     </p>
<p>You can go ahead and delete the VMware Tools tar file and expanded directory if you like. After unmounting the cdrom, reboot Arch using the standard <em>shutdown -r now</em>. You go back into Windows and VMware and be able to shutdown/restart/suspend Arch Linux via the VMware menu <strong>VM</strong> -&gt; <strong>power</strong> -&gt; <strong>Shutdown / Suspend / Restart Guest</strong> menu item! </p>
<h2>File Sharing</h2>
<p>As long as you&#8217;ve successfully installed the VMware-tools (or Open VMware Tools via Pacman as previously described), you can easily share files between the Windows XP host and the Arch Linux Guest. Though it would be possible to set up Samba to share files via the virtual ethernet connection, VMware Tools makes the process far easier.</p>
<p>Start from your Windows VMware window with your Arch Linux OS chosen as the current virtual machine. Go to the menu and click <strong>VM</strong> -&gt; <strong>Settings</strong>. Your guest VM&#8217;s hardware configuration window will open up; click on the <strong>options</strong> tab and then choose <strong>Shared Folders</strong>. Add as many folder from your Windows box as you&#8217;d like available within the Arch guest.</p>
<p>Click back into the Arch virtual machine and, as root, open up <strong>/etc/fstab</strong>. Here you&#8217;ll enter a line specifying the share to be automounted on boot. The standard mount point is <strong>/mnt/hgfs</strong> which is named after VMware&#8217;s sharing file type, though you can create any directory you like. Append a line to <strong>/etc/fstab</strong> similar to the following, customizing the options if desired</p>
<p class="code">.host:/ /mnt/hgfs vmhgfs defaults,user,ttl=5,uid=root,gid=wheel,fmask=0113,dmask=0002 0 0</p>
<p>The permissions mask mounts the root of the shared directories with owner root. If you have added more users, you can add them to the <strong>wheel</strong> group in order to give that user both read and write access to the shared directories.</p>
<p>After successfully installing the tools, I noticed that when shutting down the system, i would get an error:</p>
<p class="note">module vmhgfs is in use</p>
<p>This was being caused by the <strong>/etc/rc.d/open-vm-tools</strong> script attempting to remove the <strong>vmhgfs</strong> module from the kernel before the shared folder from my Windows host had been cleanly unmounted. Unfortunately, the unmounting of filesystems stage is after open-vm-tools is executed. I ended up fixing this by explicitly unmounting the shared folder before attempting to remove the <strong>vmhgfs</strong> module within the <strong>/etc/rc.d/open-vm-tools</strong>: </p>
<p class="code">[ -z &quot;$VMGHFS&quot; ] &amp;&amp; umount /mnt/hgfs &amp;&amp; rmmod vmhgfs</p>
<p>Substitue your shared folder&#8217;s mount location for <strong>/mnt/hgfs</strong> if different than mine</p>
<h2>Creating a Snapshot</h2>
<div class="wp-caption alignright" id="vmware_setup"><a href="http://mrhandsome.org/blog/wp-content/uploads/2009/03/snapshot.jpg"><img title="VMware Snapshot" alt="VMware Snapshot" src="http://mrhandsome.org/blog/wp-content/uploads/2009/03/snapshot_thumb.jpg" /></a>
<p class="wp-caption-text">Creating a Snapshot of the base install </p>
</p></div>
<p>Now that your base system is installed and configured to your liking, we&#8217;ll create a <em>snapshot</em> of our pristine Linux install. That way, we can always reset our system to the default should the need arise in the future. </p>
<ul>
<li>Go back to Windows and the VMware window itself via <strong>ctrl-alt</strong> </li>
<li>Make sure you&#8217;re context/tab is in your new Arch Linux install, and click on the <strong>VM</strong> menu item. </li>
<li>Click on the <strong>snapshot -&gt; take snapshot</strong> menu items. </li>
<li>Give the snapshop a name and description. I gave it a name of <em>Pristine Arch Linux 2009.02</em>, and listed the current state of the OS in the description. For example, fresh install with <em>open-vm-tools</em>, a list of extra packages installed, etc. </li>
</ul>
<p>After the snapshot image is saved to the Windows hard drive, you can then go into the Snapshot manager in VMware and revert to this state anytime. I moved the image file itself to a second hard drive for safe keeping!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mrhandsome.org/blog/2009/03/arch-linux-under-vmware-and-windows/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
