<?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>Security Viewpoints &#187; Linux</title>
	<atom:link href="http://advosys.ca/viewpoints/category/linux/feed/" rel="self" type="application/rss+xml" />
	<link>http://advosys.ca/viewpoints</link>
	<description>Security, operating systems and the IT industry</description>
	<lastBuildDate>Tue, 31 Aug 2010 13:06:19 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Disabling the NX bit for specific apps</title>
		<link>http://advosys.ca/viewpoints/2009/07/disabling-the-nx-bit-for-specific-apps/</link>
		<comments>http://advosys.ca/viewpoints/2009/07/disabling-the-nx-bit-for-specific-apps/#comments</comments>
		<pubDate>Fri, 31 Jul 2009 02:33:59 +0000</pubDate>
		<dc:creator>D Webber</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Malware]]></category>
		<category><![CDATA[red hat]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://advosys.ca/viewpoints/?p=559</guid>
		<description><![CDATA[The NX bit is a feature of recent AMD and Intel CPUs that helps prevent the most common overflow attacks.When enabled and supported by the operating system, buffer overflow attacks are far less likely to succeed. When it was first introduced, a few applications would not run when the NX bit was present (e.g. Java [...]]]></description>
			<content:encoded><![CDATA[<p>The <a title="The NX Bit" href="http://en.wikipedia.org/wiki/NX_bit">NX bit</a> is a feature of recent AMD and Intel CPUs that helps prevent the most common overflow attacks.When enabled and supported by the operating system, buffer overflow attacks are far less likely to succeed.</p>
<p>When it was first introduced, a few applications would not run when the NX bit was present (e.g. Java and .Net runtimes, Skype) but most vendors recompiled their binaries and all was well.</p>
<p>Sadly there are still a few remaining apps that still won&#8217;t run&#8230; mostly niche commercial apps compiled long ago that, while still for sale, are not actively maintained by the vendor.</p>
<p>When there is no choice but to run these apps, the usual response is todb. disable the NX bit. Most system BIOS have a such setting, and under VMware there is an option to hide it from individual virtual machines. However, disabling NXÂ  increases the vulnerability of the entire operating system and every other app running on it.</p>
<p>Fortunately in Linux you can usually disable NX only for the specific applications that can&#8217;t handle it, leaving it enabled for the rest of the server.<span id="more-559"></span></p>
<p>The <a title="execstack man page" href="http://bashcurescancer.com/man/cmd/execstack">execstack</a> command can mark most shared libraries and executables so they ignore the NX bit. It&#8217;s a standard part of Red Hat and derived distros (CentOS, Oracle Linux). For Ubuntu / Debian you can find it in the <a title="Ubuntu - Details of package Prelink" href="http://packages.ubuntu.com/jaunty/prelink">prelink </a>package from the Universe repository.</p>
<p>Finding the executables and shared libraries to mark with execstack can be a chore, depending on the application. The <a title="ldd man page" href="http://bashcurescancer.com/man/cmd/ldd">ldd</a> command can help, as can <a title="http://www.ibm.com/developerworks/aix/library/au-unix-strace.html" href="http://">strace and gdb</a>. When in doubt, mark every ELF binary and .so file in the legacy app directory tree&#8230; it doesn&#8217;t seem to hurt (though you should back up the original files before doing so).</p>
<p>Some files cannot be marked with execstack. From the man page:</p>
<blockquote><p><em>execstack doesn&#8217;t support yet marking of executables if they do not have PT_GNU_STACK program header entry nor they have room for program segment header table growth.</em></p></blockquote>
<p>In my experience, almost all apps can be marked and will run fine, leaving NX bit protection enabled for the rest of the server.</p>
<p>Obviously, without NX enabled the legacy app will be more vulnerable to overflow attacks. Also consider you had to resort to using execstack because the vendor <em>hasn&#8217;t yet fixed a bug in their code present since the NX bit was introduced in 2004</em>! What other flaws have they ignored? To be prudent, put additional safeguards around the app, especially if it communicates with untrusted users or networks&#8230; for example, using chroot or writing an SELinux or AppArmor policy to contain the app might be a good idea.</p>
Copyright &copy; 2012 <a href="http://advosys.ca/">Advosys Consulting Inc.</a>

<p><em>Related posts:</em><ul><li><a href='http://advosys.ca/viewpoints/2006/08/debian-to-ubuntu/' rel='bookmark' title='Permanent Link: Thoughts on moving from Debian to Ubuntu Server'>Thoughts on moving from Debian to Ubuntu Server</a></li>
<li><a href='http://advosys.ca/viewpoints/2009/04/dot-net-rootkits-are-easy/' rel='bookmark' title='Permanent Link: Windows .NET rootkits are easy'>Windows .NET rootkits are easy</a></li>
<li><a href='http://advosys.ca/viewpoints/2006/08/installing-mod_evasive-in-ubuntu/' rel='bookmark' title='Permanent Link: Installing Apache mod_evasive in Ubuntu Server'>Installing Apache mod_evasive in Ubuntu Server</a></li>
</ul></p>]]></content:encoded>
			<wfw:commentRss>http://advosys.ca/viewpoints/2009/07/disabling-the-nx-bit-for-specific-apps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubuntu remix: great on the Acer Aspire One</title>
		<link>http://advosys.ca/viewpoints/2009/05/ubuntu-remix-great-on-acer-aspire-one/</link>
		<comments>http://advosys.ca/viewpoints/2009/05/ubuntu-remix-great-on-acer-aspire-one/#comments</comments>
		<pubDate>Thu, 07 May 2009 15:45:34 +0000</pubDate>
		<dc:creator>D Webber</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[ubuntu linux]]></category>

		<guid isPermaLink="false">http://advosys.ca/viewpoints/?p=401</guid>
		<description><![CDATA[Just a quick note for anyone with an Acer Aspire One netbook: the latest Ubuntu Netbook Remix works great. Replacing the &#8220;Linpus Lite&#8221; Linux provided by Acer with this special edition of Ubuntu is mostly painless and everything works well. I have an orginal Acer Aspire One 110L&#8230; the one with the 8GB flash drive [...]]]></description>
			<content:encoded><![CDATA[<p>Just a quick note for anyone with an Acer Aspire One netbook: the latest Ubuntu Netbook Remix works great. Replacing the &#8220;Linpus Lite&#8221; Linux provided by Acer with this special edition of Ubuntu is mostly painless and everything works well.</p>
<p><span id="more-401"></span></p>
<p>I have an orginal Acer Aspire One 110L&#8230; the one with the 8GB flash drive and 512MB memory. It came pre-installed with &#8220;Linpus Lite&#8221;&#8230; a modified version of Fedora 8 Linux.</p>
<p>While the provided version of Linux is usable&#8230; it can run current versions of Firefox, Thunderbird, OpenOffice and Skype, installing anything else was very difficult, mostly due to the age of the underlying version of Fedora. The <a title="macles" href="http://macles.blogspot.com/">macles</a> blog is a lifesaver for hacking the original OS, but it&#8217;s very inflexible.</p>
<p>Last year Canonical put out a <a title="Ubuntu Netbook Remix" href="http://www.canonical.com/projects/ubuntu/unr">netbook remix</a> of Ubuntu Desktop, mostly aimed at the Asus line of netbooks. It could work with the Aspire One, but had issues with sound, MMC cards, and other things.</p>
<p>With the release of Ubuntu 9.04 Jaunty comes a new release of the netbook remix. Now the Acer Aspire One is officially supported and it works great.</p>
<p><img class="alignnone size-medium wp-image-402" title="ubuntu jaunty remix screenshot" src="http://advosys.ca/viewpoints/wp-content/uploads/screenshot-300x175.png" alt="ubuntu jaunty remix screenshot" width="300" height="175" /></p>
<p>Installation of the remix from a USB key is painless following Ubuntu&#8217;s instructions. Once installed I encountered only a few issues:</p>
<ul>
<li>Wireless didn&#8217;t work out of the box. Had to install linux-backports-modules-jaunty as covered in the <a title="Acer AspireOne Ubuntu community documentation" href="https://help.ubuntu.com/community/AspireOne">AspireOne Community Documentation</a></li>
<li>Sound also needs to be adjusted as noted.</li>
</ul>
<p>Recording audio from the internal mic is the biggest issue so far&#8230; the right device and mixer settings is proving to be elusive.</p>
<p>Other than recording, everything works well. As expected, battery life is a less than with Linpus, but that&#8217;s likely due to all the baggage Gnome runs in the background. The lighter <a title="xfce desktop environment" href="http://www.xfce.org/">Xfce</a>-based <a title="Xubuntu" href="http://www.xubuntu.org/">Xubuntu</a> variant would have been a better choice for the remix, IMHO.</p>
<p>The remix desktop with applications on the left side and directories on the right is very functional with the small screen. A daemon named &#8220;maximus&#8221; automatically maximizes applications which usually is a good idea, but annoying for things like VLC (it&#8217;s possible to disable it for some apps, but you have to <a href="https://answers.launchpad.net/ubuntu/+source/maximus/+question/56685">muck around in gconf</a>).</p>
<p>In all, Ubuntu&#8217;s netbook remix greatly improves the Aspire One. After kicking the tires on it for a week I think it&#8217;s a keeper.</p>
<p>Let&#8217;s hope it gains enough traction with netbook users for Canonical to continue developing the remix.</p>
Copyright &copy; 2012 <a href="http://advosys.ca/">Advosys Consulting Inc.</a>

<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://advosys.ca/viewpoints/2009/05/ubuntu-remix-great-on-acer-aspire-one/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>RAID in Ubuntu Server updated</title>
		<link>http://advosys.ca/viewpoints/2009/03/raid-in-ubuntu-server-updated/</link>
		<comments>http://advosys.ca/viewpoints/2009/03/raid-in-ubuntu-server-updated/#comments</comments>
		<pubDate>Fri, 13 Mar 2009 15:07:18 +0000</pubDate>
		<dc:creator>D Webber</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Safeguarding data]]></category>
		<category><![CDATA[RAID]]></category>
		<category><![CDATA[software RAID]]></category>
		<category><![CDATA[system administration]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://advosys.ca/viewpoints/?p=238</guid>
		<description><![CDATA[I&#8217;ve just updated Setting up software RAID in Ubuntu Server, one of our most popular articles. The article was originally written for Ubuntu Server 6.06 and the instructions for making failed RAID drives bootable didn&#8217;t always work in recent versions. The Ubuntu team has made many improvements to the RAID sitution in Ubuntu 8.10 (Intrepid) [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve just updated <a title="Setting up software RAID in Ubuntu Server" href="http://advosys.ca/viewpoints/2007/04/setting-up-software-raid-in-ubuntu-server/">Setting up software RAID in Ubuntu Server</a>, one of our most popular articles.</p>
<p>The article was originally written for Ubuntu Server 6.06 and the instructions for making failed RAID drives bootable didn&#8217;t always work in recent versions.</p>
<p>The Ubuntu team has made many improvements to the RAID sitution in Ubuntu 8.10 (Intrepid) and last fall backported those to the current LTS release, Ubuntu 8.04 (Hardy). Now getting a RAID1 system to boot when one drive has failed is much easier and I&#8217;ve updated our procedure to reflect that.</p>
<p>Since the entire world seems to have links to the original article, I&#8217;ve updated it in place at the <a title="http://advosys.ca/viewpoints/2007/04/setting-up-software-raid-in-ubuntu-server/" href="http://">old URL</a> rather than post a new one.</p>
Copyright &copy; 2012 <a href="http://advosys.ca/">Advosys Consulting Inc.</a>

<p><em>Related posts:</em><ul><li><a href='http://advosys.ca/viewpoints/2007/04/setting-up-software-raid-in-ubuntu-server/' rel='bookmark' title='Permanent Link: Setting up software RAID in Ubuntu Server'>Setting up software RAID in Ubuntu Server</a></li>
<li><a href='http://advosys.ca/viewpoints/2006/10/ubuntu-610-released/' rel='bookmark' title='Permanent Link: Ubuntu Server 6.10 released'>Ubuntu Server 6.10 released</a></li>
<li><a href='http://advosys.ca/viewpoints/2006/10/upgrading-to-ubuntu-server-610/' rel='bookmark' title='Permanent Link: Upgrading to Ubuntu Server 6.10 (edgy)'>Upgrading to Ubuntu Server 6.10 (edgy)</a></li>
</ul></p>]]></content:encoded>
			<wfw:commentRss>http://advosys.ca/viewpoints/2009/03/raid-in-ubuntu-server-updated/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Setting up software RAID in Ubuntu Server</title>
		<link>http://advosys.ca/viewpoints/2007/04/setting-up-software-raid-in-ubuntu-server/</link>
		<comments>http://advosys.ca/viewpoints/2007/04/setting-up-software-raid-in-ubuntu-server/#comments</comments>
		<pubDate>Tue, 24 Apr 2007 21:08:26 +0000</pubDate>
		<dc:creator>D Webber</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Safeguarding data]]></category>
		<category><![CDATA[RAID]]></category>
		<category><![CDATA[software RAID]]></category>
		<category><![CDATA[system administration]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://advosys.ca/viewpoints/2007/04/setting-up-software-raid-in-ubuntu-server/</guid>
		<description><![CDATA[Updated Mar 13 2009 to reflect improvements in Ubuntu 8.04 and later. Linux has excellent software-based RAID built into the kernel. Unfortunately information on configuring and maintaining it is sparse. Back in 2003, O&#8217;Reilly published Managing RAID on Linux. That book is still mostly up-to-date, but finding clear instructions on the web for setting up [...]]]></description>
			<content:encoded><![CDATA[<p><em><strong>Updated</strong> Mar 13 2009 to reflect improvements in Ubuntu 8.04 and later.</em></p>
<p>Linux has excellent software-based RAID built into the kernel. Unfortunately information on configuring and maintaining it is sparse. Back in 2003, O&#8217;Reilly published <a href="http://www.oreilly.com/catalog/mraidlinux/">Managing RAID on Linux</a>. That book is still mostly up-to-date, but finding clear instructions on the web for setting up RAID has become a chore.</p>
<p>Here is how to install Ubuntu Server with software RAID 1 (disk mirroring).  This guide has been tested on Ubuntu Server 8.04 LTS (Hardy Heron). I strongly recommend using Ubuntu Hardy or later if you want to boot from RAID1.</p>
<h4>Software RAID vs. hardware RAID</h4>
<p>Some system administrators still sneer at the idea of software RAID. Years ago CPUs didn&#8217;t have the speed to manage both a busy server and RAID activities. That&#8217;s not true any more, especially when all you want to do is mirror a drive with RAID1. Linux software RAID is ideal for mirroring, and due to kernel disk caching and buffering it can actually be faster than RAID1 on lower end RAID controllers. However, for larger requirements like RAID 5, the CPU can still get bogged down with software RAID.</p>
<p>Software RAID is inexpensive to implement: no need for expensive controllers or identical drives. Software RAID works with ordinary EIDE, Serial ATA and SCSI drives and controllers. You can mix together whatever drive types and sizes you have on hand. When all you need are mirrored drives, software RAID is an especially good choice.</p>
<p>However, there are reasons you might prefer hardware RAID over software RAID:<span id="more-139"></span></p>
<ul>
<li>Hardware RAID is simpler to setup and manage.</li>
<li>Depending on the server BIOS, a system using Linux software RAID probably won&#8217;t be able to boot automatically when the first disk of a mirror is first replaced with a new blank drive (It can still be booted manually though).</li>
<li>Linux will only boot when the &#8220;/boot&#8221; and &#8220;/&#8221; partitions are on RAID1. It cannot boot when those partitions are on RAID5. Other partitions, however, can be RAID5.</li>
<li>With software RAID, after replacing a failed drive the administrator must login and enter commands to add the new drive to the array and re-sync the contents. Good hardware RAID controllers re-sync automatically as soon as they see a new drive, without operator intervention.</li>
</ul>
<p>Notice I said &#8220;<em>good</em> hardware RAID controllers&#8221;. Low-end controllers like those integrated with consumer-grade motherboards that require software drivers are not suitable for server use. Cheap motherboard RAID (often called &#8220;fake RAID&#8221;) is designed for gamers who want RAID 0 to boost disk read times, not for reliability. Server-grade hardware RAID requires controllers from Adaptec, 3ware or another reputable manufacturer.</p>
<h4>A simple RAID1 example</h4>
<p>For this example we&#8217;ll construct a simple RAID1 mirror using a server that has two 4 GB serial ATA drives. Such a configuration will keep running if either drive fails, but (obviously) not if both fail.</p>
<p>EIDE or SCSI drives can be used with Linux RAID, but right now serial ATA provides the best combination of low cost, performance and flexibility.</p>
<p>For this example, partitioning will be done as simply as possible:</p>
<div align="center">
<table border="0" cellspacing="1" cellpadding="3">
<tbody>
<tr>
<th style="text-align: center; background-color: #66cccc">Drive</th>
<th style="text-align: center; background-color: #66cccc">Partition</th>
<th style="text-align: center; background-color: #66cccc">Type</th>
<th style="text-align: center; background-color: #66cccc">Mounted on</th>
<th style="text-align: center; background-color: #66cccc">Size</th>
</tr>
<tr>
<td style="text-align: center; background-color: #c0c0c0" rowspan="2">Drive0</td>
<td style="text-align: center; background-color: #c0c0c0"><code>/dev/sda1</code></td>
<td style="text-align: center; background-color: #c0c0c0">Primary</td>
<td style="text-align: center; background-color: #c0c0c0">/</td>
<td style="background-color: #c0c0c0">4.1 GB</td>
</tr>
<tr>
<td style="text-align: center; background-color: #c0c0c0"><code>/dev/sda2</code></td>
<td style="text-align: center; background-color: #c0c0c0">Primary</td>
<td style="text-align: center; background-color: #c0c0c0">(swap area)</td>
<td style="background-color: #c0c0c0">(remainder of disk)</td>
</tr>
<tr>
<td style="text-align: center; background-color: #c0c0c0" rowspan="2">Drive1</td>
<td style="text-align: center; background-color: #c0c0c0"><code>/dev/sdb1</code></td>
<td style="text-align: center; background-color: #c0c0c0">Primary</td>
<td style="text-align: center; background-color: #c0c0c0">/</td>
<td style="background-color: #c0c0c0">4.1 GB</td>
</tr>
<tr>
<td style="text-align: center; background-color: #c0c0c0"><code>/dev/sdb2</code></td>
<td style="text-align: center; background-color: #c0c0c0">Primary</td>
<td style="text-align: center; background-color: #c0c0c0">(swap area)</td>
<td style="background-color: #c0c0c0">(remainder of disk)</td>
</tr>
</tbody>
</table>
</div>
<p>In Linux software RAID each mount point is usually configured as a separate RAID device. It&#8217;s  possible for entire drives to be RAID members rather than each partition (e.g. combine <code>/dev/sda</code> and <code>/dev/sdb</code>) but the resulting device will not be bootable.</p>
<p>In this example partitions sda1 and sdb1 will be made members of a RAID1 device named <code>/dev/md0</code>. Partitions sda2 and sdb2 will be members of a RAID1 device named <code>/dev/md1</code>.</p>
<div align="center">
<table border="0" cellspacing="1" cellpadding="3">
<tbody>
<tr>
<th style="text-align: center; background-color: #66cccc">RAID device</th>
<th style="text-align: center; background-color: #66cccc">Type</th>
<th style="text-align: center; background-color: #66cccc">Mounted on</th>
<th style="text-align: center; background-color: #66cccc">Size</th>
<th style="text-align: center; background-color: #66cccc">Members</th>
</tr>
<tr>
<td style="text-align: center; background-color: #c0c0c0" rowspan="2"><code>/dev/md0</code></td>
<td style="text-align: center; background-color: #c0c0c0" rowspan="2">RAID1<br />
mirror</td>
<td style="text-align: center; background-color: #c0c0c0" rowspan="2">/</td>
<td style="background-color: #c0c0c0" rowspan="2" align="center">4.1 GB</td>
<td style="text-align: center; background-color: #c0c0c0"><code>/dev/sda1</code></td>
</tr>
<tr>
<td style="text-align: center; background-color: #c0c0c0"><code>/dev/sdb1</code></td>
</tr>
<tr>
<td style="text-align: center; background-color: #c0c0c0" rowspan="2"><code>/dev/md1</code></td>
<td style="text-align: center; background-color: #c0c0c0" rowspan="2">RAID1<br />
mirror</td>
<td style="text-align: center; background-color: #c0c0c0" rowspan="2">(swap)</td>
<td style="background-color: #c0c0c0" rowspan="2">(remainder of disk)</td>
<td style="text-align: center; background-color: #c0c0c0"><code>/dev/sda2</code></td>
</tr>
<tr>
<td style="text-align: center; background-color: #c0c0c0"><code>/dev/sdb2</code></td>
</tr>
</tbody>
</table>
</div>
<p>On a real world server it&#8217;s a good idea to have at least /var and /home on their own partitions, but the above scheme is good enough for this example. We are also purposely avoiding complications like logical volume management (LVM), just to keep things simple.</p>
<p>In Linux RAID, corresponding partitions on each drive in a RAID device should be the same size. If they aren&#8217;t, software RAID will still work but each RAID device will only be as large as the smallest member partition (e.g. if you add a 10GB partition and a 20GB partition into a RAID1 array, the resulting array will only have 10GB of usable space).</p>
<h4>Installing Ubuntu server with RAID1</h4>
<p>To install a fresh Ubuntu System with RAID, boot from the CD-ROM as usual. Follow the prompts until you get at the &#8220;Partition Disks&#8221; dialog.</p>
<ul>
<li>From the &#8220;Partitions Disks&#8221; dialog box, select &#8220;Manually edit the partition table&#8221;.</li>
<li>Select the first disk (&#8220;sda&#8221;)</li>
<li>Say yes to &#8220;Create a new empty partition table on this device?&#8221;</li>
<li>Use the dialog boxes to create a new primary partition large enough to hold the root filesystem but leave space for a swap partition (4.1 GB in this example).</li>
<li>For &#8220;How to use this partition&#8221; select &#8220;<span style="text-decoration: underline;">physical volume for RAID</span>&#8220;, <em>not</em> the default &#8220;Ext3 journaling file system&#8221;</li>
<li>Make the partition <em>bootable</em> (Bootable flag &#8220;on&#8221;)</li>
<li>Use the dialogs to create one other primary partition taking up the remaining disk space (197.4 MB in this example). Later  this will be used for swap.</li>
<li>For &#8220;How to use this partition&#8221; select &#8220;<span style="text-decoration: underline;">physical volume for RAID</span>&#8220;, <em>not</em> the default &#8220;Ext3 journaling file system&#8221; and <em>not</em> &#8220;swap area&#8221;</li>
<li>Repeat the above steps to create identical partitions on the second drive. Remember to mark partition one on both drives as &#8220;bootable&#8221;. The final result should look similar to the following:</li>
</ul>
<p align="center"><a title="Direct link to file" href="http://advosys.ca/viewpoints/wp-content/uploads/ubunturaid006.png"><img src="http://advosys.ca/viewpoints/wp-content/uploads/ubunturaid006.thumbnail.png" alt="Initial partitioning scheme" width="171" height="107" /></a> (click for full size)</p>
<ul>
<li>Once the partitions are configured, at the top of the &#8220;Partition Disks&#8221; main dialog select &#8220;Configure Software RAID&#8221;</li>
<li>When asked &#8220;Write the changes to the storage devices and configure RAID&#8221; select &#8220;Yes&#8221;.</li>
<li>For &#8220;Multidisk configuration actions&#8221; select &#8220;Create MD device&#8221;</li>
<li>For &#8220;Multidisk device type&#8221; select &#8220;RAID1&#8243;</li>
<li>For &#8220;Number of active devices for the RAID1 array&#8221; enter &#8220;2&#8243;</li>
<li>For Number of spare devices for the RAID1 array&#8221; enter &#8220;0&#8243; (zero)</li>
<li>When asked to select &#8220;Active devices for the RAID1 multidisk device&#8221; select both <code>/dev/sda1</code> and <code>/dev/sdb1</code></li>
<li>From the next dialog select &#8220;create MD device&#8221;</li>
<li>Repeat the above steps to create an MD device that contains <code>/dev/sda2</code> and <code>/dev/sdb2</code></li>
<li>Finally, from the dialog &#8220;Multidisk configuration actions&#8221; select &#8220;Finish&#8221;</li>
</ul>
<p>Next configure RAID #0 (md0) to be mounted as the &#8220;/&#8221; filesystem and RAID device #1 (md1) to be mounted as swap:</p>
<ul>
<li>From the &#8220;Partition Disks&#8221; dialog, move the cursor bar under &#8220;RAID device #0&#8243; and select &#8220;#1 4.1 GB&#8221;</li>
<li>Configure the device as an Ext3 filesystem mounted on /, as shown:</li>
</ul>
<p align="center"><a title="Direct link to file" href="http://advosys.ca/viewpoints/wp-content/uploads/ubunturaid022.png"><img src="http://advosys.ca/viewpoints/wp-content/uploads/ubunturaid022.thumbnail.png" alt="ubunturaid022.png" width="171" height="107" /></a> (click image for full size)</p>
<ul>
<li>From the Partition Disks dialog under &#8220;RAID device #1&#8243; select &#8220;#1 197.3 MB&#8221;</li>
<li>Configure the device as &#8220;swap area&#8221;, as shown:</li>
</ul>
<p align="center"><a title="Direct link to file" href="http://advosys.ca/viewpoints/wp-content/uploads/ubunturaid023.png"><img src="http://advosys.ca/viewpoints/wp-content/uploads/ubunturaid023.thumbnail.png" alt="ubunturaid023.png" width="171" height="107" /></a> (click image for full size)</p>
<ul>
<li>The final partitioning screen should resemble the following:</li>
</ul>
<p align="center"><a title="Direct link to file" href="http://advosys.ca/viewpoints/wp-content/uploads/ubunturaid024.png"><img src="http://advosys.ca/viewpoints/wp-content/uploads/ubunturaid024.thumbnail.png" alt="ubunturaid024.png" width="171" height="107" /></a> (click image for full size)</p>
<ul>
<li>Select &#8220;Finish partitioning and write changes to disk&#8221;.The RAID1 mirrors are created and made active, the filesystem is formatted and installation of Ubuntu proceeds as usual.</li>
<li>Allow the installation to complete then reboot when requested.</li>
</ul>
<h4>Booting with a failed drive</h4>
<p>The GRUB bootloader has always made it tricky to boot from a RAID array when one of the drives has failed. Fortunately, the Ubuntu team improved the situation in Ubuntu 8.10 Intrepid Ibex and backported the changes to Ubuntu Server 8.04 Hardy Heron (See <a title="SRU: Backport of Boot Degraded RAID functionality from Intrepid to Hardy" href="https://bugs.launchpad.net/ubuntu/+source/mdadm/+bug/290885">Bug 290885</a> for the whole saga).</p>
<p>Now administrators can choose how the server will behave when a drive in a RAID array has failed:</p>
<ol>
<li>Wait at a boot prompt for manual intervention (the default), or</li>
<li>Automatically boot from the other drive</li>
</ol>
<p>Most administrators will want an automatic boot. After all, the purpose of RAID is to increase server availability. However, with some hardware failures automatically booting could wipe out data on the remaining drive. If you have good backup and recovery procedures, that risk is probably acceptable, but it is your decision as administrator.</p>
<p>To make Ubuntu Server automatically boot when one drive in a RAID array has failed do the following:</p>
<ul>
<li>From a running server, do a package update to make sure you have the latest kernel and boot loader (e.g. <code>sudo apt-get update; apt-get upgrade</code>).</li>
<li>Reboot the server to ensure any new kernel and bootloader packages are in place.</li>
<li>From the command line run &#8220;<code>sudo grub-install /dev/md0</code>&#8221; to ensure GRUB is installed on all members of the boot RAID device.</li>
<li>From the command line run &#8220;<code>sudo dpkg-reconfigure mdadm</code>&#8220;</li>
<li>When asked &#8220;Should mdadm run monthly redundancy checks of the RAID arrays?&#8221;, select either Yes or No (read the warning about possible performance impact and decide. &#8220;Yes&#8221; is the safer choice)</li>
<li>When asked &#8220;Do you want to start the md monitoring daemon?&#8221; select Yes.</li>
<li>Enter a valid email address to send warning messages to.</li>
<li>When asked &#8220;Do you want to boot your system if your RAID becomes degraded?&#8221; select Yes.</li>
</ul>
<p>Now when the system boots and either of the drives has failed, the system will seem to hang at the &#8220;Loading, please wait&#8230;&#8221; stage for approximately five minutes, then proceed to boot normally.</p>
<h4>Some friendly advice</h4>
<p>RAID systems that boot and continue to function with failed members are great for continuity, but we often see administrators either not notice that drives have failed, or wait to long to replace them.</p>
<p>Suddenly the last drive also dies and they face a long downtime while the system is rebuilt or restored. It may seem obvious, but when dealing with RAID:</p>
<ol>
<li>Make sure your system properly alerts you when a drive fails. Don&#8217;t just rely on the MD monitoring daemon to send email alerts: also run <a href="http://packages.ubuntu.com/hardy/smartmontools">smartmontools</a> to monitor physical health and setup a script in your server monitor (e.g. <a href="http://packages.ubuntu.com/hardy/monit">monit</a> or <a href="http://packages.ubuntu.com/hardy/nagios2">Nagios</a>), run a script from cron that parses /proc/mdstat, or whatever method works best in your environment.</li>
<li>Don&#8217;t wait to repair or replace the failed drive. When a drive fails, <em>act immediately</em>. Drives have an eerie tendency to fail at nearly the same time, especially when they are identical models made during the same production run (which is likely if all were purchased at the same time from the same vendor).</li>
</ol>
<h4>Why RAID swap?</h4>
<p>You might be wondering why we put swap on a RAID device, causing system swap activity to suffer the additional overhead of RAID.</p>
<p>Though Linux is capable of handling multiple independent swap partitions on multiple drives, if a drive containing an active swap partition dies it may take the system down with it. That defeats the point of having RAID in the first place, so to avoid that possibility we put the swap in RAID.</p>
<p>This creates more overhead, but swap is only meant as temporary substitute memory during rare moments of memory exhaustion. If the system is regularly using swap, performance is already being severely impacted and it&#8217;s time to add more physical memory.</p>
<h4>Care and feeding</h4>
<p>Having two drives configured in a RAID1 mirror allows the server to continue to function when either drive fails. When a drive fails completely, the kernel RAID driver automatically removes it from the array.</p>
<p>However, a drive may start having seek errors without failing completely. In that situation the RAID driver may not remove it from service and performance will degrade. Luckily you can manually remove a failing drive using the &#8220;mdadm&#8221; command. For example, to manually mark both of the RAID devices on drive sda as failed:</p>
<blockquote><p><code>mdadm /dev/md0 --fail /dev/sda1<br />
mdadm /dev/md1 --fail /dev/sda2</code></p></blockquote>
<p>The above removes both RAID devices on drive sda from service, leaving only the partitions on drive sdb active.</p>
<h4>Removing a failed drive</h4>
<p>When Ubuntu sees that RAID has been configured, it automatically runs the mdadm command in &#8220;monitor mode&#8221; to watch each device and send email to root when a problem is noticed. You can also manually inspect RAID status using commands like the following:</p>
<blockquote><p><code>cat /proc/mdstat<br />
mdadm --query --detail /dev/md0<br />
mdadm --query --detail /dev/md1</code></p></blockquote>
<p>As mentioned above, it&#8217;s wise to use the <a href="http://packages.ubuntu.com/hardy/smartmontools">smartmontools</a> package to monitor each drive&#8217;s internal failure stats. However, as noted in a <a href="http://labs.google.com/papers/disk_failures.pdf">2007 analysis by Google</a> (PDF link), drives are perfectly capable to dying without any warning showing in their SMART indicators.</p>
<p>To replace a drive that has been marked as failed (either automatically or by using &#8220;<code>mdadm --fail</code>&#8220;), first remove all partitions on that drive from the array. For example to remove all partitions from drive sda:</p>
<blockquote><p><code>mdadm /dev/md0 --remove /dev/sda1<br />
mdadm /dev/md1 --remove /dev/sda2</code></p></blockquote>
<p>Once removed it is safe to power down the server and replace the failed drive.</p>
<h4>Boot problems</h4>
<p>If it was the first drive that failed, after replacing it with a new unformatted drive the system may no longer boot: some BIOSs only attempt to boot from the lowest numbered hard drive (e.g. sda or hda) and if it is blank the system will hang. In that case you&#8217;ll need a rescue CD capable of running a GRUB boot prompt so you can manually boot from the second physical drive.</p>
<p>There are many free Linux-based rescue CDs available (e.g. <a href="http://www.sysresccd.org/">SystemRescueCD</a>) but for quick access to GRUB try the <a href="http://forjamari.linex.org/projects/supergrub/">Super Grub Disk</a>. This small download can be written to bootable floppy or CDROM and give quick access to system boot tools, especially the GRUB command line.</p>
<p>Whatever rescue tool you use, use it to boot to a GRUB command prompt and force the system to boot from the second installed hard drive using commands similar to the following:</p>
<blockquote><p><code>root (hd1,0)<br />
kernel /boot/vmlinuz-<em>whatever</em> root=/dev/md0 ro<br />
initrd /boot/initrd.img-<em>whatever</em><br />
boot</code></p></blockquote>
<p>To find the correct file names for the &#8220;kernel&#8221; and &#8220;initrd&#8221; parameters, GRUB has bash-style command-line completion&#8230; type just enough of the path then press TAB to auto-complete or see a list of available choices.</p>
<h4>Preparing the new drive</h4>
<p>Once system as been rebooted with the new unformatted replacement drive in place, some manual intervention is required to partition the drive and add it to the RAID array.</p>
<p>The new drive must have an identical (or nearly identical) partition table to the other. You can use <code>fdisk</code> to manually create a partition table on the new drive identical to the table of the other, or if both drives are identical you can use the <code>sfdisk</code> command to duplicate the partition. For example, to copy the partition table from the second drive &#8220;sdb&#8221; onto the first drive &#8220;sda&#8221;, the <code>sfdisk </code>command is as follows:</p>
<blockquote><p><code>sfdisk -d /dev/sdb | sfdisk /dev/sda</code></p></blockquote>
<p>Warning: be careful to specify the right source and destinations drives when using <code>sfdisk</code> or your could blank out the partition table on your good drive.</p>
<p>Once the partitions have been created, you can add them to the corresponding RAID devices using &#8220;<code>mdadm --add</code>&#8221; commands. For example:</p>
<blockquote><p><code>mdadm --add /dev/md0 /dev/sda1<br />
mdadm --add /dev/md1 /dev/sda2</code></p></blockquote>
<p>Once added, the Linux kernel immediately starts re-syncing contents of the arrays onto the new drive. You can monitor progress via &#8220;<code>cat /proc/mdstat</code>&#8220;. Syncing uses idle CPU cycles to avoid overloading a production system, so performance should not be affected too badly. The busier the server (and larger the partitions), the longer the re-sync will take.</p>
<p>You don&#8217;t have to wait until all partitions are re-synchronized&#8230; servers can be on-line and in production while syncing is in progress: no data will be lost and eventually all drives will become synchronized.</p>
<h4>Summary</h4>
<p>Linux software RAID is far more cost effective and flexible than hardware RAID, though it is more complex and requires manual intervention when replacing drives. In most situations, software RAID performance is as good (and often better) than an equivalent hardware RAID solution, all at a lower cost and with greater flexibility.  When all you need are mirrored drives, software RAID is often the best choice.</p>
<p>More information on Linux RAID:</p>
<ul>
<li><a href="http://www.oreilly.com/catalog/mraidlinux/">Managing RAID on Linux</a> (O&#8217;Reilly Media, 2003)</li>
<li><a href="http://tldp.org/HOWTO/Software-RAID-HOWTO.html">Software RAID HOWTO</a> (Linux Documentation project)</li>
<li><a title="jeff garzik's linux pages: Linux: Why software RAID" href="http://linux.yyz.us/why-software-raid.html">Linux: Why software RAID?</a> (Jeff Garzik)</li>
</ul>
Copyright &copy; 2012 <a href="http://advosys.ca/">Advosys Consulting Inc.</a>

<p><em>Related posts:</em><ul><li><a href='http://advosys.ca/viewpoints/2009/03/raid-in-ubuntu-server-updated/' rel='bookmark' title='Permanent Link: RAID in Ubuntu Server updated'>RAID in Ubuntu Server updated</a></li>
<li><a href='http://advosys.ca/viewpoints/2006/08/hardware-raid-vs-software-raid/' rel='bookmark' title='Permanent Link: Linux software vs hardware RAID'>Linux software vs hardware RAID</a></li>
<li><a href='http://advosys.ca/viewpoints/2006/10/ubuntu-610-released/' rel='bookmark' title='Permanent Link: Ubuntu Server 6.10 released'>Ubuntu Server 6.10 released</a></li>
</ul></p>]]></content:encoded>
			<wfw:commentRss>http://advosys.ca/viewpoints/2007/04/setting-up-software-raid-in-ubuntu-server/feed/</wfw:commentRss>
		<slash:comments>26</slash:comments>
		</item>
		<item>
		<title>Linux high availability clustering</title>
		<link>http://advosys.ca/viewpoints/2007/01/linux-high-availability-clusters/</link>
		<comments>http://advosys.ca/viewpoints/2007/01/linux-high-availability-clusters/#comments</comments>
		<pubDate>Sun, 28 Jan 2007 13:15:28 +0000</pubDate>
		<dc:creator>D Webber</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Safeguarding data]]></category>
		<category><![CDATA[availability]]></category>
		<category><![CDATA[high availability]]></category>
		<category><![CDATA[server security]]></category>

		<guid isPermaLink="false">http://advosys.ca/viewpoints/2007/01/linux-high-availability-clusters/</guid>
		<description><![CDATA[One of the few remaining advantages of commercial Unix over Linux or BSD are the &#34;enterprise&#34; features like high availability (HA) clustering. Sun offers tools like Solaris Cluster that handle the hard parts of setting up high availability for you. In the Linux world it&#8217;s more common to see home-grown solutions like using a script [...]]]></description>
			<content:encoded><![CDATA[<p>One of the few remaining advantages of commercial Unix over Linux or BSD are the &quot;enterprise&quot; features like high availability (HA) clustering. Sun offers tools like <a href="http://www.sun.com/software/solaris/cluster/index.xml">Solaris Cluster</a> that handle the hard parts of setting up high availability for you.</p>
<p>In the Linux world it&#8217;s more common to see home-grown solutions like using a script or software load balancer to cut over to a hot standby box, and using rsync to mirror the primary server&#8217;s data files. Rolling your own solution is fun, but tricky to get right and a nightmare for the next system admin to figure out.</p>
<p>They don&#8217;t get much press, but there are many better high availability options available for Linux. Here are a few:<span id="more-131"></span></p>
<ul>
<li><strong><a href="http://www.linux-ha.org/">High-Availability Linux Project</a></strong>: The grand-daddy of open source HA which provides the <a href="http://www.linux-ha.org/Heartbeat">heartbeat</a> failure detection daemon, the poetically named &quot;<a href="http://www.linux-ha.org/STONITH">shoot the other node in the head</a>&quot; fencing daemon and documentation needed to build your own an automatic-failover cluster.</li>
<li><a href="http://www.linuxvirtualserver.org/"><strong>Linux Virtual Server</strong></a>: Primarily intended to provide scalability through load balancing, but also incorporates high availabiliy via heartbeat, failoverd and shared storage.</li>
<li><a href="http://www.redhat.com/software/rha/cluster/"><strong>Redhat Cluster Suite</strong></a>: Combines failover daemons with a reasonable graphical configuration panel with the <a href="http://www.redhat.com/software/rha/gfs/">GFS</a> distributed file system. Integrates with commercial fencing hardware such as the HP/Compaq Integrated Lights Out API. Since Redhat is open source, all the components of this otherwise payware solution are also available in the excellent (and free) <a href="http://www.centos.org/">CentOS</a> distribution.</li>
</ul>
<p>HA solutions rely on each node in a cluster accessing shared storage like an NFS storage area network or storage area network (SAN). However, if you only have modest needs or can&#8217;t afford a SAN, there are several tools that allow synchronizing disk contents better than the traditional rsync method and simpler to set up than distributed file systems like AFS. The most interesting is DRBD:</p>
<ul>
<li><a href="http://www.drbd.org/"><strong>DRBD</strong></a>: RAID-1 (mirroring) across a network. All writes to a primary server&#8217;s local disk can be mirrored to a secondary disk across the network, essentially removing the need for a dedicated shared storage box. After recovery, writes to the secondary disk are synced back to the primary. Claims a &quot;total resync time of 1-3 minutes, regardless of device size (currently up to 4TB), even after a hard crash of an active node.&quot;</li>
</ul>
<p>A great deal of work has been put into Linux high availability. Solutions like Redhat compare very well with what&#8217;s provided in traditional commercial Unix. Much more information about HA clustering for Linux and software links can be found at the following sites:</p>
<ul>
<li><strong>Linux Clustering Information Center</strong> <a href="http://www.lcic.org/">http://www.lcic.org/</a></li>
<li><strong>High-Availability Linux Project</strong> <a href="http://www.linux-ha.org/">http://www.linux-ha.org/</a></li>
</ul>
Copyright &copy; 2012 <a href="http://advosys.ca/">Advosys Consulting Inc.</a>

<p><em>Related posts:</em><ul><li><a href='http://advosys.ca/viewpoints/2006/08/hardware-raid-vs-software-raid/' rel='bookmark' title='Permanent Link: Linux software vs hardware RAID'>Linux software vs hardware RAID</a></li>
</ul></p>]]></content:encoded>
			<wfw:commentRss>http://advosys.ca/viewpoints/2007/01/linux-high-availability-clusters/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Upgrading to Ubuntu Server 6.10 (edgy)</title>
		<link>http://advosys.ca/viewpoints/2006/10/upgrading-to-ubuntu-server-610/</link>
		<comments>http://advosys.ca/viewpoints/2006/10/upgrading-to-ubuntu-server-610/#comments</comments>
		<pubDate>Fri, 27 Oct 2006 20:13:17 +0000</pubDate>
		<dc:creator>D Webber</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://advosys.ca/viewpoints/2006/10/upgrading-to-ubuntu-server-610/</guid>
		<description><![CDATA[I&#8217;ve now upgraded one of my development servers from Ubuntu Server 6.06 to 6.10 and as promised here are my initial notes and impressions: This server is configured as a bog-standard LAMP and email server, with a few custom additions&#160;like eAccelerator&#160;and Tor compiled from source. X-windows and other workstation stuff is not installed&#8230; this is [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve now upgraded one of my development servers from Ubuntu Server 6.06 to 6.10 and as promised here are my initial notes and impressions:</p>
<p>This server is configured as a bog-standard LAMP and email server, with a few custom additions&nbsp;like <a title="Installing eAccelerator in Ubuntu Server" href="http://advosys.ca/viewpoints/2006/10/installing-eaccelerator-in-ubuntu-server/">eAccelerator</a>&nbsp;and <a title="The Onion Router" href="http://tor.eff.org/">Tor</a> compiled from source. X-windows and other workstation stuff is not installed&#8230; this is a command line development web server. The upgrade process for Ubuntu Server is the same as standard Debian:</p>
<ul>
<li>Edit file /etc/apt/sources.list and globally replace word &quot;dapper&quot; with &quot;edgy&quot;  </li>
<li>apt-get update  </li>
<li>apt-get dist-upgrade</li>
<li>apt-get dist-upgrade (yes, you&#8217;re supposed to do this a second time)</li>
</ul>
<p>All upgraded packages for the new version downloaded and installed automatically without any issues at all. As usual, the package manager asked me what to do each time it encountered config files that I had changed&#8230; since it lets you do a &#8216;diff&#8217; right from within the package manager it&#8217;s easy to determine if it&#8217;s safe to overwrite the old config file with the newer one, or just make notes on the change to make them manually later.<span id="more-96"></span></p>
<p>About half-way through the upgrade, Perl started complaining about the locale not being set correctly but I suspect that was because I had previously installed <a href="http://packages.ubuntu.com/edgy/admin/localepurge">localepurge</a>&nbsp;from the universe repository. Not a surprise&#8230; packages in the unsupported universe and&nbsp;multiverse repositories are not guaranteed to upgrade smoothly. The warning didn&#8217;t appear to break anything and the upgrade completed without further messages.</p>
<p>Just like with Debian, differences and warnings are displayed on screen during the upgrade or emailed to root, depending on your preferences. The warnings I encountered were the normal nit-picky little things that I was glad to be informed about, but there was nothing of consequence.</p>
<p>You don&#8217;t have to reboot after upgrading Ubuntu (or Debian) but to verify the startup and get the newer kernel it&#8217;s a good idea. The reboot was amazing&#8230; about 15 seconds after the not the firmware POST completed the box was running! That&#8217;s at least a three-fold increase in startup time. I had read that this release replaced the the System V-style init for a new method called &quot;<a href="http://upstart.ubuntu.com/">upstart</a>&quot; but never expected such a dramatic improvement. What&#8217;s more, my custom System V init scripts in /etc/init.d still executed. Excellent job, Canonical!</p>
<p>Other than the new init method, this release of Ubuntu has only incremental improvements&#8230; which is exactly what I want to see in a server operating system. I can do without earth-shattering changes for every single upgrade. On the server side there are minor new versions of most things:</p>
<div align="center">
<table cellspacing="5">
<tbody>
<tr>
<th>Package</th>
<th>Ubuntu 6.05<br />&quot;Dapper&quot;</th>
<th>Ubuntu 6.10<br />&quot;Edgy&quot;</th>
</tr>
<tr>
<td>Apache</td>
<td align="center">2.0.55</td>
<td align="center">2.0.55</td>
</tr>
<tr>
<td>MySQL</td>
<td align="center">5.0.22</td>
<td align="center">2.0.24a</td>
</tr>
<tr>
<td>PHP</td>
<td align="center">5.1.2</td>
<td align="center">5.1.6</td>
</tr>
<tr>
<td>Perl</td>
<td align="center">5.8.7</td>
<td align="center">5.8.8</td>
</tr>
<tr>
<td>Python</td>
<td align="center">2.4.3</td>
<td align="center">2.4.4</td>
</tr>
<tr>
<td>GCC 4</td>
<td align="center">4.0.3</td>
<td align="center">4.1.2</td>
</tr>
<tr>
<td>Postfix</td>
<td align="center">2.2.10</td>
<td align="center">2.3.3</td>
</tr>
</tbody>
</table>
</div>
<p>I&#8217;m still in the initial shakedown after the upgrade but so far web, mail, database and other services are running perfectly. Recompiling the eAccellerator module for the updated version of PHP was also without problems. It looks like Canonical has managed to continue the Debian level of quality for their upgrades&#8230; my decision to move to Ubuntu might just be paying off.</p>
<p><em>Update:</em> (Oct 28 2006) Two days after upgrading my development server I still have found no problems. However, it seems many people are complaining about this release&nbsp; (e.g. see <a href="http://element14.wordpress.com/2006/10/27/ubuntu-edgy-upgrades-a-disaster-for-many/">here</a> and <a href="http://linux.slashdot.org/linux/06/10/28/239258.shtml" title="Slashdot: Upgrading to Ubuntu Edgy Eft a &quot;Nightmare&quot;">here</a>) Most problems seems to be with X-windows and workstation users, not server users. It remains to be seen if there are issues with this Ubuntu release itself. </p>
Copyright &copy; 2012 <a href="http://advosys.ca/">Advosys Consulting Inc.</a>

<p><em>Related posts:</em><ul><li><a href='http://advosys.ca/viewpoints/2006/10/ubuntu-610-released/' rel='bookmark' title='Permanent Link: Ubuntu Server 6.10 released'>Ubuntu Server 6.10 released</a></li>
<li><a href='http://advosys.ca/viewpoints/2006/08/debian-to-ubuntu/' rel='bookmark' title='Permanent Link: Thoughts on moving from Debian to Ubuntu Server'>Thoughts on moving from Debian to Ubuntu Server</a></li>
<li><a href='http://advosys.ca/viewpoints/2006/08/installing-mod_evasive-in-ubuntu/' rel='bookmark' title='Permanent Link: Installing Apache mod_evasive in Ubuntu Server'>Installing Apache mod_evasive in Ubuntu Server</a></li>
</ul></p>]]></content:encoded>
			<wfw:commentRss>http://advosys.ca/viewpoints/2006/10/upgrading-to-ubuntu-server-610/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

