<?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>Helyar.net &#187; Linux</title>
	<atom:link href="http://www.helyar.net/tag/linux/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.helyar.net</link>
	<description>From the desktop of George Helyar</description>
	<lastBuildDate>Thu, 26 Jan 2012 16:11:27 +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>How to compile ffmpeg from source</title>
		<link>http://www.helyar.net/2010/how-to-compile-ffmpeg-from-source/</link>
		<comments>http://www.helyar.net/2010/how-to-compile-ffmpeg-from-source/#comments</comments>
		<pubDate>Wed, 09 Jun 2010 13:15:43 +0000</pubDate>
		<dc:creator>George Helyar</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[compile]]></category>
		<category><![CDATA[ffmpeg]]></category>

		<guid isPermaLink="false">http://www.helyar.net/?p=512</guid>
		<description><![CDATA[ffmpeg is a free and very powerful video encoding tool that is the basis of many other popular video encoding tools, with a command line interface. Because of the frequent updates to ffmpeg and the codecs it uses, it is often best to download the latest source and compile it yourself. These updates usually include [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://ffmpeg.org/">ffmpeg</a> is a free and very powerful video encoding tool that is the basis of many other popular video encoding tools, with a command line interface.</p>
<p>Because of the frequent updates to ffmpeg and the codecs it uses, it is often best to download the latest source and compile it yourself. These updates usually include new features, bug fixes, support for new codecs and noticeable speed improvements. Most Linux distributions have outdated packages in their repositories so being able to compile the latest code from source is very useful</p>
<p>I use ffmpeg to output H.264 video with AAC audio in a MP4 container. I also occasionally convert audio to mp3. This means I will be compiling the following:</p>
<ul>
<li><a href="http://ffmpeg.org/">ffmpeg</a></li>
<li><a href="http://www.videolan.org/developers/x264.html">x264</a></li>
<li><a href="http://www.audiocoding.com/">faac/faad</a></li>
<li><a href="http://lame.sourceforge.net/">LAME</a></li>
</ul>
<h3>Preparing to compile on Linux</h3>
<p><em>(If you already compile things on Linux, skip to the next section.)</em><br />
First make sure that you have all of the tools and headers required to compile on Linux. On Debian based systems (including Ubuntu) you can usually run the following as root to get everything you need. First update your system. It is important that you get the latest kernel and the correct sources for it.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;color: black;"><span style="color: #c20cb9; font-weight: bold;color: blue;">apt-get</span> update
<span style="color: #c20cb9; font-weight: bold;color: blue;">apt-get</span> dist-upgrade</pre></div></div>

<p>A reboot may be required here if your kernel updated.</p>
<p>Now get the compilers, tools and headers needed to compile software on Linux:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;color: black;"><span style="color: #c20cb9; font-weight: bold;color: blue;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;color: blue;">install</span> build-essential linux-headers-<span style="color: #000000; font-weight: bold;color: black;">`</span><span style="color: #c20cb9; font-weight: bold;color: blue;">uname</span> -r<span style="color: #000000; font-weight: bold;color: black;">`</span> <span style="color: #c20cb9; font-weight: bold;color: blue;">git</span> subversion yasm</pre></div></div>

<p>NB: your &#8220;git&#8221; package may be called something like &#8220;git-core&#8221;</p>
<h3>Compile ffmpeg (empty)</h3>
<p>Because some libraries require ffmpeg to be installed, we will first install a blank copy with no additional codecs specified.</p>
<p>When I update, I often find that I need to recompile a blank version of ffmpeg before I can compile x264.</p>
<p>Download the latest ffmpeg source with subversion, configure, compile:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;color: black;"><span style="color: #c20cb9; font-weight: bold;color: blue;">svn</span> checkout <span style="color: #c20cb9; font-weight: bold;color: blue;">svn</span>:<span style="color: #000000; font-weight: bold;color: black;">//</span>svn.ffmpeg.org<span style="color: #000000; font-weight: bold;color: black;">/</span>ffmpeg<span style="color: #000000; font-weight: bold;color: black;">/</span>trunk <span style="color: #c20cb9; font-weight: bold;color: blue;">ffmpeg</span>
<span style="color: #7a0874; font-weight: bold;color: blue;">cd</span> <span style="color: #c20cb9; font-weight: bold;color: blue;">ffmpeg</span>
.<span style="color: #000000; font-weight: bold;color: black;">/</span>configure
<span style="color: #c20cb9; font-weight: bold;color: blue;">make</span></pre></div></div>

<p>If this all worked with no errors (you can check with <code>echo $?</code>), run</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;color: black;"><span style="color: #c20cb9; font-weight: bold;color: blue;">make</span> <span style="color: #c20cb9; font-weight: bold;color: blue;">install</span></pre></div></div>

<p> as root. Use su or sudo if you need to. I use su.</p>
<h3>Compile faac and faad</h3>
<p>Download and extract faac and faad from <a href="http://www.audiocoding.com/">audiocoding.com</a>.</p>
<p>As above, run</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;color: black;">.<span style="color: #000000; font-weight: bold;color: black;">/</span>configure
<span style="color: #c20cb9; font-weight: bold;color: blue;">make</span>
<span style="color: #c20cb9; font-weight: bold;color: blue;">su</span> <span style="color: #660033;">-c</span> <span style="color: #ff0000;">'make install'</span></pre></div></div>

<p>on both libraries.</p>
<p>You can optionally do the same thing with <a href="http://lame.sourceforge.net/">LAME</a> if you want to be able to encode mp3 audio.</p>
<p><em>NB: if you get a <code>strcasestr</code> error compiling faac, just comment it out in faac_1.28/common/mp4v2/mpeg4ip.h</em></p>
<h3>Compile x264</h3>
<p>Download and compile the latest x264 source with git:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;color: black;"><span style="color: #c20cb9; font-weight: bold;color: blue;">git</span> clone <span style="color: #c20cb9; font-weight: bold;color: blue;">git</span>:<span style="color: #000000; font-weight: bold;color: black;">//</span>git.videolan.org<span style="color: #000000; font-weight: bold;color: black;">/</span>x264.git
<span style="color: #7a0874; font-weight: bold;color: blue;">cd</span> x264
.<span style="color: #000000; font-weight: bold;color: black;">/</span>configure <span style="color: #660033;">--enable-static</span> <span style="color: #660033;">--enable-shared</span>
<span style="color: #c20cb9; font-weight: bold;color: blue;">make</span>
<span style="color: #c20cb9; font-weight: bold;color: blue;">su</span> <span style="color: #660033;">-c</span> <span style="color: #ff0000;">'make install'</span></pre></div></div>

<h3>Compile ffmpeg with the above codecs</h3>
<p>Now that we have all of the codecs (x264, aac, mp3) successfully installed as libraries on the system, we can reinstall ffmpeg to incorporate these libraries. First go back to the ffmpeg source directory and clean off the previous compile.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;color: black;"><span style="color: #7a0874; font-weight: bold;color: blue;">cd</span> <span style="color: #c20cb9; font-weight: bold;color: blue;">ffmpeg</span>
<span style="color: #c20cb9; font-weight: bold;color: blue;">make</span> clean</pre></div></div>

<p>Now configure to enable all of the installed libraries and recompile:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;color: black;">.<span style="color: #000000; font-weight: bold;color: black;">/</span>configure <span style="color: #660033;">--enable-gpl</span> <span style="color: #660033;">--enable-nonfree</span> <span style="color: #660033;">--enable-pthreads</span> <span style="color: #660033;">--enable-libx264</span> <span style="color: #660033;">--enable-libfaac</span> <span style="color: #660033;">--enable-libfaad</span> <span style="color: #660033;">--enable-libmp3lame</span>
<span style="color: #c20cb9; font-weight: bold;color: blue;">make</span></pre></div></div>

<p>(if it tells you that &#8211;enable-libfaad is not an option, just remove it. It&#8217;s probably either been rolled into faac or ffmpeg has it built in)</p>
<p>If it all worked, run make install as root.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;color: black;"><span style="color: #c20cb9; font-weight: bold;color: blue;">su</span> <span style="color: #660033;">-c</span> <span style="color: #ff0000;">'make install'</span></pre></div></div>

<h3>Testing</h3>
<p>As long as /usr/local/bin/ is on your $PATH environment variable, you should be able to just type <code>ffmpeg</code> to check that it is all installed. It should look something like this:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;color: black;">$ <span style="color: #c20cb9; font-weight: bold;color: blue;">ffmpeg</span>
FFmpeg version SVN-r23548, Copyright <span style="color: #7a0874; font-weight: bold;color: black;">&#40;</span>c<span style="color: #7a0874; font-weight: bold;color: black;">&#41;</span> <span style="color: #000000;color: maroon;">2000</span>-<span style="color: #000000;color: maroon;">2010</span> the FFmpeg developers
  built on Jun  <span style="color: #000000;color: maroon;">9</span> <span style="color: #000000;color: maroon;">2010</span> <span style="color: #000000;color: maroon;">13</span>:<span style="color: #000000;color: maroon;">35</span>:<span style="color: #000000;color: maroon;">17</span> with <span style="color: #c20cb9; font-weight: bold;color: blue;">gcc</span> 4.4.4
  configuration: <span style="color: #660033;">--enable-gpl</span> <span style="color: #660033;">--enable-nonfree</span> <span style="color: #660033;">--enable-pthreads</span> <span style="color: #660033;">--enable-libx264</span> <span style="color: #660033;">--enable-libfaac</span> <span style="color: #660033;">--enable-libfaad</span> <span style="color: #660033;">--enable-libmp3lame</span>
  libavutil     <span style="color: #000000;color: maroon;">50.18</span>. <span style="color: #000000;color: maroon;">0</span> <span style="color: #000000; font-weight: bold;color: black;">/</span> <span style="color: #000000;color: maroon;">50.18</span>. <span style="color: #000000;color: maroon;">0</span>
  libavcodec    <span style="color: #000000;color: maroon;">52.75</span>. <span style="color: #000000;color: maroon;">1</span> <span style="color: #000000; font-weight: bold;color: black;">/</span> <span style="color: #000000;color: maroon;">52.75</span>. <span style="color: #000000;color: maroon;">1</span>
  libavformat   <span style="color: #000000;color: maroon;">52.68</span>. <span style="color: #000000;color: maroon;">0</span> <span style="color: #000000; font-weight: bold;color: black;">/</span> <span style="color: #000000;color: maroon;">52.68</span>. <span style="color: #000000;color: maroon;">0</span>
  libavdevice   <span style="color: #000000;color: maroon;">52</span>. <span style="color: #000000;color: maroon;">2</span>. <span style="color: #000000;color: maroon;">0</span> <span style="color: #000000; font-weight: bold;color: black;">/</span> <span style="color: #000000;color: maroon;">52</span>. <span style="color: #000000;color: maroon;">2</span>. <span style="color: #000000;color: maroon;">0</span>
  libavfilter    <span style="color: #000000;color: maroon;">1.20</span>. <span style="color: #000000;color: maroon;">0</span> <span style="color: #000000; font-weight: bold;color: black;">/</span>  <span style="color: #000000;color: maroon;">1.20</span>. <span style="color: #000000;color: maroon;">0</span>
  libswscale     <span style="color: #000000;color: maroon;">0.11</span>. <span style="color: #000000;color: maroon;">0</span> <span style="color: #000000; font-weight: bold;color: black;">/</span>  <span style="color: #000000;color: maroon;">0.11</span>. <span style="color: #000000;color: maroon;">0</span>
Hyper fast Audio and Video encoder
usage: <span style="color: #c20cb9; font-weight: bold;color: blue;">ffmpeg</span> <span style="color: #7a0874; font-weight: bold;color: black;">&#91;</span>options<span style="color: #7a0874; font-weight: bold;color: black;">&#93;</span> <span style="color: #7a0874; font-weight: bold;color: black;">&#91;</span><span style="color: #7a0874; font-weight: bold;color: black;">&#91;</span>infile options<span style="color: #7a0874; font-weight: bold;color: black;">&#93;</span> <span style="color: #660033;">-i</span> infile<span style="color: #7a0874; font-weight: bold;color: black;">&#93;</span>... <span style="color: #7a0874; font-weight: bold;color: black;">&#123;</span><span style="color: #7a0874; font-weight: bold;color: black;">&#91;</span>outfile options<span style="color: #7a0874; font-weight: bold;color: black;">&#93;</span> outfile<span style="color: #7a0874; font-weight: bold;color: black;">&#125;</span>...
&nbsp;
Use <span style="color: #660033;">-h</span> to get full <span style="color: #7a0874; font-weight: bold;color: blue;">help</span> or, even better, run <span style="color: #ff0000;">'man ffmpeg'</span></pre></div></div>

<h3>Using ffmpeg</h3>
<p>I have written a small Python <a href="http://www.helyar.net/enc">video encoding script</a> to make encoding as easy as</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;color: black;">enc <span style="color: #660033;">-t</span> <span style="color: #7a0874; font-weight: bold;color: blue;">cd</span> file.vob</pre></div></div>

<p>If anyone has any suggestions to improve this, please feel free to post them in the comments.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.helyar.net/2010/how-to-compile-ffmpeg-from-source/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Remote recursive sha1sum with php</title>
		<link>http://www.helyar.net/2010/remote-recursive-sha1sum-with-php/</link>
		<comments>http://www.helyar.net/2010/remote-recursive-sha1sum-with-php/#comments</comments>
		<pubDate>Wed, 02 Jun 2010 13:29:11 +0000</pubDate>
		<dc:creator>George Helyar</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.helyar.net/?p=495</guid>
		<description><![CDATA[To calculate the SHA-1 sums, display them and make them available for download in a sums.gz file: &#60;?php echo&#40;`find ./some_directory/ -type f &#124; grep -v sums.gz &#124; xargs sha1sum &#124; gzip -c &#124; tee sums.gz &#124; zcat`&#41;; ?&#62; To check the sums: &#60;?php echo&#40;`zcat sums.gz &#124; sha1sum -c -`&#41;; ?&#62;]]></description>
			<content:encoded><![CDATA[<p>To calculate the SHA-1 sums, display them and make them available for download in a sums.gz file:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;color: black;"><span style="color: #000000; font-weight: bold;color: blue;">&lt;?php</span> <span style="color: #b1b100;color: blue;">echo</span><span style="color: #009900;color: black;">&#40;</span>`find <span style="color: #339933;color: black;">./</span>some_directory<span style="color: #339933;color: black;">/</span> <span style="color: #339933;color: black;">-</span>type f <span style="color: #339933;color: black;">|</span> grep <span style="color: #339933;color: black;">-</span>v sums<span style="color: #339933;color: black;">.</span>gz <span style="color: #339933;color: black;">|</span> xargs sha1sum <span style="color: #339933;color: black;">|</span> gzip <span style="color: #339933;color: black;">-</span>c <span style="color: #339933;color: black;">|</span> tee sums<span style="color: #339933;color: black;">.</span>gz <span style="color: #339933;color: black;">|</span> zcat`<span style="color: #009900;color: black;">&#41;</span><span style="color: #339933;color: black;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>To check the sums:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;color: black;"><span style="color: #000000; font-weight: bold;color: blue;">&lt;?php</span> <span style="color: #b1b100;color: blue;">echo</span><span style="color: #009900;color: black;">&#40;</span>`zcat sums<span style="color: #339933;color: black;">.</span>gz <span style="color: #339933;color: black;">|</span> sha1sum <span style="color: #339933;color: black;">-</span>c <span style="color: #339933;color: black;">-</span>`<span style="color: #009900;color: black;">&#41;</span><span style="color: #339933;color: black;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.helyar.net/2010/remote-recursive-sha1sum-with-php/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How to install VMware Tools on a Linux guest</title>
		<link>http://www.helyar.net/2009/how-to-install-vmware-tools-on-a-linux-guest/</link>
		<comments>http://www.helyar.net/2009/how-to-install-vmware-tools-on-a-linux-guest/#comments</comments>
		<pubDate>Sat, 13 Jun 2009 13:49:05 +0000</pubDate>
		<dc:creator>George Helyar</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[vmware]]></category>

		<guid isPermaLink="false">http://www.helyar.net/?p=221</guid>
		<description><![CDATA[Installing VMware tools on Windows guests is easy. You just select to install it from your VMware client and it appears as a CD. You can then install it as you would any other software. On Linux, it is a bit more difficult. Again, selecting to install it from your VMware client puts it in [...]]]></description>
			<content:encoded><![CDATA[<p>Installing VMware tools on Windows guests is easy. You just select to install it from your VMware client and it appears as a CD. You can then install it as you would any other software.</p>
<p>On Linux, it is a bit more difficult. Again, selecting to install it from your VMware client puts it in the CD drive. However, depending on your distribution, it may not be automatically mounted.</p>
<p>For an IDE virtual CD drive this mount, copy and then unmount would be something like</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;color: black;"><span style="color: #666666; font-style: italic;"># mount -t iso9660 -o ro /dev/hda /media/cdrom</span>
<span style="color: #666666; font-style: italic;"># cp /media/cdrom/VMwareTools-4.0.0-164009.tar.gz /root</span>
<span style="color: #666666; font-style: italic;"># umount /media/cdrom</span></pre></div></div>

<p>For a SCSI, SATA or SAS drive, this would be /dev/sda rather than /dev/hda. The &#8220;a&#8221; here assumes that it is the first drive. The 3<sup>rd</sup> SATA drive would be /dev/sdc, for example. In addition to this, partitions are labelled with numbers (such as /dev/sdc2 for the 2nd partition on the 3rd SATA drive) but this is not an issue for optical media such as CDs.</p>
<p>Now that the VMware tools archive has been copied off, it can be extracted.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;color: black;"><span style="color: #666666; font-style: italic;"># tar -xzf VMwareTools-4.0.0-164009.tar.gz</span></pre></div></div>

<p>Most people add a &#8220;v&#8221; to the options for verbose output but not only do I find it pointless, it also slows down the extraction (particularly over SSH, particularly for archives with a large number of files). You do not need it to tell if an error occurred during the extraction, as it tells you anyway. The &#8220;x&#8221; option is to extract the archive (&#8220;c&#8221; would be to create one), the &#8220;z&#8221; means use gzip (&#8220;j&#8221; would be bzip2) and the &#8220;f&#8221; specifies the archive&#8217;s file name.</p>
<p>Before we install vmware tools, there are some dependencies that we must meet. I am doing this with Debian 5.0.1 AMD64 on a VMWare vSphere (ESX 4.0) host. If you do not meet these dependencies beforehand, you will probably have to break out of the installer with ctrl+c and re-run the whole thing several times, which is not good.</p>
<p>The &#8220;killall&#8221; tool must be installed. You can tell if it is by running <code>which killall</code>. If a path appears, it is installed. If nothing appears, it is not. In Debian, this is not installed by default and is in the &#8220;psmisc&#8221; package.</p>
<p>In addition to this, we will need to compile kernel modules during the configure stage of the installation. This is apparently not always required but I have not met a distribution yet on which it was not required to compile them from source (possibly RHEL?). This means that we will need gcc, make and the Linux kernel headers. To take care of these dependencies run</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;color: black;"><span style="color: #666666; font-style: italic;"># apt-get update</span>
<span style="color: #666666; font-style: italic;"># apt-get install psmisc gcc make linux-headers-`uname -r`</span></pre></div></div>

<p>You may need to update your running kernel if it can no longer find the headers for your running kernel in the repository. You can do this with <code>apt-get dist-upgrade</code>.</p>
<p>Now that you have the dependencies installed, run <code>./vmware-install.pl</code>. You probably just want to say &#8220;yes&#8221; to everything. (<code>man yes</code>)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.helyar.net/2009/how-to-install-vmware-tools-on-a-linux-guest/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installing Debian</title>
		<link>http://www.helyar.net/2009/installing-debian/</link>
		<comments>http://www.helyar.net/2009/installing-debian/#comments</comments>
		<pubDate>Sat, 28 Feb 2009 21:14:07 +0000</pubDate>
		<dc:creator>George Helyar</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[debian]]></category>

		<guid isPermaLink="false">http://www.helyar.net/blog/?p=74</guid>
		<description><![CDATA[A couple of posts back, I touched briefly on how I personally install Debian Linux. With a little know how (this post), Debian becomes a far better advertisement for Linux than Ubuntu is, as Ubuntu is no faster than Windows. In fact, Ubuntu out of the box on my computer (Intel E8500, 4GiB of 800MHz [...]]]></description>
			<content:encoded><![CDATA[<p>A couple of posts back, I touched briefly on how I personally install Debian Linux. With a little know how (this post), Debian becomes a far better advertisement for Linux than Ubuntu is, as Ubuntu is no faster than Windows. In fact, Ubuntu out of the box on my computer (Intel E8500, 4GiB of 800MHz RAM, etc) is actually a lot slower than Vista out of the box and as long as you can maintain Windows (i.e. not filling it up with crap), Windows stays in the lead for performance.</p>
<p>For the sake of this post, I will be installing Debian onto a 64bit VMware Server 2.0 virtual machine. If you do this, make sure that if you want sound, you add virtual sound hardware when creating the virtual machine, as I forgot (I&#8217;m sure previous versions of VMware added them by default).</p>
<h2>Stage 1</h2>
<p>Installing Debian is a 2 stage setup, as far as we are concerned. The first part is the actual installer, which takes us up to a working command line install of Linux, perfect for use as a server. The next part installs the applications we want to use as a desktop/laptop computer from the command line and ends in a working graphical desktop. Before we can start, we need to grab the netinst disk image and burn it to a CD (in the case of vmware, simply mount the iso file inside vmware).</p>
<p>To start the install, we turn the machine on with the disk in the drive and boot off it. This takes us to a menu, asking us if we want to do a text install, a graphical install (this menu option is new to Debian 5, though it was available from an &#8220;expert&#8221; mode before) or other options. I will choose the text install as that is what I am used to, though the graphical install should look quite similar.</p>
<p style="text-align: center;"><img src="http://www.helyar.net/wp-content/uploads/2009/02/deb01.png" alt="Install menu" title="deb01" width="660" height="545" class="size-full wp-image-75" /></p>
<p>The Debian installer will prompt us for our language, keyboard layout, locale and so on. This is fairly self explanatory so I will leave it to the reader.</p>
<p>After this, we are asked how we want to partition the hard drive. The easiest thing to do is make sure that you have a block of unallocated space and just use the guided install for unallocated space. You can always go back and change things later if you want to, such as adding a /boot partition or removing a /swap partition. As I am using a new virtual machine with a completely blank disk, I am using the option of &#8220;Guided &#8211; use entire disk&#8221;. You <strong>don&#8217;t</strong> need to wipe your hard drive to install Debian and it is a good idea to set it up before installing with GParted if it is a disk that you already have data on. Just leave a hole in the partition table with GParted and install Debian to that unallocated space in guided mode.</p>
<p>If you are dual booting with another operating system such as Windows, I recommend that you add a 100MB ext2 /boot partition to the start of the drive. This is where GRUB will be installed to and having its own partition means that you can change to a different distribution of Linux or even remove Linux entirely and still keep the ever-useful GRUB on there, with tools like memtest86+.</p>
<p>Remember that you can probably only have 4 primary partitions on 1 drive and that you may want to use an extended partition containing 1 or more logical partitions for the 4th. This is a limit of IDE hard drives but most partitioning software and most SATA hard drives respect this limit.</p>
<p style="text-align: center;"><img src="http://www.helyar.net/wp-content/uploads/2009/02/deb02.png" alt="Partitioning menu" title="deb02" width="660" height="545" class="size-full wp-image-76" /></p>
<p>When you are done, it will ask you twice to confirm that you want to write these changes to the disk:</p>
<p style="text-align: center;"><img src="http://www.helyar.net/wp-content/uploads/2009/02/deb03.png" alt="Partitioning confirmation" title="deb03" width="660" height="545" class="aligncenter size-full wp-image-77" /></p>
<p>It will then install the &#8220;base system&#8221; to the hard disk. This includes things like the Linux kernel and other packages essential for the operating system. If you get the business card CD rather than the netinst CD, you will need to set up your networking before this in the install because they are not on the business card CD and must be downloaded during the installation.</p>
<p style="text-align: center;"><img src="http://www.helyar.net/wp-content/uploads/2009/02/deb04.png" alt="Installing base" title="deb04" width="660" height="545" class="aligncenter size-full wp-image-78" /></p>
<p>After a few minutes, the base system will be installed and you will be asked to set up user accounts. First, you need to set a root password and confirm it. After this, you enter your full name, user name and user password. You will usually be using this user name and password for Linux, switching to root only when you need to make changes like install new software, usually by use of the &#8220;su -&#8221; command.</p>
<p style="text-align: center;"><img src="http://www.helyar.net/wp-content/uploads/2009/02/deb05.png" alt="passwords" title="deb05" width="660" height="545" class="aligncenter size-full wp-image-79" /></p>
<p>Assuming that we are on the netinst CD, we now set up networking so that we can install any additional packages. I suggest that you install using an Ethernet cable and DHCP, as wireless generally doesn&#8217;t work on Linux until you have installed some firmware such as ipw2200 (for Intel 2200 wireless adapters), b43 (for Broadcom wireless adapters), madwifi (for Atheros wireless adapters), etc.</p>
<p>Next, we pick a mirror to download the packages from. If ftp.uk.debian.org does not work for you for some reason or is slow, try using mirrorservice.org. If your ISP is Virgin Media, you may want to try debian.virginmedia.com for an even faster download.</p>
<p style="text-align: center;"><img class="size-full wp-image-80 aligncenter" title="deb06" src="http://www.helyar.net/wp-content/uploads/2009/02/deb06.png" alt="mirror" width="660" height="545" /></p>
<p>This is where my guide gets different from any other guide you may see for installing Debian. At the task selection menu (tasksel), we deselect <strong>everything</strong>. These tasks tend to be bloated with random things that don&#8217;t even match the name of the task and even if you think one sounds like you want it (such as &#8220;Laptop&#8221;), you are probably better off installing the individual packages later on in stage 2 of this guide.</p>
<p style="text-align: center;"><img class="size-full wp-image-81 aligncenter" title="deb07" src="http://www.helyar.net/wp-content/uploads/2009/02/deb07.png" alt="task selection" width="660" height="545" /></p>
<p>Because we have removed everything from the list, only a few small packages need to be downloaded and installed. To be honest, I don&#8217;t know why <em>any</em> have to be, as we didn&#8217;t select any tasks but that just goes to show how tasksel always gives you far more than you want.</p>
<p style="text-align: center;"><img class="size-full wp-image-82 aligncenter" title="deb08" src="http://www.helyar.net/wp-content/uploads/2009/02/deb08.png" alt="task download" width="660" height="545" /></p>
<p>All that is left to do is to install the boot loader, GRUB, to the master boot record of the hard drive. This is what will give us a choice of operating system to run when we turn the computer on each time, assuming that we boot off this hard disk by default.</p>
<p style="text-align: center;"><img class="size-full wp-image-83 aligncenter" title="deb09" src="http://www.helyar.net/wp-content/uploads/2009/02/deb09.png" alt="grub install" width="660" height="545" /></p>
<p>That&#8217;s it for stage 1 and it probably took under 5 minutes to install Debian Linux to your hard drive. Now we can take the CD out of the drive and reboot the machine to the hard drive that we just installed GRUB to.</p>
<h2>Stage 2</h2>
<p>When we reboot the machine, we see GRUB giving us a choice of Debian or Debian (single-user mode). Single user mode is similar to safe mode in Windows. You only really need to use it if the standard mode does not work. If you want, you can remove it from your /boot/grub/menu.lst later and just press &#8220;e&#8221; from GRUB to edit the normal mode and add &#8220;single&#8221; to the kernel line if you ever need single user mode. If you have Windows installed on your computer, it should also have an entry to let you use that and you can change it to the default option inside the menu.lst file if you want, as well as setting the timeout.</p>
<p style="text-align: center;"><img src="http://www.helyar.net/wp-content/uploads/2009/02/deb10.png" alt="GRUB menu" title="deb10" width="666" height="418" class="aligncenter size-full wp-image-84" /></p>
<p>A few seconds after selecting Debian from GRUB, the operating system has loaded entirely and we are at a login prompt. Because we did not install anything, it is all text based at the moment. This would be useful for a server but we probably want a graphical desktop. I&#8217;ve tried using a text-only desktop before and it isn&#8217;t pretty.</p>
<p style="text-align: center;"><img src="http://www.helyar.net/wp-content/uploads/2009/02/deb11.png" alt="text login" title="deb11" width="666" height="418" class="aligncenter size-full wp-image-85" /></p>
<p>You should log in with your main user account and password then, once logged in, run the command &#8220;su -&#8221; and enter the root password to gain super user access. In a Linux command prompt, password fields do not display anything when you are typing them, not even asterisks (*). When you are in a root shell, the prompt should change from a $ to a #.</p>
<p>The first thing to do is add the non-free and contrib repositories to apt. You can use an editor such as vim or nano to edit /etc/apt/sources.list to remove any CDROM lines and add &#8220;contrib&nbsp;non-free&#8221; to the main Debian repository. I don&#8217;t add it to the main deb-src or to updates and as of yet I haven&#8217;t worked out what &#8220;volatile&#8221; is, as it is new as far as I know. Here&#8217;s what the file should look like in vim, with the new text highlighted in red:</p>
<p style="text-align: center;"><img src="http://www.helyar.net/wp-content/uploads/2009/02/deb12.png" alt="vim /etc/apt/sources.list" title="deb12" width="666" height="418" class="aligncenter size-full wp-image-86" /></p>
<p>You should then run<br />
<code>#&nbsp;apt-get&nbsp;update</code><br />
to download the latest package lists, followed by<br />
<code>#&nbsp;apt-get&nbsp;dist-upgrade</code><br />
to upgrade all existing packages, such as the kernel to their latest versions. A reboot may be required here, which you can do easily with <code>#&nbsp;reboot</code> (you can shut down from the command line with <code>#&nbsp;halt</code>).</p>
<p style="text-align: center;"><img src="http://www.helyar.net/wp-content/uploads/2009/02/deb13.png" alt="install list" title="deb13" width="666" height="418" class="aligncenter size-full wp-image-87" /></p>
<p>Now we can begin installing the software to transform this command line into a graphical desktop, using <code>#&nbsp;apt-get&nbsp;install&nbsp;<em>&lt;list&nbsp;of&nbsp;packages&gt;</em></code>. We want to install xorg, the graphics backend and frontend; gnome-core, the simple package for GNOME that comes with no large applications; gdm, the desktop manager for GNOME that lets us log in from a graphical interface among other things; alsa and alsa-oss for the sound and iceweasel for a web browser (this is firefox really). Other options are gnome-themes for some pretty window borders and gnome-backgrounds for some nice desktop wallpapers.</p>
<p>This will start to download and then install all of these packages, which may take a while depending on your internet speed but you are downloading them now rather than downloading the massive list of CDs or DVDs that you would have downloaded if you hadn&#8217;t have used the netinst or businesscard CDs, which will usually contain old packages that need updating anyway.</p>
<p style="text-align: center;"><img src="http://www.helyar.net/wp-content/uploads/2009/02/deb14.png" alt="install progress" title="deb14" width="666" height="418" class="aligncenter size-full wp-image-88" /></p>
<p>Once everything has successfully downloaded and installed, you can start gdm for the first time to turn on the graphical interface. This usually happens automatically on startup so you shouldn&#8217;t have to do it again. The command to start the gdm daemon is:<br />
<code>#&nbsp;invoke-rc.d&nbsp;gdm&nbsp;start</code></p>
<p style="text-align: center;"><img src="http://www.helyar.net/wp-content/uploads/2009/02/deb15.png" alt="start gdm" title="deb15" width="666" height="418" class="aligncenter size-full wp-image-89" /></p>
<p>As soon as this starts, you should see a graphical login prompt:</p>
<p style="text-align: center;"><img src="http://www.helyar.net/wp-content/uploads/2009/02/deb16.png" alt="graphical login" title="deb16" width="656" height="532" class="aligncenter size-full wp-image-90" /></p>
<p>From here you can choose alternative languages, switch between GNOME, KDE, Xfce and so on.</p>
<p>After you log in you should see a working graphical desktop and the installation is complete (ignore my broken sound, I forgot to add a sound card in vmware):</p>
<p style="text-align: center;"><img src="http://www.helyar.net/wp-content/uploads/2009/02/deb17.png" alt="graphical desktop" title="deb16" width="656" height="532" class="aligncenter size-full wp-image-91" /></p>
<p>This is what you would expect from a fresh install of ubuntu but you should notice that it is very snappy and probably takes 30 seconds or less between turning your computer on and having a completely loaded working desktop, without even having to wait for a busy cursor before you can start doing things.</p>
<p>You can watch videos with totem-gstreamer, browse the internet with iceweasel, check your emails with icedove (thunderbird), write code or text files with gEdit, view PDF documents with evince, edit Microsoft office documents with OpenOffice.org, etc.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.helyar.net/2009/installing-debian/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

