<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>chrisjrob</title>
    <link>https://chrisjrob.com</link>
    <atom:link href="https://chrisjrob.com/feed/" rel="self" type="application/rss+xml" />
    <description>GNU Linux, Perl and FLOSS</description>
    <language>en-gb</language>
    <pubDate>Fri, 13 Feb 2026 17:22:31 +0000</pubDate>
    <lastBuildDate>Fri, 13 Feb 2026 17:22:31 +0000</lastBuildDate>

    
    <item>
      <title>Make My Year with Vibe Coding</title>
      <link>https://chrisjrob.com/2026/02/13/vibe-coding/</link>
      <pubDate>Fri, 13 Feb 2026 17:14:49 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2026/02/13/vibe-coding</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/calendar-month-blue-400x283.jpg" align="right" alt="Featured Image">
         
         <p>Around Christmas each year, I produce printed PDF monthly calendars for my wife, incorporating our family’s anniversaries and other important dates.</p>

<!--more-->

<p>Originally this was done in a spreadsheet, but that was always a headache, especially when multiple events shared the same date.  One year, I gave up and replaced the spreadsheet with a Perl script using <code class="language-plaintext highlighter-rouge">PDF::API2</code> and this has worked well for a number of years.
But, being CLI-based, this remained on my annual to-do list.</p>

<p>The idea to create a web front-end through <em>Vibe Coding</em> came from an episode of the <a href="https://linuxmatters.sh/">Linux Matters Podcast</a>, in which the hosts discussed maintaining a living specification document and using AI to generate an application directly from that specification. The process they described was disciplined: refine the specification, regenerate the system, repeat - until the specification itself becomes the definitive source of truth.</p>

<h2 id="the-process">The process</h2>

<p>I started by asking ChatGPT whether my choice of Perl + Dancer would be suitable, or whether a different language and web framework would be likely to produce better results. Sadly, ChatGPT felt that Codex would be much more effective using a more popular combination and, of the choices suggested, I opted for Ruby with Sinatra. I had previously used Ruby on Rails, but had found it to be too difficult to maintain.  Sinatra is a more lightweight web framework that keeps structure simple and avoids unnecessary abstraction.  For the same reason, I chose Sequel for the database layer instead of ActiveRecord.</p>

<p>The project was broken into sections - creating the base website, adding authentication, etc.
At each major step, we worked on a structured specification, which I fed into Codex.
I tested the results and gave feedback to Codex.
Codex automatically adds unit tests, and uses them to give itself feedback - it is interesting to watch it attempting to fix its own mistakes, unprompted.</p>

<p>When problems occurred, I would often discuss these with ChatGPT before asking Codex to make changes.
For minor steps, I worked directly with Codex, with more of a simple trial and error approach.</p>

<p>The underlying PDF generation remains largely the original Perl script. The surrounding system - authentication, subscription handling, templating, validation and deployment - was almost entirely developed conversationally.</p>

<h2 id="the-frustrations">The frustrations</h2>

<p>There have been some frustrations.</p>

<p>At one point, what I thought was a simple change, resulted in a convoluted and entirely unjustified code change. This happened simply because I was not close enough to the JSON data being accessed, and Codex was trying to achieve something which normally I would have known was not possible.  I reverted the change, but not before it had used up my remaining Codex tokens.</p>

<p>Another issue was that, whilst complex changes were often completed quickly and efficiently, sometimes unbelievably trivial changes had us looping around in circles until I was forced to take control. Minor CSS positioning tweaks were a constant frustration.</p>

<p>We experienced a lot of ‘mission creep’ - it was just too tempting to extend the project, given that it wasn’t me doing the hard work.  We should support Internet Calendars! We should have a weekly calendar format! We should have a daily planner format!  Quick and easy to type the commands into Codex, but the ensuing trial and error, added much to the length of the project.</p>

<h2 id="conclusions">Conclusions</h2>

<p>After many iterations and ‘back to the drawing board’ moments, we finally reached the point where it received spouse-approval, especially when she realised that next year she will be able to simply login and print.</p>

<p>The result is <a href="https://makemyyear.com">MakeMyYear</a>, a small subscription service that allows users to generate personalised downloadable calendars for £4 per year, which hopefully will offset some of the Codex costs, as well as giving me invaluable experience with working with Stripe.</p>

<p>I do feel it will be very difficult to go back to traditional coding. The line by line coding which I had always found so engaging, now seems like far too much like hard work!</p>

<p>Have I just spent months of free time and hard-earned money, simply making it possible for my wife to print her own calendars? Why yes, yes I have.</p>

       ]]>
      </description>
    </item>
    
    <item>
      <title>Fixing SVG Files in DokuWiki</title>
      <link>https://chrisjrob.com/2022/01/27/fixing-svg-files-in-dokuwiki/</link>
      <pubDate>Thu, 27 Jan 2022 10:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2022/01/27/fixing-svg-files-in-dokuwiki</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/dokuwiki.gif" align="right" alt="Featured Image">
         
         <p>Having upgraded a DokuWiki server from 16.04 to 18.04, I found that SVG images were no longer displaying in the browser.
As I was unable to find any applicable answers on-line, I thought I should break my radio silence by detailing my solution.</p>

<!--more-->

<p>Inspecting the file using browser tools, Network and refreshing the page showed that the file was being downloaded as octet-stream.
Sure enough using curl showed the same.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>curl -Ik https://example.com/file.svg
</code></pre></div></div>

<p>All the advice on-line is to ensure that <code class="language-plaintext highlighter-rouge">/etc/nginx/mime-types</code> includes the line:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>image/svg+xml   svg svgz;
</code></pre></div></div>

<p>But that was already in place.</p>

<p>I decided to try uploading the SVG file again, in case the Inkscape format was causing breakage.  Yes, a long-shot indeed.</p>

<p>The upload was rejected by DokuWiki, as SVG was not in the list of allowed file extensions; so I added the following line to <code class="language-plaintext highlighter-rouge">/var/www/dokuwiki/conf/mime.local.conf</code>:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>svg   image/svg_xml
</code></pre></div></div>

<p>Whereon the images started working again.
Presumably Dokuwiki was seeing the mime-type as <code class="language-plaintext highlighter-rouge">image/svg</code> instead of <code class="language-plaintext highlighter-rouge">image/svg+xml</code> and this mismatch was preventing nginx serving up the correct content-type.</p>

<p>Hopefully this will help others, do let me know if it has helped you.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Fixing Album Art in SONOS Under Linux</title>
      <link>https://chrisjrob.com/2018/09/23/fixing-album-art-in-sonos-under-linux/</link>
      <pubDate>Sun, 23 Sep 2018 13:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2018/09/23/fixing-album-art-in-sonos-under-linux</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/sonos-play-3.jpg" align="right" alt="Featured Image">
         
         <p>Following my purchase of a <a href="/2016/02/20/sonos-review/">SONOS system</a>, I wanted to be able to play my music collection through it.
Unfortunately many of the album covers were missing.
After considerable googling I eventually determined that the missing covers were missing because I had embedded the album cover with a higher resolution than SONOS can cope with.</p>

<p>To fix this problem I needed to extract the embedded images, change the resolution, remove the current images, and re-embed the new lower resolution image.
I needed to do this for each album that was missing its cover.</p>

<!--more-->

<h2 id="adding-your-music-library-to-sonos">Adding your music library to SONOS</h2>

<p>Firstly, a word about adding my music library to SONOS. 
This involved transferring my MP3 music collection onto an external hard drive and plugging it into my router and sharing it as a Samba share.
The final step is to add Music Library as a service within the SONOS app, and specify the location of the Samba share created above.</p>

<p>If your router doesn’t offer a Samba option, then you might consider a Raspberry Pi with a simple samba share, or using NextCloud or a dedicated plug-in device like the <a href="/2011/02/25/tonidoplug-tnd003sp1a03-65-tonido-store/">Tonido Plug</a>, or pretty much any NAS device.</p>

<h2 id="important-notice">Important Notice</h2>

<p>Unfortunately, whilst I made some key notes at the time, a couple of years has passed before I finally found the time to type up this post.
As a result there may be some errors, or you might need need to interpret / adjust some of these commands.</p>

<p>I do not wish to be responsible for you losing your music collection, please do take a backup of your music before you start.</p>

<p>Please do let me know if you spot any mistakes, by commenting below.</p>

<h2 id="preparation">Preparation</h2>

<p>These instructions only require eyeD3 and either grapicsmagick or imagemagick.
These instructions were written for Ubuntu GNU Linux, you will need to adapt these instructions if you use a different distribution.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo apt install eyed3 graphicsmagick
</code></pre></div></div>

<p>If you already have Imagemagick installed, then you may use that instead, just remove the “gm “ from the relevant commands below.</p>

<h2 id="step-1-extract-image-from-music">Step 1: Extract image from music</h2>

<p><strong>Please change directory into the first album that requires fixing, and stay in that directory until you have finished all steps.</strong></p>

<p>As the album cover is embedded in each track in the album, you only need to extract this once per album:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ eyeD3 --write-images=./ "01 - Track 1 name.mp3"
</code></pre></div></div>

<p>This will extract the embedded image from the file as:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>FRONT_COVER.JPG
</code></pre></div></div>

<h2 id="step-2-identify-current-resolution">Step 2: Identify current resolution</h2>

<p>The next step is to identify the size of the image, to do this I use graphicsmagick, but imagemagick will work the same (just omit the <code class="language-plaintext highlighter-rouge">gm</code>):</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ gm identify FRONT_COVER.JPG
</code></pre></div></div>

<p>If the size of the image is already smaller than 300x300 pixels, then it <em>should</em> already be working, otherwise we need to reduce its size.</p>

<h2 id="step-3-convert">Step 3: Convert</h2>

<p>To reduce the size of the image, do a simple convert:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ gm convert FRONT_COVER.JPG -geometry 300x300 folder.jpg
</code></pre></div></div>

<p>If you would like to check that this has worked just run:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ gm identify folder.jpg
</code></pre></div></div>

<h2 id="step-4-remove-images-from-mp3-files">Step 4: Remove images from MP3 files</h2>

<p>Before we can add the newly sized image, we need to remove all the embedded images in the tracks.</p>

<p>Please note that this command alters your music, please do take a backup to ensure that you can restore the tracks if necessary.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ eyeD3 --remove-images *.mp3
</code></pre></div></div>

<h2 id="step-5-add-new-image-to-mp3-files">Step 5: Add new image to MP3 files</h2>

<p>And finally we can now embed the smaller image:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ eyeD3 --add-image=./folder.jpg:FRONT_COVER *.mp3
</code></pre></div></div>

<h2 id="step-6-update-music-index">Step 6: Update music index</h2>

<p>I cannot remember whether or not I needed to update the music index, but if your album covers haven’t appeared already - try this:</p>

<ul>
  <li>Open the SONOS app</li>
  <li>Settings</li>
  <li>Manage Music Library</li>
  <li>Update Music Index Now</li>
</ul>

<h2 id="conclusion">Conclusion</h2>

<p>I was in two minds as to whether to post this, given the time elapsed, but hopefully it will prove useful to someone. 
Please do comment below if you spot any errors, or found it useful.</p>

<p>Thank you.</p>

       ]]>
      </description>
    </item>
    
    <item>
      <title>Windows 10 Black Screen After Remote Desktop</title>
      <link>https://chrisjrob.com/2017/11/21/windows-10-black-screen-after-remote-desktop/</link>
      <pubDate>Tue, 21 Nov 2017 10:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2017/11/21/windows-10-black-screen-after-remote-desktop</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/black-window-300.png" align="right" alt="Featured Image">
         
         <p>I logged into my Windows 10 Professional (1703) desktop from home yesterday, using Remmina on Ubuntu 16.04. 
I wasn’t surprised when my desktop wallpaper was black, I know it does this to save bandwidth, but when I returned to the office this morning my desktop was still black and, as it is set by the administrator via GPO, could not be changed.</p>

<p>Searching the Internet was not helpful on this occasion; so I have made this quick posts to help others.</p>

<!--more-->

<p>It turns out that this is not some weird absence of wallpaper, but rather is a plain black wallpaper image, which has managed to get itself cached.
The solution is consequentially simple - find and terminate said cached image.</p>

<ol>
  <li>Open File Explorer and navigate to <code class="language-plaintext highlighter-rouge">%APPDATA%</code> (you can type that into the top address/location field).</li>
  <li>In the search box at the top right enter the text “Cache” (see image below).</li>
  <li>Delete the cached version of the black wallpaper once it is found.</li>
  <li>Sign out and then sign back in.</li>
</ol>

<p>On my system the specific file location was:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>%APPDATA%\Microsoft\Windows\Themes\CachedFiles\CachedImage_1920_1080_POS4.jpg
</code></pre></div></div>

<p>Please do comment below if this was helpful, or if you needed to alter these instructions at all.</p>

<p><img src="/assets/black-window.png" alt="File Manager" /></p>

       ]]>
      </description>
    </item>
    
    <item>
      <title>Sluggle IRC Bot</title>
      <link>https://chrisjrob.com/2016/06/14/sluggle-irc-bot/</link>
      <pubDate>Tue, 14 Jun 2016 12:26:23 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2016/06/14/sluggle-irc-bot</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/sluggle.png" align="right" alt="Featured Image">
         
         <p>Today I released the first semi-stable version of <a href="https://github.com/chrisjrob/sluggle">sluggle</a>, a simple IRC searchbot. 
The name is a contraction of Google and SLUG (an informal and inaccurate acronym for the <a href="http://surrey.lug.org.uk">Surrey Linux User Group</a>).</p>

<p>Sluggle enables IRC users to search the Internet using Bing, to search Wolfram Alpha, to look up and shorten web addresses and to check the safety of sites.</p>

<p>For more details please visit <a href="https://github.com/chrisjrob/sluggle">sluggle</a>.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>A Probably Inaccurate History Of LibVirt, KVM and QEMU</title>
      <link>https://chrisjrob.com/2016/05/09/a-probably-inaccurate-history-of-libvirt-kvm-qemu/</link>
      <pubDate>Mon, 09 May 2016 17:38:31 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2016/05/09/a-probably-inaccurate-history-of-libvirt-kvm-qemu</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/kvm.png" align="right" alt="Featured Image">
         
         <p>A while ago I was explaining the difference between QEMU, KVM and LibVirt, 
and I ended up by emailing this nonsense.
I don’t claim it’s accurate, it certainly isn’t.
It’s probably not even funny.
Enjoy :).</p>

<p><em>In the beginning there was QEMU, but it was slow and the people grieved.</em>
<!--more--></p>

<p><em>Then KVM was forked from QEMU with a kernel module to use the CPU’s
virtualisation features to work much faster and there was much
rejoicing. Linus also rejoiced and welcomed KVM’s kernel module into
the mainline kernel.</em></p>

<p><em>But the people did not rejoice, as they were mostly using Sun’s
VirtualBox (also forked from QEMU).</em></p>

<p><em>QEMU awoke from its slumber and joined with KVM and their union caused
almost no rejoicing, in fact I am not convinced anyone really noticed.</em></p>

<p><em>But the System Administrators were still dissatisfied and complained
that there should be standardisation of commands across different
hypervisors. And thus LibVirt was born and the System Administrators
rejoiced.</em></p>

<p><em>Yet still the people used VirtualBox. But lo! The evil Oracle slew the
Sun and VirtualBox moved into darkness, and there was much gnashing of
teeth and wearing of sackcloth; although this was generally considered
a step forwards from the t-shirts that they usually wore.</em></p>

<p><em>But still the people could not use QEMU-KVM, without issuing complex
incantations, and so Virt-Manager was born and finally the people
rejoiced, with much clicking of mice.</em></p>

<p>The End.</p>

       ]]>
      </description>
    </item>
    
    <item>
      <title>Sonos Review</title>
      <link>https://chrisjrob.com/2016/02/20/sonos-review/</link>
      <pubDate>Sat, 20 Feb 2016 12:06:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2016/02/20/sonos-review</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/sonos-play-3.jpg" align="right" alt="Featured Image">
         
         <p>I’ve been aware of Sonos as a premium wireless speaker solution for a long time, but the price always seemed excessive for what, on the face of it, offers little more than a simple Bluetooth speaker. 
But after Subsonic needed its database rebuilding for the third time and I was unable to play music for a dinner party, enough was enough. 
I was willing at last to pay the premium for something that was purported to work.</p>

<!--more-->

<h3 id="background">Background</h3>

<p>My music collection is mostly comprised of purchased Audio CDs that I have ripped under Linux. 
Currently I have a Music folder on our <a href="/tag/mythtv/">MythTV</a> system, and have installed <a href="http://www.subsonic.org">Subsonic</a> to share our music to our many tablets and phones, using the excellent Subsonic Android App.
If I want to play from Subsonic to my music system then I have a <a href="http://www.amazon.co.uk/gp/product/B00IJYG4FY/ref=as_li_tl?ie=UTF8&amp;camp=1634&amp;creative=19450&amp;creativeASIN=B00IJYG4FY&amp;linkCode=as2&amp;tag=robsquadnet-21">Logitech Bluetooth Audio Receiver Adapter</a> that receives the audio and plays it through my old-school Sony amplifier.</p>

<p>The main issues with this set-up is that the music only plays in the living room and not elsewhere in the house. 
We have bought an additional <a href="http://www.amazon.co.uk/gp/product/B0056XMVZS/ref=as_li_tl?ie=UTF8&amp;camp=1634&amp;creative=19450&amp;creativeASIN=B0056XMVZS&amp;linkCode=as2&amp;tag=robsquadnet-21">Creative D80 Bluetooth Wireless Speaker</a>, but of course each can only play independent streams.</p>

<p>I also find Bluetooth a frustrating technology where you don’t have a simple 1:1 paradigm. 
In our case we have probably a dozen tablets and phones, each determined to pair with the Bluetooth receivers and then prevent other devices from connecting.</p>

<h3 id="choosing-sonos-speakers">Choosing Sonos Speakers</h3>

<p>The Sonos range comprises of the small <a href="http://www.amazon.co.uk/gp/product/B00FMS1KO0/ref=as_li_tl?ie=UTF8&amp;camp=1634&amp;creative=19450&amp;creativeASIN=B00FMS1KO0&amp;linkCode=as2&amp;tag=robsquadnet-21">Play:1</a> at £155, a medium-sized <a href="http://www.amazon.co.uk/gp/product/B005CI5H3U/ref=as_li_tl?ie=UTF8&amp;camp=1634&amp;creative=19450&amp;creativeASIN=B005CI5H3U&amp;linkCode=as2&amp;tag=robsquadnet-21">Play:3</a> at £229 and a larger <a href="http://www.amazon.co.uk/gp/product/B015MWS9NU/ref=as_li_tl?ie=UTF8&amp;camp=1634&amp;creative=19450&amp;creativeASIN=B015MWS9NU&amp;linkCode=as2&amp;tag=robsquadnet-21">Play:5</a> at £413. 
On the Goldilocks principle of the middle one being “just right”, I opted for two of the Play:3 at £229 each - one for the living room and one for the kitchen. 
The plan was to move those elsewhere at a later stage and hopefully upgrade the living room system to a pair of Play:5 speakers.</p>

<p>The important thing to understand is that neither the Play:1 nor the Play:3 speakers have a Line-In. 
This means that you can only play from on-line content. 
If you currently subscribe to one of the supported <a href="http://www.sonos.com/en-gb/streaming-music?r=1">Sonos Services</a>, then that is fine, but if you’re wanting to play content from a CD or other input source - then you can’t.
The Play:5 does have a Line-In, as does the <a href="http://www.amazon.co.uk/gp/product/B001G7PLTQ/ref=as_li_tl?ie=UTF8&amp;camp=1634&amp;creative=19450&amp;creativeASIN=B001G7PLTQ&amp;linkCode=as2&amp;tag=robsquadnet-21">Sonos Connect</a> at £264.</p>

<p>A word about the <a href="http://www.amazon.co.uk/gp/product/B001G7PLTQ/ref=as_li_tl?ie=UTF8&amp;camp=1634&amp;creative=19450&amp;creativeASIN=B001G7PLTQ&amp;linkCode=as2&amp;tag=robsquadnet-21">Sonos Connect</a>. 
A simple way to imagine it is that it is basically a Play:5, but without the speaker. 
In other words it has the same Sonos interface with Line-In but no speaker.
If you have an existing music system then this is potentially ideal and with hindsight I wish that what I had done was to purchase one Play:3 for the kitchen and one Sonos Connect for the living room.
The opposing view is that a pair of Play:5 speakers complete obsoletes an existing music system - so why not do away with the legacy equipment.</p>

<h3 id="amazon-prime-music">Amazon Prime Music</h3>

<p>One great disappointment was that, whilst Sonos supports Amazon Music, it does not support <a href="http://www.amazon.co.uk/PrimeMusic">Amazon Prime Music</a>. 
One of the main reasons we had bought Sonos was to play Amazon Prime Music, so this was a major problem. 
At the time of writing it <em>is</em> available in the US as a Beta service and has been for a few months. 
One can only hope that it will trickle across to the UK in due course.</p>

<h3 id="google-play-music">Google Play Music</h3>

<p>Hoping that the Amazon Prime issue would be resolved, we signed up to a 30 day free trial with <a href="https://play.google.com/music/">Google Play Music</a>. 
This worked extremely well, except for the recommended playlists which do not appear as a Sonos Queue. 
The main issue we found was that our children would choose a song and click “Play Next” and this would interrupt the playlist - very irritating if you were enjoying a particular song.
We assumed that this was a feature of Sonos, but Spotify does not work like that (see below).</p>

<h3 id="spotify">Spotify</h3>

<p>We then subscribed to the 30 days free trial with <a href="http://www.spotify.com">Spotify</a>. 
You only need the individual member subscription to work with Sonos, but the ongoing cost is the same as Google Play. 
The only advantage of Spotify is that the recommended playlists appear as a proper Sonos queue, enabling you to save it as a Sonos Playlist, or add a song into the queue.</p>

<h3 id="subsonic">Subsonic</h3>

<p>One delight was that we were able to play our local music via <a href="http://www.subsonic.org">Subsonic</a>. 
This is a Beta service and I did have a small problem getting it working. 
Unfortunately I cannot remember the nature of the problem, other than an Internet search solved it.</p>

<h3 id="conclusions">Conclusions</h3>

<p>Obviously we were disappointed at the lack of Amazon Prime Music. 
I was also a little disappointed at the abrupt handling of music changes - if you click “Play Now” the music stops instantly and the next track starts. 
I do feel that with a premium set-up like this that music transitions should be handled more smoothly.</p>

<p>We also have had issues with our children messing about with Sonos - as the interface is open to all. 
We have sufficient control of our children that this isn’t a significant problem, but knowing some families this could be a serious issue. 
I do feel there should be some security, to enable clients to be de-authorised, or limited only to a subset of features.</p>

<p>Will I continue to invest in Sonos? Undoubtedly yes, but I think the next purchase will be a <a href="http://www.amazon.co.uk/gp/product/B001G7PLTQ/ref=as_li_tl?ie=UTF8&amp;camp=1634&amp;creative=19450&amp;creativeASIN=B001G7PLTQ&amp;linkCode=as2&amp;tag=robsquadnet-21">Sonos Connect</a> followed by a better set of audio speakers.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Taxcalc Self Assessment Under Linux</title>
      <link>https://chrisjrob.com/2016/01/25/taxcalc-self-assessment-under-linux/</link>
      <pubDate>Mon, 25 Jan 2016 13:35:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2016/01/25/taxcalc-self-assessment-under-linux</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/hmrc.jpg" align="right" alt="Featured Image">
         
         <p>I first wrote about the difficulties of submitting a UK self-assessment tax return <a href="/2009/01/11/uk-self-assessment-for-linux/">back in January 2009</a>, with a <a href="/2010/01/15/submit-a-self-assessment-tax-return-under-linux/">follow up in January of 2010</a>. 
In the subsequent years I have submitted my tax return under Windows with nary a thought about attempting it under Linux.</p>

<p>This year was different, I went to download <a href="http://www.taxcalc.com/">TaxCalc</a> as usual, only this time <a href="http://www.taxcalc.com/kb/2471">there was a Linux option</a>. 
I barely noticed at first, downloading the Windows version before I thought “Hang on, did that say Linux?”.
It did indeed.</p>

<!--more-->

<p>Despite the fact that I do have a Windows PC now, as well as a Linux PC and a <a href="/2015/10/09/lenovo-thinkpad-x1-carbon-gen-3/">Linux laptop</a>, it probably makes more sense to perform my tax return on Windows now, but having posted on <a href="/tag/ubuntu">this subject</a> before I really ought to give it a go!</p>

<p><img src="/assets/taxcalc-01.png" class="align-right" alt="Warning flag download as executable" />
I won’t detail all the installation instructions, which are <a href="http://www.taxcalc.com/kb/2471">clearly described on the TaxCalc website</a>.</p>

<h2 id="installation">Installation</h2>

<p>Unfortunately the download is for a compiled <code class="language-plaintext highlighter-rouge">.run</code> file and not a distribution package, so you will have to decide whether you are happy to run the file and potentially dump unknown rubbish all over your system which might then be difficult to remove.</p>

<p>I decided to give it a go, downloading the <code class="language-plaintext highlighter-rouge">.run</code> file and marking it as executable.
The instructions provided did not suggest running with sudo or as root, so I decided to follow the letter of the instructions and simply executed the <code class="language-plaintext highlighter-rouge">.run</code> file.</p>

<p>This entered a typical Wizard style installer, which resulted in the application being installed within my home directory, including a 127MB <code class="language-plaintext highlighter-rouge">lib</code> directory containing a large number of Linux libraries.
This is very much the “Windows” way of doing things, bundling everything you need within the installation, rather than simply specifying dependencies.
But the fact is that it works and gives TaxCalc control over the installation, in a repeatable and supportable way.</p>

<h2 id="import-from-previous-year">Import from previous year</h2>

<p>The first step in using TaxCalc is always to import the previous year’s files. 
This process completed for all files without error.</p>

<p><img src="/assets/taxcalc-02.png" alt="Example screen" /></p>

<h2 id="step-by-step-process">Step by Step Process</h2>

<p>Probably the main reason for using TaxCalc is the simple step process for completing your tax return, and I am pleased to report that this aspect was identical to Windows.</p>

<h2 id="on-line-submission">On-line Submission</h2>

<p>The one aspect that I was concerned about was whether the on-line submission to HMRC would work okay, again I am pleased to say that it worked flawlessly, both for the test submission and the live submission.</p>

<h2 id="conclusions">Conclusions</h2>

<p>I must confess that I assumed that this day would only arrive when TaxCalc moved to a web-based service, something that surely is inevitable. 
I am delighted to at last be able to perform my tax at home, rather than on a Windows PC at work. 
Good news for those wanting to eradicate Windows from their lives.</p>

<p>Thank you TaxCalc.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Ubuntu Simple Scan HP All in One</title>
      <link>https://chrisjrob.com/2016/01/02/ubuntu-simple-scan-hp-all-in-one/</link>
      <pubDate>Sat, 02 Jan 2016 12:14:12 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2016/01/02/ubuntu-simple-scan-hp-all-in-one</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/hp-j6410.jpg" align="right" alt="Featured Image">
         
         <p>At home we have an HP OfficeJet J6410 printer, which has worked brilliantly for years. 
Unlike every previous printer we’ve owned, this printer sits happily on our network and seems perfectly content to be used only very occasionally, whereon it willingly responds with decent quality prints and scans.</p>

<p>I have set up the printer with a static IP address and so the scanning is managed via the web interface <code class="language-plaintext highlighter-rouge">http://192.168.0.100/webScan</code>, whereon the scanned image opens a new tab in the browser, enabling you to save to wherever.</p>

<p>This printing and scanning Nirvana hit a road bump today, when it just instantly went to “Scan done” and failed to actually do anything.
Rebooting the laptop, the printer and clearing temporary internet files all failed to resolve the problem, as did changing from Chrome to Firefox.</p>

<!--more-->

<p>In desperation I tried running Ubuntu Simple Scan, but predictably enough it did not find the printer. 
A quick Internet search took me to <a href="https://help.ubuntu.com/community/HpAllInOne">this excellent Ubunutu community page</a>.</p>

<p>I opened a terminal and typed:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ hp-makeuri 192.168.0.100

CUPS URI: hp:/net/Officejet_J6400_series?ip=192.168.0.100
SANE URI: hpaio:/net/Officejet_J6400_series?ip=192.168.0.100
HP Fax URI: hpfax:/net/Officejet_J6400_series?ip=192.168.0.100

Done.
</code></pre></div></div>

<p>I then typed (taking the SANE URI from above):</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ simple-scan hpaio:/net/Officejet_J6400_series?ip=192.168.0.100
</code></pre></div></div>

<p>And it worked perfectly! Flushed with success I read on to see how to make this a permanent fixture, and it turned out that all I needed to do was configure the CUPS URI for the printer itself (it was previously set to something like <code class="language-plaintext highlighter-rouge">socket://192.168.0.100</code>):</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ vim /etc/cups/printers.com

DeviceURI hp:/net/Officejet_J6400_series?ip=192.168.0.100
</code></pre></div></div>

<p>And now simply running Ubuntu Simple Scan works perfectly.</p>

<p>Thank you Ubuntu community!</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Ubuntu Empathy Microsoft Skype For Business Lync 2013 Client</title>
      <link>https://chrisjrob.com/2015/12/31/ubuntu-empathy-microsoft-skype-for-business-lync-2013-client/</link>
      <pubDate>Thu, 31 Dec 2015 10:23:32 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2015/12/31/ubuntu-empathy-microsoft-skype-for-business-lync-2013-client</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/empathy.png" align="right" alt="Featured Image">
         
         <p>I wrote recently regarding using <a href="/2015/09/02/linux-microsoft-skype-for-business-lync-2013-client/">Microsoft Skype for Business / Lync 2013 in Pidgin</a>, this has worked really well for our Lubuntu 14.04 clients, running Pidgin. 
Having some time off work I decided to try and get this working also on <a href="/2015/10/09/lenovo-thinkpad-x1-carbon-gen-3/">my Ubuntu 14.04 laptop</a>.</p>

<p>The problem is that Ubuntu uses Empathy by default, rather than Pidgin, but I found that the steps were virtually identical (cut and pasted from my earlier post):</p>

<!--more-->

<h2 id="download-and-dependencies">Download and Dependencies</h2>

<ol>
  <li>
    <p>Install build tools if you don’t already have them:</p>

    <p><code class="language-plaintext highlighter-rouge">sudo apt-get install build-essential</code></p>
  </li>
  <li>
    <p>Install checkinstall if you don’t already have it:</p>

    <p><code class="language-plaintext highlighter-rouge">sudo apt-get install checkinstall</code></p>
  </li>
  <li>
    <p><a href="http://sourceforge.net/projects/sipe/files/sipe/pidgin-sipe-1.20.1/pidgin-sipe-1.20.1.tar.gz/download">Download source files</a>.</p>
  </li>
  <li>
    <p>Extract source:</p>

    <p><code class="language-plaintext highlighter-rouge">tar -xvvzf pidgin-sipe-1.20.1.tar.gz</code></p>
  </li>
  <li>
    <p>Change into source directory:</p>

    <p><code class="language-plaintext highlighter-rouge">cd pidgin-sipe-1.20.1</code></p>
  </li>
  <li>
    <p>Read carefully the README file in the source directory.</p>
  </li>
  <li>
    <p>Install dependencies listed in the README:</p>

    <p><code class="language-plaintext highlighter-rouge"># apt-get install libpurple-dev libtool intltool pkg-config libglib2.0-dev libxml2-dev libnss3-dev libssl-dev libkrb5-dev libnice-dev libgstreamer0.10-dev</code></p>
  </li>
</ol>

<p>These dependencies may change over time, and your particular requirements may be different from mine, so please read the README and that information should take precedence.</p>

<h2 id="compile-and-install">Compile and Install</h2>

<p>Lastly, as an ordinary user, you should now be able to compile.
If it fails at any stage, simply read the error and install the missed dependency.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ ./configure --prefix=/usr
$ make
$ sudo checkinstall
</code></pre></div></div>

<p>I found checkinstall was pre-populated with sensible settings, and I was able to continue without making any changes.
Once complete a Debian package will have been created in the current directory, but it will have already been installed for you.</p>

<h2 id="add-account-in-empathy">Add Account in Empathy</h2>

<p>Still in a terminal type:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ empathy-accounts
</code></pre></div></div>

<p>Then simply click the + button to add an account, select the Account Type “sipe”, enter your email address in the Account field and click Log-in. 
Then highlight the newly created account and Edit Connection Preferences, opening up the Advanced section. 
I completed the following:</p>

<ul>
  <li>Login: enter your Skype for Business email address</li>
  <li>Password</li>
  <li>Server: leave blank</li>
  <li>Transport: auto</li>
  <li>User agent: UCCAPI/15.0.4420.1017 OC/15.0.4420.1017</li>
  <li>Authentication: auto</li>
</ul>

<p>And that really was all that there was to it.</p>

       ]]>
      </description>
    </item>
    
    <item>
      <title>Discovering Dokuwiki</title>
      <link>https://chrisjrob.com/2015/12/03/discovering-dokuwiki/</link>
      <pubDate>Thu, 03 Dec 2015 10:15:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2015/12/03/discovering-dokuwiki</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/dokuwiki.gif" align="right" alt="Featured Image">
         
         <p>I was looking for a Wiki for managing the sharing of a boat, including booking usage, task lists and maintenance, as well as acting as a repository for any-and-all information available.</p>

<p>What it looked like was incidental, but it needed to be really simple for users to edit pages quickly. 
I wanted to squeeze it onto a work server, so it also needed to be really lightweight.</p>

<!--more-->

<h2 id="the-choices">The Choices</h2>

<p>I have experience of using both <a href="http://wordpress.org/">Wordpress</a> and <a href="http://drupal.org/">Drupal</a>, but felt they were too complex and cumbersome for this use-case.
I have also used <a href="http://mediawiki.org/">MediaWiki</a> in the past but, whilst easy to edit, I found it fairly cumbersome to use - it is after all designed for managing vast sites.</p>

<p>In the end I opted for <a href="https://www.dokuwiki.org/">DokuWiki</a>, after stumbling across a site that recommended it as a really simple alternative to MediaWiki.</p>

<h2 id="installing-dokuwiki">Installing DokuWiki</h2>

<p>Dokuwiki is really easy to install, with <a href="https://www.dokuwiki.org/install:ubuntu">delightfully simple instructions for Apache</a>, but following my lightweight wishes I decided to try <a href="https://www.nginx.com/">Nginx</a> for the first time.
Unfortunately I could not immediately find <a href="https://www.dokuwiki.org/install:nginx">Nginx Instructions from DokuWiki</a>, so instead followed these <a href="https://www.rosehosting.com/blog/how-to-install-dokuwiki-on-debian-wheezy-with-nginx/">Nginx Instructions</a> from Rose Hosting.</p>

<p>On first attempt the landing page would not load, but the nginx logs were very clear and helpful in pointing me to increasing a value of <code class="language-plaintext highlighter-rouge">server_names_hash_bucket_size</code> in <code class="language-plaintext highlighter-rouge">/etc/nginx/nginx.conf</code>. 
This I found was commented out (with a default of 32), so I uncommented it and increased it to 64 and restarted nginx. 
At last I could reach the install page and from that point it all worked perfectly.</p>

<p>Later I decided to implement <a href="https://www.dokuwiki.org/rewrite#nginx">Nginx Pretty URLs</a>, which again worked perfectly.</p>

<h2 id="first-impressions">First Impressions</h2>

<p>The main thing I love about DokuWiki is the simplicity.</p>

<p>Creating users is trivial, creating and editing pages is a doddle, there is a reasonably sane way of managing media files, and the Wiki syntax is bearable (not Markdown sadly).</p>

<p>Despite this simplicity, each time I have come across something I’d like to tweak, then there has been a way to do it without resorting to nasty hacks.
Where Plugins are required, these can be installed in seconds via the web interface.</p>

<p>Most of what I was trying to do with this boat site was simply a matter of creating pages, but I did come across a few exceptions:</p>

<h3 id="checklists">Checklists</h3>

<p><img src="/assets/dokuwiki-checklists.png" class="image-left" alt="Example of Checklists" /></p>

<p>One of the key uses for the site is to host a number of checklists, but I wanted tickboxes against each item. 
Not essential clearly, but it turned out to be trivial, simply deciding how to type a tickbox, e.g. square brackets for incomplete <code class="language-plaintext highlighter-rouge">[]</code> and <code class="language-plaintext highlighter-rouge">[x]</code> for complete, and then adding <a href="https://www.dokuwiki.org/entities">DokuWiki Entities</a> to convert these into the appropriate character.</p>

<h3 id="bookings">Bookings</h3>

<p><img src="/assets/dokuwiki-edittable.png" class="image-right" alt="Edit-table Plugin" /></p>

<p>The main problem that I faced was how to enable boat users to book time on the boat and in the end I settled on using simple text tables, but to make them simpler to edit I added Andreas Gohr’s excellent <a href="https://www.dokuwiki.org/plugin:edittable">Edittable Plugin</a>.
This plug-in is so good that I would always install it in any DokuWiki that will have tables.</p>

<p>Whilst this will certainly do for now, I am on the look out for some sort of site to manage bookings properly - if you know of anything suitable please do comment below, otherwise at some point I will probably write one in <a href="http://perldancer.org/">Perl Dancer</a>!</p>

<h2 id="conclusions">Conclusions</h2>

<p>Under the Use Cases on the <a href="https://www.dokuwiki.org/">DokuWiki</a> website there is the suggestion of using it for a Private Notebook - having used DokuWiki I can totally see how that would make sense - it is <em>that</em> simple to create and edit.</p>

<p><a href="https://www.dokuwiki.org/">DokuWiki</a> has definitely filled a gap in my web toolbox, alongside <a href="http://perldancer.org/">Perl Dancer</a> and <a href="http://jekyllrb.com/">Jekyll</a>.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Intermittent USB3 Drive Mount Continued</title>
      <link>https://chrisjrob.com/2015/11/27/intermittent-usb3-drive-mount-continued/</link>
      <pubDate>Fri, 27 Nov 2015 12:10:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2015/11/27/intermittent-usb3-drive-mount-continued</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/anker-usb3-hub.jpg" align="right" alt="Featured Image">
         
         <p>Further to my recent post <a href="/2015/11/17/intermittent-usb3-drive-mount/">Intermittent USB3 Drive Mount</a>, sadly I have to report that, after ten days of perfect operation, this morning once again the drive mount failed.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># dmesg | tail
</code></pre></div></div>

<!--more-->

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>[ 7659.848351] usb 2-3: Product: USB3.0 Hub             
[ 7659.848352] usb 2-3: Manufacturer: VIA Labs, Inc.         
[ 7659.852937] usb 2-3: Disable of device-initiated U1 failed.
[ 7659.856435] usb 2-3: Disable of device-initiated U2 failed.
[ 7659.856473] hub 2-3:1.0: USB hub found
[ 7664.860293] hub 2-3:1.0: config failed, can't read hub descriptor (err -22)
[ 7664.863787] usb 2-3: Set SEL for device-initiated U1 failed.
[ 7664.867279] usb 2-3: Set SEL for device-initiated U2 failed.
[ 8137.312105] usb 2-3: reset SuperSpeed USB device number 3 using xhci_hcd
[ 8137.559139] xhci_hcd 0000:00:14.0: xHCI xhci_drop_endpoint called with disabled ep ffff8800bc7e8a20
</code></pre></div></div>

<h2 id="power-control">Power Control</h2>

<p>Following the tack from last time, I once again checked the USB power control status:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># grep . /sys/bus/usb/devices/*/power/control
</code></pre></div></div>

<p>As before these were mostly set to auto, so I switched on again using the same command as before:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># for F in /sys/bus/usb/devices/*/power/control; do echo on &gt;"${F}"; done
# grep . /sys/bus/usb/devices/*/power/control
</code></pre></div></div>

<p>Clearly I need a more permanent fix to that command.</p>

<h2 id="auto-suspend">Auto-Suspend</h2>

<p>I also discovered two more settings:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># grep . /sys/bus/usb/devices/*/power/autosuspend
</code></pre></div></div>

<p>Apparently to switch off auto-suspend you should set the delay seconds to -1:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># for F in /sys/bus/usb/devices/*/power/autosuspend; do echo -1 &gt;"${F}"; done
# grep . /sys/bus/usb/devices/*/power/autosuspend
</code></pre></div></div>

<p>To set this permanently I created a file <code class="language-plaintext highlighter-rouge">/etc/modprobe.d/autosuspend.conf</code>:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>options usbcore autosuspend=-1
</code></pre></div></div>

<p>I came across <a href="https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1371233">Ubuntu Bug 1371233</a>, in which there was a suggestion to try:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># echo -1 &gt;/sys/module/usbcore/parameters/autosuspend
</code></pre></div></div>

<p>And on the same lines the suggestion to edit <code class="language-plaintext highlighter-rouge">/etc/default/grub</code> file and append to the <code class="language-plaintext highlighter-rouge">GRUB_CMDLINE_LINUX_DEFAULT</code> line:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>usbcore.autosuspend=-1
</code></pre></div></div>

<p>Followed of course by the obligatory:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># update-grub
</code></pre></div></div>

<h2 id="power-level">Power Level</h2>

<p>You can also check your USB power levels:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># grep . /sys/bus/usb/devices/*/power/level
</code></pre></div></div>

<p>Mine were already all switched on, but if not:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># for F in /sys/bus/usb/devices/*/power/level; do echo on &gt;"${F}"; done
# grep . /sys/bus/usb/devices/*/power/level
</code></pre></div></div>

<h2 id="back-to-basics">Back to Basics</h2>

<p>Having run through all the above, I still could not see my drive. 
Unplugging and plugging it back in seems to have no reaction in the logs, suggesting that my drive is not being seen at all.</p>

<p>Re-plugging the USB hub seems to respond okay:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Nov 27 11:51:47 asusi5 kernel: [11372.680605] usb 1-3: USB disconnect, device number 2
Nov 27 11:51:47 asusi5 kernel: [11372.775937] usb 2-3: USB disconnect, device number 3
Nov 27 11:51:54 asusi5 kernel: [11379.603869] usb 1-3: new high-speed USB device number 7 using xhci_hcd
Nov 27 11:51:54 asusi5 kernel: [11379.733470] usb 1-3: New USB device found, idVendor=2109, idProduct=2812
Nov 27 11:51:54 asusi5 kernel: [11379.733478] usb 1-3: New USB device strings: Mfr=1, Product=2, SerialNumber=0
Nov 27 11:51:54 asusi5 kernel: [11379.733482] usb 1-3: Product: USB2.0 Hub
Nov 27 11:51:54 asusi5 kernel: [11379.733486] usb 1-3: Manufacturer: VIA Labs, Inc.
Nov 27 11:51:54 asusi5 kernel: [11379.734284] hub 1-3:1.0: USB hub found
Nov 27 11:51:54 asusi5 kernel: [11379.734556] hub 1-3:1.0: 4 ports detected
</code></pre></div></div>

<p>But still plugging in the USB3 drive into that hub still has no effect.</p>

<p>Next I tried re-plugging the USB hub into a different USB3 port. 
This time when I plugged back in the USB drive - it was recognised and worked perfectly.</p>

<h2 id="conclusions">Conclusions</h2>

<p>It could be that one of the above fixes only affects new devices (the auto-suspend probably), and that by choosing a different port it was recognised as a new device and therefore worked.</p>

<p>Equally there could be a hardware problem with the original USB port, perhaps the connector inside the case is a bit dodgy.</p>

<p>For now I will monitor the situation for another week or two and report back.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Varidesk Pro Plus 48 Standing Desk</title>
      <link>https://chrisjrob.com/2015/11/22/varidesk-pro-plus-48-standing-desk/</link>
      <pubDate>Sun, 22 Nov 2015 18:25:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2015/11/22/varidesk-pro-plus-48-standing-desk</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/varidesk-pro-plus-48-02_300.jpg" align="right" alt="Featured Image">
         
         <p>In my recent post on the <a href="/2015/10/15/bac-posture-stand/">Bac Posture Stand</a> I mentioned that I had purchased the <a href="http://www.amazon.co.uk/gp/product/B00UKES3S2/ref=as_li_tl?ie=UTF8&amp;camp=1634&amp;creative=19450&amp;creativeASIN=B00UKES3S2&amp;linkCode=as2&amp;tag=robsquadnet-21">Varidesk Pro Plus 48</a>.
I promised to review this “in due course” and that time has now come!</p>

<!--more-->

<p>The <a href="http://www.amazon.co.uk/gp/product/B00UKES3S2/ref=as_li_tl?ie=UTF8&amp;camp=1634&amp;creative=19450&amp;creativeASIN=B00UKES3S2&amp;linkCode=as2&amp;tag=robsquadnet-21">Varidesk Pro Plus 48</a> is “desk riser” that enables you to choose your working height. 
You can start the day standing up and then, after your executive lunch, you can spend your afternoon sitting down.</p>

<p>N.B. This post includes Amazon Associates links, I have never actually received anything from them, but I live in hope!!</p>

<h2 id="pricing">Pricing</h2>

<p>At £437 (including delivery) this is a very expensive piece of equipment indeed. 
The alternative is to buy <a href="http://www.ikea.com/gb/en/campaigns/home-office/standing-desks.html">an actual standing desk</a> and in many cases this will be a better option. 
The beauty of the Varidesk is that you are able to retain your existing furniture.</p>

<p>You do also need the <a href="http://www.amazon.co.uk/gp/product/B00IU4FMOM/ref=as_li_tl?ie=UTF8&amp;camp=1634&amp;creative=19450&amp;creativeASIN=B00IU4FMOM&amp;linkCode=as2&amp;tag=robsquadnet-21">Varidesk Standing Mat</a>, which is another £67.50 (including delivery).</p>

<p>There are cheaper solutions, such as the <a href="http://www.amazon.co.uk/gp/product/B00NR2AA8U/ref=as_li_tl?ie=UTF8&amp;camp=1634&amp;creative=19450&amp;creativeASIN=B00NR2AA8U&amp;linkCode=as2&amp;tag=robsquadnet-21">LIFT Standing Desk</a> mentioned on <a href="http://www.badvoltage.org/2015/09/17/1x50/">Bad Voltage</a>, but at the time I was unable to locate this in the UK. 
You can even <a href="http://lifehacker.com/5929765/make-yourself-a-standing-desk-this-weekend">build your own</a>.</p>

<h2 id="amazon">Amazon</h2>

<p>In the end I purchased the <a href="http://www.amazon.co.uk/gp/product/B00UKES3S2/ref=as_li_tl?ie=UTF8&amp;camp=1634&amp;creative=19450&amp;creativeASIN=B00UKES3S2&amp;linkCode=as2&amp;tag=robsquadnet-21">Varidesk Pro Plus 48</a> from Amazon*. 
Not only was it almost the only option that I could find, it was a professional looking unit and the reviews were also very positive.</p>

<p>*Please note that the photo on the Amazon item is actually incorrect and the Pro Plus 48 actually looks like the photo above, visit the <a href="http://uk.varidesk.com/varidesk-pro-plus-48">Varidesk</a> website for details. 
I did contact Varidesk about this anomaly and they explained that they had informed Amazon on multiple occasions and were unable to get the photo corrected.</p>

<p>To enhance my new standing desk I also purchased a number of other items:</p>

<ul>
  <li><a href="http://www.amazon.co.uk/gp/product/B00UKES3S2/ref=as_li_tl?ie=UTF8&amp;camp=1634&amp;creative=19450&amp;creativeASIN=B00UKES3S2&amp;linkCode=as2&amp;tag=robsquadnet-21">Varidesk Pro Plus 48</a></li>
  <li><a href="http://www.amazon.co.uk/gp/product/B00IU4FMOM/ref=as_li_tl?ie=UTF8&amp;camp=1634&amp;creative=19450&amp;creativeASIN=B00IU4FMOM&amp;linkCode=as2&amp;tag=robsquadnet-21">Varidesk Standing Mat</a> - essential for standing all day</li>
  <li><a href="http://www.amazon.co.uk/gp/product/B00O0L2NWI/ref=as_li_tl?ie=UTF8&amp;camp=1634&amp;creative=19450&amp;creativeASIN=B00O0L2NWI&amp;linkCode=as2&amp;tag=robsquadnet-21">Anker USB3 Hub</a> - to provide USB ports on the standing desk</li>
  <li><a href="http://www.amazon.co.uk/gp/product/B00NH12O5I/ref=as_li_tl?ie=UTF8&amp;camp=1634&amp;creative=19450&amp;creativeASIN=B00NH12O5I&amp;linkCode=as2&amp;tag=robsquadnet-21">Amazon 3m USB Extension Cable</a> - to connect up the Anker hubs</li>
  <li><a href="http://www.amazon.co.uk/gp/product/B003L1ZYYW/ref=as_li_tl?ie=UTF8&amp;camp=1634&amp;creative=19450&amp;creativeASIN=B003L1ZYYW&amp;linkCode=as2&amp;tag=robsquadnet-21">Amazon 3m HDMI Cable</a> - required to reach from the PCs under the desk up to the standing desk</li>
  <li><a href="http://www.amazon.co.uk/gp/product/B001IVOPJ2/ref=as_li_tl?ie=UTF8&amp;camp=1634&amp;creative=19450&amp;creativeASIN=B001IVOPJ2&amp;linkCode=as2&amp;tag=robsquadnet-21">Fellowes Cable Zip</a> - to tidy up all the cables</li>
</ul>

<h2 id="installation">Installation</h2>

<p><a href="/assets/varidesk-pro-plus-48-02.jpg"><img src="/assets/varidesk-pro-plus-48-02_300.jpg" class="image-right" /></a></p>

<p>Typically the Varidesk arrived when I was on a day off. It turned up on a pallet, resulting in much consternation at work. 
In fact, once the packaging was removed, the item was the desired size and all was well.</p>

<p>There is no assembly required, simply unpackage and lift onto your desk.
Be warned though, the Varidesk does weigh a lot and will require two fairly strong people to manoeuvre it into place.</p>

<p>I was a little concerned as to how this Pro Plus 48 would fit on my corner desk. 
I did originally order the <a href="https://web.archive.org/web/20150906071124/http://www.varidesk.com/cubicle-standing-desk-cube-corner-48">Varidesk Cube Corner 48</a>, but I received an email from Varidesk explaining that this unit had been discontinued and cancelling and refunding my order.</p>

<p>In the event the Pro Plus 48 fitted my corner desk beautifully.</p>

<h2 id="first-impressions">First Impressions</h2>

<p><a href="/assets/varidesk-pro-plus-48-01.jpg"><img src="/assets/varidesk-pro-plus-48-01_300.jpg" class="image-left" /></a></p>

<p>The Varidesk Pro Plus 48 appears to be extremely well constructed and solidly made. 
It has what I assume are bolt holes for those scared of the desk falling over, but in practice the weight of the metal base is sufficient.</p>

<p>The desk can be raised and lowered without physical effort, although sometimes cables will get under the desk requiring their removal before it will lower fully. 
I cannot blame Varidesk for that, but you need to give some thought about cable routing to minimise the likelihood of this happening.</p>

<h2 id="the-first-month">The First Month</h2>

<p><a href="/assets/varidesk-pro-plus-48-03.jpg"><img src="/assets/varidesk-pro-plus-48-03_300.jpg" class="image-right" /></a></p>

<p>After a month of using my Varidesk I am very happy with it. 
I would love to be able to report a stunning transformation of my painful back, but sadly my back is still very sore. 
That said, I certainly feel healthier from standing up and being more active.</p>

<p>Standing up all day is not without its issues, my feet and legs get tired, so I tend to sit down at lunchtime and late afternoon. 
But I have also found that sitting down for too long has started feeling very uncomfortable. 
Perhaps it always did? 
But now I can do something about it, raising up my desk and enjoying standing up again, if only for a while.</p>

<p>In short, for me at least, being able to choose to sit or stand feels very natural and it would feel very strange now to be forced to spend the entire day sitting down.</p>

<p>I believe I now have the closest thing possible to the perfect desk.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Howto | Add ActiveDirectory Addressbook to Sylpheed Email</title>
      <link>https://chrisjrob.com/2015/11/19/add-activedirectory-addressbook-to-sylpheed-email/</link>
      <pubDate>Thu, 19 Nov 2015 21:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2015/11/19/add-activedirectory-addressbook-to-sylpheed-email</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/sylpheed.png" align="right" alt="Featured Image">
         
         <p>Where we require a lightweight mail client, we tend to use <a href="http://sylpheed.sraoss.jp/en/">Sylpheed</a> (from which Claws Mail was later forked).</p>

<p>It seems unlikely that you would be able to add an ActiveDirectory Address Book into such a lightweight email client, and indeed the <a href="http://sylpheed.sraoss.jp/doc/manual/en/sylpheed-12.html">manual</a> states:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>### FIXME: write this part.
</code></pre></div></div>

<p>But in fact it was trivially easy:</p>

<!--more-->

<h2 id="caveat">Caveat</h2>

<p>Whilst these instructions worked for us, do be aware that we are using Samba4 ActiveDirectory. 
In theory this is a drop-in replacement for Windows ActiveDirectory and these instructions <em>should</em> work unchanged.</p>

<h2 id="add-ldap-addressbook">Add LDAP Addressbook</h2>

<p>Firstly run Sylpheed and go to Tools and Addressbook. 
Within the Sylpheed Addressbook go to File New LDAP Server
You should now see a screen like this:</p>

<p><img src="/assets/sylpheed-ldap-1.png" alt="Sylpheed LDAP Basic Settings" /></p>

<p>Having entered the Name, Hostname and Port you are able to “Check Server”, to ensure connectivity.
Next either enter your Search Base, or click on the &amp;ellipsis; button to select from the detected Search Bases.</p>

<table>
  <thead>
    <tr>
      <th>Item</th>
      <th>Explanation</th>
      <th>Example</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Name</td>
      <td>Addressbook or server name</td>
      <td>example</td>
    </tr>
    <tr>
      <td>Hostname</td>
      <td>ActiveDirectory Host Name</td>
      <td>ads.example.lan</td>
    </tr>
    <tr>
      <td>Port</td>
      <td>LDAP Port Number*</td>
      <td>389 or 636</td>
    </tr>
    <tr>
      <td>Search Base</td>
      <td>Your AD domain in LDAP form</td>
      <td>DC=example,DC=lan</td>
    </tr>
  </tbody>
</table>

<p>*You should probably choose 636 when connecting via a public network, and you may need to open ports on your router.</p>

<p>Now select the Extended tab and you should see the following screen:</p>

<p><img src="/assets/sylpheed-ldap-2.png" alt="Sylpheed LDAP Extended Settings" /></p>

<table>
  <thead>
    <tr>
      <th>Item</th>
      <th>Explanation</th>
      <th>Example</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Search Criteria</td>
      <td>This simple example worked for us</td>
      <td>(objectclass=*)</td>
    </tr>
    <tr>
      <td>Bind DN</td>
      <td>Your ActiveDirectory username</td>
      <td>chris@example.lan</td>
    </tr>
    <tr>
      <td>Bind Password</td>
      <td>Your ActiveDirectory password</td>
      <td>-</td>
    </tr>
  </tbody>
</table>

<p>Now click on OK to finish.</p>

<h2 id="test">Test</h2>

<p>You should now have a Search field available, enter a colleague’s first name and Search and you should be faced with their email addresses.</p>

<h2 id="conclusion">Conclusion</h2>

<p>As far as I can tell the addressbook lookup is not automatic and you have to click on the addressbook icon in the Compose Window and search for the person, in order to add them to the To: field. A bit clunky perhaps, but arguably not so very different from the need in Outlook to press Check Names to look up new addresses. 
Needless to say - once the address is in the recent address list, it is auto-completed in the future.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Howto | Install ESET Remote Administrator on Ubuntu</title>
      <link>https://chrisjrob.com/2015/11/17/install-eset-remote-administrator-on-ubuntu/</link>
      <pubDate>Tue, 17 Nov 2015 20:12:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2015/11/17/install-eset-remote-administrator-on-ubuntu</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/eset-remote-administrator.png" align="right" alt="Featured Image">
         
         <p>After much research I decided to purchase <a href="http://www.eset.co.uk/Business/Endpoint-Security/Endpoint-Antivirus">ESET Antivirus</a> for our Windows clients. 
But rather than install ESET Antivirus on each client in turn, I decided to install ESET Remote Administrator on an Ubuntu VPS.
ESET Remote Administrator is a server program for controlling ESET Antivirus (and other ESET programs) on clients, you can use it to deploy the ESET Agent, which in turn can then install and monitor the ESET Antivirus software.</p>

<!--more-->

<p>Our Windows PCs are controlled by an ActiveDirectory server (actually a <a href="https://www.samba.org/">Samba</a>4 ActiveDirectory server, although that should not make any difference to these instructions).</p>

<p>I found the <a href="http://help.eset.com/era_install/62/en-US/index.html?linux.htm">ESET instructions</a> for so doing decidedly sketchy, but I eventually managed to install it and took some notes as I went. 
I cannot promise these instructions are complete, but used in conjunction with the <a href="http://help.eset.com/era_install/62/en-US/index.html?linux.htm">ESET instructions</a> they may be of help.</p>

<h2 id="update-hosts">Update Hosts</h2>

<p>Edit <code class="language-plaintext highlighter-rouge">/etc/hosts</code>:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>127.0.0.1       localhost.example.lan      localhost.localdomain        localhost
192.168.0.109   eset.example.lan           eset
</code></pre></div></div>

<p>Test by typing the following two commands and checking the output matches:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># hostname
eset

# hostname -f
eset.example.lan
</code></pre></div></div>

<h2 id="dependencies">Dependencies</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># apt-get install mysql-server unixodbc libmyodbc cifs-utils libjcifs-java winbind libqtwebkit4 xvfb
# dpkg-reconfigure libmyodbc 
</code></pre></div></div>

<h2 id="install-mysql-server">Install MySQL Server</h2>

<p>Edit <code class="language-plaintext highlighter-rouge">/etc/mysql/my.cnf</code>:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>max_allowed_packet=33M
</code></pre></div></div>

<p>Restart MySQL</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># service mysql-server restart
</code></pre></div></div>

<h2 id="configure-mysql">Configure MySQL</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># mysql -u root -p
</code></pre></div></div>

<p>Cannot remember whether I created database and/or username and password, suggest you try without and then with.</p>

<h2 id="install-eset-remote-administration-server">Install ESET Remote Administration Server</h2>

<p>Replace ??? with actual:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># sh Server-Linux-x86_64.sh --license-key=??? \
--db-type="MySQL Server" --db-driver="MySQL" --db-hostname=127.0.0.1 --db-port=3306 \
--server-root-password="???" --db-name="era_db" --db-admin-username="root" --db-admin-password="???" \
--db-user-username="era" --db-user-password="???" \
--cert-hostname="eset" --cert-auth-common-name="eset.example.lan" --cert-organizational-unit="eset.example.lan" \
--cert-organization="example ltd" --cert-locality="UK" \
--ad-server="ads.example.lan" --ad-user-name="era" --ad-user-password="???"
</code></pre></div></div>

<p>In case of error, read the following carefully:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/var/log/eset/RemoteAdministrator/EraServerInstaller.log
</code></pre></div></div>

<h2 id="install-tomcat7">Install Tomcat7</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># apt-get install tomcat7 tomcat7-admin
</code></pre></div></div>

<p>Wait 5 minutes for Tomcat to start, then visit http://localhost:8080 to check it has worked.</p>

<h2 id="configure-ssl">Configure SSL</h2>

<p>See <a href="https://tomcat.apache.org/tomcat-7.0-doc/ssl-howto.html#Configuration">SSL/TLS Configuration HOW-TO</a>.</p>

<h3 id="step-1---generate-keystore">Step 1 - Generate Keystore</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA -keystore /usr/share/tomcat7/.keystore
</code></pre></div></div>

<p>Use password ‘changeit’.</p>

<p>At the time of writing $JAVA_HOME is <code class="language-plaintext highlighter-rouge">/usr/lib/jvm/java-7-openjdk-amd64/jre</code></p>

<h3 id="step-2---configure-tomcat">Step 2 - Configure Tomcat</h3>

<p>You should have two sections like this:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>&lt;Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           URIEncoding="UTF-8"
           redirectPort="8443" /&gt;

&lt;Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
           maxThreads="150" scheme="https" secure="true"
           keystoreFile="/usr/share/tomcat7/.keystore" keystorePass="changeit"
           clientAuth="false" sslProtocol="TLS" /&gt;
</code></pre></div></div>

<p>These will already exist, but need uncommenting and adjusting with keystore details.</p>

<h3 id="test">Test</h3>

<p>You should now be able to go to <a href="http://localhost:8443">http://localhost:8443</a>.</p>

<h2 id="join-windows-domain">Join Windows Domain</h2>

<p>The ERA server must be joined to the domain</p>

<p>Install samba and stop any samba services that start.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># apt-get install samba krb5-user smbclient
</code></pre></div></div>

<p>Edit <code class="language-plaintext highlighter-rouge">/etc/samba/smb.conf</code>:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>[global]
         workgroup = EXAMPLE
         security = ADS
         realm = EXAMPLE.COM
         dedicated keytab file = /etc/krb5.keytab
         kerberos method = secrets and keytab
         server string = Samba 4 Client %h
         winbind enum users = yes
         winbind enum groups = yes
         winbind use default domain = yes
         winbind expand groups = 4
         winbind nss info = rfc2307
         winbind refresh tickets = Yes
         winbind normalize names = Yes
         idmap config * : backend = tdb
         idmap config * : range = 2000-9999
         idmap config EXAMPLE : backend  = ad
         idmap config EXAMPLE : range = 10000-999999
         idmap config EXAMPLE:schema_mode = rfc2307
         printcap name = cups
         cups options = raw
         usershare allow guests = yes
         domain master = no
         local master = no
         preferred master = no
         os level = 20
         map to guest = bad user
         username map = /etc/samba/smbmap
</code></pre></div></div>

<p>Create <code class="language-plaintext highlighter-rouge">/etc/samba/smbmap</code>:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>!root = EXAMPLE\Administrator Administrator admionistrator
</code></pre></div></div>

<p>Edit <code class="language-plaintext highlighter-rouge">/etc/krb5.conf</code>:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>[libdefaults]
      default_realm = EXAMPLE.COM
      dns_lookup_realm = false
      dns_lookup_kdc = true
      ticket_lifetime = 24h
      forwardable = yes
</code></pre></div></div>

<p>Make sure that <code class="language-plaintext highlighter-rouge">/etc/resolv.conf</code> points to the AD DC, and dns is setup correctly.</p>

<p>Then run this command:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># net ads join -U Administrator@EXAMPLE.COM
</code></pre></div></div>

<p>Enter Administrators password when requested.</p>

<p>Edit <code class="language-plaintext highlighter-rouge">/etc/nsswitch.conf</code> and add ‘winbind’ to passwd &amp; group lines.</p>

<p>Start samba services.</p>

<h2 id="update-dns">Update DNS</h2>

<p>For some reason the join does not always create the DNS entry on Samba4, so you may need to add this manually.</p>

<h2 id="references">References</h2>

<ul>
  <li><a href="https://www.samba.org/">Samba</a></li>
  <li><a href="http://help.eset.com/era_install/62/en-US/index.html?linux.htm">ESET Remote Administrator Installation Instructions</a></li>
  <li><a href="http://support.eset.com/kb3728/">Troubleshoot Linux Installation</a></li>
</ul>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Intermittent USB3 Drive Mount</title>
      <link>https://chrisjrob.com/2015/11/17/intermittent-usb3-drive-mount/</link>
      <pubDate>Tue, 17 Nov 2015 14:38:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2015/11/17/intermittent-usb3-drive-mount</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/samsung-drive.jpg" align="right" alt="Featured Image">
         
         <p>I have a problem with a Samsung M3 Portable USB3 external hard drive only working intermittently. 
I use a couple of these for off-site backups for work and so I need them working reliably.
In fairness a reboot does cure the problem, but I hate that as a solution.</p>

<p>To troubleshoot this problem, the first step was to check the system devices:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># ls -al /dev/disk/by-id
</code></pre></div></div>

<!--more-->

<p>But only my main two system drives were showing, and not the USB3 drive, which would have been <code class="language-plaintext highlighter-rouge">sdc</code>, being the third drive (a, b, c).</p>

<h2 id="system-logs">System Logs</h2>

<p>The next step was to check the system logs:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># dmesg | tail
</code></pre></div></div>

<p>This showed no issues at all. Then I checked <code class="language-plaintext highlighter-rouge">syslog</code>:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># tail /var/log/syslog
</code></pre></div></div>

<p>This was completely empty, and had not been written to for almost a year. 
I can’t quite believe I haven’t needed to check the logs in all that time, but there you are.</p>

<p>I checked that rsyslogd was running and it was as user syslog. But the <code class="language-plaintext highlighter-rouge">/var/log/syslog</code> file was owned by root with group adm, but whilst syslog was a member of the adm group, the files all had user rw permissions only <code class="language-plaintext highlighter-rouge">-rw-------</code>.</p>

<p>This was easily fixed:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># chmod g+rw /var/log/*
# service rsyslog restart
</code></pre></div></div>

<p>Now the syslog file was being written to, but there was a problem writing to <code class="language-plaintext highlighter-rouge">/dev/xconsole</code>:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Nov 17 12:20:48 asusi5 rsyslogd: [origin software="rsyslogd" swVersion="7.4.4" x-pid="11006" x-info="http://www.rsyslog.com"] start
Nov 17 12:20:48 asusi5 rsyslogd: rsyslogd's groupid changed to 103
Nov 17 12:20:48 asusi5 rsyslogd: rsyslogd's userid changed to 101
Nov 17 12:20:48 asusi5 rsyslogd-2039: Could no open output pipe '/dev/xconsole': No such file or directory [try http://www.rsyslog.com/e/2039 ]
Nov 17 12:20:48 asusi5 rsyslogd: [origin software="rsyslogd" swVersion="7.4.4" x-pid="11006" x-info="http://www.rsyslog.com"] exiting on signal 15.
</code></pre></div></div>

<p>So I duly visited <a href="http://www.rsyslog.com/e/2039">the link mentioned</a>, which gave instructions for disabling <code class="language-plaintext highlighter-rouge">/dev/xconsole</code>, but this made me nervous and further research suggested that that was indeed the correct fix for headless servers, but possibly not for a desktop PC. Instead I used the following fix:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># mknod -m 640 /dev/xconsole c 1 3
# chown syslog:adm /dev/xconsole
# service rsyslog restart
</code></pre></div></div>

<h2 id="usb-powersaving">USB Powersaving</h2>

<p>Now at least it seems that my syslog is working correctly. Unfortunately unplugging and plugging in the USB drive still was not writing to the logs! When I plugged in the drive the blue light would flash repeatedly and then switch off. I would have believed that the drive had a fault, if it weren’t for the fact that rebooting the PC solves the problem.</p>

<p>Thinking that perhaps this problem was USB3 related, I decided to Google for “USB3 drive not recognised” which found <a href="https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1242321">this post</a>. Except, that post was only relevant when operating on battery power, whereas I am using a plugged in desktop PC.  Clearly that page could not be relevant?  Except that in my notification area there is a battery icon, relating to my Uninterruptible Power Supply. But surely Ubuntu couldn’t be treating my UPS as if it were a battery? Could it?</p>

<p>In order to find out the power status of my USB devices I followed the suggestion of typing:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># grep . /sys/bus/usb/devices/*/power/control
</code></pre></div></div>

<p>Most were flagged as “on”, but a number of devices were flagged as “auto”. I decided to try switching them on to see if that made any difference:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># for F in /sys/bus/usb/devices/*/power/control; do echo on &gt;"${F}"; done
# grep . /sys/bus/usb/devices/*/power/control
</code></pre></div></div>

<p>Now all the devices were showing as on. Time to try out the drive again - I unplugged it and plugged it back in again. This time the power light flashed repeatedly and then went solid.</p>

<p>Unfortunately the drive was still not mounted, but at least it was alive now. What next? Ah yes, I should check the logs to see if they have any new messages, now that the drive is powered and my logs are working:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># dmesg | tail
[15243.369812] usb 4-3: reset SuperSpeed USB device number 2 using xhci_hcd
[15243.616871] xhci_hcd 0000:00:14.0: xHCI xhci_drop_endpoint called with disabled ep ffff880213c71800
</code></pre></div></div>

<h2 id="faulty-usb-sata-bridge">Faulty USB-SATA Bridge</h2>

<p>At last I have something to go on. I searched for that error message, which took me to <a href="http://forums.debian.net/viewtopic.php?f=7&amp;t=117061">this Debian.net page</a>, which suggested:</p>

<blockquote>
  <p>Reason is faulthy usb-sata bridge ASM1051 in USB3 drives. It has nothing to do with motherboards.
See this. <a href="https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=a9c54caa456dccba938005f6479892b589975e6a">https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=a9c54caa456dccba938005f6479892b589975e6a</a> 
Workaround was made to kernel 3.17-rc5. Now those disks works. Some perfectly and some works but data transfer is not smooth.</p>
</blockquote>

<p>Could that be my problem? I checked my current Kernel:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># uname -r
3.13.0-68-generic
</code></pre></div></div>

<p>So yes, it could be. As I cannot read the device yet, I cannot check whether ASM1051 is present in my USB3 drive.</p>

<p>Having uninstalled 34 obsolete kernels and a further 8 newer kernels that weren’t in use, I was in a position to install the latest Kernel from Vivid with:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># apt install linux-generic-lts-vivid
</code></pre></div></div>

<p>The problem of course is that in order to boot onto the newer Kernel I must reboot, thereby fixing the problem anyway.</p>

<h2 id="and-finally">And finally</h2>

<p>It would be easy to portray this as clear evidence of the difficulty of running Linux, certainly Samsung will have thoroughly tested their drive on Windows and Mac operating systems. That said such problems are <a href="http://lmgtfy.com/?q=usb3+drive+not+showing+up+\(windows%2C+os-x\)">not unheard of on the more popular operating systems</a> and debugging such problems is far harder, I would argue, than the above logical steps.</p>

<p>Having rebooted, as expected, the drive worked. I tried running <code class="language-plaintext highlighter-rouge">lshw</code> to see if ASM1051 was present, but I could not find it. Of course upgrading the Kernel could have fixed the problem anyway.</p>

<p>For the present I will labour under the comforting belief that the problem is fixed and will update this post again when either the problem reoccurs on in a week’s time if all is well!</p>

<ul>
  <li>Please see <a href="/2015/11/27/intermittent-usb3-drive-mount-continued/">Intermittent USB3 Drive Mount Continued</a>…</li>
</ul>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Wordpress Comments Migration to Disqus</title>
      <link>https://chrisjrob.com/2015/11/16/wordpress-comments-migration-to-disqus/</link>
      <pubDate>Mon, 16 Nov 2015 21:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2015/11/16/wordpress-comments-migration-to-disqus</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/disqus-logo.png" align="right" alt="Featured Image">
         
         <p>I assumed that, when I <a href="/2015/11/12/migration-wordpress-to-jekyll/">migrated from Wordpress to Jekyll</a>, one of the casualties would be the old Wordpress comments. 
I had decided to use <a href="http://disqus.com">DISQUS</a> for comments on Jekyll, partly because it is the “new thing” and partly because it is incredibly easy to achieve.
But I never for a moment considered that migrating the old comments would be a possibility.</p>

<!--more-->

<p>In fact, not only is it possible, but it is <a href="https://help.disqus.com/customer/portal/articles/466255-importing-comments-from-wordpress">almost trivially easy</a>.</p>

<p>I did encounter a few issues, as I had foolishly renamed some pages to more logical names, thereby both breaking all Google and other links, but also breaking the link with DISCUS comments. That was a very bad idea and as a consequence I spent quite a while renaming files back again, but other than that it all worked flawlessly. If you are going to rename pages - probably best to do it in Wordpress before migrating to Jekyll.</p>

<p>Well done [DISCUS] for making something that you would expect to be difficult easy. And thank you <a href="http://wordpress.com">Wordpress</a> for providing a decent export routine, without which my data would have been locked away.</p>

<p>I look forward to your comments!</p>

<p>Chris.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Sleeping Better with Linux</title>
      <link>https://chrisjrob.com/2015/11/15/sleeping-better-with-linux/</link>
      <pubDate>Sun, 15 Nov 2015 19:28:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2015/11/15/sleeping-better-with-linux</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/flux-icon-big.png" align="right" alt="Featured Image">
         
         <p>I was reading <a href="http://www.bbc.co.uk/news/health-34744859">Phones need ‘bed mode’ to protect sleep</a> on the BBC, that computers should have a blue light filter to help people to sleep properly at night. 
As I am frequently working on my laptop until late in the evening, I felt that I should investigate further. 
Currently I do turn down the brightness, but it seems that is not enough.</p>

<!--more-->

<p>The article linked to a program called <a href="https://justgetflux.com/">f.lux</a>, which is free for Linux.
I also came across this article on Linux Magazine <a href="http://www.linux-magazine.com/Online/Features/Avoiding-Eye-Strain">Avoiding Eye Strain</a>.</p>

<h2 id="installation">Installation</h2>

<p>Getting this working on my laptop was trivial:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo add-apt-repository ppa:kilian/f.lux
sudo apt-get update
sudo apt-get install fluxgui
</code></pre></div></div>

<p>Finally I ran the program and set it to launch on start-up. 
I entered latitude as 51.2, which is close enough I believe.</p>

<h2 id="operation">Operation</h2>

<p>The software feels fairly basic, whether this is the same for Windows and Mac I don’t know. 
That said the applet seems to run perfectly in the Ubuntu notification area.</p>

<p>It is very noticeable that the display is more muted and much more comfortable to view in the evening. 
I don’t yet know whether this will work well during the day, nor whether it will improve my sleeping.
But the logic behind it seems sound and there is no reason why it shouldn’t help.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Reasons For Migrating from Wordpress to Jekyll</title>
      <link>https://chrisjrob.com/2015/11/15/reasons-for-migrating-from-wordpress-to-jekyll/</link>
      <pubDate>Sun, 15 Nov 2015 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2015/11/15/reasons-for-migrating-from-wordpress-to-jekyll</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/jekyll.png" align="right" alt="Featured Image">
         
         <p>Following my <a href="/2015/11/12/migration-wordpress-to-jekyll/">recent announcement</a>, I thought I would give some of my reasons for the move and some early impressions of using Jekyll.</p>

<h2 id="what-is-jekyll">What is Jekyll?</h2>

<p><a href="http://jekyllrb.com">Jekyll</a> is a <a href="http://daringfireball.net/projects/markdown/">Markdown</a> based website and blogging platform, written in Ruby. 
The principle is simple - you write markown text files and they are automatically converted to static HTML webpages.</p>

<!--more-->

<h2 id="what-is-markdown">What is Markdown?</h2>

<p>I am assuming that most of my audience have at least a passing knowledge of <a href="http://daringfireball.net/projects/markdown/">Markdown</a>, but basically it is a very clean virtually syntax-free way of writing text files, so that they can be easily converted into different formats. 
The key to markdown is the conversion utility and I currently use <a href="http://pandoc.org/">Pandoc</a>. 
I write the file once, and then I can convert into whatever format I want it in:</p>

<ul>
  <li><strong>PDF:</strong> <code class="language-plaintext highlighter-rouge">pandoc -o sample.pdf sample.markdown</code></li>
  <li><strong>Word:</strong> <code class="language-plaintext highlighter-rouge">pandoc -o sample.docx sample.markdown</code></li>
  <li><strong>HTML:</strong> <code class="language-plaintext highlighter-rouge">pandoc -o sample.html sample.markdown</code></li>
</ul>

<p>I would imagine most people start using Markdown so that can continue to use the favourite text editor - Vim or Emacs. 
At work I have found myself using it in preference to a word-processor, I have written a simple <code class="language-plaintext highlighter-rouge">md2pdf</code> perl script, so that in vim I can simply type <code class="language-plaintext highlighter-rouge">:md2pdf %</code> to have my document saved as a PDF. 
And the PDFs that Pandoc produces are beautiful and headings and sub-headings are automatically converted into PDF Bookmarks, giving your documents an effortless professionalism.</p>

<p>For complicated documents I sometimes start in Markdown and then move to LaTeX, but increasingly I am finding myself able to do virtually everything in Markdown, including simple images and hyperlinks. 
But you also have the option of extending plain markdown with HTML tags.</p>

<p>So in simplest terms Jekyll is just an automated way of creating Markdown files and converting them to HTML.</p>

<h2 id="but-why-change-from-wordpress">But why change from Wordpress?</h2>

<p><a href="http://wordpress.com">Wordpress</a> has been great for me, it’s relatively simple, has great statistical tools, a build in commenting system and much more besides. 
So why leave all that behind for something which is fundamentally so basic?</p>

<h3 id="benefits-of-jekyll">Benefits of Jekyll</h3>

<ol>
  <li><strong>Text Editor:</strong> Once again the desire to use <a href="http://www.vim.org">Vim</a> was probably the key motivation.</li>
  <li><strong>Github Pages:</strong> The fact that Jekyll could be used <a href="https://help.github.com/articles/using-jekyll-with-pages/">with the free Github Pages</a> was another.</li>
  <li><strong>Command Line:</strong> The ability to use grep, sed and perl and all the other command line goodies makes for an incredibly versatile system.</li>
  <li><strong>Version Control:</strong> To have the whole site under version control.</li>
</ol>

<p>I cannot tell you how wonderful it is to <code class="language-plaintext highlighter-rouge">grep -l searchtext *.markdown | vim -</code> and be able to edit each matching file in Vim.</p>

<h3 id="bootpolish-blog">Bootpolish Blog</h3>

<p>There was another reason too, which was that I still had an old blog at bootpolish.net, which I wanted to close down. 
I could have merged it into my Wordpress blog, but I thought it would be easier to transfer it to Jekyll. 
To be honest I can’t say that it was particularly easy, but thankfully it is now done.</p>

<h2 id="the-migration-process">The Migration Process</h2>

<p>I followed the <a href="https://help.github.com/articles/using-jekyll-with-pages/">GitHub Instructions for Jekyll</a>.
I used rsync to copy the underlying text files from Bootpolish.net into the _drafts folder, before using bash for loops to auto-process each into a Jekyll markdown post. 
I used the <a href="http://import.jekyllrb.com/docs/wordpressdotcom/">Wordpress Importer</a> to transfer my Wordpress blog.
The importer did not work particularly well, so I ended up editing each file in turn.</p>

<p>I found there was some customisation required:</p>

<ol>
  <li><strong>Categories:</strong> By default Jekyll has no Category pages, for example: http://chrisjrob.com/category/technology/</li>
  <li><strong>Tags:</strong> By default Jekyll has no Tag pages, for example: http://chrisjrob.com/tag/3dmodel/</li>
  <li><strong>Wordpress RSS:</strong> I wanted to maintain the existing feed locations, which required creation of various additional feeds.</li>
  <li><strong>Tag Cloud:</strong> By default Jekyll has no tag cloud functionality, which I believe is crucial to a blog.</li>
  <li><strong>Site Search:</strong> By default Jekyll has no site search. There are plug-ins, but these are not compatible with GitHub pages. For now I have used Google Custom Search, but it has not yet indexed the entire site.</li>
</ol>

<p>I have written <a href="https://github.com/chrisjrob/chrisjrob.github.io/blob/master/tagger">a script to build all the tags and categories</a>, which is working well. 
I would like to integrate this into the git commit command somehow, so that I don’t forget to run it!</p>

<p>Any new categories would require additional RSS feed files creating, by simply copying the feed template into the relevant category/feed folder.</p>

<h2 id="conclusions">Conclusions</h2>

<p>This has been much more work than I would have liked. 
That said, I now have my Markdown files in a format under my control. 
I can move those files to any Jekyll provider, or indeed to any web provider and have them hosted.</p>

<p>In short, I am hoping that this is the last time I will move platforms!</p>

<p>Lastly, if you’re unfamiliar with Markdown, you can <a href="https://raw.githubusercontent.com/chrisjrob/chrisjrob.github.io/master/_posts/2015-11-15-reasons-for-migrating-from-wordpress-to-jekyll.md">view the Markdown version of this page</a>.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Migration from Wordpress to Jekyll</title>
      <link>https://chrisjrob.com/2015/11/12/migration-wordpress-to-jekyll/</link>
      <pubDate>Thu, 12 Nov 2015 22:44:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2015/11/12/migration-wordpress-to-jekyll</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/jekyll.png" align="right" alt="Featured Image">
         
         <p>For the past few weeks I have migrating chrisjrob.com from Wordpress to Jekyll. 
I have also been merging in my previous blog at bootpolish.net.</p>

<p>This process has proved to be much more work than I expected, but this evening it all came together and I finally pressed the button to transfer the DNS over to the Jekyll site, hosted by GitHub.</p>

<!--more-->

<p>I have tried to maintain the URL structure, along with tags, categories and RSS feeds, but it can’t be perfect and there will be breakage.</p>

<p>If you notice any problems please do comment below.</p>

<p>Thank you.</p>

<p>Chris Roberts</p>

       ]]>
      </description>
    </item>
    
    <item>
      <title>Bac Posture Stand - Laptop Standing Desk</title>
      <link>https://chrisjrob.com/2015/10/15/bac-posture-stand/</link>
      <pubDate>Thu, 15 Oct 2015 11:11:14 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2015/10/15/bac-posture-stand</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/bac_posture_stand_300.jpg" align="right" alt="Featured Image">
         
         <p>Being tall (6’2”), sedentary and over 40, I have succumbed to the inevitable
back problems. Listening to <a href="http://www.badvoltage.org/2015/09/17/1x50/">Jono’s review of the LIFT Standing Desk on Bad
Voltage</a> reminded me that I’ve been
meaning to try out working standing up, at least for part of the time. I
haven’t gone for the LIFT, as I wasn’t able to find it on Amazon UK, but I have
purchased the Bac Posture Stand, better known on Amazon as <a href="http://www.amazon.co.uk/gp/product/B00N1VUS1G/ref=as_li_tl?ie=UTF8&amp;camp=1634&amp;creative=19450&amp;creativeASIN=B00N1VUS1G&amp;linkCode=as2&amp;tag=robsquadnet-21">Portable Folding
Notebook or Laptop Table - Desk - Tray - Stand -
(Black)</a>.</p>

<!--more-->

<p>Hmm catchy.</p>

<p>It appears to be well made, although it does take a little setting up.
There is no fan cooling, but there are holes for natural venting. One
pleasant surprise was that it does include a mouse stand, which is not
shown in the Amazon picture. There was a cheaper alternative, but the
reviews led me to believe that this one might work out better. As I am
not planning to buy both - I will never know.</p>

<p>It is early days and I don’t yet have a standing mat for home, which I
understand from that podcast is absolutely essential, but so far I am
pleased with my purchase.</p>

<p>I have also invested in a <a href="http://www.amazon.co.uk/gp/product/B00UKES3S2/ref=as_li_tl?ie=UTF8&amp;camp=1634&amp;creative=19450&amp;creativeASIN=B00UKES3S2&amp;linkCode=as2&amp;tag=robsquadnet-21">VARIDESK Pro Plus 48 - Height Adjustable
Standing Desk</a> for work, along with a <a href="http://www.amazon.co.uk/gp/product/B00IU4FMOM/ref=as_li_tl?ie=UTF8&amp;camp=1634&amp;creative=19450&amp;creativeASIN=B00IU4FMOM&amp;linkCode=as2&amp;tag=robsquadnet-21">VARIDESK - Standing Desk Floor
Mat</a>.</p>

<p>I will review these in due course.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Lenovo ThinkPad X1 Carbon Gen 3</title>
      <link>https://chrisjrob.com/2015/10/09/lenovo-thinkpad-x1-carbon-gen-3/</link>
      <pubDate>Fri, 09 Oct 2015 18:31:57 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2015/10/09/lenovo-thinkpad-x1-carbon-gen-3</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/lenovo-laptop-thinkpad-x1-carbon-2-front-2_300.jpg" align="right" alt="Featured Image">
         
         <p>Following the <a href="/2015/10/01/novatech-n1410-ultrabook-32-months-on/">demise of my Novatech
n1410</a>,
I have now taken delivery of a shiny (actually “shiny” is one thing it
isn’t!) new <a href="http://shop.lenovo.com/gb/en/laptops/thinkpad/x-series/x1-carbon/">Lenovo ThinkPad X1 Carbon Gen
3</a>.
This is not a review of the X1 Carbon - <a href="http://lmgtfy.com/?q=review+x1+carbon+3rd+gen">there are plenty of those
available already</a>, but
merely my experience of the first few days of ownership.</p>

<p>So why did I choose the X1 Carbon?</p>

<!--more-->

<ol>
  <li>Quality of construction and life expectancy;</li>
  <li><a href="http://www.ubuntu.com/certification/hardware/201411-16196/">Ubuntu hardware
certification</a>;</li>
  <li>Screen resolution 2560x1440 - perfect for remote support;</li>
  <li>Keyboard and Trackpad quality - two of my dissatisfactions with the
Novatech;</li>
  <li>Weight: at 1.3kg - it is much lighter than the Novatech and much of
the competition.</li>
</ol>

<p>The high cost was a concern to me, but having paid £479 for the Novatech
and it having only lasted 32 months, I was very conscious that price
isn’t everything. I bought the X1 Carbon from <a href="http://www.businessdirect.bt.com/products/lenovo-thinkpad-x1-carbon-intel-core-i5-5200u-8gb-256gb-ssd-14--windows-7-professional-64-bit-20bs006euk-B758.html">BT Business
Direct</a>
for a touch under £1,000.</p>

<p>When it arrived I was very surprised by the size of the packaging - this
was a very small box for something so expensive! The one thing that I
was not expecting was to be excited by the looks of this laptop - the
words “business-like” best summed up my expectations. In the flesh I
found the X1 Carbon absolutely stunning - the photo above is one of the
few that I have found that do it justice.</p>

<p>By this point I was <a href="http://www.bbc.co.uk/comedy/blackadder/episodes/three/three_ink.shtml">as happy as a Frenchman who’s invented
self-removing
trousers</a>.</p>

<h2 id="ubuntu-installation">Ubuntu Installation</h2>

<p>I downloaded Ubuntu 14.04-3 LTS
64-bit and copied it to my <a href="http://www.amazon.co.uk/gp/product/B00S65FARE/ref=as_li_tl?ie=UTF8&amp;camp=1634&amp;creative=19450&amp;creativeASIN=B00S65FARE&amp;linkCode=as2&amp;tag=robsquadnet-21">iodd 2531 Black USB 3.0 External Hard Drive
Enclosure Virtual DVD Blu-ray
ROM</a>.
The Ubuntu installation was flawless and fast. I opted for a whole drive
encrypted LVM install and in no time was booting into Ubuntu. The screen
was absolutely beautiful - for the first time I had a laptop with a
screen to rival an Apple Macbook.</p>

<h2 id="display-issues">Display Issues</h2>

<p><img src="/assets/imag1412_300.jpg" class="image-right" alt="Screen corruption" /></p>

<p>Ubuntu prompted me to run software update (I never update during the install
process), which I duly did. Having rebooted - disaster struck - the boot
process almost immediately dumped me to this screen. I was able to enter my
drive encryption password blind and it then progressed to the
beautiful LightDM login screen as before.</p>

<p>I <a href="https://bugs.launchpad.net/ubuntu/+source/plymouth/+bug/1503716">logged this as a bug with
Ubuntu</a> and
then installed an <a href="http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.19.8-ckt7-vivid/">Ubuntu Mainline
kernel</a> and, whilst
it still exhibited the screen corruption, it included a new Drive
Encryption Password Prompt which did not suffer from the problem and
gave me a functioning system once again (but read on for more).</p>

<h2 id="trackpad-buttons">Trackpad Buttons</h2>

<p>I then noticed that the trackpad buttons were not working. Well that’s
not entirely true - they were scrolling up and down a page, rather than
behaving as normal trackpad buttons. This <a href="http://askubuntu.com/questions/599477/lenovo-x1-carbon-2015-3rd-gen-20-bs-trackpoint-clickpad-and-wifi">Ubuntu
Question</a>
suggested that I was not alone and offered a solution - that of changing
the trackpad from synaptic to imps driver. I tried this, but instantly
the Trackpad felt less responsive, the cursor slowed down and whatever I
tried to customise it made no odds.</p>

<p>But more importantly the Trackpad buttons still didn’t work.</p>

<p>It is worth noting that even without the Trackpad buttons, you can still
left-click (single finger tap to Trackpad) and right-click (two finger
tap to Trackpad). In reality this is what I shall use in day-to-day
operation, so this is issue is not a show stopper - at least for me.</p>

<p>After much head scratching and trial and error I found that by rebooting
into the original 3.19.0-25 kernel, holding the Shift key down to access
Grub during boot process, not only fixed the Trackpad issue, but it also
resolved the screen corruption issues during the boot process.</p>

<p>As a result, I decided to uninstall the newer Kernel 3.19.0-30, which
contains the problem, along with the mainline kernel and generic LTS
kernel packages. This will prevent any further updates to the
Kernel and is clearly only a short-term fix, but the benefit is a
perfectly working system.</p>

<h2 id="review-of-reported-ubuntu-x1-carbon-gen-3-issues">Review of Reported Ubuntu X1 Carbon Gen 3 Issues</h2>

<p>It is possibly worth reviewing that <a href="http://askubuntu.com/questions/599477/lenovo-x1-carbon-2015-3rd-gen-20-bs-trackpoint-clickpad-and-wifi">Ubuntu
Question</a>
again and the issues raised therein:</p>

<ol>
  <li>Wi-Fi is disconnecting: I have not encountered this problem at all.</li>
  <li>Click-buttons are not working at all: Resolved by returning to kernel
3.19.0-25.</li>
  <li>Vertical Scrolling (with trackpoint and middle button): Not tested
as yet.</li>
  <li>Special Keys (like Brightness): these all work fine for me.</li>
  <li>Screen Characters scrambled on 14.10: not experienced in 14.04 as
yet.</li>
  <li>Trackpoint Sensitivity: I think that was a by-product of the imps
driver - which I have not needed to use.</li>
</ol>

<p>In short, at least for the 3.19.0-25 kernel, this is a fully functioning
Ubuntu laptop!</p>

<h2 id="fingerprint-recognition">Fingerprint Recognition</h2>

<p>I was expecting problems with Fingerprint recognition, but that was not
the case. I simply installed a couple of packages, scanned my
fingerprints and it all worked fine.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo apt-get install fprintd fingerprint-gui
</code></pre></div></div>

<p>There were two surprises: The first was that the fingerprint reader
works for command line use - so no more typing the sudo password -
simply swipe your finger! The second surprise was that it doesn’t appear
to work for the initial LightDM login. The fingerprint scanner flashes a
couple of times and then stops. Given that you only type this once in a
session, this isn’t a huge deal, compared to the number of times you
enter passwords for sudo and the lock screen.</p>

<p>There are <a href="https://bugs.launchpad.net/ubuntu/+source/libfprint/+bug/998367">reports of LightDM not working with encrypted home
directories</a>,
but I am using whole Drive Encryption which I wouldn’t have thought
would have been affected in this way, given that I have already entered
my drive encryption password by this point.</p>

<p>If I manage to solve this problem I will of course update this page. If
you have any solutions please do comment below.</p>

<h2 id="wlan---4g-wireless">WLAN - 4G Wireless</h2>

<p>Lastly, an oddity of the BT Business Direct specification is that this
laptop has a 4G WLAN slot. This was not something I particularly wanted,
but of course now that I have it I have had to order a £6.25 per month
Vodafone 4G Data Plan. Once the SIM card arrives I will provide
feedback.</p>

<h2 id="conclusion">Conclusion</h2>

<p>It is easy to be critical of some of the pitfalls in running Ubuntu on
the X1 Carbon, but the reality, with a few caveats, is that it works
flawlessly. The laptop is a joy to use, the keyboard feels wonderful and
running your fingers across the trackpad is an almost sensuous
experience - I may be getting carried away here, but suffice to say that
this is a very good laptop and it is working beautifully on Ubuntu with
the kernel 3.19.0-25.</p>

<p>With luck the bugs will be resolved and I will be able to update the
kernel in due course!</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Novatech n1410 Ultrabook - 32 Months On</title>
      <link>https://chrisjrob.com/2015/10/01/novatech-n1410-ultrabook-32-months-on/</link>
      <pubDate>Thu, 01 Oct 2015 18:06:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2015/10/01/novatech-n1410-ultrabook-32-months-on</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/nfinityn1411_300.png" align="right" alt="Featured Image">
         
         <p>I received a surprising amount of interest in my <a href="/2013/02/22/the-novatech-nfinity-n1410-review/">Novatech n1410
review</a>
and my subsequent <a href="/2013/11/14/novatech-n1410-nine-months-on/">nine-months on
review</a>.</p>

<p>Over the past 32 months I have continued to be fairly happy with my
Novatech n1410. It has generally been fast enough, reliable enough,
light enough and with a decent battery life. The downsides over the long
term proved to be the keyboard and trackpad which have never been
enjoyable to use and the lack of audio volume. Overall though I would
say that it has lived up to my expectations for a budget Ultrabook.</p>

<!--more-->

<p>But then last night - disaster struck, I was closing my laptop after
working and the case opened up at the right hand hinge. This is not a
heavily-abused laptop - it has never been dropped, I don’t commute, the
laptop is stored in a padded case and treated at all times with respect.
So why would the case fail in this way?</p>

<p><a href="/assets/imag1410.jpg"><img src="/assets/imag1410_300.jpg" class="image-right" alt="Hinge damage" /></a>
<a href="/assets/imag1411.jpg"><img src="/assets/imag1411_300.jpg" class="image-right" alt="Hinge damage" /></a></p>

<p>On closer inspection this would appear to be a natural failure point,
the case after all is only plastic held together by a single screw at
that point and the pressures on that hinge are immense. Indeed I am very
surprised that it did not fail sooner. I think I probably contributed by
being right-handed and probably putting a greater strain typically on
the right hand hinge.</p>

<p>On the one hand, after 32 months I can’t really complain - it has
certainly justified its cost. But I do feel a bit aggrieved that such a
lightly used laptop should have failed within 3 years.</p>

<p>I can hear many of you thinking that 3 years is a long time for a
laptop, but to put it in context my last laptop, a Toshiba Satellite Pro
A300-1GO, was bought in 2008 and is still in daily use after 7 years.</p>

<p>I also feel embarrassed, I was encouraged to buy a ThinkPad, but the
cost deterred me. Realistically a ThinkPad would probably have carried
on working for at least another 2-3 years, and if you divide the cost by
the life expectancy then perhaps the Novatech was a false economy. Well
let’s face facts - it <em>was</em> a false economy. And I wouldn’t have had to
be put up with a grotty keyboard for the past 32 months!</p>

<p>At the moment the Novatech is still working and I can close it just
about - by the insertion of a ruler between the screen and the keyboard,
and putting my weight on that as I lower the screen. I will live with it
for the time being, but will start giving some thought as to my next
laptop.</p>

<p>Possibly even a ThinkPad!</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Linux Microsoft Skype For Business Lync 2013 Client</title>
      <link>https://chrisjrob.com/2015/09/02/linux-microsoft-skype-for-business-lync-2013-client/</link>
      <pubDate>Wed, 02 Sep 2015 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2015/09/02/linux-microsoft-skype-for-business-lync-2013-client</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/pidgin.png" align="right" alt="Featured Image">
         
         <p>I was surprised to learn that Ubuntu 14.04 can talk to Skype for
Business AKA Lync 2013 using the Pidgin Instant Messaging client. The
general steps were:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># apt-get install pidgin pidgin-sipe
</code></pre></div></div>

<p>And then restart Pidgin and add a new Account. The Office Communicator
is the relevant plugin, with the following parameters:</p>

<!--more-->

<ul>
  <li>Protocol: Office Communicator</li>
  <li>Username: Your Office 365 or Skype for Business username - probably
your email address</li>
  <li>Password: Your password is obviously required - and will be stored
unencrypted in the config file, so you may wish to leave this blank
and enter at each login</li>
  <li>Server[:Port]: Leave empty if your set-up has autodiscovery</li>
  <li>Connection type: Auto</li>
  <li>User Agent: UCCAPI/15.0.4420.1017 OC/15.0.4420.1017</li>
  <li>Authentication scheme: TLS-DSK</li>
</ul>

<p>I am unclear why the user agent is required, and whether that will need
to change from time to time or not. So far it has worked fine here.</p>

<p>Unfortunately a few days ago the above set-up stopped working, with
“Failed to authenticate with server”. It seems that you must now use
version 1.20 of the Sipe plugin, which fixes “Office365 rejects RC4 in
TLS-DSK”. As this version was only completed three days ago, it is not
yet available in any of the Ubuntu repositories that I have been able to
find, you will probably have to compile yourself.</p>

<p>Broadly speaking I followed these key stages:</p>

<ol>
  <li>
    <p>Install build tools if you don’t already have them:</p>

    <p><code class="language-plaintext highlighter-rouge">sudo apt-get install build-essential</code></p>
  </li>
  <li>
    <p>Install checkinstall if you don’t already have it:</p>

    <p><code class="language-plaintext highlighter-rouge">sudo apt-get install checkinstall</code></p>
  </li>
  <li>
    <p><a href="http://sourceforge.net/projects/sipe/files/sipe/pidgin-sipe-1.20.1/pidgin-sipe-1.20.1.tar.gz/download">Download source files</a>.</p>
  </li>
  <li>
    <p>Extract source:</p>

    <p><code class="language-plaintext highlighter-rouge">tar -xvvzf pidgin-sipe-1.20.1.tar.gz</code></p>
  </li>
  <li>
    <p>Change into source directory:</p>

    <p><code class="language-plaintext highlighter-rouge">cd pidgin-sipe-1.20.1</code></p>
  </li>
  <li>
    <p>Read carefully the README file in the source directory.</p>
  </li>
  <li>
    <p>Install dependencies listed in the README:</p>

    <p><code class="language-plaintext highlighter-rouge"># apt-get install libpurple-dev libtool intltool pkg-config libglib2.0-dev libxml2-dev libnss3-dev libssl-dev libkrb5-dev libnice-dev libgstreamer0.10-dev</code></p>
  </li>
</ol>

<p>These dependencies may change over time, and your particular
requirements may be different from mine, so please read the README and
that information should take precedence.</p>

<p>Lastly, as an ordinary user, you should now be able to compile. If it
fails at any stage, simply read the error and install the missed
dependency.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ ./configure --prefix=/usr
$ make
$ sudo checkinstall
</code></pre></div></div>

<p>I found checkinstall was pre-populated with sensible settings, and I was
able to continue without making any changes. Once complete a Debian
package will have been created in the current directory, but it will
have already been installed for you.</p>

<p>For some reason I found that at this stage Pidgin would no longer run,
as it was now named <code class="language-plaintext highlighter-rouge">/usr/bin/pidgin.orig</code> instead of <code class="language-plaintext highlighter-rouge">/usr/bin/pidgin</code>, I
tried removing and reinstalling pidgin but to no avail. In the end I
created a symlink (<code class="language-plaintext highlighter-rouge">ln -s /usr/bin/pidgin.orig /usr/bin/pidgin</code>), but you
should not do this unless you experience the same issue. If you know the
reason for this I would be delighted to receive your feedback, as this
isn’t a problem that I have come across before.</p>

<p>Restarting Pidgin and the Office Communicator sprung into life once
more. Sadly I would imagine that this won’t be the last time this plugin
will break, such are the vagaries of connecting to closed proprietary
networks.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Affordable Granite</title>
      <link>https://chrisjrob.com/2015/03/17/affordable-granite/</link>
      <pubDate>Tue, 17 Mar 2015 19:30:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2015/03/17/affordable-granite</guid>
      <description>
       <![CDATA[
         
         <p>When we moved into our new house one irritation was that the kitchen was
not really bad enough to warrant replacing, but the laminate worktop was
looking tired and was really dragging the kitchen down. We decided to
see if we could replace our worktop with a new granite one.</p>

<!--more-->

<p>The first quote we received was three times what we expected, and we
could have had a new kitchen for very little more. The second quote was
more reasonable, but still 50% more than we were prepared to spend. Some
desperate Googling came up with <a href="http://www.affordablegranite.co.uk/" title="Affordable Granite">Affordable
Granite</a>.</p>

<p>There were other similar sites around, but some Googling revealed many
positive customer reviews for Affordable Granite, and so we made
contact. The quote was still over our initial budget, but far less than
the other quotes received and we accepted their quote.</p>

<p>Well to cut a long story short, our new kitchen worktop looks fabulous
and was not only less expensive than the other quotes that we received,
had fewer compromises (decent thickness granite, included a new
under-mounted sink and an additional breakfast bar), and was completed
in a single week when other companies were suggesting two weeks. Better
still our hob and sink were kept operational for all but two days, when
one supplier told us that they would be disconnected at the beginning
and reconnected at the end.</p>

<p>The actual installation did not go completely smoothly, thanks to our
kitchen units being uneven and the adjustable feet having seized up,
with the result that we had workmen on site for longer than expected.
But at all times this remained their problem and not ours and they did
everything possible to ensure that our kitchen was completed on-time.</p>

<p>In short we are delighted with our new kitchen and very happy with the
service received from Affordable Granite.</p>

       ]]>
      </description>
    </item>
    
    <item>
      <title>Upgrading Ubuntu 12.04 To 14.04 With Limited Bandwidth</title>
      <link>https://chrisjrob.com/2014/09/04/upgrading-ubuntu-12-04-to-14-04-with-limited-bandwidth/</link>
      <pubDate>Thu, 04 Sep 2014 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2014/09/04/upgrading-ubuntu-12-04-to-14-04-with-limited-bandwidth</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/ubuntu-1404-desktop.png" align="right" alt="Featured Image">
         
         <p>Upgrading Ubuntu at work can make you rather unpopular, as the Internet bandwidth
is fully utilised downloading all the updates to packages you have long
since forgotten that you installed.</p>

<p>It also takes time, time that you should be working rather
than upgrading your computer.</p>

<p>For these reasons I like to trickle download the upgrade over a day and
only perform the actual upgrade once all the packages are ready,
typically the following morning.</p>

<!--more-->

<p>This is how I performed my low-bandwidth upgrade…</p>

<p><strong>N.B. This is not the official or recommended way of upgrading between
Ubuntu versions. Specifically my method involves manually disabling some
repositories and updating others to the new release. This would normally
be done by the do-release-upgrade program itself. It works for me, but
please do be aware that you are deviating slightly from the
official method.</strong></p>

<p> </p>

<h2 id="step-1-disable-3rd-party-repositories">Step 1: Disable 3rd Party Repositories</h2>

<p>Launch the Ubuntu Software Centre and from the menu select <strong>Edit</strong>
followed by <strong>Software Sources</strong>. Under the <strong>Other Software</strong> tab
please untick all active repositories.</p>

<p>(This step should in any case be done automatically by step 4).</p>

<h2 id="step-2-update-repositories">Step 2: Update Repositories</h2>

<p>Edit <code class="language-plaintext highlighter-rouge">/etc/apt/sources.list</code> and replace all occurrences of  ”precise”
with “trusty”. If you are of a brave disposition, the following command
should do this for you:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo sed -i.bak 's/precise/trusty/g' sources.list
</code></pre></div></div>

<p>(This will create a copy of sources.list to sources.list.bak, in case
you wish to reverse this.)</p>

<h2 id="step-3-download-packages">Step 3: Download Packages</h2>

<p>Still in the terminal, type:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo apt-get updatesudo apt-get -o Acquire::http::Dl-Limit=64 -d dist-upgrade
</code></pre></div></div>

<p>The 64 will limit the bandwidth to 64 Kbps, please adjust to suit your
available bandwidth. The “-d” will instruct apt-get to merely download
the packages and not to install them.</p>

<p>I believe this stage can be aborted with Ctrl+C at any time and run
again, until such time as all the required packages are downloaded.</p>

<h2 id="step-4-upgrade">Step 4: Upgrade</h2>

<p>Still in the terminal, I tend to use GNU Screen for extra resilience,
type:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo do-release-upgrade
</code></pre></div></div>

<h2 id="conclusion">Conclusion</h2>

<p>I am typing this on my newly upgraded 14.04 installation, after a clean
and trouble-free reboot and an entirely fault-free upgrade.</p>

<p>The truly astonishing aspect to an upgrade is the fact that the computer
remains largely usable throughout. I lost my fonts briefly in one
application during Step 4, but otherwise I was able to work normally. It
didn’t even seem to be slowing my computer down greatly, although this
is a fairly powerful workhorse, so your mileage may vary.</p>

<p>Please do comment, if you feel I’ve left anything out in the above, or
indeed if you have found it useful.</p>

<p>Good luck with your upgrade.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Dillinger - The HTML5 Markdown Editor</title>
      <link>https://chrisjrob.com/2014/08/09/dillinger/</link>
      <pubDate>Sat, 09 Aug 2014 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2014/08/09/dillinger</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/dillinger.png" align="right" alt="Featured Image">
         
         <p>I thought I loved
<a href="http://en.wikipedia.org/wiki/Markdown" title="Read about markdown on Wikipedia">markdown</a>.
I thought <a href="http://dillinger.io">Dillinger</a> (an HTML5 Markdown editor)
looked remarkable. So I downloaded and installed it on an Ubuntu 14.04.1
LTS server:</p>

<!--more-->

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ git clone https://github.com/joemccann/dillinger.git dillinger
$ cd dillinger
$ npm i -d
$ mkdir -p public/files/{md,html,pdf}
$ sudo apt-get install nodejs
$ sudo ln -s /usr/bin/nodejs /usr/bin/node
$ npm install express
$ npm install phantomjs
$ cd dillinger
$ node app
</code></pre></div></div>

<p>It looks beautiful and works perfectly and even includes the ability to
export to PDF. But it seems that, for me at least, markdown without
<a href="http://www.vim.org/">Vim</a> just isn’t the same.</p>

<p>Shame that.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Howto | Spellcheck in irssi</title>
      <link>https://chrisjrob.com/2014/07/09/irssi-spellchecking/</link>
      <pubDate>Wed, 09 Jul 2014 11:34:11 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2014/07/09/irssi-spellchecking</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/irssi.png" align="right" alt="Featured Image">
         
         <p>This page explains how to set up spelling in Irssi on Debian Lenny.  It assumes that you have already installed irssi.</p>

<h2 id="install-packages">Install packages</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># apt-get install aspell-en libaspell-dev aspell libtext-aspell-perl
</code></pre></div></div>

<p>Don’t forget to change the localisation to match your own locale.</p>

<!--more-->

<h2 id="create-users-scripts-folder">Create user’s scripts folder</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ mkdir -p */.irssi/scripts/autorun
</code></pre></div></div>

<h2 id="download-the-irssi-script">Download the irssi script</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ cd */.irssi/scripts
$ wget http://www.mimir.ch/mimir/irssi/files/aspell_complete.pl
$ cd autorun
$ ln -s ../aspell_complete.pl
</code></pre></div></div>

<h2 id="restart-irssi">Restart irssi</h2>

<p>Lastly, either restart IRSSI, or, in type:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/script load ~/.irssi/scripts/autorun/aspell_complete.pl
</code></pre></div></div>

<p>You should see aspell loading and your locale mentioned.</p>

<h2 id="testing">Testing</h2>

<p>How the spelling functionality works is that you enter a word and then, before pressing spacebar, you hit the [TAB] key, whereon the preceding word will be spellchecked.</p>

<h2 id="troubleshooting">Troubleshooting</h2>

<p>If you have not installed the correct aspell localisation, then you may find that irssi segfaults.</p>

<h2 id="references">References</h2>

<ul>
  <li>http://www.mimir.ch/mimir/irssi/</li>
  <li>http://www.eckrall.co.uk/?page_id=55</li>
</ul>

       ]]>
      </description>
    </item>
    
    <item>
      <title>HP 255 G1 Laptop With Ubuntu</title>
      <link>https://chrisjrob.com/2014/07/07/hp-255-g1-laptop-with-ubuntu/</link>
      <pubDate>Mon, 07 Jul 2014 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2014/07/07/hp-255-g1-laptop-with-ubuntu</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/ubuntu-laptop-000.jpg" align="right" alt="Featured Image">
         
         <p>At work I needed a cheap laptop for a computer-illiterate user. Giving
them Windows, would have meant that they would have had to
keep up-to-date with Windows Updates, with all the potential issues that
would cause, along with the need for malware protection. It would also
have pushed up the cost, a laptop capable of pushing Windows along
reasonably decently, would have cost a few hundred pounds at least.</p>

<!--more-->

<p>Generally I would just have purchased a low-end Lenovo laptop and
installed <a href="http://ubuntu.com" title="Ubuntu">Ubuntu</a> onto it, but I was aware
that Ebuyer had recently launched an 
<a href="http://www.ebuyer.com/620311-hp-255-g1-laptop-with-ubuntu-h6q17ea-abu" title="HP 255 G1 Laptop with Ubuntu">HP255 G1 Laptop with Ubuntu pre-installed</a>
for £219.99 inc. vat (just £183 if you can reclaim the VAT).</p>

<p>Buying pre-installed with Ubuntu afforded me the comfort of knowing that
everything would work. Whilst Ubuntu generally does install very easily,
there are sometimes hassles in getting some of the function buttons
working, for brightness, volume etc. Knowing that these issues would all
be sorted, along with saving me the time in having to install Ubuntu,
seemed an attractive proposition.</p>

<h2 id="unboxing">Unboxing</h2>

<p><img src="/assets/ubuntu-laptop-002-300.jpg" class="image-right" alt="Windows 8 Instructions" /></p>

<p>My first impressions were good, the laptop comes with a laptop case and the
laptop itself looks smart enough for a budget machine. An Ubuntu sticker,
instead of the usual Windows sticker, was welcome, although the two sticky
marks where previous stickers had been removed were less so.  Still, at least
they <strong>had</strong> been removed.</p>

<p>Whilst we are on the subject of Windows’ remnants - the Getting Started
leaflet was for Windows 8 rather than Ubuntu. Most Ubuntu users won’t
care, but this is a poor attention to detail and, if this laptop is to
appeal to the mass market, then it may cause confusion.</p>

<h2 id="first-boot">First Boot</h2>

<p>Booting up the laptop for the first time gave me an “Essential First
Boot Set-up is being performed. Please wait.” message. I did wait and
for quite a considerable time - probably a not dissimilar time to
installing Ubuntu from scratch; I couldn’t help but suspect that was
precisely what was happening. Eventually I was presented with a EULA
from HP, which I had no choice but to accept or choose to re-install
from scratch. Finally I was presented with an Ubuntu introduction, which
I confess I skipped; suffice to say the new user was welcomed to Ubuntu
with spinny things.</p>

<p>The first thing to note is that this is Ubuntu 12.04, the previous LTS
(Long Term Support release). This will be supported until 2017, but it
is a shame that it didn’t have the latest LTS release - Ubuntu 14.04.
Users may of course choose to upgrade.</p>

<p><img src="/assets/ubuntu-laptop-003-300.jpg" class="image-left" alt="Ubuntu sticker" /></p>

<p>Secondly, the wireless was slow to detect the wireless access points on the
network. Eventually I decided to restart network-manager, but just as I was
about to do so, it suddenly sprang into life and displayed all the local access
points. Once connected, it will re-connect quickly enough, but it does seem to
take a while to scan new networks. Or perhaps I am just too impatient.</p>

<p>Ubuntu then prompted to run some updates, but the updates failed, as
“91.189.88.153” was said to be unreachable, even though it was
ping-able. The address is owned by
<a href="http://www.canonical.com/" title="Canonical - the Company behind Ubuntu">Canonical</a>,
but whether this was a momentary server error, or some misconfiguration
on the laptop, I have no idea.</p>

<p>This would have been a major stumbling block for a new Ubuntu
user. Running apt-get update and apt-get dist-upgrade worked fine,
typing Ctrl+Alt+t to bring up the terminal and then typing:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo apt-get update
$ sudo apt-get dist-upgrade
</code></pre></div></div>

<p>I notice that this referenced an HP-specific repository doubtless
equipped with hardware specific packages:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>http://oem.archive.canonical.com/updates/ precise-oem.sp1 public
http://hp.archive.canonical.com/updates precise-stella-anaheim public
</code></pre></div></div>

<p>I assume that adding this latter repository would be a good idea if
purchasing a Windows version of this laptop and installing Ubuntu.</p>

<h2 id="hardware">Hardware</h2>

<p>This is a typical chunky laptop.  But, if you were expecting a sleek
Air-like laptop for £220, then you need to take a reality shower. What
it is, is a good-looking, well-made, traditional laptop from a quality
manufacturer. At this price, that really should be enough.</p>

<p>Ubuntu “System Details” reveals that this is running an “AMD E1-1500 APU
with Radeon HD Graphics x 2”, running 64-bit with a 724GB drive and
3.5GiB RAM. That would appear to be a lower spec processor than is
typically available on-line for an HP 255 G1 running Windows; which
generally seem to have 1.75Ghz processors (albeit at twice the price).</p>

<p>The great news was that, as expected, all the buttons worked. So what?
Well, it may seem like a trivial matter whether, for example, pressing
Fn10 increases the volume or not, but I think many of us have the
experience of spending inordinate amounts of time trying to get such
things to work properly. And buttons that don’t work, continue to
irritate until the day you say goodbye to that machine. The fact that
everything works as it should is enormously important and is the primary
reason why buying Ubuntu pre-installed is such a big deal.</p>

<p>The keyboard and trackpad seem perfectly good enough to me, certainly
much better than on my
<a href="http://chrisjrob.com/tag/novatech/" title="Posts about Novatech">Novatech ultrabook</a>; although
<a href="http://www.amazon.co.uk/HP-E1-1500-Processor-Integrated-Graphics/product-reviews/B00K2YUC2K/ref=dpx_acr_txt?showViewpoints=1" title="Amazon reviews">not everyone seems to like
them</a>.
In particular, it is good to have a light on the caps lock key.</p>

<p>I have not tested battery life, but, as this is usually the first thing
to suffer in an entry-level machine, I would not hope for much beyond a
couple of hours.</p>

<p>For other details on hardware, please refer to <a href="http://www.ebuyer.com/620311-hp-255-g1-laptop-with-ubuntu-h6q17ea-abu" title="HP 255 G1 Laptop with Ubuntu">the product
information</a> and
<a href="http://www.reevoo.com/partner/EBU/620311" title="HP 255 G1 Laptop with Ubuntu">read more reviews
here</a>.</p>

<h2 id="performance">Performance</h2>

<p>Booting up takes around 45 seconds and a further 20 seconds to reach the
desktop. That is quite a long time these days for Ubuntu, but fast
enough I would imagine for most users and considerably faster than it
takes Windows to reach a usable state, at least in my experience.</p>

<p>Being that bit slower to boot, Suspend becomes more important: Closing
the lid suspended the laptop and opening it again brought up the lock
screen password prompt almost immediately. Repeated use showed this to
work reliably.</p>

<p>As to system performance, well frankly this is not a fast laptop. Click
on Chromium, post boot, and it takes about 9 seconds to load;
LibreOffice takes about 6 seconds to load. Even loading System Settings
takes a second or two. Once you’ve run them once, after each boot, they
will load again in less than half the time. Despite the slow
performance, it is always perfectly usable, and is absolutely fine for
email and web-browsing applications.</p>

<p>The other thing to remember is that this will be the performance you
should be able to expect throughout its life - i.e. it will not slow
down even more as it gets older. Windows users typically expect their
computers to slow down over time, largely because of the different way
in which system and application settings are stored in Windows. Ubuntu
does not suffer from this problem, meaning that a 5-year-old Ubuntu
installation should be working as fast as it did when it was first
installed.</p>

<h2 id="conclusions">Conclusions</h2>

<p>I struggle to think of what else you could buy that provides a full
desktop experience for £220. And it isn’t even some cheap unbranded
laptop from the developing world. Sure, it isn’t the fastest laptop
around, but it is perfectly fast enough for web, email and office
documents. And the fact that you can expect it to continue working, with
few, if any, worries about viruses, makes it ideal for many users. It
certainly deserves to be a success for HP, Ubuntu and Ebuyer.</p>

<p>But, whilst this low-price, low-power combination was ideal for me on
this occasion, it is a shame that there are no other choices available
pre-installed with Ubuntu. I wonder how many newcomers to Ubuntu will
come with the belief that Ubuntu is slow, when in reality it is the
low-end hardware that is to blame?</p>

<p>Please HP, Ubuntu and Ebuyer - give us more choice.</p>

<p>And Lenovo, please take note - you just lost a sale.</p>

<p>For more reviews please visit
<a href="http://www.reevoo.com/partner/EBU/620311" title="HP 255 G1 with Ubuntu">Reevo</a>.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Go Kart Repair</title>
      <link>https://chrisjrob.com/2014/06/08/go-kart-repair/</link>
      <pubDate>Sun, 08 Jun 2014 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2014/06/08/go-kart-repair</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/gokart-08.jpg" align="right" alt="Featured Image">
         
         <p>At a dinner party a few months ago, the host asked if I could repair
their go-kart, using my RepRap 3D Printer. Apparently the steering wheel
had broken off and the Chinese supplier refused to supply only the
steering wheel. I accepted the challenge, but did warn that PLA was not
the ideal plastic for such a repair, being somewhat brittle.</p>

<!--more-->

<p>I decided to approach the problem by removing all the broken plastic
from the back of the steering wheel, and <a href="http://www.fabfabbers.com/models/id/203/gokart-repair-by-chrisjrob" title="FabFabbers - Go-kart repair">designing a new
part</a>
to slot over the steering column nut and bolt onto the remains of the
steering wheel.</p>

<table>
  <tr>
    <td><img src="/assets/gokart-01.jpg" /></td>
    <td><img src="/assets/gokart-02.jpg" /></td>
  </tr>
  <tr>
    <td><img src="/assets/gokart-04.jpg" /></td>
    <td><img src="/assets/gokart-05.jpg" /></td>
  </tr>
  <tr>
    <td><img src="/assets/gokart-06.jpg" /></td>
    <td><img src="/assets/gokart-07.jpg" /></td>
  </tr>
  <tr>
    <td><img src="/assets/gokart-08.jpg" /></td>
    <td><img src="/assets/gokart-09.jpg" /></td>
  </tr>
</table>

<p>Having designed the part, I <a href="https://plus.google.com/112653355770650909703/posts/bauW56mMF9p" title="Google+ Post">posted it to
Google+</a>
for advice. <a href="https://plus.google.com/103153642711282733992">Wildseyed
Cabrer</a> suggested that I
do away with the buttresses
of <a href="https://github.com/chrisjrob/gokart-repair/tree/v1">v1</a> and instead
design a solid cylinder. Of particular interest was his suggestion to
use pinholes around the nut hole, to force the slicing program to add
reinforcement. <a href="https://plus.google.com/+AndreasThorn1">Andreas
Thorn</a> reminded me to use the
$fn = 6 for the chamfering of the nut hole, as I had for the nut hole
itself. The Google+ 3D printing community really is amazing - thank you.</p>

<p>Unfortunately printing the item was much delayed by the fact that I did
not have the precise measurements. As always I had designed the item to
be fully parametric; so that the exact measurements didn’t matter until
I came to print. Unfortunately the owners of the go-kart did not feel
able to accurately take the measurement; so instead the go-kart had to
be delivered to our house.</p>

<p>Having measured and printed the final part, I was delighted that it all
worked first time. The only issue was that it was very difficult to turn
the wheel and I was concerned that the part would not indeed be strong
enough. I noticed that all four tyres were completely flat, so much so
that the tyre profile was concave rather than convex. This was clearly
putting a huge strain on the steering and may well have been a
contributory factor in the original breakage. Having pumped up all the
tyres the steering was very much easier.</p>

<p>The repair complete, the go-kart was delivered back to the owners. I
have no idea whether the repair will last long enough to be worthwhile,
but providing it lasts a reasonable time, it can of course be simply
reprinted. We could also consider having it professionally printed in a
stronger plastic.</p>

<ul>
  <li><a href="http://www.fabfabbers.com/models/id/203/gokart-repair-by-chrisjrob" title="FabFabbers - Go-kart repair">View design at
FabFabbers</a></li>
</ul>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Soft Shackles</title>
      <link>https://chrisjrob.com/2014/05/11/soft-shackles/</link>
      <pubDate>Sun, 11 May 2014 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2014/05/11/soft-shackles</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/soft-shackle.jpg" align="right" alt="Featured Image">
         
         <p>I’ve been looking into the best method for attaching sheets to the
foresail. Metal shackles are dangerous and can rip holes in sails,
bowlines are unreliable knots when not under pressure, and a continuous
line looped in the middle through the clew is likely to compress the
clew over time.</p>

<!--more-->

<p><a href="/assets/soft-shackle3.gif"><img src="/assets/soft-shackle3.gif" alt="Soft Shackle Animation" /></a></p>

<p>The ideal solution appears to be to splice soft eyes into the end of
each sheet, and attach them to the clew with a “soft shackle”. Being a
lover of knots, I thought I’d give it a go and this was my first
attempt. The surprising thing was the cost - I used 5mm Marlow Excel
Vectram 12, at a cost of £5.91 per metre, which is enough to make a
single soft shackle. The reason is the strength 5mm Vectram has a
similar strength to 10mm braid on braid, 2400kgs breaking strain.</p>

<p>I followed the instructions in <a href="http://www.colligomarine.com/gallery-documents/documents/colligo-how-to-splice-videos" title="Colligo Marine: Soft Shackles">this
video</a>,
which resulted in a 5 inch loop, too short for the intended purpose. A
second attempt with a 7 inch loop looks long enough; although I have not
yet tried it on the boat. The next step will be to splice soft eyes into
each sheet.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Visual Eyes Microwave Oven Repair</title>
      <link>https://chrisjrob.com/2014/05/01/visual-eyes-microwave-oven-repair/</link>
      <pubDate>Thu, 01 May 2014 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2014/05/01/visual-eyes-microwave-oven-repair</guid>
      <description>
       <![CDATA[
         
         <p>Our built-in De-Dietrich microwave over has been broken for weeks.
Initially the door catch had broken, but a replacement catch DIY-fitted
had not fixed the problem.</p>

<p>De-Dietrich’s service agent wanted £195 to come out and fix the oven - a
ludicrous price for a 13 year old microwave. Other appliance repair
centres would either not repair microwave ovens at all, or particularly
excluded De-Dietrich.</p>

<!--more-->

<p>Fortunately one such appliance repair person recommended that we contact
<a href="http://www.visual-eyes.eu/Pages/CommercialMicrowaveRepairs.aspx" title="Visual Eyes">Visual Eyes in Farnham,
Surrey</a>.
We did so, and the next day a nice man came and fixed our oven for £40.</p>

<p>Great service, thank you Visual Eyes.</p>

<h6 id="nb-if-you-received-this-post-in-your-rss-aggregator-and-would-rather-not-have-done-then-please-be-assured-that-such-posts-will-be-rare-if-youd-rather-not-take-the-risk-then-i-do-also-maintain-separate-rss-feeds-for-technology-and-personal-and-even-sub-categories-such-as-sailing-and-linux-just-follow-the-relevant-menu-option-from-my-home-page-and-see-the-rss-feed-in-the-address-bar">N.B. If you received this post in your RSS aggregator and would rather not have done, then please be assured that such posts will be rare. If you’d rather not take the risk, then I do also maintain separate RSS feeds for Technology and Personal and even sub-categories such as Sailing and Linux. Just follow the relevant menu option from my home page and see the RSS feed in the address bar.</h6>

       ]]>
      </description>
    </item>
    
    <item>
      <title>PDFTK The PDF Toolkit</title>
      <link>https://chrisjrob.com/2014/03/24/pdftk-the-pdf-toolkit-2/</link>
      <pubDate>Mon, 24 Mar 2014 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2014/03/24/pdftk-the-pdf-toolkit-2</guid>
      <description>
       <![CDATA[
         
         <p><a href="http://www.pdflabs.com/docs/pdftk-cli-examples/" title="PDFTK - The PDF Toolkit">PDFTK - The PDF
Toolkit</a></p>

<p>I have long been a keen user of pdftk, the PDF Toolkit, but am
frequently surprised when people have not heard of it. True, it is a
command line tool, but it is easy to incorporate into service menus,
scripts etc and doubtless there is a GUI front-end for it somewhere (in
fact there is one linked to from the above page).</p>

<!--more-->

<p>Clearly a blog post is called for, but, whilst you wait for a post that
will never arrive, <a href="http://www.pdflabs.com/docs/pdftk-cli-examples/" title="PDFTK - The PDF Toolkit">here is a
link</a>
to some examples that should open your eyes to what is possible with
pdftk.</p>

<p>To get started on a Debian-based system:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo apt-get install pdftk
$ man pdftk
</code></pre></div></div>

<p>Enjoy.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Convert OpenVPN OVPN Files for use in Network Manager</title>
      <link>https://chrisjrob.com/2014/03/18/convert-openvpn-ovpn-files-for-use-in-network-manager/</link>
      <pubDate>Tue, 18 Mar 2014 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2014/03/18/convert-openvpn-ovpn-files-for-use-in-network-manager</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/openvpn.png" align="right" alt="Featured Image">
         
         <p>Anyone who has enjoyed the dubious benefits of working with IPSEC will
find <a href="http://openvpn.net/" title="OpenVPN">OpenVPN</a> a delight, but what do you
do with your client.ovpn file once you have it?</p>

<p>If you spend most of your time in a terminal anyway, then I would
suggest just putting all your client.ovpn files into <code class="language-plaintext highlighter-rouge">~/.openvpn</code>,
renaming them in some appropriate way, and then using them simply by
typing:</p>

<!--more-->

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo openvpn client.ovpn
</code></pre></div></div>

<p>If, on the other hand, you live in a more graphically orientated world,
then you might like to integrate them into Network Manager. Sadly, the
Import feature in Ubuntu does not work, at least in the versions of
Ubuntu that I have used, and you have to make a few changes first.</p>

<p>Firstly, I would always create a hidden directory into which to store
your client files:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ mkdir ~/.openvpn
$ cd ~/.openvpn
$ mv ~/Downloads/client.ovpn ./
</code></pre></div></div>

<p>Secondly, you need to ensure that you have installed openvpn for
network-manager:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo apt-get install network-manager-openvpn-gnome
</code></pre></div></div>

<p>Thirdly, we need to extract some data out of the client.ovpn, and for
this I followed <a href="http://howto.praqma.net/ubuntu/vpn/openvpn-access-server-client-on-ubuntu" title="OpenVPN Access Server Client on Ubuntu">these
instructions</a>,
which I include below in case of link breakage:</p>

<ol>
  <li>Open client.ovpn in your favour text editor and copy the lines
between the &lt;ca&gt; tags into a new file named client.ca.</li>
  <li>Remove &lt;ca&gt; section including tags.</li>
  <li>Now copy the lines between the &lt;cert&gt; tags into a new file
named client.crt.</li>
  <li>Remove &lt;cert&gt; section including tags.</li>
  <li>Now copy the lines between &lt;key&gt; tags into a new file
named client.key.</li>
  <li>Remove &lt;key&gt; section including tags.</li>
  <li>Now copy the lines between &lt;tls-auth&gt; tags into a new file named
client.tls.</li>
  <li>Remove &lt;tls-auth&gt; section including tags.</li>
  <li>Remove the line “key-direction 1”.</li>
  <li>Insert the following text above the line # —–BEGIN RSA
SIGNATURE—– :</li>
</ol>

<!-- -->

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ca client.ca
cert client.crt
key client.key
tls-auth client.tls 1
</code></pre></div></div>

<p>Finally, save and close all the files and check that you now have all
the above files sitting happily in your ~/.openvpn directory.</p>

<p>Go to Network Manager -&gt; Edit Connections -&gt;VPN and click Import,
browse to the modified client.ovpn import that file.</p>

<p>Enter vpn username and password if prompted.</p>

<p>On the VPN page, select Advanced and on the General Tab, uncheck the
first option, “Use custom gateway.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Oh Vodafone</title>
      <link>https://chrisjrob.com/2014/01/14/oh-vodafone/</link>
      <pubDate>Tue, 14 Jan 2014 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2014/01/14/oh-vodafone</guid>
      <description>
       <![CDATA[
         
         <p><em>Oh Vodafone, please explain to me,</em><br />
<em>how a business based on technology,</em><br />
<em>can be so bad at web-based stuff?</em><br />
<em>Really, downloading a bill should not be so tough!</em></p>

<!--more-->

<p><em>I understand that I must now log on,</em><br />
<em>and pasting your password can no longer be done,</em><br />
<em>but why does it have to take me all day,</em><br />
<em>to reach what could have been one click away?</em></p>

<p><em>The fact that the invoice is live generated,</em><br />
<em>is clever technology, though that could be debated,</em><br />
<em>but would it not be easier all round,</em><br />
<em>if the invoice was sitting ready to bring down</em></p>

<p><em>I would not mind if the system was quick,</em><br />
<em>but I click and I wait and I wait and I click.</em><br />
<em>So next time you think of a clever solution,</em><br />
<em>think, will it be quick and will it be easy?</em></p>

<p><em>Unable to succesfully[sic] process request.</em><br />
<em>ERR-010: Request timeout.</em><br />
<em>Contact the application system administrator or Help Desk.</em><br />
<em>Sigh.</em></p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Crontab Header</title>
      <link>https://chrisjrob.com/2014/01/04/crontab-header/</link>
      <pubDate>Sat, 04 Jan 2014 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2014/01/04/crontab-header</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/crontab.png" align="right" alt="Featured Image">
         
         <p>Very early on in my Linux life, I came across this suggested header for
crontab and I’ve used it ever since. So much so that I am always
slightly thrown when I come across a crontab without it! No, you don’t
need it, yes the standard commented header works just fine, but, if like
me you prefer things neatly lined up, then this might suit you:</p>

<!--more-->

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>MAILTO=
#   _________________________ 2. Minute - Minutes after the hour (0-59)
#  |
#  |      ______________________ 2. Hour - 24-hour format (0-23).
#  |     |
#  |     |      ___________________ 3. Day - Day of the month (1-31)
#  |     |     |
#  |     |     |      ________________ 4. Month - Month of the year (1-12)
#  |     |     |     |
#  |     |     |     |     ______________5. Weekday - Day of the week. (0-6, 0 indicates Sunday)
#  |     |     |     |    |
#__|_____|_____|_____|____|___Command_____________________________________________________________
</code></pre></div></div>

<p>And if you recognise this as your’s, then thank you!</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>FreeNX NX Startup Session Failed</title>
      <link>https://chrisjrob.com/2014/01/02/freenx-nx-startup-session-failed/</link>
      <pubDate>Thu, 02 Jan 2014 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2014/01/02/freenx-nx-startup-session-failed</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/freenx.png" align="right" alt="Featured Image">
         
         <p>Occasionally users are unable to connect to our FreeNX server, they
report an error “Startup Session Failed”. Clicking on “Detail” shows
that it is unable to find the server session file.</p>

<p>Searching for solutions suggested a number of options, including
removing the server <code class="language-plaintext highlighter-rouge">/tmp/.X1\*\*\*-lock</code> files, or simply removing FreeNX
and installing NoMachine’s NXServer instead.</p>

<!--more-->

<p>In the end the solution proved remarkably simple:</p>

<p>On the server run:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># nxserver --list
NX&gt; 100 NXSERVER - Version 1.5.0-60 OS (GPL)
NX&gt; 127 Sessions list:
Display Username Remote IP Session ID
------- --------------- --------------- --------------------------------
1001 chris 192.168.1.52  1BC6B4B9C3CF4C2B6BD7137AC7FDE5DA
1000 helen -             87443D16622EC0751551685A93DD023B
1002 michelle 192.168.1.102 DBAC430C8AA8B414A5E2228970E2BBDC
NX&gt; 999 Bye
</code></pre></div></div>

<p>The session with no remote IP is for a session that has not ended
properly. Terminate this session and users should be able to log in once
again:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># nxserver --terminate helen
</code></pre></div></div>

<p><strong>Update:</strong> This problem was little more complex than I at first
thought, all I had really done is allow one more user to login before
the issue re-occurred. You also need to check is that there are no old
lock files in /tmp/.X11-unix:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># cd /tmp/.X11-unix
#ls -al
/tmp/.X11-unix# ls -al
total 316
drwxrwxrwt   2 root root      4096 2014-01-02 12:48 .
drwxrwxrwt 375 root root    315392 2014-01-02 12:48 ..
srwxrwxrwx   1 root root         0 2013-07-24 17:04 X0
srwxrwxrwx   1 helen helen       0 2014-01-02 10:32 X1000
srwxrwxrwx   1 chris chris       0 2014-01-02 11:42 X1001
srwxrwxrwx   1 michelle michelle 0 2014-01-02 08:52 X1002
srwxrwxrwx   1 terry  terry      0 2013-09-05 15:05 X1003
</code></pre></div></div>

<p>Notice that there is a .X11-unix file for terry X1003, but no
corresponding user shown in nxserver –list above. Remove this spurious
file and it should now work.</p>

<p>It would also make sense to ensure that the correct /tmp/.X1***-lock
files are present:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># cd /tmp
# ls -al | grep -i X.*-lock
-rw------- 1 nx nx              0 2014-01-02 10:32 .nX1000-lock
-rw------- 1 nx nx              0 2014-01-02 11:42 .nX1001-lock
-rw------- 1 nx nx              0 2014-01-02 08:52 .nX1002-lock
-r--r--r-- 1 helen helen       11 2014-01-02 10:32 .X1000-lock
-r--r--r-- 1 chris chris       11 2014-01-02 11:42 .X1001-lock
-r--r--r-- 1 michelle michelle 11 2014-01-02 08:52 .X1002-lock
</code></pre></div></div>

<p>You should expect to see  the correct number of lock files for your user
sessions,  in my case these required no changes, but if there had been
spurious files, removing them would seem sensible.</p>

<p>If this has been helpful to you, please do consider rating this post or
adding a comment!</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>iredmail Open Source Mailserver</title>
      <link>https://chrisjrob.com/2013/11/27/iredmail-open-source-mailserver/</link>
      <pubDate>Wed, 27 Nov 2013 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2013/11/27/iredmail-open-source-mailserver</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/dashboard_300.png" align="right" alt="Featured Image">
         
         <p>Whilst the world seems to be moving email to “The Cloud”, rightly or
wrongly I remain reluctant to give up the control of our own mailserver.
For over ten years now we have been using a combination of the following
open source applications:</p>

<ul>
  <li>Postfix MTA with Amavis + Spamassassin</li>
  <li>Dovecot IMAP server</li>
  <li>OpenLDAP</li>
</ul>

<!--more-->

<p>Whilst these are super-stable and bulletproof solutions, the main issue
with such a solution is the administration - setting up users, changing
passwords, vacation notifications, sieve etc. It is also a lonely
business administering a custom mailserver, where set-up is never going
to be completely standard.</p>

<p>A couple of years ago I migrated to a new mailserver, on which I
installed <a href="http://iredmail.org/" title="iRedMail">iRedMail</a>. iRedMail is a
pre-packaged mailserver solution, based on all the software that I was
using already (Postfix, Dovecot, OpenLDAP), but with the benefit of a
slick admin panel that pulls it all together and provides ongoing
support. It also incorporates Roundcube for webmail, undoubtedly
prettier than Squirrelmail, which we were using before. iRedMail even
includes a pre-configure Fail2ban, essential to protect your
internet-facing server from attack.</p>

<p><img src="/assets/dashboard.png" alt="The iRedmail Dashboard" /></p>

<p>There are two web administration panels to choose from - the free and
open source panel and the Pro panel. Both interfaces are attractive and
functional, but predictably the Pro panel has more functionality <a href="http://iredmail.org/pricing.html" title="iRedMail pricing">at a
price</a>. Some would
call this Crippleware, but bear in mind that the server itself has full
functionality - this is merely the configuration of that server. If you
are happy to configure LDAP yourself, then you don’t strictly need to
use the Pro panel. See <em>“Features and Comparison”</em> half way down <a href="http://iredmail.org/admin_panel.html" title="Features of iRedAdmin">this
page</a>. Whilst
the Pro panel does come with the source code, the developer explicitly
restricts your right to distribute.</p>

<p>Installation is very fast - but must be on a fresh server - I tried to
upgrade from an existing Postfix install and it ended badly. Updates are
delivered as a web page of instructions, which I have come to prefer to
running an upgrade script, as you can intelligently decide whether you
are happy with each change proposed. The downside is that you could
easily miss a step and leave your server only partially “upgraded”.</p>

<p>Whilst the forums are quiet, the developer is very responsive to posts
and has dealt efficiently which each issue that I encountered. Roundcube
has proven to be a very attractive webmail interface and includes Sieve
administration for server-based filtering and vacation notices.</p>

<p>Overall we are very happy iRedMail users - if there is an easier way of
running an Open Source mailserver, I have not discovered it.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>How to Make Umount Work With sshfs</title>
      <link>https://chrisjrob.com/2013/11/18/howto-make-umount-work-with-sshfs-unicom-systems-development/</link>
      <pubDate>Mon, 18 Nov 2013 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2013/11/18/howto-make-umount-work-with-sshfs-unicom-systems-development</guid>
      <description>
       <![CDATA[
         
         <p>Having created an sshfs mount in <code class="language-plaintext highlighter-rouge">/etc/fstab</code>, I was frustrated that it
would mount okay, but unmounting always resulted in an error “mount
disagrees with the fstab”. The following solution worked for me:</p>

<!--more-->

<p>For more information please visit the following link:</p>

<ul>
  <li><a href="http://www.unicom.com/blog/entry/651">HowTo: Make umount Work with sshfs | Unicom Systems
Development</a></li>
</ul>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Novatech N1410 Nine Months On</title>
      <link>https://chrisjrob.com/2013/11/14/novatech-n1410-nine-months-on/</link>
      <pubDate>Thu, 14 Nov 2013 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2013/11/14/novatech-n1410-nine-months-on</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/nfinityn1411.png" align="right" alt="Featured Image">
         
         <p>The power switch remains a momentary petty irritation, but the poor
quality keyboard and intrusive trackpad are harder to live with. The
wireless is pretty poor, but it generally connects fine and rarely
actually causes me any problems.</p>

<p>But the <a href="http://www.novatech.co.uk/laptop/range/novatechnfinityn1410.html">Novatech n1410</a> remains a good-looking, lightweight laptop with a
great battery life, and highly portable. And it was undeniably great value.</p>

<!--more-->

<p>One new irritation, that I hadn’t noticed in my earlier review, is that
the volume can be too quiet in some circumstances. If sound is important
to you, and particularly if you require it to deliver the goods in noisy
environments, then you will probably need to invest in some external
speakers, for example a pair of <a href="http://www.amazon.co.uk/gp/product/B004LLI0CY/ref=as_li_ss_tl?ie=UTF8&amp;camp=1634&amp;creative=19450&amp;creativeASIN=B004LLI0CY&amp;linkCode=as2&amp;tag=robsquadnet-21&quot;" title="XMI X-Mini Capsule Speakers">XMI X-Mini MAX V1-1 Capsule
Speakers</a>.</p>

<p>Nine months on, and I decided to upgrade
<a href="http://www.ubuntu.com" title="Ubuntu">Ubuntu</a> 12.10 to 13.04 and 13.10. The
upgrades both went flawlessly and as usual I do wonder why Ubuntu users
seem so tied to re-installing instead of upgrading.</p>

<p>But unfortunately it hasn’t been all good news - the upgrade to 13.04
saw the introduction of two bugs:</p>

<p><strong>Brightness on Boot:</strong> On booting up, brightness is set to the maximum
every time. The numerous suggested fixes didn’t seem to work and so,
pending a better solution, I have installed “xbacklight” and added it to
the start-up applications with the switches “-set 20” to set it to 20%
brightness. And yes, I am aware that I could have just echoed the chosen
brightness to the relevant device file:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># echo 1102 &gt; /sys/class/backlight/intel_backlight/brightness
</code></pre></div></div>

<p><strong>Volume FN Buttons:</strong> The volume buttons no longer work correctly, on
the first press the volume shoots up to maximum or minimum and then the
indicator keeps flashing, locking the keyboard and requiring a
<a href="http://www.wikipedia.org/wiki/reisub" title="REISUB">REISUB</a> reboot. For the
time being I have simply re-mapped the F10, F11 and F12 buttons to do
the tasks that would normally be done by FN F10, FN F11 and FN F12 (see
screenshot).</p>

<p><a href="http://chrisjrob.files.wordpress.com/2013/11/keyboard.png"><img src="/assets/keyboard.png?w=650" alt="Image" /></a></p>

<p>But I cannot fairly blame Novatech for these bugs, what I need to do is
report bugs for them with Ubuntu. I have found an article about
<a href="https://wiki.ubuntu.com/Kernel/Debugging/Backlight" title="Backlight Debugging">Backlight
Debugging</a> and
another on <a href="https://wiki.ubuntu.com/Hotkeys/Troubleshooting" title="Hotkeys Debugging">Hotkey
Debugging</a>,
both of which I will be following at some point.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Linux Terminal Command Reference</title>
      <link>https://chrisjrob.com/2013/09/28/linux-terminal-command-reference/</link>
      <pubDate>Sat, 28 Sep 2013 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2013/09/28/linux-terminal-command-reference</guid>
      <description>
       <![CDATA[
         
         <p>I thought that this <a href="http://community.linuxmint.com/tutorial/view/244" title="Linux Terminal Command Reference">Linux Terminal Command
Reference</a> from
the Mint community was excellent. Having learned them piecemeal over
many years, I was almost resentful to see them all listed together.
Linux shouldn’t be easy, it should be knowledge painfully acquired
through years of humiliation on IRC channels and mailing lists!</p>

<!--more-->

<p>For more information please visit:</p>

<ul>
  <li><a href="http://community.linuxmint.com/tutorial/view/244&quot;">Linux Terminal Command Reference</a></li>
</ul>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Rkhunter /usr/bin/unhide.rb has been replaced by /usr/bin/unhide.rb</title>
      <link>https://chrisjrob.com/2013/07/04/rkhunter-usrbinunhide-rb-has-been-replaced-by-usrbinunhide-rb/</link>
      <pubDate>Thu, 04 Jul 2013 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2013/07/04/rkhunter-usrbinunhide-rb-has-been-replaced-by-usrbinunhide-rb</guid>
      <description>
       <![CDATA[
         
         <p>I have recently moved over to Rootkit Hunter (rkhunter) instead of using
fcheck, one issue that I encountered on all our Ubuntu servers was the
error:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Warning: The command '/usr/bin/unhide.rb' has been replaced by a script: /usr/bin/unhide.rb: Ruby script
</code></pre></div></div>

<!--more-->

<p>Googling confirmed that this error was normal on Ubuntu systems, but I
found no solution. Fortunately the solution was simple, simply editing
<code class="language-plaintext highlighter-rouge">/etc/rkhunter.conf</code> and adding the following line at the appropriate
place:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SCRIPTWHITELIST=/usr/bin/unhide.rb
</code></pre></div></div>

<p> </p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>3d Print A Small Windmill</title>
      <link>https://chrisjrob.com/2013/06/23/3d-print-a-small-windmill/</link>
      <pubDate>Sun, 23 Jun 2013 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2013/06/23/3d-print-a-small-windmill</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/windmill_300.jpg" align="right" alt="Featured Image">
         
         <p>My daughter wanted a small windmill for a school project, and this was
my very quick’n’dirty attempt.</p>

<!--more-->

<p>For more information please:</p>

<ul>
  <li><a href="https://github.com/chrisjrob/windmill">View it on GitHub</a></li>
</ul>


       ]]>
      </description>
    </item>
    
    <item>
      <title>3d Print A Simple Bridge</title>
      <link>https://chrisjrob.com/2013/06/23/3d-print-a-simple-bridge/</link>
      <pubDate>Sun, 23 Jun 2013 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2013/06/23/3d-print-a-simple-bridge</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/bridge_300.jpg" align="right" alt="Featured Image">
         
         <p>My daughter needed a small bridge for a school project and I couldn’t
find anything suitable on-line. This was my very simple design, intended
to be fully parametric, but probably only within certain limits.</p>

<p>For more information please:</p>

<ul>
  <li><a href="https://github.com/chrisjrob/bridge">View it on GitHub</a></li>
</ul>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Braid On Braid Splicing</title>
      <link>https://chrisjrob.com/2013/06/13/braid-on-braid-splicing/</link>
      <pubDate>Thu, 13 Jun 2013 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2013/06/13/braid-on-braid-splicing</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/splicing_300.png" align="right" alt="Featured Image">
         
         <p>Having been quoted £250 to replace the halyards and topping lift on my
boat, I decided to do it myself, by purchasing the ropes from eBay for
£100 and the fids to do the splicing for £33.</p>

<p>Having the fids would then enable me to do the rest of the running
rigging: reefing pennants, kicking strap etc.</p>

<!--more-->

<p>The only trouble was that I didn’t know how to splice braid-on-braid,
and it turned out to be more tricky than I expected. In the end I found
a <a href="http://youtu.be/Ym1-rI0SdaA">YouTube video</a> to help me.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>3D Print Avon Dinghy Pump Clip</title>
      <link>https://chrisjrob.com/2013/06/13/3d-print-avon-dinghy-pump-clip/</link>
      <pubDate>Thu, 13 Jun 2013 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2013/06/13/3d-print-avon-dinghy-pump-clip</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/avonpumpclip_300.jpg" align="right" alt="Featured Image">
         
         <p>Having bought an inflatable Avon Redcrest dinghy on eBay, I found that
the pump no longer had a clip holding the two halves together. I knew
that the older models used to have a piece of leather attached to one
half with holes that clipped over screws on the other half, but on this
pump only the screws remained.</p>

<!--more-->

<p>Newer pumps instead came with a plastic clip that attached to the pump
hose and clamped the two halves together and I felt that it would be
quite simple to replicate and so it proved. This was a simple design
exercise and worked perfectly first time. I have since re-sold the
dinghy and hope that the pump clip is still serving its new owner.</p>

<p>For more information please:</p>

<ul>
  <li><a href="https://github.com/chrisjrob/avonpumpclip">View it on GitHub</a></li>
</ul>

       ]]>
      </description>
    </item>
    
    <item>
      <title>3D Print Curtain Ring</title>
      <link>https://chrisjrob.com/2013/06/12/3d-print-curtain-ring/</link>
      <pubDate>Wed, 12 Jun 2013 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2013/06/12/3d-print-curtain-ring</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/curtainring_300.png" align="right" alt="Featured Image">
         
         <p>Finally got around to putting curtains up in our guest room and the
curtain rings had been lost. They did eventually turn up, but these
printed rings worked perfectly until we did. Yes they’re not pretty, but
you really could not tell unless you got close.</p>

<!--more-->

<p>For more information please:</p>

<ul>
  <li><a href="https://github.com/chrisjrob/curtainring">View it on GitHub</a></li>
</ul>

       ]]>
      </description>
    </item>
    
    <item>
      <title>3d Print Shorepower Socket Faceplate</title>
      <link>https://chrisjrob.com/2013/06/11/3d-print-shorepower-socket-faceplate/</link>
      <pubDate>Tue, 11 Jun 2013 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2013/06/11/3d-print-shorepower-socket-faceplate</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/shorepower-faceplate_300.jpg" align="right" alt="Featured Image">
         
         <p>My Westerly sailing boat has a rectangular-shaped shorepower socket and
the faceplate was broken in half. Given its very exposed position in the
cockpit, this is only to be expected, but purchasing a replacement
proved very difficult. Fortunately the broken half had been kept by the
previous owner, which enabled me to design an exact replica. And the
beauty is that it will certainly be broken again, so I have printed a
spare.</p>

<!--more-->

<p>For more information please:</p>

<ul>
  <li><a href="https://github.com/chrisjrob/shorepower">View it on GitHub</a></li>
</ul>

       ]]>
      </description>
    </item>
    
    <item>
      <title>3d Print Curtain Hook</title>
      <link>https://chrisjrob.com/2013/06/11/3d-print-curtain-hook/</link>
      <pubDate>Tue, 11 Jun 2013 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2013/06/11/3d-print-curtain-hook</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/curtain-hook_300.jpg" align="right" alt="Featured Image">
         
         <p>My mother-in-law’s curtains were pulled down by a Great Dane, breaking
many of the curtain hooks. They seemed to be an unusual design and she
asked if I might be able to print them on my RepRap.</p>

<p>This was very satisfying design, which did not take long, posed no
particular challenges and printed very quickly. If only all jobs were
like that.</p>

<!--more-->

<p>For more information please:</p>

<ul>
  <li><a href="https://github.com/chrisjrob/curtainhook">View it on GitHub</a></li>
</ul>


       ]]>
      </description>
    </item>
    
    <item>
      <title>3d Print Bag Carrier</title>
      <link>https://chrisjrob.com/2013/06/10/3d-print-bag-carrier/</link>
      <pubDate>Mon, 10 Jun 2013 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2013/06/10/3d-print-bag-carrier</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/bag-carrier_300.jpg" align="right" alt="Featured Image">
         
         <p>A friend saw a plastic bag carrier for sale and wondered if I could
produce a 3D model suitable for printing. Here was the result. A simple
handle with hooks to carry multiple bags at once.</p>

<!--more-->

<p>For more information please:</p>

<ul>
  <li><a href="https://github.com/chrisjrob/bagcarrier">View it on GitHub</a></li>
</ul>


       ]]>
      </description>
    </item>
    
    <item>
      <title>3d Print Shock Cord Toggles</title>
      <link>https://chrisjrob.com/2013/06/05/3d-print-shock-cord-toggles/</link>
      <pubDate>Wed, 05 Jun 2013 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2013/06/05/3d-print-shock-cord-toggles</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/toggle_300.jpg" align="right" alt="Featured Image">
         
         <p>My <a href="/2011/12/17/bungee-cord-toggles-by-chrisjrob-thingiverse/">first ever
design</a> was a
shock cord toggle, but I have only now had a reason to print it and I am
pleased to say that they are working perfectly. Shown here on my dinghy</p>
<ul>
  <li>used to hold the oars when not in use.</li>
</ul>

<!--more-->

<p>For more information please:</p>

<ul>
  <li><a href="https://github.com/chrisjrob/toggle">View it on GitHub</a></li>
</ul>

       ]]>
      </description>
    </item>
    
    <item>
      <title>3D Printed Replacement Locker Clip</title>
      <link>https://chrisjrob.com/2013/05/31/3d-print-replacement-locker-clip/</link>
      <pubDate>Fri, 31 May 2013 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2013/05/31/3d-print-replacement-locker-clip</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/lockerclip_300.jpg" align="right" alt="Featured Image">
         
         <p>On my boat there was a locker below the cooker that was not closing
properly. The problem was that the retaining clip was broken. Normally
the only solution would be to buy a new clip, but this is the perfect
use for a 3D printer, as it enables you to re-create just the broken
half. And, even better, you can design the screw holes to be in the same
place, enabling a super quick replacement.</p>

<!--more-->

<p>For more information please see it on GitHub.</p>

<ul>
  <li><a href="https://github.com/chrisjrob/lockerclip">View it on GitHub</a></li>
</ul>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Fitting MSATA Drive To The Novatech Nfinity N1410</title>
      <link>https://chrisjrob.com/2013/03/22/fitting-msata-drive-to-the-novatech-nfinity-n1410/</link>
      <pubDate>Fri, 22 Mar 2013 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2013/03/22/fitting-msata-drive-to-the-novatech-nfinity-n1410</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/NovatechNFinityN1410.jpg" align="right" alt="Featured Image">
         
         <p>As discussed in my earlier <a href="/2013/02/22/the-novatech-nfinity-n1410-review/" title="The Novatech nFinity n1410 Review">The Novatech nFinity n1410 Review</a>,
I made a mistake in sticking with the default 128gb SSD. I promised to
write up how I carried upgraded my Ultrabook by adding an mSATA drive,
but time has passed and I failed to take any notes.</p>

<!--more-->

<p>The drive I ordered was a <a href="http://www.amazon.co.uk/gp/product/B0085J17UA/ref=as_li_ss_tl?ie=UTF8&amp;camp=1634&amp;creative=19450&amp;creativeASIN=B0085J17UA&amp;linkCode=as2&amp;tag=robsquadnet-21" title="Crucial CT256M4SSD3 256GB M4 SATA III 6Gb/s mSATA MLC Internal SSD">Crucial CT256M4SSD3 256GB m4 mSATA 6Gb/s
Internal
SSD</a>.</p>

<p>The installation was not difficult, and to the best of my recollection
followed these steps:</p>

<ol>
  <li>Undo screws on bottom;</li>
  <li>Use knife to gently release the catches around the keyboard;</li>
  <li>Carefully remove keyboard;</li>
  <li>I seem to recall that there were additional screws behind the
keyboard, which need to be removed;</li>
  <li>Fit mSATA drive, fixing with screw supplied with the drive;</li>
  <li>Close case.</li>
</ol>

<p>Apologies that these instructions are so poor, but hopefully the
photographs in the <a href="https://picasaweb.google.com/112653355770650909703/NovatechNFinityN1410?authuser=0&amp;feat=embedwebsite">Picasaweb album</a>
will help.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>LTSP | Install X11VNC on LTSP5</title>
      <link>https://chrisjrob.com/2013/03/19/ltsp-install-x11vnc-on-ltsp5/</link>
      <pubDate>Tue, 19 Mar 2013 11:49:39 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2013/03/19/ltsp-install-x11vnc-on-ltsp5</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/ltsp_logo.png" align="right" alt="Featured Image">
         
         <p>This is how I installed x11vnc on our Debian Lenny LTSP5 server, these are my notes, nothing more.  Use at your peril!</p>

<h2 id="installing-x11vnc">Installing x11vnc</h2>

<!--more-->

<p>Enter the chroot</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo chroot /opt/ltsp/i386
</code></pre></div></div>

<p>And update the repositories that the ltsp environment uses for apt-get:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># apt-get update
# apt-get install x11vnc
</code></pre></div></div>

<h2 id="create-start-up-script">Create start-up script</h2>

<p>Still in the chroot, edit <code class="language-plaintext highlighter-rouge">/etc/init.d/x11vnc</code> and copy in the following script:</p>

<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c">#!/bin/sh</span>

<span class="c">### BEGIN INIT INFO</span>
<span class="c"># Provides:x11vnc</span>
<span class="c"># Required-Start:$remote_fs $syslog</span>
<span class="c"># Required-Stop:$remote_fs $syslog</span>
<span class="c"># Default-Start:2 3 4 5</span>
<span class="c"># Default-Stop:0 1 6</span>
<span class="c"># Short-Description:Start X11VNC</span>
<span class="c"># Description:Start VNC server X11VNC at boot</span>
<span class="c">### END INIT INFO</span>

<span class="k">case</span> <span class="s2">"</span><span class="nv">$1</span><span class="s2">"</span> <span class="k">in
        </span>start<span class="p">)</span> 
                <span class="nb">sleep </span>6
                <span class="nv">XAUTH</span><span class="o">=</span><span class="sb">`</span>find /var/run/ldm-xauth<span class="k">*</span> <span class="nt">-type</span> f<span class="sb">`</span>
                logger <span class="nt">-f</span> /var/log/x11vnc <span class="s2">"Starting with </span><span class="nv">$XAUTH</span><span class="s2">"</span>
                start-stop-daemon <span class="nt">--start</span> <span class="nt">--oknodo</span> <span class="nt">--pidfile</span> /var/run/x11vnc.pid <span class="nt">--background</span> <span class="nt">--nicelevel</span> 15 <span class="nt">--make-pidfile</span> <span class="nt">--exec</span> /usr/bin/x11vnc <span class="nt">--</span> <span class="nt">-display</span> :7 <span class="nt">-loop</span> <span class="nt">-passwdfile</span> /etc/x11vncpassword <span class="nt">-nossl</span> <span class="nt">-logfile</span> /var/log/x11vnc <span class="nt">-auth</span> <span class="nv">$XAUTH</span>
        <span class="p">;;</span>
        stop<span class="p">)</span>  
                logger <span class="nt">-f</span> /var/log/x11vnc <span class="s2">"Stopping"</span>
                start-stop-daemon <span class="nt">--stop</span> <span class="nt">--oknodo</span> <span class="nt">--pidfile</span> /var/run/x11vnc.pid
        <span class="p">;;</span>
        restart<span class="p">)</span>
                logger <span class="nt">-f</span> /var/log/x11vnc <span class="s2">"Restarting"</span>
                <span class="nv">$0</span> stop
                <span class="nv">$0</span> start
        <span class="p">;;</span>
        condrestart<span class="p">)</span>
                <span class="nv">PID</span><span class="o">=</span><span class="sb">`</span><span class="nb">cat</span> /var/run/x11vnc.pid<span class="sb">`</span>
                <span class="nv">RUNNING</span><span class="o">=</span><span class="sb">`</span>ps h <span class="nt">--ppid</span> <span class="nv">$PID</span><span class="sb">`</span>
                <span class="k">if</span> <span class="o">[</span> <span class="s2">"</span><span class="nv">$RUNNING</span><span class="s2">"</span> <span class="o">==</span> <span class="s2">""</span> <span class="o">]</span><span class="p">;</span> <span class="k">then
                        </span>logger <span class="nt">-f</span> /var/log/x11vnc <span class="s2">"No process matching /var/run/x11vnc.pid"</span>
                        <span class="nb">echo</span> <span class="s2">"No process matching /var/run/x11vnc.pid"</span>
                        <span class="nv">$0</span> restart
                <span class="k">else   
                        </span>logger <span class="nt">-f</span> /var/log/x11vnc <span class="s2">"Process matching /var/run/x11vnc.pid exists"</span>
                        <span class="nb">echo</span> <span class="s2">"Process matching /var/run/x11vnc.pid exists - no action taken"</span>
                <span class="k">fi</span>
        <span class="p">;;</span>
        <span class="k">*</span><span class="p">)</span>
                <span class="nb">echo</span> <span class="s2">"Usage: </span><span class="nv">$0</span><span class="s2"> start|stop|restart|condrestart"</span>
                <span class="nb">exit </span>1
        <span class="p">;;</span>
<span class="k">esac</span>

<span class="nb">exit </span>0
</code></pre></div></div>

<h2 id="finalise-start-up-script">Finalise start-up script</h2>

<p>Still in the chroot, make the script executable and link it into /etc/rc2.d:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># chmod 755 /etc/init.d/x11vnc
# update-rc.d x11vnc defaults
# ls -al /etc/rc2.d/*x11vnc
</code></pre></div></div>

<h2 id="set-x11vnc-password">Set x11vnc password</h2>

<p>Finally, create the /etc/x11vncpassword file with the password you want to use to connect to your thin clients:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># echo "thepassword" &gt; /etc/x11vncpassword
# chmod 400 /etc/x11vncpassword
# chown root:root /etc/x11vncpassword
</code></pre></div></div>

<p><strong>Replace “thepassword” with your chosen password.</strong></p>

<h2 id="alternative-method">Alternative Method</h2>

<p>The issue with the above method is that if you user does not reboot their client after logging off, then x11vnc does not restart.  An alternative, remove the above symlink from <code class="language-plaintext highlighter-rouge">/etc/rc2.d/S99x11vnc</code> and instead use an ldm start up script by adding the following two scripts:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># /opt/ltsp/i386/usr/share/ldm/rc.d/I99-x11vnc
# LDM Script to start x11vnc

XAUTH=`find /var/run/ldm-xauth* -type f`
start-stop-daemon --start --oknodo --pidfile /var/run/x11vnc.pid --background --nicelevel 15 --make-pidfile --exec /usr/bin/x11vnc -- -display :7 -loop -passwdfile /etc/x11vncpassword -nossl -logfile /var/log/x11vnc -auth $XAUTH
</code></pre></div></div>

<p>The “I” in I99-x11vnc denotes that this will be run after X and before LDM, which is perfect for VNC.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># /opt/ltsp/i386/usr/share/ldm/rc.d/X99-x11vnc
# LDM Script to stop x11vnc

start-stop-daemon --stop --oknodo --pidfile /var/run/x11vnc.pid
</code></pre></div></div>

<p>The “X” denotes that this script will be run upon logout, so this is closing down the x11vnc server, ready to restart with LDM.</p>

<p>This method will still not cope with X being terminated with ctrl+alt+backspace, in which scenario you can ssh onto the client and run <code class="language-plaintext highlighter-rouge">/etc/init.d/x11vnc condrestart</code> - you could also add this in as a local app to be accessible from the server desktop.</p>

<h2 id="references">References</h2>

<ul>
  <li>https://wiki.edubuntu.org/InstallX11VncOnLtspClients</li>
</ul>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Howto | Convert XPS to PDF</title>
      <link>https://chrisjrob.com/2013/03/12/convert-xps-to-pdf/</link>
      <pubDate>Tue, 12 Mar 2013 10:47:53 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2013/03/12/convert-xps-to-pdf</guid>
      <description>
       <![CDATA[
         
         <h2 id="introduction">Introduction</h2>

<p>XPS is Microsoft’s attempt to replace PDF, the only difference is that everyone can read PDFs, and not everyone can read XPS.  I understand that KDE 4 versions of Okular will support XPS, which may make these instructions unnecessary, although having a tool for conversion readily at hand is always useful!</p>

<!--more-->

<p>These instructions were tested in Debian Lenny.  These instructions worked for our specific systems YMMV.</p>

<h2 id="building-from-source">Building from source</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo apt-get install libxext-dev libxt-dev
$ wget http://ghostscript.com/releases/ghostpdl-8.71.tar.bz2
$ tar xvvjf ghostpdl-8.71.tar.bz2
$ cd ghostpdl-8.71
$ make xps
</code></pre></div></div>

<h2 id="testing">Testing</h2>

<p>After the build you will find gxps in xps/obj</p>

<p>To test, you will need a test document in XPS format.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ cd xps/obj
$ ./gxps -sDEVICE=pdfwrite -sOutputFile=test.pdf -dNOPAUSE test.xps
</code></pre></div></div>

<h2 id="move-to-bin">Move to bin</h2>

<p>You probably want to move the gxps executable into a convenient location within your PATH.  /usr/local/bin may be a good destination.  Once there you ought to be able to run the command from anywhere and it just work.  Not sure what your PATH is?  Type “echo $PATH” in your terminal.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ echo $PATH
$ sudo cp xps/obj/gxps /usr/local/bin/
$ sudo chown root:root /usr/local/bin/gxps
</code></pre></div></div>

<h2 id="creating-file-type">Creating file type</h2>

<p>XPS probably does not exist on your Linux system as a file type, you can either create yourself using KDE Control Centre, or in KDE:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Single user:
~/.kde/share/mimelnk/application/xps.desktop

All users:
/usr/share/mimelnk/application/xps.desktop

[Desktop Entry]
Comment=XPS Document
Hidden=false
Icon=application-xps
MimeType=application/xps
Patterns=*.xps;*.XPS
Type=MimeType
X-KDE-AutoEmbed=false
</code></pre></div></div>

<h2 id="adding-to-servicemenu">Adding to ServiceMenu</h2>

<p>If you are using Konqueror, you can add a service menu (to enable right-click / action menu).</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Single user:
~/.kde/share/apps/konqueror/servicemenus/xpstopdf.desktop

All users:
/usr/share/apps/konqueror/servicemenus/xpstopdf.desktop

[Desktop Entry]
Version=1.0
Encoding=UTF-8
Name=xpstopdf service menu
ServiceTypes=application/xps
Icon=acroread
Actions=xpstopdf

[Desktop Action xpstopdf]
Icon=acroread
Name=Convert XPS to PDF
Exec=cd "%d"; gxps -sDEVICE=pdfwrite -sOutputFile="`echo "%f" | cut -d . -f 1`.pdf" -dNOPAUSE "%f"; mv "%f" ~/.local/share/Trash/files; kdialog --title "Convert XPS to PDF" --passivepopup "Done" 3; echo;
</code></pre></div></div>

<h2 id="testing-servicemenu">Testing ServiceMenu</h2>

<p>You should now be able to right-click on the file and “Convert XPS to PDF”.  This will create a PDF of the same name and move the XPS into trash.</p>

<h2 id="references">References</h2>

<ul>
  <li><a href="http://www.ghostscript.com/GhostPCL.html">http://www.ghostscript.com/GhostPCL.html</a></li>
  <li><a href="http://obscured.info/2010/03/01/converting-xps-to-pdf-on-ubuntu-9-10/">http://obscured.info/2010/03/01/converting-xps-to-pdf-on-ubuntu-9-10/</a></li>
  <li><a href="http://blog.rubypdf.com/2009/04/14/convert-xps-to-pdf-in-two-ways/">http://blog.rubypdf.com/2009/04/14/convert-xps-to-pdf-in-two-ways/</a></li>
</ul>

       ]]>
      </description>
    </item>
    
    <item>
      <title>Turnbuckle Boot Cap</title>
      <link>https://chrisjrob.com/2013/03/05/turnbuckle-boot-cap/</link>
      <pubDate>Tue, 05 Mar 2013 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2013/03/05/turnbuckle-boot-cap</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/shroudcap_preview_featured_300.jpg" align="right" alt="Featured Image">
         
         <p>I realise that I have made a number of posts on Google+, without posting
first on my blog. This is the first of several posts that I will be
making to correct that oversight…</p>

<p>Sailing boats typically have plastic or rubber cylindrical covers for
the lower part of the shrouds and stays (the wires that hold up the
mast). These covers are apparently called “Turnbuckle Boots”.</p>

<!--more-->

<p>Turnbuckle boots should be topped off with caps, but it is quite common
to see the caps broken or missing entirely.</p>

<p>Turnbuckle Boot Cap is a replacement for those caps. It is fully parametric and
printed perfectly without support:</p>

<ul>
  <li><a href="https://github.com/chrisjrob/shroudcap">View on GitHub</a></li>
</ul>

       ]]>
      </description>
    </item>
    
    <item>
      <title>Default Applications Launched From Terminal</title>
      <link>https://chrisjrob.com/2013/03/05/default-applications-launched-from-terminal/</link>
      <pubDate>Tue, 05 Mar 2013 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2013/03/05/default-applications-launched-from-terminal</guid>
      <description>
       <![CDATA[
         
         <p>For some time it has irritated me that launching URLs from my terminal
would always launch Iceweasel/Firefox, rather than my default browser
Chromium. If you’re running KDE or Gnome, then I accept that this would
be governed from somewhere in the desktop environment’s control panel or
settings, but I run <a href="http://www.pekwm.org" title="PekWM">PekWM</a>, and assumed
that setting the default browser in update-alternatives should be
enough:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># update-alternatives --config x-www-browser
</code></pre></div></div>

<!--more-->

<p>Unfortunately of course many of the applications that I am using are
native to KDE or Gnome and probably are still respecting their
environment’s settings. In the end it was simply a case of editing:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>~/.local/share/applications/defaults.list
</code></pre></div></div>

<p>And adding the following lines:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>x-scheme-handler/http=chromium.desktop
x-scheme-handler/https=chromium.desktop
</code></pre></div></div>

<p>Now opening links from my terminal is correctly opening a new tab in
Chromium, or running Chromium if it isn’t already.</p>

<p>Joy.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Buying Microsoft Windows</title>
      <link>https://chrisjrob.com/2013/03/04/buying-microsoft-windows/</link>
      <pubDate>Mon, 04 Mar 2013 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2013/03/04/buying-microsoft-windows</guid>
      <description>
       <![CDATA[
         
         <p>Having purchased <a href="/2013/02/22/the-novatech-nfinity-n1410-review/" title="Review of the Novatech nFinity n1410">my Novatech nFinity
n1410</a>,
I thought that I would install Windows as a virtual machine. Nothing
easier, I thought, and trotted off to my local Currys.</p>

<p>On entering Currys there was plenty of evidence of the new Windows 8,
but I noticed that <a href="http://www.currys.co.uk/gbuk/search-keywords/323_3082_30147_xx_xx/windows+8/xx-criteria.html" title="Windows 8 at Curry's">all the copies were
upgrades</a> from
Windows 7 or Windows XP.  Currys explained that they do not stock full
copies of Windows, only the upgrades, and stated that this was not a
Curry’s issue, but that it was a Microsoft policy to only sell full
versions of Windows via their website.</p>

<!--more-->

<p>So I found myself searching online for “<a href="https://www.google.co.uk/search?q=microsoft+buy+windows+8" title="Search Microsoft Buy Windows 8">buy windows
8</a>”
and ended up on the <a href="http://windows.microsoft.com/en-gb/windows/buy" title="Buy Windows 8">Microsoft
site</a>,
but, as with Currys, the only versions available were upgrades.</p>

<p>Starting to feel like I’d entered the Twilight Zone, I <a href="http://www.businessdirect.bt.com/category/computing,software,operating-systems/11168?q=windows%208" title="Windows 8 at BT Business Direct">searched at BT
Business
Direct</a>,
this seemed to be much more successful and I found <a href="http://www.businessdirect.bt.com/Product/Compare?CompareList=8BMQ%2C8BMS%2C8BMR%2C8BMT&amp;CategoryId=11168&amp;q=windows%208" title="Windows 8 Choices at BT Business Direct">4 choices
available</a>,
but all the versions were OEM copies which I assumed that I was not
legally permitted to install on a VM. It appeared that the only choices
were OEM licences or Retail upgrade licences, on the face of it -
leaving users like myself unable to legally buy Windows at all.</p>

<p>I thought perhaps that this was a short-term anomaly post-launch, but
<a href="http://superuser.com/questions/494782/does-a-full-retail-license-of-windows-8-exist-not-oem-not-upgrade" title="Does a Full Retail Licence of Windows 8 exit?">it seems
not</a>.
Apparently the OEM version is all things to all people, being both a
Retail copy for non-system builders, and an OEM copy for system builders
(<a href="http://superuser.com/questions/494782/does-a-full-retail-license-of-windows-8-exist-not-oem-not-upgrade" title="Does a full retail license of windows 8 exist?">read
more</a>).
If this is correct then this means that those 4 choices at BT Business
Direct may be okay for me afterall.</p>

<p>And <a href="http://www.microsoft.com/oem/en-gb/licensing/sblicensing/Pages/personal-use-license.aspx" title="Personal Use Licence">here is the word from Microsoft on the
matter</a>:
<em>“If you are building a computer for your personal use or installing an
additional operating system in a virtual machine, you can now purchase
OEM System Builder software using the Personal Use Licence.”</em> After
pouring over the text of EULAs, this is actually easy and unequivocal.
Well done Microsoft.</p>

<p>Knowing my preference for all-things GNU/Linux and FLOSS, some of you
may be wondering why I need Windows at all. The reasons are very few
and I don’t use Windows from one month to the next, but I would find it
difficult to eradicate completely:</p>

<ol>
  <li><strong>Tax return:</strong> I know that <a href="http://bootpolish.net/home_howto_submitaukselfassessmentreturnunderlinux" title="How to Submit a UK Self Assessment Return Under Linux">it can be done under
Linux</a>,
but I prefer to use TaxCalc.</li>
  <li><strong>Road Angel:</strong> I have found no way of updating my Dad’s <a href="http://www.roadangelgroup.com" title="Road Angel">Road
Angel</a> without Windows.</li>
  <li><strong>Inforad:</strong> Similarly I have found no way of updating my
<a href="http://www.gpsinforad.co.uk/" title="Inforad">Inforad</a> without Windows.</li>
  <li><strong>Leappad2:</strong> I have found no way of updating my childrens’
Leappad2’s without Windows.</li>
</ol>

<p>So there we have it, we can now officially buy the OEM version for our
VMs.</p>

<p>At least I think so.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>The Novatech Nfinity N1410 Review</title>
      <link>https://chrisjrob.com/2013/02/22/the-novatech-nfinity-n1410-review/</link>
      <pubDate>Fri, 22 Feb 2013 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2013/02/22/the-novatech-nfinity-n1410-review</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/nfinityn1411.png" align="right" alt="Featured Image">
         
         <p>After spending much time trying to choose the perfect Ultrabook, I came to the
conclusion that it is either not made, or is prohibitively expensive. In the
meantime I ordered a <a href="http://www.novatech.co.uk/laptop/range/novatechnfinityn1410.html" title="Novatech nFinity n1410">Novatech nFinity
n1410</a> (14” Intel Core i5 3317 Mobile Processor - 8GB DDR3
Memory) for just £450 (plus VAT).</p>

<!--more-->

<p>My expectations were fairly low, given the price, but I expected
something that would be adequate and I was pleased to be able to buy a
laptop without a Microsoft operating system pre-installed.</p>

<p>Purchase and delivery were quick and painless, thanks to Novatech.</p>

<p>My first impressions were very agreeable, it looked much better than
expected with a metal top. The dimensions were just as I had expected -
it would fit in my briefcase and be light and portable, but still have a
decent sized screen.</p>

<p>Then I went to switch the n1410 on, oh dear, the power switch is
terrible! Cheap, nasty, with a horrible unsatisfactory movement. It
still irritates me every time I use it. It glows blue when powered and
red with disk activity. Once I went to put the laptop in my briefcase
and the flashing blue button reminded me that it was still in standby -
so yes the button is clearly functional - but still I hate it.</p>

<p>Installing <a href="http://ubuntu.com" title="Ubuntu">Ubuntu</a> 12.10 was very simple,
with no issues whatsoever. With Ubuntu installed and working well, it
was time to reboot. I made the mistake of glancing away from the screen
for few seconds, and it was already sitting at the login prompt. It
boots in less than 15s, it takes longer to shutdown, but this is a great
benefit for a portable laptop.</p>

<p>Logging in and things just got better - the buttons all work, including
the FN buttons like brightness and media playback. This is seriously
impressive and the Ubuntu community deserve congratulations, as this is
no mean feat. Given how painless the installation is, you can’t but
wonder why Novatech don’t offer Ubuntu as an option.</p>

<p>This all seemed to good to be true, and it was, suddenly the wireless
signal dropped out, despite my sitting less than a metre away from the
wireless access point. And this kept happening. Googling for an answer I
ended up adding the following line to the end of
<code class="language-plaintext highlighter-rouge">/etc/modprobe.d/iwlwifi.conf</code>:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>options iwlwifi 11n_disable=1 bt_coex_active=N
</code></pre></div></div>

<p>This seemed to make the laptop usable, but it is not a long-term
solution. I was advised to try a newer kernel, and I am now on 3.6.3,
but it seems no different. The problem seems to be a bug with the
iwlwifi module,  and <a href="https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1034740" title="Bug 1034740">it does seem to be known
about</a>,
so hopefully a fix will wander down to Ubuntu soon. Maybe upgrading to
13.04 will fix all, but that is one for another day.</p>

<p>I tried closing the laptop, whilst still on, and it promptly went into
standby mode. I opened the lid again and the laptop sprung back into
life, although the wireless was not connected. Restarting
network-manager revived the wireless connection. I can live with that.
In fact I do find that I frequently need to restart network manager when
first powering up, which may well be more evidence of the flaws in
iwlwifi.</p>

<p>The screen is glossy, which is never a good thing, but other than that I
cannot fault it. The speakers are a little tinny, but I suspect that
that is par for the course with an Ultrabook. The keyboard feels a bit
cheap and I keep missing letters, or getting letters twice. I hope I get
used to this, but it has to be said that the keyboard is not a pleasure
to use.</p>

<p>I am also struggling with the trackpad. My previous laptops have had
smaller trackpads, which I would occasionally catch when typing. This
laptop has a large trackpad, which I am constantly catching, and it is
driving me slightly mad. I am not sure that this is the fault of
Novatech though, in theory Ubuntu should disable the trackpad when
typing, but in my experience it could work better. Maybe I can improve
this is some way and I will do further research.</p>

<p>Another trackpad irritation is that the right hand side of the pad seems
to be the right-mouse-click, and the left hand side - the left mouse
click. Whilst flawlessly logical, it means that right handed users have
to travel a long way for left click. I suspect that this is a trait of
new Xorg versions, but I have done no research on the matter. Maybe I
will get used to it.</p>

<p>The trackpad does have buttons below it, but they are simply horrible to
use, requiring a considerable pressure to work, for that reason I tend
to only use the trackpad itself.</p>

<p>Sticking with the default 128gb SSD was a mistake though, as I could not
even transfer my Pictures folder (blame my young family and camera
touting wife!). I knew that <a href="http://popey.com/" title="Popey">popey</a> had added
an mSATA drive to his Lenovo X220, and I telephoned Novatech to find out
if this would be possible with the n1410. The answer was that yes it had
an mSATA port, but that it was limited to 32gb and would only be used to
improve the boot speed. I was not convinced that they were correct and
Googling the subject showed that Dell had said the same about their
laptops, and it was not true. With some concern I ordered a <a href="//www.amazon.co.uk/gp/product/B0085J17UA/ref=as_li_ss_tl?ie=UTF8&amp;camp=1634&amp;creative=19450&amp;creativeASIN=B0085J17UA&amp;linkCode=as2&amp;tag=robsquadnet-21">Crucial
CT256M4SSD3 256GB m4 mSATA 6Gb/s Internal
SSD</a>.
To cut a long story short- this proved successful and I intend writing
up the experience <a href="http://chrisjrob.com/2013/03/22/fitting-msata-drive-to-the-novatech-nfinity-n1410/" title="Fitting mSATA Drive to the Novatech nFinity n1410">in a separate
post</a>.</p>

<p>Battery life seems excellent - with past laptops I have generally used
them connected to the mains, but the battery life on the n1410 is good
enough that I am finding myself using it more like a tablet, in leaving
it on most of the time. I believe 5 hours should be possible.</p>

<p>Overall this is a very good value Ultrabook. Clearly it is not perfect,
but I never expected it to be, I expected it to be adequate and
functional, and that it certainly is. That it is also attractive, with a
reasonable screen, battery life and all working with Ubuntu is just
fantastic. All in all I am very pleased with my new Ultrabook.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Buying Microsoft Office</title>
      <link>https://chrisjrob.com/2013/02/20/buying-microsoft-office/</link>
      <pubDate>Wed, 20 Feb 2013 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2013/02/20/buying-microsoft-office</guid>
      <description>
       <![CDATA[
         
         <p>Whilst <a href="http://www.tridenthonda.co.uk" title="Trident Honda">my Company</a> is
predominantly a Linux user, it has not been without its problems.
OpenOffice in particular struggles with some newer Powerpoint
presentations and the lack of the Calibri font seems to cause layout
issues. More recently, our primary system vendor has introduced
“Business Intelligence” as a product and we would like to take the
benefit of that. Unfortunately most of those benefits are only available
if you are also running Microsoft Excel 2010 and later, whilst we of
course use OpenOffice.</p>

<!--more-->

<p>So, with a heavy heart I reached for my dog-eared copy of the Internet,
to see what this would cost me. I knew I needed Microsoft Office
Professional, as Microsoft Access is occasionally needed. I found that
<a href="http://www.businessdirect.bt.com/products/microsoft-office-professional-2010---licence---1-pc---pkc---win---english-7258.html?q=office%202010" title="BT Business Direct - Microsoft Office Professional 2010">a full retail licence from BT Business Direct</a> cost
£205 plus VAT, not so bad after all.</p>

<p>I considered buying 12 of these full retail licences, but decided in the
end to contact our BT account manager to request a quote. I was informed
by BT that the full retail licences could not be used on a server; no
explanation was given for this, but I was assured that this was the
case.  The result was that the cost would in fact be £288 each, an
additional £1000. A rather strange reversal of the usual - the more you
buy, the lower the unit price.</p>

<p>As I was going to be installing on a virtual machine, I was also
interested in knowing that I would be able to reinstall on a new virtual
machine, if for any reason I needed to rebuild. For some reason this
seemed far less clear than I would have liked, but ultimately I did
receive that assurance; albeit in a way that left me wondering if that
would indeed ultimately prove to be the case.</p>

<p>One additional confusion is that 2013 is just out, and so there was a
choice of 2010 or 2013, we had been told to buy 2010 or later, in order
to work with Business Intelligence, but then I read an article on ZDNet
<a href="http://www.zdnet.com/can-microsoft-bring-bi-to-the-masses-if-the-excel-2013-masses-cant-get-bi-7000011450/" title="Can Microsoft bring BI to the masses if the Excel 2013 masses can't get BI?">Can Microsoft bring BI to the masses if the Excel 2013 masses can’t get
BI?</a>.
The upshot seems to be that Microsoft Office Professional 2013 may not
be enough - I might need Microsoft Office Professional Plus 2013, which
as far as I can see is not even listed on BT Business Direct.</p>

<p>I visited the Microsoft page on <a href="http://office.microsoft.com/en-gb/professional-plus/" title="Microsoft Office Professional Plus">Microsoft Office Professional Plus
2013</a> but
this left me none the wiser. Following the link to <a href="http://office.microsoft.com/en-gb/business/microsoft-office-volume-licensing-suites-comparison-FX101812899.aspx" title="Licensing Options">Licensing
Options</a>
looked promising, but was not. Following the link to <a href="http://www.microsoft.com/licensing/licensing-options/enterprise.aspx#tab=4" title="View Licensing Options">View Licensing
Options</a> - seemed
to suggest that the only option was a three year Enterprise Agreement,
but there was no pricing shown, not even under the “Volume Pricing”
heading.</p>

<p>So now I need to re-contact BT to find out if they offer Professional
Plus 2013 and try and find out if this is what I need and whether I can
in fact reinstall on different hardware.</p>

<p>To seasoned purchasers of proprietary software this might all seem par
for the course, or perhaps there is an easier way that I have not yet
found? I suspect that the truth is that we are too large a company for
buying single licences, but too small a company for an enterprise
agreement. Neither fish nor fowl, as the saying goes.</p>

<p>But, for the past 5 years or so, I have not had to think about licensing
once. If I need a copy of office, then I download
<a href="http://www.openoffice.org/" title="OpenOffice">OpenOffice</a> (or more recently
<a href="http://www.libreoffice.org/" title="LibreOffice">LibreOffice</a>); if I need a
desktop publishing program, then I download
<a href="http://www.scribus.net/" title="Scribus">Scribus</a>; a graphics editor, <a href="http://www.gimp.org/" title="The GNU Image Manipulation Program">the
GIMP</a>; an
illustrator, <a href="http://inkscape.org/" title="Inkscape">Inkscape</a>. And for each
of those programs I can install it for all staff without even a thought
about how many licences I might have available.</p>

<p>There is no way out for me, sadly, and I will need to navigate these
difficult waters whether I like it or not, but there <strong>is</strong> a better way
and that way is <a href="http://en.wikibooks.org/wiki/FLOSS_Concept_Booklet" title="FLOSS Concept Booklet">Free Libre Open Source Software
(FLOSS)</a>.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Surrey Shore Based Rya Training</title>
      <link>https://chrisjrob.com/2013/02/11/surrey-shore-based-rya-training/</link>
      <pubDate>Mon, 11 Feb 2013 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2013/02/11/surrey-shore-based-rya-training</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/rya_training.jpg" align="right" alt="Featured Image">
         
         <p><a href="http://www.surrey-shorebased.co.uk" title="Surrey Shore-based RYA Training">Surrey Shore-based RYA
Training</a></p>

<p>I was delighted to find <a href="http://www.surrey-shorebased.co.uk" title="Surrey Shore-based RYA Training">this local RYA training
centre</a>.
Operated from Phil’s back garden, you expect the worst, but actually the
facilities are excellent, with a proper classroom with tables,
projector, VHFs, tea and coffee etc.</p>

<p>I recently had my Marine VHF training there and I thought the course was
excellent and I plan to go on to do my Day Skipper training at a later
date.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Polarnavy</title>
      <link>https://chrisjrob.com/2013/02/06/polarnavy/</link>
      <pubDate>Wed, 06 Feb 2013 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2013/02/06/polarnavy</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/polar-navy.png" align="right" alt="Featured Image">
         
         <p>Following <a href="/2012/09/17/gps-on-linux/" title="GPS on Linux">an earlier post on using GPS</a> under Ubuntu, I have been
trying to get <a href="http://www.polarnavy.com/" title="Polar Navy">PolarNavy</a>
working under Ubuntu 12.10. Polar Navy is the only Linux chart
navigation software available for Linux. I know people will correct me
by quoting <a href="http://opencpn.org/" title="OpenCPN">OpenCPN</a>, but there are no
charts currently legally available for the UK, at least that I could
find.</p>

<!--more-->

<p>Polar Navy has two components - PolarCOM which communicates with the GPS
receiver, and PolarView which displays the actual charts. The two
applications can connect together, to show the vessel’s current
position.</p>

<p>I had Polar Navy working fine under Ubuntu 12.04 i386, but for some
reason I had problems running under Ubuntu 12.10 amd64. The problem was
that PolarCOM would simply not display the position, i.e. the Lat and
Long. I tried running from the command line, and there were a large
number of errors when running PolarCOM, for example:\</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>menu_proxy_module_load': ./PolarCOM.bin: undefined symbol: menu_proxy_module_load (PolarCOM.bin:4487): Gtk-WARNING **: Failed to load type module: (null)
</code></pre></div></div>

<p>I eventually fixed that by adding the following to the
/opt/polarcom/bin/PolarCOM script:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>export UBUNTU_MENUPROXY=0
</code></pre></div></div>

<p>Sadly PolarCOM was still not working. The GPS Receiver that I use is the
BU-353, a terrific piece of hardware that “just works” under Linux. This
is the recommended GPS for Polar Navy, which was a happy coincidence.
When I plugged in the receiver it was detected as /dev/ttyUSB0, which I
noticed had a group “dialout”. I added myself to that group:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo adduser dialout
</code></pre></div></div>

<p>I posted <a href="http://support.polarnavy.com/forum/read.php?1,494" title="PolarNavy support">a request for help</a>
on the Polar Navy forums and they suggested I connect directly to the
receiver using screen. I was unsure how to terminate that session, but
ended up killing the screen session (Ctrl+Alt+a followed by k to kill).
There is probably a better way - feel free to comment below.:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ screen /dev/ttyUSB0 4800
</code></pre></div></div>

<p>But doing so just output a load of binary garbage, which I realised
(with help from Surrey LUG IRC #surrey on irc.lug.org.uk) meant that
the receiver was no longer in NMEA mode. Apparently GPSD automatically
reconfigures the receiver to SIRC III binary. I have no idea why this
was not a problem in Ubuntu 12.04.</p>

<p>To fix this problem I needed to ensure that GPSD was not running.
Unfortunately stopping the service does not seem to terminate the
process, so I also had to kill it off:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo service gpsd stop
$ ps aux | grep gps
$ killall PolarCOM.bin
</code></pre></div></div>

<p>Next I placed the GPS receiver into NMEA ASCII mode, instead of SIRCIII
Binary mode:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ gpsctl -f -n /dev/ttyUSB0
</code></pre></div></div>

<p>Lastly, you may also need to configure the serial port, although I did
not need to do this:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ stty -F /dev/ttyUSB0 ispeed 4800
</code></pre></div></div>

<p>A quick check to see that we are getting ASCII NMEA sentences, showed
that it was working perfectly, with easy to read text output from the
receiver.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ screen /dev/ttyUSB0 4800
</code></pre></div></div>

<p>To prevent GPSD from reconfiguring the receiver again, I then needed to
reconfigure it to use read-only mode:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo dpkg-reconfigure gpsd
</code></pre></div></div>

<p>And at the point where it requests switches, I added “-b” (Broken Device
Safety Mode), otherwise known as read-only mode.</p>

<p>With trepidation I launched PolarCOM, which immediately showed my
current position.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Is Your Prop Left Or Right Handed</title>
      <link>https://chrisjrob.com/2013/02/06/is-your-prop-left-or-right-handed/</link>
      <pubDate>Wed, 06 Feb 2013 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2013/02/06/is-your-prop-left-or-right-handed</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/prop.jpg" align="right" alt="Featured Image">
         
         <p>I was a bit surprised to be asked if my prop was left or right-handed.
Turns out that my boat is unusual in being left-handed, as the prop
spins anti-clockwise. This means that the prop-wash will make it easier
to moor starboard side-to, which is important when choosing a berth.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Kindle Fire</title>
      <link>https://chrisjrob.com/2012/12/30/kindle-fire/</link>
      <pubDate>Sun, 30 Dec 2012 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2012/12/30/kindle-fire</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/kindle-fire.jpg" align="right" alt="Featured Image">
         
         <p>This Christmas my wife bought me a <a href="http://www.amazon.co.uk/gp/product/B0083Q04M2/ref=as_li_ss_tl?ie=UTF8&amp;tag=robsquadnet-21&amp;linkCode=as2&amp;camp=1634&amp;creative=19450&amp;creativeASIN=B0083Q04M2">Kindle
Fire</a>.
Originally I wanted a Nexus 7, but was tempted by a Black Monday offer
of £99 for the basic Fire (normally £129). There is also a more
expensive HD version, which also has Dolby sound, for £159; but in my
opinion you are getting dangerously close to Nexus 7 pricing at that
point.</p>

<!--more-->

<p>I am a great fan of the 7 inch form factor. Personally I would be
embarrassed to carry around with me a 10” tablet, but the smaller
book-sized 7” tablet is fine. Without a case, it will even fit into a
suit jacket pocket.</p>

<p>My hope for the Fire was that it would be a quality device, being sold
cheap as a loss leader for Amazon, but more to the point I hoped that it
would still be usable for email and web browsing and that I would be
able to find at least some of my favourite Android apps in the Amazon
app store.</p>

<p>Opening it on Christmas day I was immediately pleased with the quality
of the screen, which was bright with vibrant colours. The home screen
was a disappointment, being a carousel style, which includes all the
books bought from Amazon. Entries include your books and apps in what I
assume is date last used. This may be a good layout for books, but the
Fire is <strong>not</strong> an ebook reader and I would have preferred a traditional
Android home screen. Also the web browser entry reflects the last
website visited, which means that you don’t know what the entry looks
like, nor where it is - as the sequence is in date last used. On the
other hand pressing App on the menu seems to provide you with a list of
the installed apps, so perhaps that’s not a major issue.</p>

<p>I knew that I was taking a risk with the Amazon app store, and certainly
some of the apps that I was wanted were missing, for example Connectbot
and Google+. That said it is possible to install from elsewhere so this
may not be an insurmountable problem, and perhaps such apps will turn up
eventually. Whilst on the subject of the app store, Amazon seem to offer
some normally paid apps for free, and I was delighted to be able to
download World of Goo on that basis.</p>

<p>One pleasant surprise is the keyboard, which is of the Swype variety,
wherein you keep your finger against the glass sweeping through the
letters of the word. This works brilliantly and is not only quicker,but
also makes typing possible when typing on the move. It also seems to be
very intelligent, you can safely skip repeated letters and it generally
works out what you meant. I was very surprised that typing “go” in the
previous paragraph correctly entered Goo, which suggests a knowledge of
context - impressive in a keyboard. If you prefer a traditional touch
keyboard then it can work like that as well.</p>

<p>One of the many free apps was BBC iPlayer and I was easily able to
navigate to a program that I wanted to watch and it worked flawlessly,
with smooth video offered in full screen.</p>

<p>Another huge positive is the speed of wireless acquisition, it has
usually already found it by the time I unlock the screen. In contrast we
have another Android tablet that takes forever to acquire our hidden
SSID and my non-Fire Kindle has yet to acquire it without manually
adding it afresh.</p>

<p>But the main reason for the tablet was my email and I was delighted that
the stock email app was able to cope with both my work IMAP as well as
my Gmail account.</p>

<p>I have not yet been able to test the battery life, for the simple reason
that I have yet to charge it fully, not for lack of trying, but because
it takes many hours to charge. This is an issue with USB charging. When
buying my wife’s 10” tablet - a Zenithink ZTPAD ZT280 C91 - I was
originally disappointed at the lack of USB charging, but now I see this
as an advantage - as it will charge up fully in about an hour.</p>

<p>There’s no doubt that the Kindle Fire represents a compromise, but I
have to say that this far I am very happy with the deal, the Fire is a
very polished device for very little money and what it does it does
extremely well. Would I have paid £129 though? I think I would have
spent some more time looking at the Nexus before making that decision,
but at £99 I am very pleased.</p>

<p><strong>Update:</strong> I have managed to get Connectbot working thanks to 
<a href="http://thehelpfulhacker.net/2011/12/28/kindle-fire-connectbot-followup/">this post</a>.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Linux is Free and Wastes Less Time Than Windows</title>
      <link>https://chrisjrob.com/2012/11/26/linux-is-free-and-wastes-less-time-than-windows/</link>
      <pubDate>Mon, 26 Nov 2012 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2012/11/26/linux-is-free-and-wastes-less-time-than-windows</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/linux-tux.jpg" align="right" alt="Featured Image">
         
         <p>It is commonly said, at least in Microsoft circles, that Linux is free
if you do not value your time. But is that really true, given the ease
of installing and updating software under Linux?</p>

<p>Today I needed to install a Windows-only budgeting program called
Profitplanner on our Windows 2003 server. This process was
straightforward enough, just a ZIP download which needed extracting and
installing.</p>

<!--more-->

<p>Whilst the install worked fine, it warned that I needed to install the
Microsoft Visual J# 2.0 Redistributable package, and gave me a link so
to do.</p>

<p>Unfortunately the Download button on the Microsoft website would not
work in Internet Explorer 8, forcing me to use Chrome instead.</p>

<p>Having downloaded the executable I then tried to install it, but no
good - it needed .NET installed first.</p>

<p>The link provided did not take me to the application download page, but
instead took me to the main Microsoft download page, where there were
1042 results for “.NET framework”.</p>

<p>The instruction was to install .NET “2.0/3.0”, which I take to mean
either 2.0 or 3.0. Even filtering for Windows Server 2003 R2 results in
78 results - 5 pages - including service packs, updates, patches, SDKs
etc. There seems to be know way of filtering the results further,
leaving me manually searching for Application entries.</p>

<p>I then realised that I should have checked that I don’t already have it
installed already, even though it had told me that I hadn’t. Sure enough
I did indeed already have .NET Framework 4 installed. Do I really need
to install 2.0 or 3.0 alongside it?</p>

<p>I decided to attempt a fresh installation of the .NET Framework 4, but
doing so merely told me what I already knew - that it was already
installed. The conclusion had to be that that I needed an older version
of .NET than that currently on my system, or perhaps a newer version of
Visual J#? I searched for the latter first, but 2.0 does indeed appear
to be the newest version.</p>

<p>Going down the tack of installing an older version of .NET, a Google
search suggested that 3.5 might include versions 2.0 and 3.0. I would
have assumed that 4.0 is just a development of that, but who knows - at
this stage it is worth a try. I downloaded and attempted to install, but
then realised that I have inadvertently downloaded the web installer,
which just kept restarting, possibly our proxy server getting in the
way. I search again, this time for the redistributable package, and
downloaded that.</p>

<p>I then tried to install J#, but again it insisted on 2.0 of the .NET
Framework. Only then did I realise that I had installed the .NET Compact
Framework.</p>

<p>Yes this was completely my fault, but mistakes like this are inevitable
when using the Microsoft Download Centre, as you are offered a
bewildering array of similarly named downloads.</p>

<p>I uninstalled the .NET Compact Framework, and search again, eventually
finding the 3.5 redistributable listed at the bottom of the .NET
Framework 3.5 web installer page. The 197mb download (there are Linux
distributions smaller than that) took a while to download and even
longer to install. Eventually it completed successfully.</p>

<p>Installing J# now worked, so clearly 3.5 worked where 4.0 did not. With
J# installed I was then able to easily install Profitplanner.</p>

<p>Success at last.</p>

<p>Having gone through the above craziness, it occurred to me that .NET is
a supported CrossOver Linux application, and J# is probably easily
installed as well… 10 minutes later I had a CrossOver bottle with a
working copy of ProfitPlanner.</p>

<p>Perhaps unusually it was actually simpler to install a Windows
application under Linux than it was under Windows.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>An Open Letter To E-Book Retailers Lets Have A Return To Common Sense</title>
      <link>https://chrisjrob.com/2012/10/29/an-open-letter-to-e-book-retailers-lets-have-a-return-to-common-sense/</link>
      <pubDate>Mon, 29 Oct 2012 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2012/10/29/an-open-letter-to-e-book-retailers-lets-have-a-return-to-common-sense</guid>
      <description>
       <![CDATA[
         
         <p>It astonishes me that so many people are prepared to go along with the
<em>“convenience”</em> of accepting limited access to the content that they
purchase. This <a href="http://www.teleread.com/drm/an-open-letter-to-e-book-retailers-lets-have-a-return-to-common-sense/" title="An Open Letter to E-Book Retailers: Let’s have a return to common sense">Open Letter to E-Book Retailers</a> explains
the issues with great clarity.</p>

<!--more-->

<p>If you support this letter, please share and re-post.</p>

<ul>
  <li><a href="http://www.teleread.com/drm/an-open-letter-to-e-book-retailers-lets-have-a-return-to-common-sense/" title="An Open Letter to E-Book Retailers: Let’s have a return to common sense">Open Letter to E-Book Retailers</a></li>
</ul>

       ]]>
      </description>
    </item>
    
    <item>
      <title>A Computer Without A 3D Printer</title>
      <link>https://chrisjrob.com/2012/10/04/a-computer-without-a-3d-p/</link>
      <pubDate>Thu, 04 Oct 2012 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2012/10/04/a-computer-without-a-3d-p</guid>
      <description>
       <![CDATA[
         
         <p><em>“A computer without a 3D printer, is like a shark without a frikkin’ laser.”</em></p>
<ul>
  <li>Christopher Roberts, 4 October 2012</li>
</ul>

       ]]>
      </description>
    </item>
    
    <item>
      <title>GPS On Linux</title>
      <link>https://chrisjrob.com/2012/09/17/gps-on-linux/</link>
      <pubDate>Mon, 17 Sep 2012 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2012/09/17/gps-on-linux</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/gps-bu-353.jpg" align="right" alt="Featured Image">
         
         <p>I have bought myself a <a href="http://www.amazon.co.uk/gp/product/B000PKX2KA/ref=as_li_ss_il?ie=UTF8&amp;camp=1634&amp;creative=19450&amp;creativeASIN=B000PKX2KA&amp;linkCode=as2&amp;tag=robsquadnet-21">GPS Receiver BU-353</a>.
Having plugged in the device into my Debian Wheezy workstation, I wanted
to test that it was working.</p>

<!--more-->

<p>A quick dmesg | tail showed me that the device has been found and
installed correctly (no drivers required).</p>

<p>I then installed the GPS daemon:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo apt-get install gpsd gpsd-clients
$ sudo dpkg-reconfigure gpsd
</code></pre></div></div>

<p>This then started the GPS daemon. The next thing to do was get some
example output, and the tool for this is gpspipe:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ gpspipe -w -n 5
</code></pre></div></div>

<p>Lastly, I thought it would be fun to plot the output onto Google Maps
and/or Openstreetmaps:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ tpv=$(gpspipe -w -n 5 | grep -m 1 TPV | cut -d, -f4,6-8,13)
$ latitude=$(echo $tpv | cut -d, -f3 | cut -d: -f2)
$ longitude=$(echo $tpv | cut -d, -f4 | cut -d: -f2)
$ google_map_url="http://maps.google.com/?q=${longitude},${latitude}&amp;z=${zoom}"
$ osm_map_url="http://www.openstreetmap.org/?mlat=${latitude}&amp;mlon=${longitude}&amp;zoom=${zoom}&amp;layers=M"
$ xdg-open $google_map_url
$ xdg-open $osm_map_url
</code></pre></div></div>

<p>All worked beautifully.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Wine 1.4 On Debian Wheezy</title>
      <link>https://chrisjrob.com/2012/03/08/wine-1-4-on-debian-wheezy/</link>
      <pubDate>Thu, 08 Mar 2012 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2012/03/08/wine-1-4-on-debian-wheezy</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/winehq_logo_glass.png" align="right" alt="Featured Image">
         
         <p>I was delighted to read this morning that <a href="http://www.winehq.org/news/2012030701" title="Wine 1.4 Released">Wine 1.4 stable had been released</a>, a
quick <code class="language-plaintext highlighter-rouge">dpkg -l wine</code> revealed that my Debian Wheezy install was running version 1.0.1,
several significant versions old.  There may be good stability reasons
for that decision, but I can afford to be a little more adventurous on
my desktop PC.</p>

<!--more-->

<p>So the question was how to build, well 
<a href="http://verahill.blogspot.com/2012/03/wine-14-out-now-very-brief-build.html" title="Wine 1.4 out now -- very brief build instructions">some brief and helpful instructions are already available</a>.</p>

<p>The only ways I deviated from these instructions was to use the standard
Wine option for the build:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ cd tmp/ $ ./tools/wineinstall
</code></pre></div></div>

<p>Taking the option for “no” to build without installation, and once
complete I installed with:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo checkinstall
</code></pre></div></div>

<p>Checkinstall is a wonderful program to install from source via a Deb
package, that can later be uninstalled or upgraded.</p>

<p>Many thanks to lindqvist for saving me the hassle of working out the
dependencies!</p>

<p><strong>Update <a href="http://www.winehq.org/announce/1.5.0" title="Wine 1.5 Announcement">Wine 1.5 has now been announced</a>!</strong></p>

       ]]>
      </description>
    </item>
    
    <item>
      <title>Ice Scraper</title>
      <link>https://chrisjrob.com/2012/01/17/ice-scraper/</link>
      <pubDate>Tue, 17 Jan 2012 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2012/01/17/ice-scraper</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/icescraper1_300.png" align="right" alt="Featured Image">
         
         <p>I was scraping the ice off my car yesterday and thought to myself that
an ice-scraper was just the sort of thing that you ought to be able to
print using a 3D printer. Surprisingly though, I could not find a single
ice-scraper on Thingiverse.</p>

<!--more-->

<p>This situation could not be allowed to continue a moment longer! 10
minutes later I had modelled a basic ice-scraper using
<a href="http://www.openscad.org/" title="OpenSCAD">OpenSCAD</a>; although it was
certainly no beauty.</p>

<p>60 minutes later and I had installed the 
<a href="https://github.com/elmom/MCAD" title="MCAD Library">MCAD library</a> and was using
“boxes.scad” to make the ice-scraper a little more rounded.</p>

<p>The resulting
<a href="https://github.com/chrisjrob/icescraper">ice-scraper</a>
will certainly not win any design awards, but it was a fun project and I
now know about the 
<a href="https://github.com/elmom/MCAD" title="MCAD Library">MCAD library</a>, which will open
a whole new world of functionality for me.</p>

<p>But the exciting thing for me is that a simple object like an
ice-scraper can be designed in only a few minutes and, with a 3D
printer, would be a reality only a short time later.</p>

<p>For more information please:</p>

<ul>
  <li><a href="https://github.com/chrisjrob/icescraper">Visit it on GitHub</a></li>
</ul>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Cable Grommet For Desk or Dry Lining</title>
      <link>https://chrisjrob.com/2012/01/03/cable-grommet-for-desk-or-dry-lining-thingiverse/</link>
      <pubDate>Tue, 03 Jan 2012 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2012/01/03/cable-grommet-for-desk-or-dry-lining-thingiverse</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/grommet_300.jpg" align="right" alt="Featured Image">
         
         <p>Having mounted my LED television on the wall I have a 80mm hole behind
the TV, through which all the cables arrive. No-one can see it of
course, but I know it’s there and it needs finishing, otherwise I might
start muttering incoherently.</p>

<!--more-->

<p>So I decided to create a <a href="https://github.com/chrisjrob/grommet">cable grommet to fit into the dry-lining wall</a>.
This is still very much work-in-progress, and in particular I need to
find a way to cope with the necessary overhang on each side. It also
needs a removable cap, so that you can easily feed additional cables,
hopefully I will get these issues addressed very soon.</p>

<p>It was designed in openscad and fully parametric, it could doubtless be
used for other purposes, including a desk grommet.</p>

<p>For more information please:</p>

<ul>
  <li><a href="https://github.com/chrisjrob/grommet">View it on GitHub</a></li>
</ul>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Bungee Cord Toggles</title>
      <link>https://chrisjrob.com/2011/12/17/bungee-cord-toggles-by-chrisjrob-thingiverse/</link>
      <pubDate>Sat, 17 Dec 2011 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2011/12/17/bungee-cord-toggles-by-chrisjrob-thingiverse</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/toggle_300.png" align="right" alt="Featured Image">
         
         <p>I have just created my first OpenSCAD design - 
<a href="https://github.com/chrisjrob/toggle/blob/master/toggle-dbl.stl">Bungee Cord Toggles</a>. I
don’t actually know if it will print, but will have to wait until my
reprap is complete before trying.</p>

<!--more-->

<p>For more information please:</p>

<ul>
  <li><a href="https://github.com/chrisjrob/toggle">View it on GitHub</a></li>
</ul>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Reprap Prusa Build Phase 1 Complete</title>
      <link>https://chrisjrob.com/2011/12/06/reprap-prusa-build-phase-1-complete/</link>
      <pubDate>Tue, 06 Dec 2011 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2011/12/06/reprap-prusa-build-phase-1-complete</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/RepRapPrusaBuildPhase1.jpg" align="right" alt="Featured Image">
         
         <p>Phase 1 of the build of my RepRap Prusa is now complete and I have
photographed it thoroughly, to assist others with their build and for
general interest.</p>

<p><a href="https://picasaweb.google.com/chrisjrob/RepRapPrusaBuildPhase1?authuser=0&amp;feat=embedwebsite">View Album on PicasaWeb</a></p>

<p>I have even taken a brief video, apologies for the lack of lighting:</p>

<!--more-->

<iframe width="560" height="315" src="https://www.youtube.com/embed/jK3Oed_dPrM" frameborder="0" allowfullscreen=""></iframe>

<p>The instructions I followed were the <a href="http://reprap.org/wiki/Prusa_Mendel_Assembly">Prusa Mendel Assembly</a> instructions,
with modifications described in the Thames Valley Google Groups thread
<a href="http://groups.google.com/group/tvreprapug/browse_thread/thread/8bc73f36ce2bf04d">Frame bearing specifics?</a>.</p>

<p>This Prusa is 16mm wider than standard, in order to allow for the heated
bed. For further details on the design being followed, please visit:</p>

<p><a href="http://tvrrug.org.uk/">http://tvrrug.org.uk/</a></p>

<p>Looking forward to Phase 2 of the build!</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>The Thames Valley RepRap User Group</title>
      <link>https://chrisjrob.com/2011/11/21/the-thames-valley-reprap-user-group/</link>
      <pubDate>Mon, 21 Nov 2011 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2011/11/21/the-thames-valley-reprap-user-group</guid>
      <description>
       <![CDATA[
         
         <p>I was surprised to realise that I have not yet blogged about my latest
project - building a Reprap 3D Printer.</p>

<p>I have been following the <a href="http://reprap.org" title="Reprap">RepRap project</a>
for some time, but it always seemed to me to require hardware hacking
skills that were that little bit beyond me.</p>

<!--more-->

<p>At <a href="http://oggcamp.org" title="Oggcamp">Oggcamp 2011</a> I watched 
<a href="http://www.youtube.com/watch?v=MiMC39iLsQY" title="Oggcamp 2011 Reprap Presentation by Malcolm Napier">a presentation by Malcolm Napier</a>
of <a href="http://www.e-mpirical.com/" title="empirical">empirical</a> on the Reprap
project.  Whilst this sparked my interest anew, I was put off by
Malcolm’s mention of builds taking months rather than days; as before
this seemed to be a project for hardware hackers.</p>

<p>A few weeks later I received an email from 
<a href="http://carfax.org.uk/" title="Hugo Mills">Hugo Mills</a> asking me to post an
invitation to a new Reprap build event to the 
<a href="http://surrey.lug.org.uk" title="Surrey Linux User Group">Surrey Linux User Group</a> mailing list.
The build event was being organised by Malcolm, and would help users to
build their own Reprap in a supported way. This sounded perfect for me
so, having forwarded the email, I booked a place on the build event.</p>

<p>To cut an unnecessarily long story short - I have now ordered and paid
for my reprap parts and am now eagerly awaiting their arrival. There are
20 of us in the first build project and we are hoping to receive
everything except the electronics by the end of November.  The
expectation is that we will complete the build in January.</p>

<p>If you would like to read more, and perhaps consider participating in a
second build project, then visit <a href="http://tvrrug.org.uk" title="Thames Valley Reprap User Group">the very new TVRRUG website</a>, and
perhaps start off by reading the <a href="http://tvrrug.org.uk/first-steps" title="TVRRUG: First Steps">First Steps page</a>.</p>

<p>I will try and blog about the experience here, in the meantime we have a
fairly active IRC Channel #tvrrug on Freenode if you would like to pop
in for a chat.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>How To Scan to OCR From The Command Line</title>
      <link>https://chrisjrob.com/2011/10/24/how-to-scan-to-ocr-from-the-command-line/</link>
      <pubDate>Mon, 24 Oct 2011 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2011/10/24/how-to-scan-to-ocr-from-the-command-line</guid>
      <description>
       <![CDATA[
         
         <p>I just had to remind myself how to scan to OCR, and thought I would
share the results.</p>

<p>Before you start, you need to have sane installed, and you also need
tesseract-ocr - both should be available in your distros repositories.</p>

<!--more-->

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo apt-get install sane-utils tesseract-ocr
</code></pre></div></div>

<p>Next you need to find out what scanners you have available, and you do
this with:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ scanimage -L
device `v4l:/dev/video0' is a Noname Vimicro USB Camera (Altair) virtual device
device `plustek:libusb:004:002' is a Epson Perfection 1250/Photo flatbed scanner)
</code></pre></div></div>

<p>Obviously the latter is my scanner.</p>

<p>Assuming you have a working scanner, the following is a simple two liner
to scan and OCR.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ scanimage -d 'plustek:libusb:004:002' --mode Lineart \
--format tiff -x 215 -y 297 --resolution 200 &gt; example.tif
</code></pre></div></div>

<p>And finally convert to text with tesseract:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ tesseract /tmp/example.tif example
</code></pre></div></div>

<p>You should now have a file example.txt in your current directory, which
you can open in any text editor.</p>

<p>Obviously this has limitations - it works for single-page A4 portrait
typed documents - but it gives you the basics.</p>

<p>You could probably experiment with the resolution, 200 worked for me,
so I didn’t bother trying anything else.  Traditionally the higher the 
resolution the better, but I seem to recall that tesseract works better
on 300 and below.</p>

<p>On my Epson Perfection 1250 I found that I needed to add the sane 
switch <code class="language-plaintext highlighter-rouge">--warmup-time 0</code> as otherwise it never finished warming up.</p>

<p>If you would prefer to OCR an existing PDF, which is another thing that
I find myself doing from time to time, then first convert it to a tif:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ convert -density 200 example.pdf -depth 8 /tmp/example.tif
</code></pre></div></div>

<p>And then run the above tesseract command.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Time To Accept That Android Is No Longer Open Source?</title>
      <link>https://chrisjrob.com/2011/10/22/time-to-accept-that-android-is-no-longer-open-source/</link>
      <pubDate>Sat, 22 Oct 2011 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2011/10/22/time-to-accept-that-android-is-no-longer-open-source</guid>
      <description>
       <![CDATA[
         
         <p>I read today that <a href="http://arstechnica.com/gadgets/news/2011/10/google-and-samsung-unveil-galaxy-nexus-android-4-at-event.ars" title="Google and Samsung unveil Galaxy Nexus Android 4">Google and Samsung have unveiled Galaxy Nexus Android 4</a>.</p>

<p>It has been well known that the <a href="http://www.zdnet.com/blog/google/google-android-30-honeycomb-open-source-no-more/2845" title="Google Android 3.0 Honeycomb: Open source no more">Android 3.x is not open source</a>
yet, but I had expected 3.x to be open sourced at any moment. Now that
4.x has been released and there is <a href="http://source.android.com/" title="Android Source Code">still no sign of the 3.x or 4.x source code</a>, I think
we have to ask - is Android really open source now?</p>

<!--more-->

<p>Well <a href="http://www.theinquirer.net/inquirer/news/2119266/google-commits-source-android-calendar-api">Google has given some reassurances that 4.x will be open sourced</a>
<em>“We plan to release the source for the recently-announced Ice Cream
Sandwich soon, once it’s available on devices”</em>, but this lacks
credibility when they still haven’t released the code for 3.x.</p>

<p>This could all change in moment, all it takes is for Google to publish
the source code, but this is truly not how an open source project is
supposed to be run.</p>

<p>2011-11-03: Further to this article, Google has announced that 
<a href="http://www.zdnet.com/blog/open-source/google-android-40-to-be-open-sourced-in-coming-weeks/9852" title="Google Android 4.0 to be open sourced in coming weeks">Android 4.0 is to be open sourced in the coming weeks</a>.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Openmediavault 0.2 (Ix) Has Been Released</title>
      <link>https://chrisjrob.com/2011/10/17/openmediavault-0-2-ix-has-been-released-openmediavault/</link>
      <pubDate>Mon, 17 Oct 2011 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2011/10/17/openmediavault-0-2-ix-has-been-released-openmediavault</guid>
      <description>
       <![CDATA[
         
         <p>Remember <a href="http://www.freenas.org/about/history.html">the announcement that FreeNAS was moving to Debian from BSD</a>?
Well today the fruits of that decision have now arrived.</p>

<!--more-->

<p>For more information please visit:</p>

<ul>
  <li><a href="http://blog.openmediavault.org/?p=487">OpenMediaVault 0.2 (Ix) has been released!</a></li>
</ul>


       ]]>
      </description>
    </item>
    
    <item>
      <title>s/wordpress\.//</title>
      <link>https://chrisjrob.com/2011/07/13/swordpress/</link>
      <pubDate>Wed, 13 Jul 2011 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2011/07/13/swordpress</guid>
      <description>
       <![CDATA[
         
         <p>I have finally registered chrisjrob.com for my blog. Please update your bookmarks,
feeds, etc.</p>

<p><a href="http://chrisjrob.com/">http://chrisjrob.com/</a></p>

<!--more-->

<p>The old chrisjrob.wordpress.com will continue to work, but will redirect
to chrisjrob.com. At least until the day I decide to leave Wordpress
whereon I will disappear into oblivion.</p>

<p>Actually, I am very happy with Wordpress.com, so am unlikely to be
leaving any time soon.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Charging For The Interwebs</title>
      <link>https://chrisjrob.com/2011/06/20/charging-for-the-interwebs/</link>
      <pubDate>Mon, 20 Jun 2011 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2011/06/20/charging-for-the-interwebs</guid>
      <description>
       <![CDATA[
         
         <p>One of the most wonderful things about the web and open source are that
all you need is a computer, an Internet connection, a domain name and a
text editor and you can host your own website. The Internet is a great
equaliser - a teenager in his/her bedroom truly can reach out to the
world with a service that is every bit as good as those created by
billion-dollar companies and maybe better.</p>

<p>Until now.</p>

<!--more-->

<p>In their infinite wisdom 
<a href="http://www.theregister.co.uk/2011/06/20/icann_expands_gtlds/" title="ICANN opens the domain floodgates">ICANN has enabled custom TLDs</a>
from $185,000 plus $25,000 per annum.</p>

<p>Needless to say, this limits their availability only to large companies.
No longer is there a level playing field - large companies can pay for a
TLD that is simply not available to smaller companies, organisations or
individuals.</p>

<p>Does this matter? Well I don’t know for certain, but this is the first
time that part of the Internet has been closed off to the rest of us,
and it just doesn’t feel right to me.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>ownCloud Private Web Storage</title>
      <link>https://chrisjrob.com/2011/06/13/owncloud-private-web-storage/</link>
      <pubDate>Mon, 13 Jun 2011 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2011/06/13/owncloud-private-web-storage</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/owncloud.png" align="right" alt="Featured Image">
         
         <p><a href="http://www.bsdnexus.com/blog/articles/owncloud-private-web-storage">An interesting blog post</a> about <a href="http://owncloud.org/">ownCloud</a>. 
ownCloud is a webdav based application allowing you to
store files on your own personal server on the Internet and access them
via http or webdav.</p>

<!--more-->

<p>For more information please:</p>

<ul>
  <li><a href="http://www.bsdnexus.com/blog/articles/owncloud-private-web-storage">Read more on BSDNexus</a></li>
  <li><a href="http://owncloud.org/">Visit ownCloud.org</a></li>
</ul>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Debian Package NCDU</title>
      <link>https://chrisjrob.com/2011/05/09/debian-package-ncdu/</link>
      <pubDate>Mon, 09 May 2011 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2011/05/09/debian-package-ncdu</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/debian_logo.png" align="right" alt="Featured Image">
         
         <p>We all know that feeling when our disk fills up and you are left
desperately scrabbling around to find out where your disk space has
gone. In 
<a href="/2011/02/24/analyse-disk-usage-with-konqueror/" title="Analyse disk usage with Konqueror">a previous blog post I discussed the use of the wonderful Konqueror File Size View</a>,
but this is no good for remote servers. Normally I would resort to “du”
or the wonderful “find” utility to look for large files, but here is an
interesting alternative that I had not come across before: ncdu (ncurses
disk usage).</p>

<!--more-->

<p>Its name tells you pretty much everything you need to know. It can be
installed with a simple <code class="language-plaintext highlighter-rouge">apt-get install ncdu</code> and then the man page is
a useful guide. In simple terms it can just be run with:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># ncdu /var
</code></pre></div></div>

<p>The lovely thing about ncdu is that once it completes its run (which can
take a long time on a large disk or a nfs share), you can drill into the
directory structure following the disk usage to determine where your
space has gone.</p>

<p>It is a very simple program but one that I will find most useful.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Moving From Keepassx To CLI Password Safe Using Vim And GPG</title>
      <link>https://chrisjrob.com/2011/05/04/moving-from-keepassx-to-cli-password-safe-using-vim-and-gpg/</link>
      <pubDate>Wed, 04 May 2011 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2011/05/04/moving-from-keepassx-to-cli-password-safe-using-vim-and-gpg</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/vim_logo.png" align="right" alt="Featured Image">
         
         <p>The more that I work from the command line, the more of a nuisance I
find it that all my passwords are in
<a href="http://www.keepassx.org" title="KeePassX">KeePassX</a> - an excellent GUI
application.</p>

<p>For some time I have intended moving to pwsafe, but am put off by the
time it will take to migrate the data. An alternative is to export the
KeePassX data into an encrypted text file and use the <code class="language-plaintext highlighter-rouge">gnupg.vim</code> Vim
plugin to read and edit it. This post describes how to accomplish this
in a very few steps.</p>

<!--more-->

<p>I first ran KeePassX and deleted the backup group (as I did not wish to
export all my previous generations of passwords). I then exported the
contents to a text file named “passwords” (you could be more
imaginative/secure if you wish!). Then I followed 
<a href="http://awesometrousers.net/post/vim-with-gpg-file-encryption/">these instructions</a>
to create a GPG secured file:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ gpg -c --cipher-algo AES256 passwords
</code></pre></div></div>

<p>And enter your secure passphrase twice. You should now have a new
password file “passwords.gpg”. You can now remove the plain text
version:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ shred --remove passwords
</code></pre></div></div>

<p>In order to edit/view the new passwords.gpg file, we need the Vim
gnupg.vim plugin, which is available in the debian vim-scripts package:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo apt-get install vim-scripts
</code></pre></div></div>

<p>Then edit <code class="language-plaintext highlighter-rouge">/etc/vim/vimrc.local</code> to add the following line:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>set runtimepath+=/usr/share/vim-scripts/
</code></pre></div></div>

<p>This will import all of the vim-scripts plugins, which may not be what
you want. Alternatively you could probably just copy or perhaps symlink
the gnupg.vim plugin to your <code class="language-plaintext highlighter-rouge">~/.vim/plugin/</code> folder.</p>

<p>And that is it - now whenever you wish to view or edit your passwords
you simply type:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ vim passwords.gpg
</code></pre></div></div>

<p>This will prompt you for your password and open the file.</p>

<p>Initially I found this gave errors in relation to <code class="language-plaintext highlighter-rouge">exuberant ctags</code>,
which I suspect is related to vim-scripts and not to gnupg.vim and is
doubtless a feature of the way I have just pulled in all of the
vim-scripts. One option (and what I did) is just to install
exuberant-ctags as follows:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo apt-get install exuberant-ctags
</code></pre></div></div>

<p>Now I just have to format passwords.gpg into something a bit more
structured, perhaps with Vim folding configured.</p>

<p>And if you are looking for a way to create passwords, the pwgen is one
option - it offers a selection of fairly memorable passwords from which
to choose.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo apt-get install pwgen
</code></pre></div></div>

<p>There are some concerns with this approach - anyone can read your
passwords over your shoulder - if you work with others you might be
better off with something like pwsafe. Also some users are concerned
that the contents of the file might be written to memory, although I
believe this is not the case, you should satisfy yourself as to the
security of this approach, as I am certainly not qualified to advise you
on this aspect.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Upgrading To Debian Squeeze</title>
      <link>https://chrisjrob.com/2011/04/05/upgrading-to-debian-squeeze/</link>
      <pubDate>Tue, 05 Apr 2011 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2011/04/05/upgrading-to-debian-squeeze</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/debian_logo.png" align="right" alt="Featured Image">
         
         <p>I finally decided to upgrade my work desktop to Debian Squeeze:</p>

<h2 id="preparing-for-the-upgrade">Preparing for the Upgrade</h2>

<p>I manually removed all but the official lenny repositories (and removed
the Debian Volatile repository which is no longer used), and updated
them to “squeeze”:</p>

<!--more-->

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo vim /etc/apt/sources.list
deb http://91.121.125.139/debian/ squeeze main non-free contrib
deb-src http://91.121.125.139/debian/ squeeze main non-free contrib

deb http://security.debian.org/ squeeze/updates main non-free contrib
deb-src http://security.debian.org/ squeeze/updates main non-free contrib
</code></pre></div></div>

<p>Next, in order to minimise download time, I reviewed my installed
packages:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo dpkg -l | grep "ii " | less
</code></pre></div></div>

<p>And I removed all the unnecessary packages. In particular I decided to
remove all of KDE, as I am now using pekwm. When removing packages I
found apt-get kept trying to upgrade large numbers of packages. Aptitude
was much better, as instead of just trying to install a load of
packages, it reported the problem (e.g. package XYZ will be broken by
this change) and let me choose the solution. I just added the packages
that would be broken to the list of packages to be removed.</p>

<h2 id="upgrade-apt-and-dpkg">Upgrade apt and dpkg</h2>

<p>Then I installed apt and dpkg, to save these from having to be upgraded
during the upgrade process:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo apt-get update
$ sudo apt-get install apt dpkg
</code></pre></div></div>

<h2 id="upgrade-to-squeeze">Upgrade to Squeeze</h2>

<p>Lastly, I ran the upgrade to squeeze with:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo apt-get dist-upgrade
</code></pre></div></div>

<p>During the upgrade I receive warnings about <code class="language-plaintext highlighter-rouge">/lib/firmware/e100</code>
missing. Mindful of the Debian’s much touted removal of non-free
drivers, I did an <code class="language-plaintext highlighter-rouge">apt-file search e100</code> which revealed that I needed to
install the <code class="language-plaintext highlighter-rouge">firmware-linux-nonfree</code> package. This done, I rebooted.</p>

<h2 id="first-boot">First Boot</h2>

<p>It booted fine to the command prompt, but of course without a login
manager it got no further. I simply typed startx to get into pekwm and
it all worked perfectly.</p>

<h2 id="installing-kde">Installing KDE</h2>

<p>I decided to install KDE again, although I would struggle to explain
why, curiosity perhaps. I installed kde-core and it all just worked
perfectly, with a neat first time wizard to handle the migration of
configuration from KDE3.5 to KDE4, excellent work.</p>

<p>I used KDE4 for a few hours before returning to pekwm.</p>

<h2 id="conclusions">Conclusions</h2>

<p>So far Squeeze has been flawless and yet another Debian dist-upgrade
without a hitch. Well done Debian.</p>

<p>KDE looks great and seemed to work exactly as it ought. Over the few
hours I encountered no problems whatsoever. But I do wish KDE would
learn from some of the features of PekWM - I just love the
left-mouse-click on the screen edge to move to the next window, I love
the ability to group windows and I love the fact that you can resize
windows to fill the available space.</p>

<p>I am not saying that all those features should be made the default in
KDE, such matters are subjective, but they ought to at least be possible
in KDE and as far as I can tell they are not. There is a screen edge
option, but it works poorly, relying on you holding the mouse at the
screen edge for a definable period of time.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Dynamic Dns and Remote ssh and VNC</title>
      <link>https://chrisjrob.com/2011/04/05/dynamic-dns-and-remote-ssh-and-vnc/</link>
      <pubDate>Tue, 05 Apr 2011 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2011/04/05/dynamic-dns-and-remote-ssh-and-vnc</guid>
      <description>
       <![CDATA[
         
         <p>I want to be able to support my father’s PC remotely via SSH and VNC.
Some people recommend teamviewer, but I prefer the flexibility and
security of ssh, and the fact that this approach is fully open source.</p>

<h2 id="step-1-sign-up-for-dynamic-dns">Step 1: Sign up for Dynamic DNS</h2>

<!--more-->

<p>The first problem is that most people’s Internet service do not have a
static IP address. In practice it is fairly static on modern broadband
services, but, if you do not want to be fiddling about trying to find
out what the current IP address is, then you need a dynamic DNS
service.</p>

<p>Dynamic DNS gives you an unchanging address which is automatically
mapped to the current IP address, whatever that might be. So for example
you might have <code class="language-plaintext highlighter-rouge">daddy.dyndns.xyz</code> as your address. To make this work,
you need to have a client machine on the network, that will keep
updating daddy.dyndns.xyz with the latest IP address. Some home routers
have this functionality built in.</p>

<p>I did some research and determined that the very popular
<a href="http://dyndns.com">http://dyndns.com</a> service is reliable, and so I went ahead and signed
up a new account for my father, and set-up a hostname for his router’s
WAN address.</p>

<h2 id="step-2-configure-client">Step 2: Configure Client</h2>

<p>If you’re lucky your router will support dynamic DNS. My father’s did,
so I just logged onto the router and entered the dyndns account
information, and it just worked perfectly.</p>

<p>If your router does not support dynamic DNS, all is not lost, simply
install ddclient on a computer on the network (presumably, but not
necessarily, the one that you want to be supporting):</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo apt-get install ddclient`
</code></pre></div></div>

<p>Configuration of ddclient is simple, the ncurses configuration process
takes you step-by-step through the necessary steps.</p>

<h2 id="step-3-configure-port-forwarding">Step 3: Configure port forwarding</h2>

<p>The next problem is that your router has a firewall that is designed
explicitly to stop people getting into your network. We need to punch a
small hole in that firewall. Needless to say this does have security
implications, so we need to be careful.</p>

<p>So we need to open a port on the router and forward it to the machine
that we wish to support. This machine does need to have a static IP
address.</p>

<p>Log onto your router via its web management page. The main difficulty
here is in finding the port forwarding option, when it is probably
called something user friendly like Game Sharing or some other
perversely unhelpful name. If you can’t find it, then you’re best of
Googling for “port forwarding routername” where routername is the make
and model of your router. Or just read the manual, if by some miracle
you have one to hand.</p>

<p>But which port to forward? Your router will probably make it easy to
forward the standard ssh port - port 22 - the problem is that everyone
knows that is the ssh port and you may experience a high number of
attacks on that port. In theory you should be safe enough with secure
passwords, but personally I would not choose to forward the standard ssh
port, but would instead add a custom service “ssh_obscure” on a
different TCP port number and forward that to port 22 on PC that you
wish to support:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Name: ssh_obscure
Protocol: TCP
Source port: 2121 (or whatever you choose)
Destination IP: (enter the client PC's IP)
Destination Port: 22
</code></pre></div></div>

<p>If it won’t let you specify a Destination Port, then it will forward to
the same custom port on the PC. This will then require a change in the
configuration of sshd on the PC, which I will explain in the next step.</p>

<h2 id="step-4-install-openssh-server">Step 4: Install openssh-server</h2>

<p>On the client PC, i.e. the PC you will be supporting, install
openssh-server and its dependencies:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo apt-get install openssh-server
</code></pre></div></div>

<p>If you didn’t bother with the ssh_obscure suggestion above, then you
are simply forwarding from port 22 on the router to port 22 on the
client and no further configuration of openssh is required.</p>

<p>If you did set-up the ssh_obscure, but forwarding to port 22 on the
client, then again no further configuration is required.</p>

<p>If you set up ssh_obscure, but were unable to set a Destination Port,
then you are forwarding the same port to the client, so you will need to
change the relevant setting in <code class="language-plaintext highlighter-rouge">/etc/ssh/sshd_config</code>. E.g. <code class="language-plaintext highlighter-rouge">Port 2121</code>.
Then reload the ssh configuration with:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo /etc/init.d/ssh force-reload
</code></pre></div></div>

<h2 id="step-5-install-fail2ban">Step 5: Install Fail2ban</h2>

<p>As stated above, we have reduced the security of your network by taking
these steps and we are now going to attempt to rectify this somewhat by
installing fail2ban.</p>

<p>Some argue that this is unnecessary, if you have set a custom port for
ssh and maintain secure passwords, but I see no reason for relying on
security by obscurity. The main benefit of using a custom ssh port is to
prevent the attempts in the first place, but <strong>hiding your front door is
no substitute for locking it</strong>.</p>

<p>Fail2ban will monitor your <code class="language-plaintext highlighter-rouge">/var/log/auth.log</code> and block any hosts that
have repeatedly failed to login correctly, by blocking them in iptables
(the standard Linux firewall).</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo apt-get install fail2ban
</code></pre></div></div>

<p>Next you should create a new file <code class="language-plaintext highlighter-rouge">/etc/fail2ban/jail.local</code>, with the
following contents:\</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>[ssh]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 600
</code></pre></div></div>

<p>Strictly speaking the above is already configured in
<code class="language-plaintext highlighter-rouge">/etc/fail2ban/jail.conf</code>, but I think it makes sense to take ownership
of those settings by redefining them in jail.local. If you have set a
custom ssh port, then set it in jail.local as above, replacing 
<code class="language-plaintext highlighter-rouge">port = ssh</code> with <code class="language-plaintext highlighter-rouge">port = 2121</code> or whatever. I have reduced maxretry to 3 from
the default of 6, as I found it was giving nearer to 18 attempts, thanks
to the peculiarities of the auth.log file.</p>

<p>Finally reload these new settings in fail2ban:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo /etc/init.d/fail2ban force-reload
</code></pre></div></div>

<p>In order to test fail2ban, try and log into the client from another
machine on the same network. You will need attempt to log in with the
wrong password a number of times. This may not be exactly 3 times, but
if you get to 9 attempts and it still has not blocked you, then there is
problem.</p>

<p>fail2ban will only block you for 10 minutes, after 3 failed login
attempts (you can change these settings as above).</p>

<h2 id="step-6-testing-ssh">Step 6: Testing SSH</h2>

<p>At this stage you should be able to log in remotely to your client PC.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ ssh -p 2121 username@daddy.dyndns.xyz
</code></pre></div></div>

<p>Obviously change 2121 for your custom port, or leave out <code class="language-plaintext highlighter-rouge">-p 2121</code> if
you are using the standard ssh port 22.</p>

<h2 id="step-7-installing-vnc">Step 7: Installing VNC</h2>

<p>Having ssh access is wonderful, but not much help when your Dad asks you
where his OpenOffice toolbar has gone; so we need to add VNC on the PC
you wish to support:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo apt-get install x11vnc
</code></pre></div></div>

<p>And on the PC from which you will be providing support you need to
install vnc-viewer, or use your preferred vncviewer:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo apt-get install xvnc4viewer
</code></pre></div></div>

<h2 id="step-8-testing-vnc">Step 8: Testing VNC</h2>

<p>Now, you <em>could</em> have set up x11vnc to be running permanently with a
password, and then you could set your router to port forward a custom
VNC port to the client PC. This approach does significantly degrade your
security and is in any case unnecessary. Instead we can just run it when
we need it by using ssh, by typing this command <strong>from the PC from which
you will be providing support</strong> and changing as appropriate:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ ssh -p 2121 -t -L 5900:localhost:5900 username@daddy.dyndns.xyz 'x11vnc -noxdamage -localhost -display :0'
</code></pre></div></div>

<p>This will connect by ssh to the client machine, run x11vnc bound only to
localhost (so no-one else can connect to it) and build a tunnel between
the remote VNC port to your local VNC port.</p>

<p>One caveat is that the username needs to be the currently logged in
user, otherwise x11vnc will refuse to start.</p>

<p>And finally on the PC from which you are providing support we just run:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>vncviewer localhost:0
</code></pre></div></div>

<p>And you should now be looking at your father’s (or whoever’s) PC.</p>

<p>Whilst this does all sound pretty involved, all but this final step is
only required once, then a quick ssh command and vncviewer and you are
connected.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Limiting The Bandwidth Usage of apt-get and wget</title>
      <link>https://chrisjrob.com/2011/03/31/limiting-the-bandwidth-usage-of-apt-get-and-wget/</link>
      <pubDate>Thu, 31 Mar 2011 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2011/03/31/limiting-the-bandwidth-usage-of-apt-get-and-wget</guid>
      <description>
       <![CDATA[
         
         <p>I have to be careful about the bandwidth I use at work; so I limit the
bandwidth of apt-get and wget.</p>

<h2 id="apt-get">apt-get</h2>

<p>For apt-get you just need to create a new file:</p>

<!--more-->

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/etc/apt/apt.conf.d/76download
</code></pre></div></div>

<p>with the following contents:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo vim /etc/apt/apt.conf.d/76download 
Acquire {
    Queue-mode "access";
    http {
        Dl-Limit "128";
    };
};
$
</code></pre></div></div>

<p>The above will limit your bandwidth to 128K, adjust this figure to suit
your network.</p>

<p>Alternatively, if you don’t want this change to be set permanently, then
you can specify it in the command line:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo apt-get -o Acquire::http::Dl-Limit=128 upgrade
</code></pre></div></div>

<h2 id="wget">wget</h2>

<p>To rate-limit wget, simply edit <code class="language-plaintext highlighter-rouge">/etc/wgetrc</code> or your personal
configuration at <code class="language-plaintext highlighter-rouge">~/.wgetrc</code> and add or edit the following line:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>limit-rate=128k
</code></pre></div></div>

<h2 id="other">other</h2>

<p>Other packages can be configured in different ways, but you could
install <code class="language-plaintext highlighter-rouge">trickle</code> and then read its man page to determine how to use it.
For example (from the man page):</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ trickle -u 128 -d 128 ncftp
</code></pre></div></div>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Viewing A Textual PDF In Mutt</title>
      <link>https://chrisjrob.com/2011/03/23/viewing-a-textual-pdf-in-mutt/</link>
      <pubDate>Wed, 23 Mar 2011 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2011/03/23/viewing-a-textual-pdf-in-mutt</guid>
      <description>
       <![CDATA[
         
         <p>I think there must be something wrong with me. Why, in this age of
graphical user interfaces, does it delight me so much that I can view
textual PDFs within Mutt (on a remote server without a gui)?</p>

<p>To set this up, you need to install pdftotext. This application is
available in either poppler-utils or xpdf-utils - most people seem to
use the latter, but I suspect the former is probably a better option for
a text-only server. I installed poppler-utils.</p>

<!--more-->

<p>Next create (or edit) the <code class="language-plaintext highlighter-rouge">~/.mailcap</code> file, so that it has the
following line:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>application/pdf;                pdftotext -layout %s -; copiousoutput
</code></pre></div></div>

<p>You could also add the line:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>text/html;                      elinks %s; nametemplate=%s.html`
</code></pre></div></div>

<p>The latter line opens HTML attachments in elinks.</p>

<p>Then just hit “V” when viewing an email, and you will see the
attachments, select the attachment and hit Enter to view it. Awesome :)</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Configuring Mutt For Spam</title>
      <link>https://chrisjrob.com/2011/03/23/configuring-mutt-for-spam/</link>
      <pubDate>Wed, 23 Mar 2011 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2011/03/23/configuring-mutt-for-spam</guid>
      <description>
       <![CDATA[
         
         <p>I have been using Mutt for some time, but have always found it a pain
for handling spam, so I finally spent the time yesterday to work out how
to do it. The surprising thing is that there seemed to be different and
confusing advice on how to achieve this. The best information turned out
to be the <a href="http://wiki.mutt.org/?MuttGuide/Macros">Mutt manual</a> itself,
which is a great example of how open source documentation should be.</p>

<!--more-->

<p>My folder layout is that I have a Spam folder, within which I have two
folders - Spam/Ham and Spam/Verified. The Spam/Ham are good emails,
particularly those that have been wrongly identified as Spam. The
Spam/Verified are the Spam that I am confirming are definitely Spam.
SpamAssassin places all the detected Spam in the Spam folder. I
generally move all the Spam folder into Spam/Verified except the one or
two false positives, which I move to Spam/Ham. Then overnight
<a href="http://spamassassin.apache.org/">SpamAssassin</a> learns from those two
folders - a fairly standard SpamAssassin layout I think.</p>

<p>Occasionally we get Spam in our Inbox, and obviously these can be moved
straight to the Spam/Verified folder.</p>

<p>The important factor here is that I want to be able to easily flag
individual emails in my Inbox as Spam, but I also want to be able to tag
the whole of my Spam folder and flag as Spam.</p>

<p>The manual gives a <a href="http://www.mutt.org/doc/devel/manual.html#functions">list of functions</a>, which I
used rather than the normal key bindings, as the manual advises that
this is more portable and robust. I used the <code class="language-plaintext highlighter-rouge">tag-prefix</code> command to
enable tagging. I was not using the keys H nor S, so I chose these as
Ham and Spam respectively.</p>

<p>You need two macros for each function - one for use in the folder list
(index) and one for use inside an email message (pager), so that you can
flag it as Spam without moving back to the message list.</p>

<p>The biggest problem I encountered was the difficulty that removing the
unread flag resulted in the selection moving down to the next email, and
then the next email would be flagged as Spam - frustrating. The only
solution seemed to be modify the muttrc configuration before and after,
and almost unbelievably that is in fact possible using the function.</p>

<p>The final macros are shown below:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># Move message(s) to Spam/Verified by pressing "S"
macro index S "&lt;tag-prefix&gt;&lt;enter-command&gt;unset resolve&lt;enter&gt;&lt;tag-prefix&gt;&lt;clear-flag&gt;N&lt;tag-prefix&gt;&lt;enter-command&gt;set resolve&lt;enter&gt;&lt;tag-prefix&gt;&lt;save-message&gt;=INBOX/Spam/Verified&lt;enter&gt;" "file as Spam"
macro pager S "&lt;save-message&gt;=INBOX/Spam/Verified&lt;enter&gt;" "file as Spam"
# Move message(s) to Spam/Ham by pressing "H"
macro index H "&lt;tag-prefix&gt;&lt;enter-command&gt;unset resolve&lt;enter&gt;&lt;tag-prefix&gt;&lt;clear-flag&gt;N&lt;tag-prefix&gt;&lt;enter-command&gt;set resolve&lt;enter&gt;&lt;tag-prefix&gt;&lt;save-message&gt;=INBOX/Spam/Ham&lt;enter&gt;" "file as Ham"
macro pager H "&lt;save-message&gt;=INBOX/Spam/Ham&lt;enter&gt;" "file as Ham"
# Return to Inbox by pressing "."
macro index . "&lt;change-folder&gt;=INBOX&lt;enter&gt;" "Inbox"
</code></pre></div></div>

<p>Suddenly Mutt is the easiest way for me to handle by Spam.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>XKCD Wallpaper</title>
      <link>https://chrisjrob.com/2011/03/21/xkcd-wallpaper/</link>
      <pubDate>Mon, 21 Mar 2011 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2011/03/21/xkcd-wallpaper</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/xkcd-wallpaper_300.png" align="right" alt="Featured Image">
         
         <p>I confess, I like <a href="http://xkcd.com/">XKCD</a>. Even though some of them are
<a href="http://xkcd.com/871/">unfunny</a> and others <a href="http://xkcd.com/849/">beyond my understanding</a>, 
sometimes, just sometimes, they 
<a href="http://xkcd.com/208/">strike a chord</a>.</p>

<!--more-->

<p>Once I <a href="/tag/pekwm">moved to pekwm</a> I found myself with a black plain
desktop, what could be better, I thought, than the current XKCD comic in
the centre, with the tooltip comment located underneath in an
appropriate font.</p>

<p><img src="/assets/xkcd-wallpaper.png" alt="XKCD Wallpaper Screenshot" />
After some trial and error, I ended up writing 
<a href="http://pastebin.com/vqtmyRWW">this script</a>. 
It is far from perfect, and will
probably end up being broken at some point, although it survived 
<a href="http://xkcd.com/859/">its first trial</a> unscathed. I’m a little embarrassed
by my tortuous curl/perl one-liner, ideally I would re-write this whole
thing in perl, but it has worked reliably for a couple of months, so I
dare say that I will never get around to it.</p>

<p>Currently it works for pekwm, and I dare say it will work for other
lightweight window managers, like openbox, that can use <code class="language-plaintext highlighter-rouge">feh</code> to set the
desktop wallpaper. If not, then it shouldn’t be too difficult to modify
the script for your window manager or desktop environment. You can also
run the script without the <code class="language-plaintext highlighter-rouge">-w</code> switch in order to just create the XKCD
image in the directory for your own purposes.</p>

<p>You will obviously need <code class="language-plaintext highlighter-rouge">perl, curl, wget, and fold</code>, if they aren’t
already installed on your system. Create a directory, say <code class="language-plaintext highlighter-rouge">~/.xkcd</code> and
save this script in there, along with the 
<a href="http://antiyawn.com/uploads/Humor-Sans.ttf">XKCD font</a>, mark the script as
executable. If you read the script, it is fairly self-explanatory I
think.</p>

<p>You basically run it like this:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/path/to/.xkcd/xkcd -w -d '/path/to/.xkcd'
</code></pre></div></div>

<p>For pekwm, just add a line at the end of the <code class="language-plaintext highlighter-rouge">~/.pekwm/start</code> file:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>(sleep 30 &amp;&amp; /path/to/.xkcd/xkcd -w -d '/path/to/.xkcd') &amp;
</code></pre></div></div>

<p>I hope it works for you, feel free to comment any suggestions or
criticisms. If you do start using it, it would be fantastic if you could
add a comment to let me know.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Windows 7 Fails To Read An NTFS Drive Twice</title>
      <link>https://chrisjrob.com/2011/03/20/windows-7-fails-to-read-an-ntfs-drive-twice/</link>
      <pubDate>Sun, 20 Mar 2011 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2011/03/20/windows-7-fails-to-read-an-ntfs-drive-twice</guid>
      <description>
       <![CDATA[
         
         <p>My brother-in-law’s Buffalo HS-DH500GL NAS (network attached storage)
has failed, it responds to pings, but cannot be accessed via the web
interface, nor by the Windows client software. We reset the device on
multiple occasions, but the reset failed to change the IP address to the
default. We noticed that the rear fan is not working, which suggests
that the device is not in the best of health.</p>

<!--more-->

<p>So we took the drive out of the NAS and I used a 
<a href="http://www.amazon.co.uk/gp/product/B001A5SK56/ref=as_li_ss_tl?ie=UTF8&amp;tag=robsquadnet-21&amp;linkCode=as2&amp;camp=1634&amp;creative=19450&amp;creativeASIN=B001A5SK56">USB to SATA cable</a>
to mount the drive on my Debian Squeeze laptop. All worked just fine, I
could browse his music and pictures, but there wasn’t much I could do to
recover his 200GB of music and pictures; I hadn’t brought an external
USB drive with me (note to self:
<a href="http://www.amazon.co.uk/gp/product/B001A5SK56/ref=as_li_ss_tl?ie=UTF8&amp;tag=robsquadnet-21&amp;linkCode=as2&amp;camp=1634&amp;creative=19450&amp;creativeASIN=B001A5SK56">buy a second cable</a>),
and we were unable to share a Windows directory with my laptop, for the
simple reason that my laptop did not have samba installed, and his
Vodafone 3G broadband was not functioning. Yes, it was one of those
days.</p>

<p>Simple enough, we thought, we would just plug the USB to SATA cable into
his Windows 7 laptop instead. Unfortunately it seems that, despite
working out of the box on Linux, it requires a driver installed under
Windows 7. A driver which I did not have with me, and of course our 3G
connection was still down at this point; so I could not download it
(even if I could track it down).</p>

<p>Fortunately we had a spare SATA desktop PC, with a spare place for a
hard drive. He did not wish to use Linux, so installed Windows 7. We
then plugged in the SATA drive, enabled it in the BIOS, and rebooted.
The drive and its partitions were detected, but not assigned a drive
letter. We went into drive management, but the option to assign a drive
letter was disabled. Clearly there was something adrift with the drive
that was preventing it from being mounted in Windows 7.</p>

<p>What I would then have done was use a Linux live CD to boot onto this
SATA PC, mount both drives and simply copy the data across, but time had
beaten us - they needed to go to his parents, and we had to leave it at
that. He decided to take the drive into work and get one of his
technical people to recover his data onto a fresh drive.</p>

<p>What a frustrating few hours, and it would have been trivial to fix on a
Linux network, firstly because the drive would have just mounted fine
(which it did on my laptop), secondly because I could have trivially
created an NFS share (okay unfair - as it wasn’t Windows fault that I
didn’t have the samba installed), or thirdly I could just have used dd
with ssh to transfer the drive image to another computer on the network.</p>

<p>Working on a Windows network is like having one arm tied behind your
back. Working on a Windows network without functioning broadband is like
having one arm tied behind your back whilst wearing a blindfold.</p>

<p>I need a beer.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Listing A Packages Dependencies With apt-rdepends</title>
      <link>https://chrisjrob.com/2011/03/17/listing-a-packages-dependencies-with-apt-rdepends/</link>
      <pubDate>Thu, 17 Mar 2011 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2011/03/17/listing-a-packages-dependencies-with-apt-rdepends</guid>
      <description>
       <![CDATA[
         
         <p>I sometimes find myself wondering what a package’s dependencies are.
This question is usually quickly satisfied with a
<code class="language-plaintext highlighter-rouge">$ sudo apt-get install packagename</code> and then aborting, or perhaps more
elegantly <code class="language-plaintext highlighter-rouge">$ sudo apt-get -s install packagename</code> to simulate the
installation.</p>

<!--more-->

<p>This doesn’t give you the entire picture, as it only lists the
dependencies that you don’t already have; which is usually all you care
about, but there are occasions when you would like to list all of a
package’s dependencies, for example when planning for a system that is
not built yet, or not accessible at the current time. Or just for idle
curiosity! Perhaps that’s just me.</p>

<p>Anyhow, <code class="language-plaintext highlighter-rouge">apt-rdepends</code> is the application for the job. It doesn’t just
list the package’s dependencies, but it recursively goes through each
dependency’s dependencies.</p>

<p>Install it with the usual <code class="language-plaintext highlighter-rouge">$ sudo apt-get install apt-rdepends</code> and then
simply run with:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ apt-rdepends packagename | less
</code></pre></div></div>

<p>Yes, it is quite verbose, hence the “| less” - leave it out if you
prefer, or use “| more” which is more likely to be installed on your
system (tip: install “less” - less is better than more, if that makes
any sense).</p>

<p>For example, I had just installed “flite” and was amazed at how
functional it was. I wondered to myself whether it was just a front-end
to festival - but how to find out?</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ apt-rdepends flite
</code></pre></div></div>

<p>Which comes back with no other speech synthesis engine (e.g. festival),
so clearly flite is a speech synthesis engine in its own right.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Wordpress Categories And Tags</title>
      <link>https://chrisjrob.com/2011/03/16/wordpress-categories-and-tags/</link>
      <pubDate>Wed, 16 Mar 2011 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2011/03/16/wordpress-categories-and-tags</guid>
      <description>
       <![CDATA[
         
         <p>After a couple of weeks on Wordpress, I have decided that I am using
Categories and Tags badly, basically my tags and categories were close
to being the same and I was struggling to know how to use them.</p>

<p>What I have decided is to cut down on the number of categories and treat
these as “feeds”; so I have a technology feed, a Linux feed, a Debian
feed, and only a couple of others. These are the feeds to which I am
committing to maintain, so if you are only interested in my posts on
Linux, you can feel confident about changing your subscription to my
Linux category.</p>

<!--more-->

<p>The remaining categories are:</p>

<ul>
  <li><a href="http://chrisjrob.com/category/personal/">http://chrisjrob.com/category/personal/</a></li>
  <li><a href="http://chrisjrob.com/category/technology/">http://chrisjrob.com/category/technology/</a></li>
  <li><a href="http://chrisjrob.com/category/technology/linux/">http://chrisjrob.com/category/technology/linux/</a></li>
  <li><a href="http://chrisjrob.com/category/technology/linux/debian/">http://chrisjrob.com/category/technology/linux/debian/</a></li>
  <li><a href="http://chrisjrob.com/category/technology/linux/ltsp/">http://chrisjrob.com/category/technology/linux/ltsp/</a></li>
</ul>

<p>As you can see from the above layout, my technology feed will include
Linux and Debian.</p>

<p>For the RSS feeds, just append “feed/” to the end of the above
categories, or visit the above pages and subscribe to the feeds via your
browser feed functionality.</p>

<p>This means that you can subscribe to the element of my blog that you
find interesting, and save yourself the grief of reading about my dog
waking me up at 5.00am vomiting. Or, if you are one of my non-geek
friends, you could subscribe to my personal feed and avoid all my weird
ramblings about the leenucks.</p>

<p>If you want a more fine-grained approach, then you can of course use the
tags in the same way, but the difference is that I am not committing to
maintain tags, the tags are by their nature more anarchic. But
nevertheless if you wanted to watch my posts on the dreamplug (random
example) you would just visit:</p>

<ul>
  <li>Web: <a href="http://chrisjrob.com/tag/dreamplug/">http://chrisjrob.com/tag/dreamplug/</a></li>
  <li>Feed: <a href="http://chrisjrob.com/tag/dreamplug/feed/">http://chrisjrob.com/tag/dreamplug/feed/</a></li>
</ul>

<p>Just don’t be surprised if there are no further posts on dreamplug.
There probably won’t be.</p>

<p>Be warned, part of the reason for this change is that I intend starting
a more personal blog, which could be exceedingly boring for some of you;
just subscribe to the technology or Linux feeds instead.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Virtualization With KVM On A Debian Squeeze Server</title>
      <link>https://chrisjrob.com/2011/03/14/virtualization-with-kvm-on-a-debian-squeeze-server-howtoforge-linux-howtos-and-tutorials/</link>
      <pubDate>Mon, 14 Mar 2011 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2011/03/14/virtualization-with-kvm-on-a-debian-squeeze-server-howtoforge-linux-howtos-and-tutorials</guid>
      <description>
       <![CDATA[
         
         <p>A nice how-to for KVM and libvirt on Debian Squeeze:</p>

<ul>
  <li><a href="http://www.howtoforge.com/virtualization-with-kvm-on-a-debian-squeeze-server">Virtualization With KVM On A Debian Squeeze Server</a></li>
</ul>

<!--more-->

<p>I have used KVM, but never with libvirt.  I understand that libvirt is a
standard api for managing various virtualisation technologies, e.g. KVM,
QEMU, Xen and others, giving you a common way of managing your guests
regardless of the technology in use.</p>

<p>For more information please visit:</p>

<ul>
  <li><a href="http://www.howtoforge.com/virtualization-with-kvm-on-a-debian-squeeze-server">Virtualization With KVM On A Debian Squeeze Server</a></li>
</ul>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Sharing A Wireless Connection Via Ethernet Port</title>
      <link>https://chrisjrob.com/2011/03/14/sharing-a-wireless-connection-via-ethernet-port/</link>
      <pubDate>Mon, 14 Mar 2011 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2011/03/14/sharing-a-wireless-connection-via-ethernet-port</guid>
      <description>
       <![CDATA[
         
         <p>One of the challenges in 
<a href="/2011/03/13/installing-debian-on-a-thin-client-pc/">Installing Debian on a thin client PC</a> was that the
venue had a guest wireless network, but no wired network, and clearly
these thin client devices did not have wireless capability.</p>

<p>Mike sorted this out by setting up IP forwarding on his laptop, so that
we had a wired network which used his wireless connection as a gateway.
I knew this was technically possible, but I had not actually seen it
done before.</p>

<!--more-->

<p>So this morning I sought out suggestions from the 
<a href="http://mailman.lug.org.uk/mailman/listinfo/surrey">Surrey LUG Mailing List</a>, and the
following was the end result.</p>

<p>Please note that this solution is as-yet untested by me and involves
changing your existing iptables rules - albeit only until you reboot.</p>

<p>Assuming eth0 is your LAN port and wlan0 is your wireless WAN port, and
that you have connected your client PC to your host PC with a 
<a href="http://www.amazon.co.uk/gp/product/B000Q6JQCQ/ref=as_li_ss_tl?ie=UTF8&amp;tag=robsquadnet-21&amp;linkCode=as2&amp;camp=1634&amp;creative=19450&amp;creativeASIN=B000Q6JQCQ">crossover ethernet cable</a>
(or perhaps via a <a href="http://www.amazon.co.uk/gp/product/B0000E5SEQ/ref=as_li_ss_tl?ie=UTF8&amp;tag=robsquadnet-21&amp;linkCode=as2&amp;camp=1634&amp;creative=19450&amp;creativeASIN=B0000E5SEQ">dedicated switch</a>),
then the following instructions should work:</p>

<h2 id="on-the-laptop">On the Laptop</h2>

<p>On the laptop, which is assumed to have a working wireless connection,
and a wired connection to the Client PC:</p>

<p>Firstly, you will probably need to set some static IP details:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># ifdown eth0
# ifconfig eth0 192.168.10.1 netmask 255.255.255.0
</code></pre></div></div>

<p>Next we need to activate IP forwarding, and setup iptables to NAT:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># sysctl -w net.ipv4.ip_forward=1
# iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
</code></pre></div></div>

<p>The following may be worth trying if the client gets Host Prohibited
responses:\</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># iptables -F FORWARD 
# iptables -A FORWARD -j ACCEPT 
# iptables -nvL
</code></pre></div></div>

<h2 id="dns-and-dhcp">DNS and DHCP</h2>

<p>If you plan to do this regularly, then you might consider using dnsmasq
to provide a DNS nameserver and DHCP to your client PC. If you do this,
then you should not complete the next section entitled “On the Client
PC”, which should just pick up its details using DHCP. This method is
particularly handy with a Debian net install.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># apt-get install dnsmasq 
# vim /etc/dnsmasq.conf interface=eth0 dhcp-range=192.168.10.10,192.168.10.19,4h 
# /etc/init.d/dnsmasq restart
</code></pre></div></div>

<h2 id="on-the-client-pc">On the Client PC</h2>

<p>Do not carry out this section, if you configured dnsmasq above.</p>

<p>On the client PC, which is assumed to have a wired connection to the
laptop, all you need do is configure static IP networking and add a
working nameserver to /etc/resolv.conf (normally populated via
dhcp-client):\</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo -i
# ifdown eth0
# ifconfig eth0 192.168.10.10 netmask 255.255.255.0 gateway 192.168.10.1
# echo "nameserver 8.8.8.8" &gt; /etc/resolv.conf
</code></pre></div></div>

<h2 id="finishing-up">Finishing up</h2>

<p>When you’re finished, you should comment out the lines in
<code class="language-plaintext highlighter-rouge">/etc/dnsmasq.conf</code> and reboot, and you should be back to normal again.</p>

<p>I am really looking forward to testing this set-up; so in the meantime
if you get it working, please do let me know. Any suggestions for
improvement - please do feel free to comment.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Installing Debian On A Thin Client Pc</title>
      <link>https://chrisjrob.com/2011/03/13/installing-debian-on-a-thin-client-pc/</link>
      <pubDate>Sun, 13 Mar 2011 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2011/03/13/installing-debian-on-a-thin-client-pc</guid>
      <description>
       <![CDATA[
         
         <p>This Saturday I attended the <a href="http://surrey.lug.org.uk/bab20110312">Surrey Linux User Group meeting</a> 
held at <a href="http://siriusit.co.uk/">Sirius in Addlestone</a>. Mike Judd of 
<a href="http://www.akunagroup.com/">Akuna Group</a> brought along a number of thin client
PCs, along with monitors, keyboards, mice and a switch and set a
challenge for attendees to attempt to install Linux on them.</p>

<p>The thin clients were IGEL thin clients with 1GB RAM and 1GB transcend
flash card. The RAM is plenty for Linux, so the main challenge was
keeping the installation under 1GB, when modern Linux distros are
probably 6gb or so.</p>

<!--more-->

<p>I decided to try installing a minimal version of Debian, running just
the PekWM Window Manager and not much else. This would me the advantage
of the enormous Debian repositories, with all the flexibility that this
provides.</p>

<p>Please note that this is not a howto, in fact I have typed it up a day
later from memory, there are bound to be missing steps in the process,
but hopefully enough to give you the jist of what I did.</p>

<h2 id="the-installation">The Installation</h2>

<p>As usual with thin clients there was no optical drive, I tried using 
<a href="http://linitx.com/viewproduct.php?prodid=12992">my fabulous IODD external hard drive</a> 
to serve up a Debian net install image, but it did not seem to work, not sure why as
the BIOS had a USB-CDROM option. So I had to mount the IODD on my laptop
and transfer the image over to a memory key. Fortunately Debian has a
trick up its sleeve - you can now dd ISOs straight onto a memory stick -
how fantastic is that?! The command was something like this (note that
you write to the drive not to a partition - e.g. <code class="language-plaintext highlighter-rouge">/dev/sdb</code> not
<code class="language-plaintext highlighter-rouge">/dev/sdb1</code>):</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo dd if=/mnt/_iso/debian-squeeze-netinst.iso of=/dev/sdX bs=1M
</code></pre></div></div>

<p>Having set the BIOS to boot first from USB-HDD and next from USB-ZIP (I
can never remember which), I rebooted. Success, I was presented with the
Debian installer, taking the standard installer (non-graphical), I set
the language and keyboard settings and I choose to manually partition
the drive. This was because the guided partitioning reserved 90mb for
swap space, rightly or wrongly I thought this was pretty pointless, and
reduced this to nil. It has to be said that I did have some memory
problems later, and some swap would be advisable.</p>

<p>Towards the end of the Debian installation, it prompted me to select
what type of system I wanted to install, I unchecked all the options, in
order to leave me with a bare Debian system.</p>

<p>The installation finished, I rebooted and removed the USB key.</p>

<h2 id="the-graphical-environment">The Graphical Environment</h2>

<p>Once booted I was faced with a text login prompt. Amazing, a full Debian
system at my finger tips. But no-one was going to be very impressed with
that - I needed a graphical environment. A quick “df” showed me that I
had used 500mb of disk space, so I was already very tight for space.</p>

<p>I installed xserver-xorg and pekwm:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo apt-get install xserver-xorg pekwm
</code></pre></div></div>

<p>But when I tried to run “startx” to enter the graphical environment the
command was not found. For this sort of problem you need “apt-file”.
apt-file is a wonderful program that enables you to find which package
you need for a known command (or other file).</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo apt-get install apt-file
$ sudo apt-file update 
$ apt-file search bin/startx
xfce4-utils: /usr/bin/startxfce4 xinit: /usr/bin/startx`
</code></pre></div></div>

<p>In this instance I wish to know which package includes the file
<code class="language-plaintext highlighter-rouge">bin/startx</code>. I could just search for “startx”, but I will get some
pointless hits, most programs are located in a directory called “bin”,
so searching for <code class="language-plaintext highlighter-rouge">bin/startx</code> will only match bin commands. The output
tells me that the package that I am missing is <code class="language-plaintext highlighter-rouge">xinit</code>, so a quick
apt-get:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo apt-get install xinit
</code></pre></div></div>

<p>Now I can run pekwm with <code class="language-plaintext highlighter-rouge">startx</code>.</p>

<h2 id="configuring-pekwm">Configuring pekwm</h2>

<p>Once into pekwm I was faced with a black screen with a cursor - don’t
panic - that is pekwm in its default state. Right-mouse-click and you
will have the pekwm menu. Hmm, Terminal does not work and there are no
applications listed in the menu. Returning to the terminal with
Ctrl+Alt+F1, I typed Ctrl+c to terminate pekwm and installed xterm
(<code class="language-plaintext highlighter-rouge">$ sudo apt-get install xterm</code>). Running <code class="language-plaintext highlighter-rouge">startx</code> again and this time
selecting Terminal from the pekwm menu worked and I could continue my
work from with pekwm.</p>

<h3 id="debian-menus">Debian Menus</h3>

<p>To get applications in the menu, we could edit the <code class="language-plaintext highlighter-rouge">~/.pekwm/menu</code> file
and add the relevant menus. A better solution is to get the standard
Debian menus working. Firstly you should check that they are not already
working for you, if you have an “Applications” item withing you pekwm
menu, and if it is populated with the Debian applications list, then it
is already working. If not, edit the <code class="language-plaintext highlighter-rouge">~/.pekwm/menu</code> file and look for a
line that looks like this:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>INCLUDE = "debian-menu"
</code></pre></div></div>

<p>And edit it to read:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>INCLUDE = "/etc/pekwm/debian-menu"
</code></pre></div></div>

<p>Now select PekWM from the menu and Reload and you should now have a
properly populated Applications menu.</p>

<h3 id="www-browser">WWW Browser</h3>

<p>Whilst there, add a Web Browser item, for example - see below:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>RootMenu = "Pekwm" {
    Entry = "Terminal" { Actions = "Exec $TERM &amp;" }
    Entry = "Web Browser" { Actions = "Exec x-www-browser &amp;" }
</code></pre></div></div>

<p>This just tells it to run whatever the default X web browser is, which
we can set later.</p>

<p>Now in a terminal window you should install your preferred browser. I
ended up installing iceweasel, but there may be a better more
lightweight browser that requires fewer dependencies. Feel free to
comment with suggestions.</p>

<p>Once installed, the menu option <code class="language-plaintext highlighter-rouge">Web Browser</code> that we created earlier
should be working. If not, then just type:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo update-alternatives --config x-www-browser
</code></pre></div></div>

<p>And select iceweasel (or your preferred browser).</p>

<h3 id="set-desktop-background">Set desktop background</h3>

<p>Now to make the desktop look a little prettier. For my experiment I
downloaded <a href="http://kde-look.org/usermanager/search.php?username=chrisjrob&amp;action=contents">a desktop wallpaper that I created a while ago</a>.
I installed <code class="language-plaintext highlighter-rouge">feh</code> (<code class="language-plaintext highlighter-rouge">$ sudo apt-get install feh</code>), and added the
following to the <code class="language-plaintext highlighter-rouge">~/.pekwm/start</code> file:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>feh --bg-center your-wallpaper.jpg &amp;
</code></pre></div></div>

<h3 id="install-tint2-panel">Install tint2 panel</h3>

<p>Most people expect a panel, although strictly speaking they are not
required. For this experiment though I think we should have one:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo apt-get install tint2
</code></pre></div></div>

<p>And then add the following to the <code class="language-plaintext highlighter-rouge">~/.pekwm/start</code> file:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>tint2 &amp;
</code></pre></div></div>

<h2 id="conclusions">Conclusions</h2>

<p>Well, I think that was about it. People seemed to be impressed that I
had a complete Debian with a GUI environment. Though it has to be said
that I was down to about 250mb of free space by the end, not even enough
to install OpenOffice.</p>

<p>I forgot all about sound, and had to install alsa
(<code class="language-plaintext highlighter-rouge">$ sudo apt-get install alsa</code>). As an experiment I installed Flash, and
tried watching You Tube. Not good - without sound You Tube worked fine,
but with sound the picture disappeared. I had no time to fix this before
the end of the session.</p>

<p>I really enjoyed this challenge, but what about the alternatives? Mike
installed <a href="http://www.slitaz.org/en/">Slitaz</a>, which looked gorgeous,
and used well under 200mb in total. I have been impressed with Slitaz
before, and might be a good option for a project like this.</p>

<p>Thanks to Mike for organising the challenge.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Google Chrome Flash Plug In Blocked</title>
      <link>https://chrisjrob.com/2011/03/13/google-chrome-flash-plug-in-blocked/</link>
      <pubDate>Sun, 13 Mar 2011 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2011/03/13/google-chrome-flash-plug-in-blocked</guid>
      <description>
       <![CDATA[
         
         <p>Google Chrome started stating <em>“The Flash plug-in was blocked because it is out of date.”</em>.</p>

<p>To fix this I entered “about:plugins” in the address bar, and clicked
“disable” against Flash. This results in Google Chrome falling back on
the version of Flash installed in the operating system. If you do not
have Flash installed, then in Debian you can install as follows:</p>

<!--more-->

<p>Firstly ensure that the repositories in <code class="language-plaintext highlighter-rouge">/etc/apt/sources.list</code> include
“non-free”, for example:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>deb http://ftp.uk.debian.org/debian squeeze main contrib non-free
</code></pre></div></div>

<p>Then install Adobe Flash with:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo apt-get update $ sudo apt-get install flashplugin-nonfree
</code></pre></div></div>

<p>And you should now have a working Flash installation. I have tested You
Tube and all seems to be well, but I will update this page if I find any
issues.</p>

<p>By the way, I would obviously prefer to run Chromium, the open source
version of Chrome, but at the moment the version in Squeeze is outdated,
and there are no backports yet for Wheezy.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Three Things I Love About Pekwm</title>
      <link>https://chrisjrob.com/2011/03/07/three-things-i-love-about-pekwm/</link>
      <pubDate>Mon, 07 Mar 2011 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2011/03/07/three-things-i-love-about-pekwm</guid>
      <description>
       <![CDATA[
         
         <p>Three things I love about <a href="http://www.pekwm.org/" title="PekWM">pekwm</a>:</p>

<p><strong>Window grouping:</strong> I love the fact that you can middle click on a
window’s titlebar and drop it onto another window and the two
windows join together - with the titlebar split in segments. You can
switch between the applications by clicking on the relevant part of
the titlebar, or use the Windows key with TAB - so just as Alt+Tab
switches between windows, Windows+Tab switches between the
applications grouped inside the current window.</p>

<!--more-->

<p><strong>Double-click to fill available space:</strong> I love the fact that you
can open an application and just double-click on its titlebar to
fill the available space. This feels so intuitive and just so damned
right, that I struggle to understand why it is not the standard
behaviour in all window managers and desktop environments.</p>

<p><strong>Clicking on the desktop edge moves you to the next workspace:</strong>
I’ve never really got on with multiple desktops/workspaces - it is
difficult enough to keep track of multiple applications inside a
single workspace, but pekwm has converted me. I find it just so
intuitive that, by clicking on the edge of the desktop, that it it
progresses you to the next desktop.</p>

<p>So what do <strong>you</strong> love about pekwm?</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Pekwm With Tint2 Panel</title>
      <link>https://chrisjrob.com/2011/03/07/pekwm-with-tint2-panel/</link>
      <pubDate>Mon, 07 Mar 2011 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2011/03/07/pekwm-with-tint2-panel</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/pekwm-snapshot_300.png" align="right" alt="Featured Image">
         
         <p>I have just been recommended to try the “tint2” panel. It looks lovely
and minimalist, and has happily taken the kwalletmanager system tray
icon; so hopefully will work on my laptop with battery and wireless
monitors.</p>

<!--more-->

<p>Whilst you’re looking at my screenshot, note the Window grouping between
Google Chrome and Iceweasel and the two terminal windows grouped
together. The window grouping feature really is very, very handy.</p>

<p>Installing tint2 is simple:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo apt-get install tint2
</code></pre></div></div>

<p>And then add tint2 to your <code class="language-plaintext highlighter-rouge">~/.pekwm/startup</code> file:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>tint2 &amp;
</code></pre></div></div>

<p>If you need to configure it, then edit <code class="language-plaintext highlighter-rouge">~/.config/tint2/tint2rc</code>; so far
I have found the defaults to be okay.</p>

<h2 id="update-battery-monitor">Update: Battery monitor</h2>

<p>To get the built in tint2 battery monitor, simply edit</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>~/.config/tint2/tint2rc:
battery = 1 battery_hide = never
</code></pre></div></div>


       ]]>
      </description>
    </item>
    
    <item>
      <title>KDE Power Management In Pekwm</title>
      <link>https://chrisjrob.com/2011/03/06/kde-power-management-in-pekwm/</link>
      <pubDate>Sun, 06 Mar 2011 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2011/03/06/kde-power-management-in-pekwm</guid>
      <description>
       <![CDATA[
         
         <p>After my laptop spontaneously switched off on <strong>two</strong> separate
occasions, because I had failed to switch on the mains socket, I decided
that something had to be done about the lack of power management in
<a href="http://www.pekwm.org/">pekwm</a>.</p>

<!--more-->

<p>Hunting the ‘net for anything to do with pekwm is a frustrating
business. You can’t help thinking that there are only a handful of us
that use it. I may post something about why I think pekwm is great, but
that is a topic for another day.</p>

<p>As my laptop’s primary desktop environment is KDE, I wanted to use the
KDE power management with pekwm, rather than install the Gnome Power
Manager, which would bring in a load of Gnome dependencies. If you
already have Gnome installed, then I suspect the Gnome Power Manager is
for you.</p>

<p>There seem to be three parts to this:</p>

<ol>
  <li>Getting the power management daemon to run</li>
  <li>Adding a power meter</li>
  <li>Adding the configuration tool to the menu</li>
</ol>

<p>Whilst these instructions are primarily for pekwm, I am sure that
openbox, fluxbox and other *box window managers could use them with a
little adjustment.</p>

<h2 id="power-management-daemon">Power Management Daemon</h2>

<p>In the <code class="language-plaintext highlighter-rouge">~/.pekwm/start</code> file, add the lines:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>kded4 &amp; qdbus org.kde.kded /kded loadModule powerdevil &amp;
</code></pre></div></div>

<p>If you do not want to restart pekwm to test, just run those two commands
live.</p>

<h2 id="battery-meter">Battery Meter</h2>

<p>Update: Since writing this post <a href="/2011/03/07/pekwm-with-tint2-panel/">I have discovered tint2</a> 
which includes a simple battery monitor.</p>

<p>What I really want is a battery level meter that will sit happily in
<a href="http://icculus.org/openbox/2/docker/">Docker</a>, but I failed in this
quest. If you have any suggestions, please do let me know and I will
update this post. In the meantime I have installed xbattbar, which gives
a full thin width line at the bottom of your screen.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo apt-get install xbattbar
</code></pre></div></div>

<p>In the <code class="language-plaintext highlighter-rouge">~/.pekwm/start</code> file, add the line:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>xbattbar &amp;
</code></pre></div></div>

<h2 id="power-management-configuration">Power Management Configuration</h2>

<p>It is quite possible that you will wish to configure your power
management from within pekwm. To do this, add the following to your
<code class="language-plaintext highlighter-rouge">~/.pekwm/menu</code> file:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Entry = "Configure Powerdevil" { Actions = "Exec kcmshell4 powerdevilconfig &amp; " }
</code></pre></div></div>

<p>And that appears to be a working solution for me, I hope it works for
you too!</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Thirty Years On popey.com Blog</title>
      <link>https://chrisjrob.com/2011/03/05/thirty-years-on-popey-com-blog/</link>
      <pubDate>Sat, 05 Mar 2011 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2011/03/05/thirty-years-on-popey-com-blog</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/Sinclair-ZX81.png" align="right" alt="Featured Image">
         
         <p><a href="http://popey.com/blog/2011/03/05/thirty-years-on/">Apparently the ZX81 is 30 years’ old</a>, wow.  
<a href="http://en.wikipedia.org/wiki/ZX81" title="Read about the ZX81 on Wikipedia">The wedge-shaped box</a>
that started my interest in computers, and led inexorably to my love of
Linux and tinkering with the command-line.</p>

<!--more-->

<p>Popey clearly has a better memory than I, but I do remember rushing up
to my bedroom with
<a href="http://en.wikipedia.org/wiki/ZX81" title="Read about the ZX81 on Wikipedia">ZX81</a>
in hand, plugging it all in and then at the prompt typing “hello”. I was
very disappointed that the computer seemed to have no ability to talk
back! But once I got passed that disappointment, I fell in love with the
thing. I didn’t do much programming on it, but I used to get the
computer magazines and type in the assembly code in order to play games.
There was an <a href="http://en.wikipedia.org/wiki/3D_Monster_Maze">awesome dinosaur game</a> I remember.</p>

<p>I was fortunate enough to be able to have the 
<a href="http://en.wikipedia.org/wiki/ZX_Spectrum" title="Read about the ZX Spectrum on Wikipedia">ZX Spectrum</a>
when it came out and was blown away by how much better it was than the
ZX81. I remember the games with such fondness, but sadly many of them
are still available on the net – and they’re actually a bit crap – but
at the time they seemed absolutely incredible. I spent many a happy hour
with <a href="http://en.wikipedia.org/wiki/Jetpac">Jetpack</a>. But the main memory
I have is anxiously waiting whilst the games retrieved from the audio
cassettes – would it load? Can you imagine a storage technology that was
so slow and only worked 2 in every 3 times – laughable really.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Kubuntu Lucid Lynx 10.04 Nvidia Installation</title>
      <link>https://chrisjrob.com/2011/03/04/kubuntu-lucid-lynx-10-04-nvidia-installation/</link>
      <pubDate>Fri, 04 Mar 2011 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2011/03/04/kubuntu-lucid-lynx-10-04-nvidia-installation</guid>
      <description>
       <![CDATA[
         
         <p>After updating my Kubuntu Mythbuntu Home Theatre PC, it
failed to boot into KDE, leaving me instead at a text login.  Fixing the
problem was not difficult, but I actually had problems finding the
correct instructions, and all the instructions that I did find left out
a crucial step.  I thought I would write up what I did largely for my
own benefit:</p>

<!--more-->

<p>Firstly, I tried to load the nvidia module:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>NVIDIA: Failed to load the NVIDIA kernel module. Please check your
system's kernel log for additional error messages.
Failed to load module  "nvidia"
</code></pre></div></div>

<p>Clearly the correct nvidia driver for this kernel is missing.  If it was
working and an update has messed it up for you, then possibly you have
had a kernel update and don’t have the correct kernel headers installed.
 The kernel headers are needed by dkms to rebuild the nvidia module.  If
you’re lucky, you may just be able to install the Linux kernel headers
and reboot:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo apt-get install linux-headers-`uname -r`
$ sudo shutdown -r now
</code></pre></div></div>

<p>With luck dkms will have rebuilt the nvidia module and all will be well.
 If it hasn’t worked, then we need to take more dramatic action.  Let’s
start with an nvidia-free zone:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo apt-get purge nvidia*
</code></pre></div></div>

<p>Next we should ensure that the nouveau module is blacklisted, so that we
do not end up fighting the open source nouveau driver:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo vim /etc/modprobe.d/blacklist.conf
blacklist nouveau
blacklist vga16fb
</code></pre></div></div>

<p>Now we can install the latest nvidia modules:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo apt-get install nvidia-current nvidia-settings nvidia-kernel-common
</code></pre></div></div>

<p>And run the nvidia configurator:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo nvidia-xconfig
</code></pre></div></div>

<p>Finally reboot, and in theory the nvidia module should be rebuilt by
dkms:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo shutdown -r now
</code></pre></div></div>

<p>After the reboot, it may be all working, but we can check that the
nvidia module has been loaded:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ lsmod | grep nvidia
nvidia 10832442 28
</code></pre></div></div>

<p>If this returns nothing, then it has not worked, if it returns “nvidia”
as above, then you should have a working system.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Full Text For RSS Feed Not Just Teaser</title>
      <link>https://chrisjrob.com/2011/03/04/full-text-for-rss-feed-not-just-teaser/</link>
      <pubDate>Fri, 04 Mar 2011 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2011/03/04/full-text-for-rss-feed-not-just-teaser</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/rss.png" align="right" alt="Featured Image">
         
         <p>I wanted to change my blog so that the home page only has an opening
paragraph of each blog post, rather than having the full text.  In my
opinion this makes the blog easier and more pleasant to navigate.
 Unfortunately it seems that in trying to achieve this, I changed the
RSS feed as well.</p>

<!--more-->

<p>My apologies for this error, it wasn’t deliberate and I do appreciate
that it is more convenient to read the whole text from within your
chosen RSS aggregator.  Although it was nice having the additional page
views - twice as many today as yesterday…</p>

<p>I think I have corrected the problem, so we should be back to full text
for this and all subsequent posts.  If not, let me know!</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Choppy Audio Silverlight Over RDP</title>
      <link>https://chrisjrob.com/2011/03/04/choppy-audio-silverlight-over-rdp/</link>
      <pubDate>Fri, 04 Mar 2011 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2011/03/04/choppy-audio-silverlight-over-rdp</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/silverlight.jpg" align="right" alt="Featured Image">
         
         <p>Following <a href="/2011/03/03/problems-playing-silverlight-media-on-windows-server-2003/">my recent post</a>
regarding Silverlight, unfortunately I have hit disaster.  When the
audio starts, it sounds choppy with a double-echo or reverb.  In short
it is unusable.  All other audio works fine, even on the same webpage,
but as soon as you try and listen to a Silverlight widget it sounds
terrible.</p>

<!--more-->

<p>Googling “silverlight rdp choppy” in desperation has not filled me with
confidence, there are a number of posts including:</p>

<ul>
  <li><a href="http://forums.silverlight.net/forums/p/94280/303052.aspx">Has anyone else ran into a problem where if you use a Silverlight app over Remote Desktop and it plays a WMA or MP3 file using MediaElement, the sound is choppy?</a></li>
</ul>

<p>It is possible that upgrading to Windows Server 2008 would resolve this
issue; although there are issues I believe in connecting to the latest
RDP version using rdesktop.</p>

<p>I did find <a href="http://social.technet.microsoft.com/Forums/en-US/winserverhyperv/thread/1e7a9764-e220-4693-a4ac-d7f4e811283b">this advice from Microsoft</a>,
the Microsoft RDP Client was the only sound card available, but I
followed the advice anyway to no avail.</p>

<p>What I simply do not understand is why all other audio works perfectly
via RDP, except Silverlight, especially given the fact that Silverlight
and RDP are Microsoft products.</p>

<p>Any suggestions gratefully received!</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Problems Playing Silverlight Media On Windows Server 2003</title>
      <link>https://chrisjrob.com/2011/03/03/problems-playing-silverlight-media-on-windows-server-2003/</link>
      <pubDate>Thu, 03 Mar 2011 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2011/03/03/problems-playing-silverlight-media-on-windows-server-2003</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/silverlight.jpg" align="right" alt="Featured Image">
         
         <p>We have to be able to play Silverlight media on our two virtual Windows
Server 2003 servers.  This is completely unavoidable, because you first
need to authenticate via an Active-X website, so any option of using
Moonlight on Linux was impossible.</p>

<p>The problem that we had was that when we clicked on the Play Media
button, there were two pop ups stating <em>“This page has an unspecified potential security risk”</em> followed by another stating <em>“A problem was encountered with the media file specified.”</em></p>

<!--more-->

<p>I tried bypassing our proxy server;  I ensured that the Internet
Enhanced Security was uninstalled; I tried adding the relevant sites to
“Trusted sites”; I tried reducing Trusted Sites to “Low” security; I
brought all the critical updates up-to-date.  Nothing seemed to make a
difference.</p>

<p>Finally, I decided to review the optional Windows updates, just to see
if there was anything related to Silverlight and noticed that there was
a major update to .net available “.NET framework 4”. Knowing that
Silverlight is a .net technology, I installed it and, after yet another
reboot, the pop ups had gone and it was working.</p>

<p>My reason for writing about it is simply this:  I had googled endlessly
about this problem, without any success, there was seemingly nothing
relevant to this problem.  Hopefully this post will help others.</p>

<p>But you should be using Linux not Windows!  There, couldn’t resist ;)</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Fixing KDE File Associations</title>
      <link>https://chrisjrob.com/2011/03/03/fixing-kde-file-associations/</link>
      <pubDate>Thu, 03 Mar 2011 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2011/03/03/fixing-kde-file-associations</guid>
      <description>
       <![CDATA[
         
         <p>We have our file associations locked down using KDE Kiosktool, and yet
it seems that one of our users has managed to change their file
associations, despite them being locked down; which seems to be because
the context menu is not locked down, enabling him to take the option to
Open With an alternative application and select the checkbox to remember
that association in future.  The only way around this would seem to be
to disable the context sensitive menu, at a significant cost in
functionality.</p>

<!--more-->

<p>So now this user’s PDFs open in Acrobat Reader <strong>on our Windows
server</strong>, instead of using Acrobat Reader on Linux.  That would not in
itself cause a problem, except that the Windows server cannot access the
location of the temporary location of Kmail attachments.  I could
probably fix that, but I don’t really want users opening email
attachments using Windows applications.</p>

<p>This user cannot access File Associations to fix this problem, as the
menu option is removed; so I need to find a way to fix this problem from
the command line.</p>

<p>In solving this particular problem I discovered the existence of the
users’ <code class="language-plaintext highlighter-rouge">~/.local/share/application</code> directory, and was able to remove the
application shortcut to the PDF and normal functionality was restored,
but I thought it would be worth writing up what I have found to be the
case.  Some of the following information may be wrong or misleading and
please feel free to comment any issues, and I will endeavour to update
this page accordingly.</p>

<h2 id="kde-file-associations">KDE File Associations</h2>

<p>I have to say that KDE file associations seem hellishly complicated,
which is to say that there are so many different locations of files that
it is very difficult to work out what is happening.  The three key
factors in play seem to be:</p>

<h3 id="mime-types">MIME Types</h3>

<p>Mime-types, appear to be stored in:</p>

<ul>
  <li><code class="language-plaintext highlighter-rouge">~/.kde/share/mimelnk</code> directories (for each user)</li>
  <li><code class="language-plaintext highlighter-rouge">/usr/share/mimelnk</code></li>
  <li><code class="language-plaintext highlighter-rouge">/etc/kde-profile/standard/share/mimelnk</code> (for kiosktool - a symlink
back to <code class="language-plaintext highlighter-rouge">/usr/share/mimelnk</code>)</li>
</ul>

<p>These look like this:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ cat pdf.desktop
[Desktop Entry]
Comment=PDF
DocumentHidden=false
Icon=application-pdf
MimeType=application/pdf
Patterns=*.pdf;*.PDF
Type=MimeType
X-KDE-AutoEmbed=false
</code></pre></div></div>

<p>In other words they link the file extension, in this case <code class="language-plaintext highlighter-rouge">*.pdf</code>, with
the MimeType, in this case <code class="language-plaintext highlighter-rouge">application/pdf</code>.  I believe I am right in
saying that the users’ files take precedence over the global ones.</p>

<h3 id="application-shortcuts">Application Shortcuts</h3>

<p>Next up are the application shortcuts, and these also can be in diverse
locations:</p>

<ul>
  <li><code class="language-plaintext highlighter-rouge">~/.kde/share/applnk</code></li>
  <li><code class="language-plaintext highlighter-rouge">~/.local/share/applications</code></li>
  <li><code class="language-plaintext highlighter-rouge">/usr/share/applications</code></li>
  <li><code class="language-plaintext highlighter-rouge">/etc/kde-profile/standard/share/applications</code> (for kiosk-tool)</li>
</ul>

<p>As with the mimetypes, the users’ copy take precedence over the shared
ones.  These application shortcuts define how to run an application, and
look something like this:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ cat "Adobe Reader 9 PDF Viewer.desktop"
[Desktop Entry]
Comment=
Exec=acroread
GenericName=PDF
ViewerIcon=AdobeReader9
MimeType=
Name=Adobe Reader 9
Path=
StartupNotify=false
Terminal=0
TerminalOptions=
Type=Application
X-KDE-SubstituteUID=false
X-KDE-Username=
</code></pre></div></div>

<p>As you can see, this tells the system how to run the application.</p>

<h3 id="profilerc">profilerc</h3>

<p>Lastly there needs to be some way of tying the above two things
together, something that tells the system that you use X application
shortcut to open Y mime-type, and this appears to be the role of the
<code class="language-plaintext highlighter-rouge">profilerc</code> files.  As with the other components, there are multiple
copies of this file:</p>

<ul>
  <li><code class="language-plaintext highlighter-rouge">~/.kde/share/config/profilerc</code></li>
  <li><code class="language-plaintext highlighter-rouge">/etc/kde-profile/standard/share/config/profilerc</code></li>
</ul>

<p>An extract of this file in respect of my PDF example, looks something
like this:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>[application/pdf - 1]
AllowAsDefault=true
Application=Adobe Reader 8 PDF Viewer.desktop
GenericServiceType=Application
Preference=2
ServiceType=application/pdf
[application/pdf - 2]
AllowAsDefault=true
Application=kpdf_part.desktop
GenericServiceType=KParts/ReadOnlyPart
Preference=1
ServiceType=application/pdf
[application/pdf - 3]
AllowAsDefault=true
Application=kde-kpdf.desktop
GenericServiceType=Application
Preference=2
ServiceType=application/pdf
</code></pre></div></div>

<p>This shows both the mime-type <code class="language-plaintext highlighter-rouge">application/pdf</code> and the application
shortcut, e.g. “Adobe Reader 8 PDF Viewer.desktop”, and gives the
different choices for opening the same mimetype.</p>

<p>I have found this exercise to be hugely frustrating, and I hope this
information is of use to someone.  As I said earlier, my intention will
be to correct this post as I find out more, so please forgive any
errors, and if you have the time, please do let me know by commenting
below.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Where Are Debian News And Debaday</title>
      <link>https://chrisjrob.com/2011/03/01/where-are-debian-news-and-debaday/</link>
      <pubDate>Tue, 01 Mar 2011 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2011/03/01/where-are-debian-news-and-debaday</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/debian_logo.png" align="right" alt="Featured Image">
         
         <p>I went to look for an article on fcheck, that I originally found on
<a href="http://debaday.debian.net">http://debaday.debian.net</a>, only to find the site down, there is 
<a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=543343" title="Debian Bug 543343">a related bug</a>,
but no news on where it has gone nor why.  The debaday service was
fantastic for finding out about useful packages, in fact that was how I
learned about fcheck.</p>

<p>Then I ended up at <a href="http://news.debian.net/">http://news.debian.net/</a>, and what do I see but:</p>

<!--more-->

<blockquote>
  <p>news.debian.net is closing. In the next days, the website will become
a static copy.</p>

  <p>Thank you for following all this 19 months!</p>
</blockquote>

<p>No explanation, just that.  If it was coming back soon, one would have
expected the announcement to state that, so the assumption has to be
that these valuable services have both come to an end.</p>

<p>This makes me sad.  The answer is for the community to leap in, and I
hope this time that the work can be distributed; so that it is not
reliant on any one person.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Howto | Install Debian Squeeze With Raid1 + LVM</title>
      <link>https://chrisjrob.com/2011/03/01/install-debian-squeeze-with-raid1lvm/</link>
      <pubDate>Tue, 01 Mar 2011 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2011/03/01/install-debian-squeeze-with-raid1lvm</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/hp-proliant-microserver-n36l.jpg" align="right" alt="Featured Image">
         
         <p>I’ve just bought a new <a href="http://h10010.www1.hp.com/wwpc/uk/en/sm/WF06a/15351-15351-4237916-4237917-4237917-4248009.html?jumpid=in_r2515_uk/en/smb/psg/psc404redirect-ot-xx-xx-/chev/" title="HP N36L Microserver">HP N36L Microserver</a>,
for £210 with £100 cashback.  It came with a 250gb SATA, so I added a second
250gb SATA; so that I could have a simple software RAID array.  I also added
2gb of Crucial RAM.</p>

<!--more-->

<p>When the server arrived, I was surprised to find it had RAID built into
it, but my understanding is that this is FakeRAID and thus should be
avoided at all costs.  If you were particularly interested in that
 option, with particular reference to Windows Home Server (yikes) then
<a href="http://www.tenniswood.co.uk/technology/windows-home-server/how-to-setup-a-raid-array-on-a-hp-microserver/" title="How to setup a raid array on a HP Microserver">this page may be helpful</a>.</p>

<p>I plugged in <a href="http://linitx.com/viewproduct.php?prodid=12992" title="IODD External Harddrive">my wonderful IODD ISO drive</a>
and selected Debian Squeeze AMD64 netinstall, and off I went.  When it
came to the partitioning, you need to carry this out manually, in the
following order:</p>

<ul>
  <li>Partition <strong>both disks </strong>as follows:
    <ul>
      <li>Create boot primary partition (about 500mb)
        <ul>
          <li>Set mount as /boot and make bootable</li>
        </ul>
      </li>
      <li>Create partition using most of the rest of the first drive (e.g.
247gb)
        <ul>
          <li>Set partition as Use as physical volume for RAID</li>
        </ul>
      </li>
    </ul>
  </li>
  <li>Configure software RAID
    <ul>
      <li>Create MD Device, RAID1, 2 devices, 0 spare devices</li>
      <li>Select the RAID partition on each drive</li>
    </ul>
  </li>
  <li>Create Physical Volumes for LVM
    <ul>
      <li>Create volume group</li>
      <li>Create suitable volumes for your systems, e.g. swap (2 x
RAM, root (10GB or so), home (to your taste), usr (2gb+), var
(2gb+), tmp (1gb+).
        <ul>
          <li>it is a good idea not to use the whole space, as the whole
benefit to LVM is being able to then add available space
into any volume</li>
        </ul>
      </li>
      <li>I also created a large volume for /var/lib/vz/private, as this
will be an openvz server.</li>
    </ul>
  </li>
  <li>Partition disks
    <ul>
      <li>Set each LVM volume to use the appropriate file system type,
e.g. ext3 or ext4, and set the appropriate mountpoint, e.g. home
should be /home etc, swap should be allocated to swap space etc</li>
    </ul>
  </li>
</ul>

<p>I found this howto on <a href="http://dev.jerryweb.org/raid/" title="LVM + RAID for debian-installer">LVM + RAID for debian-installer</a>
most useful but, providing you follow the logical progression, it really
is not as difficult as it seems.</p>

<p>After the partitioning, I continued with the installation, removing all
options including “Standard System” from the software profiles; so that
I basically installed a base system, which is how I prefer it.</p>

<p>Next I installed: sudo, <a href="http://en.wikipedia.org/wiki/GNU_Screen" title="Wikipedia::GNU Screen">GNU Screen</a>,
openssh-server, vim, fcheck, locales, localepurge, apt-file,
 apt-show-versions and nullmailer (ssmtp is  better if your mailserver
requires secure authentication).  Doubtless you have your own favourite
packages to install!</p>

<p>Next step will be to configure as a small
<a href="http://openvz.org" title="openvz">openvz</a> server, and migrate the virtual
machines off my old server (which I will be commissioning as a storage
server).</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>OpenOffice Lock Files Not Being Removed On DavFS2</title>
      <link>https://chrisjrob.com/2011/02/26/openoffice-lock-files-not-being-removed-on-davfs2/</link>
      <pubDate>Sat, 26 Feb 2011 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2011/02/26/openoffice-lock-files-not-being-removed-on-davfs2</guid>
      <description>
       <![CDATA[
         
         <p>I have a mystery - I have two Debian Lenny servers both running the same
version of davfs2 and the same version of openoffice.org.  When you open
an openoffice document, openoffice creates a lock file of the same name,
but prefixed with “.~lock”.  This file retains a copy of the document
until you save and exit, whereon it is removed automatically.</p>

<p>The mystery is that, at one of our branches, it reduces size to 0, but
is never actually removed; after which time the file cannot be edited
until that lock file is manually removed.</p>

<!--more-->

<p>Both servers have the same <code class="language-plaintext highlighter-rouge">davfs2.conf</code> and I have done a diff between
the two servers:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># for file in `find /usr/lib/openoffice/ -name *.xcs -type f`; \
  do echo "=== $file ==="; \
  ssh root@other-server "cat $file" | diff $file - ; \
  done
</code></pre></div></div>

<p>But there are no differences.  I have checked users’ <code class="language-plaintext highlighter-rouge">davfs2.conf</code> files,
but these are all commented out entirely.</p>

<p>Previously I had “fixed” this problem, by setting UseDocumentOOoLockFile
to false in:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/usr/lib/openoffice/basis3.2/share/registry/schema/org/openoffice/Office/Common.xcs
</code></pre></div></div>

<p>This doesn’t stop the lock files being created, but it does tell
Openoffice not to worry about them.  Unfortunately this no longer seems
to be working, and I really can’t understand why.</p>

<p>Currently I have “fixed” the problem by setting <code class="language-plaintext highlighter-rouge">davfs2.conf</code> to:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>use_locks 0
</code></pre></div></div>

<p>This is now allowing the lock files to be removed properly.  I believe
that actually this will work quite well, with the <code class="language-plaintext highlighter-rouge">UseDocumentOOoLockFile</code>
set to true, given that 99.9% of our documents are Openoffice documents.
 Always assuming I can persuade Openoffice to obey its own registry!</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>The Tonidoplug</title>
      <link>https://chrisjrob.com/2011/02/25/tonidoplug-tnd003sp1a03-65-tonido-store/</link>
      <pubDate>Fri, 25 Feb 2011 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2011/02/25/tonidoplug-tnd003sp1a03-65-tonido-store</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/TonidoPlug.jpg" align="right" alt="Featured Image">
         
         <p>We’ve seen the various plug-in computers recently, but this one looks
very good value:</p>

<p><a href="https://store.tonido.com/index.php?main_page=product_info&amp;cPath=1&amp;products_id=1&amp;zenid=cd8a2874aa1ce7a5db27eb22ed0ba120">TonidoPlug [TND003SP1A03] - ₤65 : Tonido Store</a></p>

<!--more-->

<p>It was discussed on Floss Weekly in <a href="http://twit.tv/floss153" title="Floss Weekly Episode 153">Episode 153</a>.</p>

<p>Other than a vague feeling that it would be handy as an always on ssh
host inside my home network, I’m just not sure I’d use it …</p>

<p>More about the TonidoPlug <a href="http://www.tonidoplug.com/tonido_plug.html" title="The TonidoPlug">here</a>, oh - and it comes with <a href="http://www.tonido.com/mobile.html" title="Tonido Mobile Applications">a selection of mobile apps</a>
for accessing your content.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>More Arm-Based Plug Computing With The Dreamplug</title>
      <link>https://chrisjrob.com/2011/02/25/more-arm-based-plug-computing-with-the-dreamplug/</link>
      <pubDate>Fri, 25 Feb 2011 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2011/02/25/more-arm-based-plug-computing-with-the-dreamplug</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/dreamplug.jpg" align="right" alt="Featured Image">
         
         <p>Further to my recent post on the
<a href="/2011/02/25/tonidoplug-tnd003sp1a03-65-tonido-store/" title="TonidoPlug">TonidoPlug</a>
the following has been sent to me:</p>

<ul>
  <li><a href="http://www.thinq.co.uk/2011/2/1/new-it-announces-dreamplug-arm-box/">DreamPlug ARM box boosts plug computing thinq</a></li>
</ul>

<!--more-->

<p>The inclusion of <strong>two</strong> gigabit ports and e-sata is very exciting, but
it is more than twice the price.</p>

<p>Still, choice is good!</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Banking With Barclays On Linux</title>
      <link>https://chrisjrob.com/2011/02/25/banking-with-barclays-on-linux/</link>
      <pubDate>Fri, 25 Feb 2011 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2011/02/25/banking-with-barclays-on-linux</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/barclays.jpg" align="right" alt="Featured Image">
         
         <p>Further to <a href="/2011/02/23/barclays-on-line-banking/" title="Barclays on-line banking">my recent post</a>
on the subject, I have now found <a href="http://www.business.barclays.co.uk/BRC1/jsp/brccontrol?task=homefreevi8&amp;value=10335&amp;target=_blank&amp;site=bbb" title="Barclays Corporate Internet Security">more information</a> on the Barclays Corporate website:</p>

<blockquote>
  <p>To access Business Internet Banking you need four things present at
the same time:</p>
</blockquote>

<!--more-->

<blockquote>
  <ol>
    <li>A PC or laptop with the software that runs the smart card reader
installed</li>
    <li>A smart card reader. This is a hardware device, attached to your
PC that the smart card is inserted into</li>
    <li>A smart card unique to each individual user. The card will become
“locked” if an invalid PIN is entered in excess of a pre defined
number of times</li>
    <li>A PIN unique to each individual user.</li>
  </ol>
</blockquote>

<p>Unfortunately the <a href="http://www.business.barclays.co.uk/BRC1/jsp/brccontrol?task=popup1vi8&amp;value=13114&amp;target=_blank&amp;site=bbb" title="Barclays Software Requirements">Software Requirements link</a>,
at the bottom of that page, states only that you need Adobe Acrobat
Reader, which I suspect is not the only software requirement!</p>

<p>The Barclays Personal On-line banking works with all the browsers, so if
the same is true of the Corporate banking, then it is at least possible
that I could install Firefox under Wine on Linux, providing only that I
can get the smart card reader to work.</p>

<p>The difficulty would be if it needs Active-X support, which whilst
<a href="http://www.winehq.org/news/2010121001" title="WineHQ Change Log">theoretically supported under the latest versions of Wine</a>, would
make the proposition very much less likely to work.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Replacement For ADSL Broadband</title>
      <link>https://chrisjrob.com/2011/02/24/replacement-for-adsl-broadband/</link>
      <pubDate>Thu, 24 Feb 2011 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2011/02/24/replacement-for-adsl-broadband</guid>
      <description>
       <![CDATA[
         
         <p>We’re currently running fully managed ADSL 8mb Max Premium broadband
connections at our two branches.  The problem with this is that ADSL is
asynchronous, the download bandwidth being around 7mb and the upload
bandwidth being around 700k.  We are finding that the 700k upload
bandwidth is too small for sharing data between the branches, as the
speed is then limited to the upload connection - 700k.</p>

<p>Today I had a meeting with a telecoms expert to advise us on our
options, which seem to be:</p>

<!--more-->

<ul>
  <li><strong>LLU (Local Loop Unbundled)</strong> - this would boost download bandwidth
to up to 24mb, but leave the upload bandwidth unchanged, there might
also be a small quality improvement.  Maybe.</li>
  <li><strong>SDSL</strong> - Synchronous DSL has the same upload and download
bandwidth, unfortunately that bandwidth is just 2mb.  And is
probably only available at one of our branches.  Cost is around £370
install and £275 per month.</li>
  <li><strong>EFM (Ethernet First Mile)</strong> - based on ISDN30, this uses twin
twisted copper cables, which means that the service quality degrades
the further you are from the exchange.  We would hope to receive
close to 10mb bandwidth upload and download.  Cost is around £2000
install and £500 per month.</li>
  <li><strong>E1 Leased Line</strong> - a fibre product, offering 2mb upload and
download bandwidth.  Install cost is around £3-5000 and £270pm.</li>
  <li><strong>LES10 Leased Line</strong> - a fibre product, offering 10mb upload and
download bandwidth.  Same day support.  Install cost is around
£3-5000 and £500pm.</li>
  <li><strong>LES100 &amp; LES1000 Leased Lines</strong> - beyond our budget.</li>
</ul>

<p>So the cheapest solution, SDSL, which actually would reduce our download
bandwidth, would still cost <strong>three times</strong> what we are currently
paying, and we would need to pay <strong>six times</strong> what we are currently
paying, in order to get the service that we need.</p>

<p>Other options that we could consider are:</p>

<ul>
  <li>Multiple ADSL lines - load balanced</li>
  <li>Multiple ADSL lines - bonded</li>
</ul>

<p>For example, we could double our costs by purchasing two separate ADSL
lines, and bonding such that the download bandwidth became 14mb with a
1.4mb upload bandwidth.  But is bonding reliable?  Our telecoms expert
could not remember a successful example of ADSL bonding, i.e. where the
customer didn’t end up ditching the solution after a short time.  Is
that true do you think?</p>

<p>Ideally I would upgrade our connection for something that gave us 20mb+
download and 2mb upload.  Hmm, what about Virginmedia . . .</p>

<p><a href="http://www.virginmediabusiness.co.uk/" title="Virginmedia Business">Virginmedia</a>
offers a 20mb connection for £50pm, but with an upload bandwidth of just
1mb, this wouldn’t actually address our main problem.</p>

<p>So it does seem as if there is no cost-effective solution, and the price
gap between ADSL and Leased Lines seems very large - an additional
£10,000pa for our business.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>FreeRDP</title>
      <link>https://chrisjrob.com/2011/02/24/freerdp/</link>
      <pubDate>Thu, 24 Feb 2011 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2011/02/24/freerdp</guid>
      <description>
       <![CDATA[
         
         <p>For a long time I have noticed that the pace of development of rdesktop
seemed to have slowed, and that the rdesktop-users mailing list had gone
quiet.  What I hadn’t noticed until recently is that there is now an
alternative called <a href="http://www.freerdp.com/">FreeRDP</a>.</p>

<p>FreeRDP is a fork of the rdesktop project that intends to rapidly start
moving forward and implement features that rdesktop lacks the most.</p>

<!--more-->

<p>For more information please visit:</p>

<ul>
  <li><a href="http://www.freerdp.com/">FreeRDP</a>.</li>
</ul>

       ]]>
      </description>
    </item>
    
    <item>
      <title>Automatically Process New Files With Fsniper</title>
      <link>https://chrisjrob.com/2011/02/24/automatically-process-new-files-with-fsniper/</link>
      <pubDate>Thu, 24 Feb 2011 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2011/02/24/automatically-process-new-files-with-fsniper</guid>
      <description>
       <![CDATA[
         
         <p>I had never heard of fsniper until it was mentioned in a mailing list
today, but it sounds excellent:</p>

<p><a href="http://www.linux.com/archive/feature/150200">Linux.com :: Automatically process new files with fsniper</a></p>

<p>Now I am wondering if I can use it to prompt an rsync to sync our shared
documents to our remote site, and <a href="http://bio-geeks.com/?p=662" title="Bio-Geeks">it seems I could</a>.  This is a major
headache for me, as we have two branches and a shared documents
repository.</p>

<!--more-->

<p>I have previously tried using <a href="http://www.cis.upenn.edu/~bcpierce/unison/" title="Unison File Syncrhonizer">Unison</a>
to synchronise between the branches, but this has created a lot of load
on the master server, massively slowing down performance for all the
users on the master server.</p>

<p>We are currently using apache2+webdav+svn but this is not working well
for us.  Potentially fsniper+rsync could work very well.  It would
clearly need to be running on both servers and I can see a potential
clash if the two servers happen to try and update the same file at the
same time.  More thought is required, any suggestions - do let me know.</p>

<p>The links to the fsniper site seem to be outdated in both of the above
articles, but it may be found at:</p>

<p><a href="http://freshmeat.net/projects/fsniper">http://freshmeat.net/projects/fsniper</a></p>

<p>It doesn’t appear to be packaged for Debian, but I will probably compile
from source and try it soon.  More later!</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Analyse Disk Usage With Konqueror</title>
      <link>https://chrisjrob.com/2011/02/24/analyse-disk-usage-with-konqueror/</link>
      <pubDate>Thu, 24 Feb 2011 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2011/02/24/analyse-disk-usage-with-konqueror</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/konqueror-file-size-view_300.png" align="right" alt="Featured Image">
         
         <p>We’ve all had occasions when we have needed to find where all our disk
space has gone, well under KDE3.5 it was easy - you just ran Konqueror
and then selected View » View Mode » File Size View.  But shock horror,
under KDE4 that option seemed to be missing.  Fortunately it was only an
apt-get away:</p>

<!--more-->

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo apt-get install konq-plugins
</code></pre></div></div>

<p>Then run Konqueror and follow instructions above.</p>

<p>This is not just a static either, you can click on any directory and it
will refresh for the usage of that directory.</p>

<p>Is it wrong to be in love with a browser?</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Moving to Wordpress</title>
      <link>https://chrisjrob.com/2011/02/23/moving-to-wordpress/</link>
      <pubDate>Wed, 23 Feb 2011 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2011/02/23/moving-to-wordpress</guid>
      <description>
       <![CDATA[
         
         <p>I’ve decided to move to a proper blogging platform, rather than continue to use my home grown solution.  Please update your feed reader to:</p>

<ul>
  <li><a href="http://chrisjrob.wordpress.com/feed/">http://chrisjrob.wordpress.com/feed/</a></li>
</ul>

<p>I did consider setting up my own Wordpress server, but rightly or wrongly I decided to save myself the effort, time will tell whether that was the right decision or not!</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Linux Drivers For Linux Devices</title>
      <link>https://chrisjrob.com/2011/02/23/linux-drivers-for-linux-devices/</link>
      <pubDate>Wed, 23 Feb 2011 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2011/02/23/linux-drivers-for-linux-devices</guid>
      <description>
       <![CDATA[
         
         <p>Nothing annoys me more than this - companies that use the Linux
operating system for their devices, but who don’t provide a driver for
Linux clients to access the same devices.  For example
<a href="https://buy.garmin.com/support/searchSupport/case.faces?caseId={85786160-026e-11dd-dc9c-000000000000}" title="Garmin Linux Support">Garmin</a>,
<a href="http://www.tomtom.com/" title="Tom Tom">Tom Tom</a> and <a href="http://www.road-angel-gps.co.uk/" title="Road Angel">Road
Angel</a> to name but three
that have effected me personally.  I know that the counter argument is
that we want Linux to be used by these companies, and I appreciate that
they may well be  contributing in other ways, but this still upsets me.</p>

<!--more-->

<p>My gripe is this - that these companies are taking the produce of the
work done by Linux developers to make new products and thus generate
profits, and then not allowing those same Linux developers to access
those newly developed devices.  Worse, some of these companies are now
<a href="http://garmin.blogs.com/my_weblog/2010/02/ask-garmin-can-i-use-garmin-connect-if-im-on-a-mac.html" title="Garmin support Mac OS/X">starting to support Apple Mac OS/X</a>,
but not bothering to support Linux, the very operating system that gave
birth to their product.</p>

<p>And the daft thing is that in many cases <a href="http://www.linuxdriverproject.org/" title="Linux Driver Project">they don’t even need to do the
work themselves</a>.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Drupal 7</title>
      <link>https://chrisjrob.com/2011/02/23/drupal-7/</link>
      <pubDate>Wed, 23 Feb 2011 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2011/02/23/drupal-7</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/drupal.png" align="right" alt="Featured Image">
         
         <p>I have decided to set up a web for my wider family, as a place to chat
and share information. I’ve had some experience with
<a href="http://drupal.org/" title="Drupal">Drupal</a> 6, but knowing how tough it can be
to upgrade between versions of Drupal, I decided to opt for Drupal 7.</p>

<p>Drupal is great for one main reason - it is extendible to the n’th
degree - a Drupal site can be a blog, a forum, a static site, a database
application. In fact there is very little you can’t do with a Drupal
site. There is a price to be paid for all the functionality, I do see
Drupal as being something of a jack of all trades and yet a master of
none, but, if you want flexibility without the need to host multiple
services, then Drupal is it.</p>

<!--more-->

<p>Installing Drupal was very simple, providing you know how to configure
mysql (or another database). The instructions are clearly laid out in
the tar.gz; although newer users would probably be best advised to find
a howto.</p>

<p>Having googled for a decent link for you, I have found nothing, so here
goes a brief howto - from memory (you have been warned):</p>

<p>Install prerequisites (hopefully I haven’t missed any that won’t be
brought in anyway):</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo apt-get install apache2 php5-common php5-mysql \
libapache2-mod-php5 php5-gd
</code></pre></div></div>

<p><a href="http://drupal.org/project/drupal" title="Drupal">Visit Drupal 7</a> page and
copy the link to the  tar.gz file for Drupal 7 and download to a
suitable directory on the server:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ wget http://ftp.drupal.org/files/projects/drupal-7.0.tar.gz
</code></pre></div></div>

<p>Extract contents and change into the Drupal directory:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ tar -xvvzf drupal-7.0.tar.gz
$ cd drupal-7.0
</code></pre></div></div>

<p>Read the INSTALL.txt file and follow the steps to move the
installation to its proper home (under debian /var/www):</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ cd ..
$ sudo mkdir /var/www/drupal
$ sudo mv drupal-7.0/* drupal-7.0/.htaccess /var/www/drupal/
</code></pre></div></div>

<p>Set the ownership and group on the new directory:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo a2enmod rewrite
$ sudo /etc/init.d/apache restart
</code></pre></div></div>

<p>Once installed Drupal 7 looks very attractive and feels a very slick
product. I was particularly impressed by the ability to paste a link to
a Drupal module tar.gz file and click Install. Doubtless this is not the
recommended way to install modules, but it worked fine.</p>

<p>One thing that most users will wish to install is a WYSIWYG editor, and
after much trial and error I found that the <a href="http://drupal.org/project/ckeditor" title="CKEditor">CKEditor
module</a> (and <strong>not</strong> the
<a href="http://drupal.org/project/wysiwyg" title="WYSIWYG Module">WYSIWYG module</a> +
<a href="http://ckeditor.com/download" title="CKEditor">CKEditor</a>) worked best.</p>

<p>On the downside, I am struggling to find all the modules that I need. As
in previous versions of Drupal, there are a great many that have still
not updated for Drupal 7. In particular, I would like an instant
messaging module, but cannot find such a thing.  I would imagine this
issue will get easier over time, and I would rather be on the current
version now and be able to add features later, than be on the old
version now with all features and have the worry about how I am ever
going to upgrade!</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Debian 6 First Impressions Linux Magazine</title>
      <link>https://chrisjrob.com/2011/02/23/debian-6-first-impressions-linux-magazine/</link>
      <pubDate>Wed, 23 Feb 2011 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2011/02/23/debian-6-first-impressions-linux-magazine</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/linux-magazine-debian6.png" align="right" alt="Featured Image">
         
         <p>Apparently I am not the only one that thinks that the Debian graphics
are appalling:</p>

<table>
  <tbody>
    <tr>
      <td>[Debian 6: First Impressions</td>
      <td>Linux Magazine](http://www.linux-mag.com/id/8188/)</td>
    </tr>
  </tbody>
</table>

<!--more-->

<p>Debian did have a design contest of sorts, well a brief mailing list
thread that had the impossible task of voting the best out of just a
handful of rubbish themes.  Given the choices, personally I would have
opted for the upstream themes, or just to stick with the Debian Lenny
theme which was perfectly okay.</p>

<p>I do wonder how easy or difficult it is to submit themes - do you have
to be a Debian developer?  If so, then they should really think about
lowering the bar.  I’m sure that I could produce something better,
although <a href="http://kde-look.org/content/search.php?user=chrisjrob&amp;search=Search" title="chrisjrob @ kde-look">my last attempt</a>
does not appear to be getting widespread approval.</p>

<p>Anyhow, we don’t love Debian for how pretty is looks - we can soon
change the theme if it bothers us.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Barclays On-Line Banking</title>
      <link>https://chrisjrob.com/2011/02/23/barclays-on-line-banking/</link>
      <pubDate>Wed, 23 Feb 2011 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2011/02/23/barclays-on-line-banking</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/barclays.jpg" align="right" alt="Featured Image">
         
         <p>I have looked into moving to Barclays on-line business banking, but
apparently it requires a hardware card reader that only works on Windows
and Mac. This is a major problem as we run Linux everywhere and only
access Windows via RDP to a virtual server.</p>

<!--more-->

<p>Currently we use Barclays BusinessMaster that is installed on a shared
Windows server that we can access via RDP or ICA. Thus any user with a
BusinessMaster login can update our bank, create payments etc (subject
to authority levels of course!).</p>

<p>Our only option now seems to be to install a standalone Windows PC
somewhere and physically have to visit it in order to do our business
banking.</p>

<p>Welcome to 2011.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>HP Proliant DL360G5 / DL380G5 Temperature Monitoring</title>
      <link>https://chrisjrob.com/2011/02/17/hp-proliant-dl360g5-dl380g5-temperature-monitoring/</link>
      <pubDate>Thu, 17 Feb 2011 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2011/02/17/hp-proliant-dl360g5-dl380g5-temperature-monitoring</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/hp-proliant-dl-380-g5.jpg" align="right" alt="Featured Image">
         
         <p>I don’t have the HP Management suite installed on my HP Proliant servers, largely because they proved to be a huge resource hog, but I would like to be able to monitor stuff.  On PCs I am used to being able to use lm-sensors, so thought I’d give that a go.  Installing it prompted me to install ipmitool, which in turn needs openipmi.</p>

<!--more-->

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># apt-get install lm-sensors openipmi ipmitool
</code></pre></div></div>

<p>Then I ran the standard sensors-detect command, accepting YES for all options (I was feeling quite brave):</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># sensors-detect
</code></pre></div></div>

<p>This ended up writing the following into <code class="language-plaintext highlighter-rouge">/etc/modules</code>:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># Generated by sensors-detect on Thu Feb 17 18:04:48 2011
# You must also install and load the IPMI modules
ipmi-si
# Chip drivers
# Warning: the required module ipmisensors is not currently installed
# on your system. For status of 2.6 kernel ports check
# http://www.lm-sensors.org/wiki/Devices. If driver is built
# into the kernel, or unavailable, comment out the following line.
ipmisensors

# no driver for SMSC SCH4307 Super IO Fan Sensors yet
coretemp
</code></pre></div></div>

<p>To test this without rebooting I typed the commands in succession, but found that ipmisensors did not exist, some googling suggested the module to be <code class="language-plaintext highlighter-rouge">ipmi_devintf</code>, and that indeed seemed to work:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># modprobe ipmi-si
# modprobe ipmi_devintf
# modprobe coretemp
</code></pre></div></div>

<p>So the additions to my <code class="language-plaintext highlighter-rouge">/etc/modules</code> now looked like this:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># Generated by sensors-detect on Thu Feb 17 18:04:48 2011
# You must also install and load the IPMI modules
ipmi-si
# Chip drivers
# Warning: the required module ipmisensors is not currently installed
# on your system. For status of 2.6 kernel ports check
# http://www.lm-sensors.org/wiki/Devices. If driver is built
# into the kernel, or unavailable, comment out the following line.
# ipmisensors
ipmi_devintf

# no driver for SMSC SCH4307 Super IO Fan Sensors yet
coretemp
</code></pre></div></div>

<p>And then I tested the commands with:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># sensors
# ipmitool sensors
</code></pre></div></div>

<p>Both of which commands brought back sensible information.  Now I just need to work out how to incorporate this into nagios with nrpe, but that can wait for another day.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Etherpad on Debian Squeeze</title>
      <link>https://chrisjrob.com/2011/02/07/etherpad-on-debian-squeeze/</link>
      <pubDate>Mon, 07 Feb 2011 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2011/02/07/etherpad-on-debian-squeeze</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/etherpad.png" align="right" alt="Featured Image">
         
         <p>Just installed <a href="http://etherpad.org/">Etherpad</a> on our openvz server.  Having created an openvz guest for the purpose, running Debian Squeeze, installing Etherpad proved no more difficult than adding the Etherpad repository to your <code class="language-plaintext highlighter-rouge">/etc/apt/sources.list</code>:</p>

<!--more-->

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo su
# echo "deb http://apt.etherpad.org all ." &amp;gt;&amp;gt; /etc/apt/sources.list
# apt-get update
# apt-get install etherpad
</code></pre></div></div>

<p>All the requisite dependencies were brought in.  Unfortunately the etherpad server did not start after installation, and I had to do the following commands:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># sed -i.orig 's/local/share/' /etc/init.d/etherpad
</code></pre></div></div>

<p>Then it started perfectly simply with <code class="language-plaintext highlighter-rouge">/etc/init.d/etherpad</code> start.</p>

<p>To make this happen automatically on boot:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># update-rc.d etherpad defaults
</code></pre></div></div>

<p>If you would prefer to use openjdk than sun-java (and you should), then google for “etherpad openjdk”.  Sorry to say I was in too much of a hurry on this occasion.</p>

<h3 id="references">References</h3>

<ul>
  <li><a href="http://etherpad.org/">Etherpad</a></li>
  <li><a href="http://sis.bthstudent.se/2011/525/how-to-install-etherpad-on-debian-lenny/">http://sis.bthstudent.se/2011/525/how-to-install-etherpad-on-debian-lenny/</a></li>
</ul>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Skype 64-bit</title>
      <link>https://chrisjrob.com/2010/12/05/skype-64-bit/</link>
      <pubDate>Sun, 05 Dec 2010 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2010/12/05/skype-64-bit</guid>
      <description>
       <![CDATA[
         
         <p>When I bought my Toshiba laptop and opted for 64-bit Debian Squeeze I made one compromise, I gave up Skype.  This was for the simple reason that it would not work on 64-bit Linux (or 64-bit anything, come to that).  Later I heard from several people that you could install the 32-bit version using the 32-bit libraries, but I was conscious that this was sub-optimal and in any case Skype should be punished for being closed source and, perhaps more to the point, for not providing a 64-bit version.</p>

<!--more-->

<p>Skype is important, though, for new Linux users.  It is no good telling them to use SIP, as their friends have Skype and most people do not want to make the sacrifices that some of us feel are necessary.</p>

<p>Feeling a little guilty, I decided to give it a go.  I was expecting to download the 32-bit version of Skype, and the 32-bit libraries, but was surprised to see a 64-bit version for Ubuntu.  Given that Ubuntu is based on Debian, it was worth a try:</p>

<ul>
  <li><a href="http://www.skype.com/en/download-skype/skype-for-linux/">Download Skype for Linux</a></li>
</ul>

<p>I installed it with:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo dpkg -i skype-ubuntu-intrepid_2.1.0.81-1_amd64.deb
</code></pre></div></div>

<p>And, erm, it seems to work.  Well at least the test call worked perfectly.</p>

<p>So we seem to be able to tick the Skype 64-bit box as “job done”, now how about iTunes…</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Home Theatre PC - Continued</title>
      <link>https://chrisjrob.com/2010/12/05/home-theatre-pc-continued/</link>
      <pubDate>Sun, 05 Dec 2010 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2010/12/05/home-theatre-pc-continued</guid>
      <description>
       <![CDATA[
         
         <p>A while ago I wrote:</p>

<blockquote>
  <p>“For some reason it is not saving a bookmark when you stop watching a recorded program in the middle, so that you have to find where you were manually. This worked fine on our old machine, so just need to find out what is wrong. I can research this when I have time.”
<a href="/2010/09/21/home-theatre-pc-continued/">Read original post</a>.</p>
</blockquote>

<p>Well I am delighted to say that this was fixed by an option in the Playing TV settings for saving bookmarks.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Howto | Archive to DAT</title>
      <link>https://chrisjrob.com/2010/11/23/archive-to-dat/</link>
      <pubDate>Tue, 23 Nov 2010 16:25:08 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2010/11/23/archive-to-dat</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/freecom-dat.jpg" align="right" alt="Featured Image">
         
         <p>I am a rank amateur at both tar and mt.  This page constitutes no more than you could discover yourself by reading the manpages for tar and mt, or Googling.</p>

<p>You have been warned!</p>

<h2 id="simple-instructions">Simple instructions</h2>

<!--more-->

<h3 id="rewind">Rewind</h3>

<p><strong>Use the rewind command before backup to ensure that you are overwriting previous backups.</strong></p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># mt -f /dev/st0 rewind
</code></pre></div></div>

<h3 id="backup">Backup</h3>

<p>E.g. directory <code class="language-plaintext highlighter-rouge">/www</code> and <code class="language-plaintext highlighter-rouge">/home</code> with tar command (z - compressed)</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># tar -czf /dev/st0 /www /home
</code></pre></div></div>

<p><strong>Use -v to receive verbose feedback.</strong></p>

<h3 id="backup-with-verify">Backup with Verify</h3>

<p>If you do not compress your backup, then you can verify in the same process:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># tar -cWf /dev/st0 /www /home
</code></pre></div></div>

<h3 id="where">Where</h3>

<p>Find out what block you are at with mt command:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># mt -f /dev/st0 tell
</code></pre></div></div>

<p>This does not appear to work on my version of the software.  In theory the Status option has a line for <code class="language-plaintext highlighter-rouge">block number=</code>, but surprising after completing a backup it seems to still return 0.  If I ever work out why this is, I will update this entry.</p>

<h3 id="list">List</h3>

<p>Display list of files on tape drive:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># tar -tzf /dev/st0
</code></pre></div></div>

<h3 id="restore">Restore</h3>

<p>E.g. <code class="language-plaintext highlighter-rouge">/www</code> directory</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># cd /
# mt -f /dev/st0 rewind
# tar -xzf /dev/st0 www
</code></pre></div></div>

<p>E.g. <code class="language-plaintext highlighter-rouge">/home/test</code> directory</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># cd /
# mt -f /dev/st0 rewind
# tar --checkpoint -xvvzpkf /dev/st0 home/test

--checkpoint : provide occasional checkpoint messages
-x : extract
-v : verbosely
-v : even more verbosly
-z : uncompress
-p : retaining permissions
-k : leaving existing files alone
-f /dev/st0 home/test
</code></pre></div></div>

<h3 id="unload">Unload</h3>

<p>Unload the tape:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># mt -f /dev/st0 offline
</code></pre></div></div>

<h3 id="status">Status</h3>

<p>Display status information about the tape unit:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># mt -f /dev/st0 status
</code></pre></div></div>

<h3 id="erase">Erase</h3>

<p>Erasing the tape may take hours and there is not normally any need to do this; simply rewind the tape before performing backup, or use the mt command to position at the beginning of the tape.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># mt -f /dev/st0 erase
</code></pre></div></div>

<h3 id="moving-about-the-tape">Moving about the tape</h3>

<p>You can go BACKWARD or FORWARD on tape with mt command itself</p>

<h4 id="go-to-end-of-data">Go to end of data</h4>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># mt -f /dev/st0 eod
</code></pre></div></div>

<h4 id="goto-previous-record">Goto previous record</h4>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># mt -f /dev/st0 bsfm 1
</code></pre></div></div>

<h4 id="forward-record">Forward record</h4>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># mt -f /dev/st0 fsf 1
</code></pre></div></div>

<h2 id="restore-1">Restore</h2>

<p>This code has not been checked or tested:</p>

<ul>
  <li>Check status of tape: <code class="language-plaintext highlighter-rouge">mt -f /dev/st0</code> status</li>
  <li>Go to the directory where you want to restore your file(s).</li>
  <li>Go to the right file on the tape with the following commands:
    <ul>
      <li>Check file number and position in file: <code class="language-plaintext highlighter-rouge">mt -f /dev/st0 status</code></li>
      <li>Advance one file: <code class="language-plaintext highlighter-rouge">mt -f /dev/st0 fsf 1</code></li>
      <li>View contents of tar-file: <code class="language-plaintext highlighter-rouge">tar -tvf /dev/st0</code></li>
      <li>Go back one file: <code class="language-plaintext highlighter-rouge">mt -f /dev/st0 bsf 1</code></li>
      <li>
        <p>If you are in the last block of a file and you should be at the beginning of the file, do the following:</p>

        <p><code class="language-plaintext highlighter-rouge">mt -f /dev/st0 bsf 1</code></p>

        <p><code class="language-plaintext highlighter-rouge">mt -f /dev/st0 fsf 1</code></p>
      </li>
      <li>And check with: <code class="language-plaintext highlighter-rouge">mt -f /dev/st0 status</code></li>
    </ul>
  </li>
  <li>Extract your file(s): <code class="language-plaintext highlighter-rouge">tar -xvf /dev/st0 ~files~</code></li>
  <li>Rewind and eject tape: <code class="language-plaintext highlighter-rouge">mt -f /dev/st0 offline</code></li>
</ul>

<h2 id="hardware-compression">Hardware Compression</h2>

<p>It may be possible to switch off and on the hardware compression on the:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># mt -f /dev/st0 compression 0
# mt -f /dev/st0 compression 1
</code></pre></div></div>

<p>Other people report replacing the 0 with “off” and 1 with “on”.</p>

<h2 id="references">References</h2>

<ul>
  <li>man tar</li>
  <li>man mt</li>
  <li><a href="http://www.cyberciti.biz/faq/linux-tape-backup-with-mt-and-tar-command-howto/">Howto: Linux Tape Backup with MT and TAR commands</a></li>
  <li><a href="http://www.cs.inf.ethz.ch/stricker/lab/linux_tape.html">How to use the DAT-tape with Linux</a></li>
  <li><a href="http://www.cyberciti.biz/faq/unix-verify-tape-backup/">Verify tar command tape backup under Linux or UNIX</a></li>
  <li><a href="http://www.cyberciti.biz/faq/tape-drives-naming-convention-under-linux/">Tape drives naming convention under Linux</a></li>
  <li><a href="http://www.cyberciti.biz/faq/backup-home-directories-in-linux/">Backup home directories in Linux</a></li>
  <li><a href="http://www.cyberciti.biz/faq/howto-use-tar-command-through-network-over-ssh-session/">Howto: Use tar command through network over ssh session</a></li>
  <li><a href="http://www.cyberciti.biz/faq/rhel-centos-debian-set-tape-blocksize/">Linux Set the Block Size for a SCSI Tape Device</a></li>
</ul>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Howto | Install Ruby on Rails3 on Debian Lenny</title>
      <link>https://chrisjrob.com/2010/11/20/install-ruby-on-rails3-on-debian-lenny/</link>
      <pubDate>Sat, 20 Nov 2010 16:15:40 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2010/11/20/install-ruby-on-rails3-on-debian-lenny</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/debian_logo.png" align="right" alt="Featured Image">
         
         <p>I know nothing about Ruby on Rails, but this is how I ended up successfully (I think!) installing it.  There may be better ways.</p>

<h2 id="download-and-compile-ruby">Download and Compile Ruby</h2>

<p>At the time of writing, the current version is 1.9.2</p>

<ul>
  <li>http://www.ruby-lang.org/en/downloads/</li>
</ul>

<!--more-->

<p>I tend to use checkinstall wherever possible, so that I can manage the package via apt-get and dpkg.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo apt-get install checkinstall

$ wget ftp://ftp.ruby-lang.org//pub/ruby/1.9/ruby-1.9.2-p0.tar.gz
$ tar -xvvzf ruby-1.9.2-p0.tar.gz
$ cd ruby-1.9.2-p0

$ ./configure
$ make
$ sudo checkinstall
</code></pre></div></div>

<p>Set the version number to 1.9.2</p>

<h2 id="install-rails">Install Rails</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo gem install rails
</code></pre></div></div>

<h2 id="install-passenger">Install Passenger</h2>

<p><strong>This assumes you are using apache2.</strong></p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo gem install passenger
$ sudo passenger-install-apache2-module
</code></pre></div></div>

<p>Please read thoroughly the output from this the last command, as it will give you the information you require for the next section.</p>

<h2 id="enable-passenger">Enable Passenger</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ cd /etc/apache2/mods-available
</code></pre></div></div>

<p>Create or edit the following files, using the output from passenger-install-apache2-module above.</p>

<h3 id="passengerconf">passenger.conf</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>&lt;IfModule mod_passenger.c&gt;
    PassengerRoot /usr/local/lib/ruby/gems/1.9.1/gems/passenger-2.2.15
    PassengerRuby /usr/local/bin/ruby
&lt;/IfModule&gt;
</code></pre></div></div>

<h3 id="passengerload">passenger.load</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>LoadModule passenger_module /usr/local/lib/ruby/gems/1.9.1/gems/passenger-2.2.15/ext/apache2/mod_passenger.so
</code></pre></div></div>

<h3 id="enable-in-apache">Enable in Apache</h3>

<p>You should now be able to enable the apache module with:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo a2enmod passenger
</code></pre></div></div>

<h2 id="update-vhosts">Update Vhosts</h2>

<p>This will vary depending on your system, but you are aiming to have a vhost configuration similar to the following:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>&lt;VirtualHost *:80&gt;
    ServerName www.yourhost.com
    DocumentRoot /somewhere/public    # &lt;-- be sure to point to 'public'!
    RailsEnv development              # &lt;-- change to testing/production as appropriate (see note below)
    RackEnv development               # &lt;-- change to testing/production as appropriate (see note below)
    &lt;Directory /somewhere/public&gt;
       AllowOverride all              # &lt;-- relax Apache security settings
       Options -MultiViews            # &lt;-- MultiViews must be turned off
    &lt;/Directory&gt;
&lt;/VirtualHost&gt;
</code></pre></div></div>

<p>By default, passenger uses the Ruby on Rails production database, which may or may not be appropriate, depending on where you are in the development process.  If you are still developing your rails app, then you may want to set in the above:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>RailsEnv development
RackEnv development
</code></pre></div></div>

<p>In theory you only need the former, but the presence of the file config.ru in your application directory makes passenger require RackEnv instead.</p>

<p>Otherwise, when making changes to your database, do remember to:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># db:migrate RAILS_ENV=production
# touch tmp/restart.txt
</code></pre></div></div>

<p>Otherwise your application will not work.</p>

<h2 id="ispconfig">ISPConfig</h2>

<p>If you are using ISPConfig, then I currently have this working by adding the following to the sites Apache Directives in the admin control panel:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>DocumentRoot /var/www/web11/web/blog/public
&lt;Directory /var/www/web11/web/blog/public&gt;
    AllowOverride all
    Options -MultiViews
&lt;/Directory&gt;
</code></pre></div></div>

<p>And then edit <code class="language-plaintext highlighter-rouge">/etc/apache2/vhosts/Vhosts_ispconfig.conf</code> and remove the old DocumentRoot line from the relevant vhost section.  Unfortunately you will have to do this everytime you change your site configuration.  This is very poor, there has to be a better way.</p>

<h2 id="installing-jquery">Installing JQuery</h2>

<p>These are rather poor notes, you are probably better looking elsewhere, but the key thing is that the long and complex instructions for installing jquery that abound on the Internet should be avoided.  The installation should be a mere couple of commands.</p>

<p>Either type:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ gem install jquery-rails
</code></pre></div></div>

<p>Or as I preferred, edit your Gemfile (in the root of your rails project) and add:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>gem 'jquery-rails'
</code></pre></div></div>

<p>My handwritten notes don’t say this, but I believe you would then need to run:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ bundle install
</code></pre></div></div>

<p>And then (add “–ui” on the end of the following command to include the jquery UI):</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ rails generate jquery:install
</code></pre></div></div>


       ]]>
      </description>
    </item>
    
    <item>
      <title>LTSP | LTSP5 Local Devices</title>
      <link>https://chrisjrob.com/2010/11/19/ltsp5-local-devices/</link>
      <pubDate>Fri, 19 Nov 2010 15:04:50 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2010/11/19/ltsp5-local-devices</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/ltsp_logo.png" align="right" alt="Featured Image">
         
         <p>You’ve inserted a disk or memory stick in your thin client, and nothing happened, what next?</p>

<h2 id="check-ltsconf">Check lts.conf</h2>

<p>Each user you wish to be able to access their local devices needs LOCALDEV = True in lts.conf, alternatively you may add to the ‘[default]’ section to make this global.</p>

<!--more-->

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>[192.168.1.198]
# Joe Bloggs Desktop
    LOCALDEV             = True
</code></pre></div></div>

<h2 id="check-user-is-in-fuse-group">Check user is in fuse group</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># groups userid
userid satff users audio fuse
</code></pre></div></div>

<p>If they are not in the fuse group then:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># adduser userid fuse
</code></pre></div></div>

<h2 id="check-ltsconf-settings-are-reaching-client">Check lts.conf settings are reaching client</h2>

<p>A simple typo can mean that your carefully crafted lts.conf file is not reaching its target audience.  To test, boot up the thin client and ctrl+alt+f1 to get to the console, login as root and type the following:</p>

<p>See LTSP Client Root Password if you are unable to log into the client.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># getltscfg -a
</code></pre></div></div>

<p>This will give you a list of all the settings that apply to this particular client, including any default settings.  You need to check that you can see the above LOCALDEV=”True” is visible.</p>

<h2 id="check-logs-on-client">Check logs on client</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># tail -f /var/log/syslog
</code></pre></div></div>

<p>Then try inserting the device, and you should see the detection - look for errors that might indicate what has gone wrong.</p>

<h2 id="check-udev-can-see-drive">Check UDEV can see drive</h2>

<p>Still on the client:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># udevadm info -q all -n sda1
</code></pre></div></div>

<p>Replace sda1 with the required device, e.g. sr0 for a cdrom etc.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>P: /block/sda/sda1
N: sda1
S: block/8:1
S: disk/by-id/usb-USB_DISK_2.0_J68J5KQHN7TQ0H7G-0:0-part1
S: disk/by-path/pci-0000:00:1d.7-usb-0:2:1.0-scsi-0:0:0:0-part1
S: disk/by-uuid/99B8-E4E6
S: disk/by-label/PKBACK#\x20001
E: ID_VENDOR=USB
E: ID_MODEL=DISK_2.0
E: ID_REVISION=1219
E: ID_SERIAL=USB_DISK_2.0_J68J5KQHN7TQ0H7G-0:0
E: ID_SERIAL_SHORT=J68J5KQHN7TQ0H7G
E: ID_TYPE=disk
E: ID_INSTANCE=0:0
E: ID_BUS=usb
E: ID_PATH=pci-0000:00:1d.7-usb-0:2:1.0-scsi-0:0:0:0
E: ID_FS_USAGE=filesystem
E: ID_FS_TYPE=vfat
E: ID_FS_VERSION=FAT16
E: ID_FS_UUID=99B8-E4E6
E: ID_FS_UUID_ENC=99B8-E4E6
E: ID_FS_LABEL=PKBACK# 001
E: ID_FS_LABEL_ENC=PKBACK#\x20001
E: ID_FS_LABEL_SAFE=PKBACK#_001
</code></pre></div></div>

<p>An example of a CDROM:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>P: /block/sr0
N: sr0
S: block/11:0
S: scd0
S: disk/by-path/pci-0000:00:1f.2-scsi-1:0:0:0
S: cdrom
S: cdrw
S: dvd
S: dvdrw
E: ID_CDROM=1
E: ID_CDROM_CD_R=1
E: ID_CDROM_CD_RW=1
E: ID_CDROM_DVD=1
E: ID_CDROM_DVD_R=1
E: ID_CDROM_DVD_RW=1
E: ID_CDROM_DVD_RAM=1
E: ID_CDROM_DVD_PLUS_R=1
E: ID_CDROM_DVD_PLUS_RW=1
E: ID_CDROM_DVD_PLUS_R_DL=1
E: ID_CDROM_MRW=1
E: ID_CDROM_MRW_W=1
E: ID_PATH=pci-0000:00:1f.2-scsi-1:0:0:0
</code></pre></div></div>

<h2 id="check-ltspfs-is-installed-on-the-server">Check ltspfs is installed on the server</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># dpkg -l ltspfs | grep ^ii
ii  ltspfs                                       0.6-1~bpo50+1                        Fuse based remote filesystem for LTSP thin clients
</code></pre></div></div>

<h2 id="check-fuse-is-running">Check fuse is running</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># lsmod | grep fuse
fuse                   47124  3 
</code></pre></div></div>

<p>If fuse is not running, then:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># echo fuse &gt;&gt; /etc/modules
# modprobe fuse
# adduser USER fuse
</code></pre></div></div>

<h2 id="kde-desktop-icons">KDE Desktop Icons</h2>

<ul>
  <li><a href="/2009/03/21/ltsp-local-device-icons-on-kde-desktop/">Local Device Icons on KDE Desktop</a></li>
</ul>

<h2 id="references">References</h2>

<p>For some additional troubleshooting, try: http://wiki.ubuntu.com/DebugLocalDev</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Why building your own PC still makes sense</title>
      <link>https://chrisjrob.com/2010/11/15/why-building-your-own-pc-still-makes-sense/</link>
      <pubDate>Mon, 15 Nov 2010 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2010/11/15/why-building-your-own-pc-still-makes-sense</guid>
      <description>
       <![CDATA[
         
         <p>Which such cheap PCs now available, does it really make sense to build your own?  I think so, and these are the reasons why:</p>

<p>Despite the cheap PCs, there are still some direct savings to be made, obviously Linux users can save the Microsoft licence, but there are other savings too.  For example you can re-use components from your existing PC, this might be a short-term way of you getting the PC that you want, and then replacing the components over time.</p>

<!--more-->

<p>Already have a keyboard, mouse and DVD/RW?  Reuse them - it’s more environmentally friendly and, if they fail later, then you can always replace them and thus stagger the cost.  Why not plan to re-use your existing hard-drive, perhaps as a second drive or as a back-up drive, it’ll make it easier to transfer data.  If you’re trying to save money then you could build your PC using on-board graphics and then plan to buy a decent graphics card at a later stage.</p>

<p>Another advantage to building your own PC is that you get to choose the compromises that are made.  The cheapest components are incredibly cheap, so for example if you were planning to keep the base unit behind the sofa, then you could specify a £15 case, instead of a £100 case.</p>

<p>You also get to specify things like RAM - we’ve all gone to upgrade PCs, only to find that both slots have already been used - now you can make sure that you buy a single 2GB RAM with the knowledge that you can buy a second when you have more money.</p>

<p>It is this type of flexibility which still makes building your own compelling.</p>

<p>It is true that it takes longer to build your own, but I find the bulk of the time taken is in choosing the components, the build itself is usually no more than an hour, and I probably waste three hours in agonising over the purchase of the components!  The only thing that is tricky is in deciding which way around the different connectors go, but generally the booklets that come with the motherboard are very helpful, and failing that the Internet is a wonderful resource.</p>

<p>The ability to repair the device is I find not so much down to your experience of the build, but in your confidence that all the components are standard off-the-shelf items.  If you suspect that the graphics card is shot, then, buying a replacement is easy, because you know exactly what you need.</p>

<p>I tend to choose the CPU, then knowing the CPU I purchase a compatible motherboard, from there it is pretty simple to choose the case to fit the motherboard, and the rest of the items should be straightforward.  PSU obviously needs to be sensitive to the case, but if you have gone for a standard ATX case, that should not be an issue.</p>

<p>Alternatively <a href="https://www.lambda-tek.com/">Lambda-Tek</a> have a PC Designer to do this for you, I have not used it myself yet, but it looks impressive.</p>

<p>If you want a small form factor device than visit <a href="http://linitx.com">Lin-ITX</a>, who have knowledgeable people on the end of the phone to advise you.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>A quick and dirty install of LibreOffice on Debian</title>
      <link>https://chrisjrob.com/2010/10/28/a-quick-and-dirty-install-of-libreoffice-on-debian/</link>
      <pubDate>Thu, 28 Oct 2010 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2010/10/28/a-quick-and-dirty-install-of-libreoffice-on-debian</guid>
      <description>
       <![CDATA[
         
         <p>Following the forking of OpenOffice.org into LibreOffice under the auspices of the new Document Foundation, I decided that I should take a look.</p>

<p>First I removed OpenOffice:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo apt-get --purge remove ".*openoffice.*"
</code></pre></div></div>

<!--more-->

<p>Then I visited <a href="http://download.documentfoundation.org/libreoffice/testing/">the Document Foundation LibreOffice website</a> and downloaded:</p>

<ul>
  <li>LibO_3.3.0_beta2_Linux_x86_install-deb_en-US.tar.gz</li>
  <li>LibO_3.3.0_beta2_Linux_x86_langpack-deb_en-GB.tar.gz</li>
</ul>

<p>Then, having checked that the md5sums matched, I extracted both with <code class="language-plaintext highlighter-rouge">tar -xvvzf</code> and changed to the DEBS directory in each and ran:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo dpkg -i *.deb
</code></pre></div></div>

<p>All very clumsy, but this was only my work PC, which isn’t mission critical, as I generally use NX client to log into my desktop on our LTSP Server.</p>

<p>So what are my first impressions?  Sadly these will have to wait for another day, apart from the obvious branding change, I couldn’t see much different, but the good news is that it does all appear to be working.</p>

<p>I am not sure whether LibreOffice yet has the <a href="http://go-oo.org">Go-OO Patches</a> patches, which I believe were included by default in Debian and Ubuntu, but the fact that they are being combined into the core must be good news.</p>

<p>I am really hoping that LibreOffice improves quickly on OpenOffice, which still falls considerably short of Microsoft Office for power users.  In particular Macros, Pivot Tables, Conditional Formatting, and Mailmerge all need a lot of work.  Not to speak of the appalling performance, it really is a system hog.  I can’t help feeling that it really needs to be re-written from scratch, but I appreciate that is unrealistic.</p>

<p>In the meantime I have hopes that KOffice will soon step up to the mark - KWord’s mailmerge feature is a lesson in simplicity that OpenOffice/LibreOffice would do well to learn.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Installing Ruby on Rails</title>
      <link>https://chrisjrob.com/2010/10/18/install-ruby-on-rails/</link>
      <pubDate>Mon, 18 Oct 2010 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2010/10/18/install-ruby-on-rails</guid>
      <description>
       <![CDATA[
         
         <p>I need a way of creating some quick and dirty web apps for internal use.  To this end, I decided to give Ruby on Rails a try.  Unfortunately it is in heavy development and the Debian packages have not kept up.  I decided to try and install from source, and, after several blind alleys, I ended up with quite a simple installation…</p>

<!--more-->

<h2 id="install-ruby-on-rails3-on-debian-lenny">Install Ruby on Rails3 on Debian Lenny</h2>

<h3 id="warning">Warning</h3>

<p>I know nothing about Ruby on Rails, but this is how I ended up successfully (I think!) installing it.  There may be better ways.</p>

<h3 id="download-and-compile-ruby">Download and Compile Ruby</h3>

<p>At the time of writing, the current version is 1.9.2</p>

<ul>
  <li><a href="http://www.ruby-lang.org/en/downloads/">http://www.ruby-lang.org/en/downloads/</a></li>
</ul>

<p>I tend to use checkinstall wherever possible, so that I can manage the package via apt-get and dpkg.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo apt-get install checkinstall

$ wget ftp://ftp.ruby-lang.org//pub/ruby/1.9/ruby-1.9.2-p0.tar.gz
$ tar -xvvzf ruby-1.9.2-p0.tar.gz
$ cd ruby-1.9.2-p0

$ ./configure
$ make
$ sudo checkinstall
</code></pre></div></div>

<p>Set the version number to 1.9.2</p>

<h3 id="install-rails">Install Rails</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo gem install rails
</code></pre></div></div>

<h3 id="install-passenger">Install Passenger</h3>

<p>N.B. This assumes you are using apache2.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo gem install passenger
$ sudo passenger-install-apache2-module
</code></pre></div></div>

<p>Please read thoroughly the output from this the last command, as it will give you the information you require for the next section.</p>

<h3 id="enable-passenger">Enable Passenger</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ cd /etc/apache2/mods-available
</code></pre></div></div>

<p>Create or edit the following files, using the output from passenger-install-apache2-module above.</p>

<h4 id="passengerconf">passenger.conf</h4>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>&lt;IfModule mod_passenger.c&gt;
PassengerRoot /usr/local/lib/ruby/gems/1.9.1/gems/passenger-2.2.15
PassengerRuby /usr/local/bin/ruby
&lt;/IfModule&gt;
</code></pre></div></div>

<h4 id="passengerload">passenger.load</h4>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>LoadModule passenger_module /usr/local/lib/ruby/gems/1.9.1/gems/passenger-2.2.15/ext/apache2/mod_passenger.so
</code></pre></div></div>

<h4 id="enable-in-apache">Enable in Apache</h4>

<p>You should now be able to enable the apache module with:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo a2enmod passenger
</code></pre></div></div>

<h3 id="update-vhosts">Update Vhosts</h3>

<p>This will vary depending on your system, but you are aiming to have a vhost configuration similar to the following:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>&lt;VirtualHost *:80&gt;
    ServerName www.yourhost.com
    DocumentRoot /somewhere/public    # &lt;-- be sure to point to 'public'!
    RailsEnv development              # &lt;-- change to testing/production as appropriate (see note below)
    RackEnv development               # &lt;-- change to testing/production as appropriate (see note below)
    &lt;Directory /somewhere/public&gt;
        AllowOverride all             # &lt;-- relax Apache security settings
        Options -MultiViews           # &lt;-- MultiViews must be turned off
    &lt;/Directory&gt;
&lt;/VirtualHost&gt;
</code></pre></div></div>

<p>By default, passenger uses the Ruby on Rails production database, which may or may not be appropriate, depending on where you are in the development process.  If you are still developing your rails app, then you may want to set in the above:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>RailsEnv development
RackEnv development
</code></pre></div></div>

<p>In theory you only need the former, but the presence of the file <code class="language-plaintext highlighter-rouge">config.ru</code> in your application directory makes passenger require RackEnv instead.</p>

<p>Otherwise, when making changes to your database, do remember to:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># db:migrate RAILS_ENV=production
# touch tmp/restart.txt
</code></pre></div></div>

<p>Otherwise your application will not work.</p>

<h3 id="ispconfig">ISPConfig</h3>

<p>If you are using ISPConfig, then I currently have this working by adding the following to the sites Apache Directives in the admin control panel:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>DocumentRoot /var/www/web11/web/blog/public
&lt;Directory /var/www/web11/web/blog/public&gt;
    AllowOverride all
    Options -MultiViews
&lt;/Directory&gt;
</code></pre></div></div>

<p>And then edit <code class="language-plaintext highlighter-rouge">/etc/apache2/vhosts/Vhosts_ispconfig.conf</code> and remove the old DocumentRoot line from the relevant vhost section.  Unfortunately you will have to do this everytime you change your site configuration.  This is very poor, there has to be a better way.</p>

<h3 id="installing-jquery">Installing JQuery</h3>

<p>These are rather poor notes, you are probably better looking elsewhere, but the key thing is that the long and complex instructions for installing jquery that abound on the Internet should be avoided.  The installation should be a mere couple of commands.</p>

<p>Either type:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ gem install jquery-rails
</code></pre></div></div>

<p>Or as I preferred, edit your Gemfile (in the root of your rails project) and add:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>gem 'jquery-rails'
</code></pre></div></div>

<p>My handwritten notes don’t say this, but I believe you would then need to run:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ bundle install
</code></pre></div></div>

<p>And then (add <code class="language-plaintext highlighter-rouge">--ui</code> on the end of the following command to include the jquery UI):</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ rails generate jquery:install
</code></pre></div></div>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Home Theatre PC - Continued</title>
      <link>https://chrisjrob.com/2010/10/14/home-theatre-pc-continued/</link>
      <pubDate>Thu, 14 Oct 2010 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2010/10/14/home-theatre-pc-continued</guid>
      <description>
       <![CDATA[
         
         <p>A quick post regarding the issue of myth-backend having to be restarted on every boot, this was easily fixed simply by editing the upstart configuration <code class="language-plaintext highlighter-rouge">/etc/init/myth-backend.conf</code> and adding <code class="language-plaintext highlighter-rouge">and udev</code> to the “start on” line.  Now Myth comes up correctly first time every time!</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Howto | Install Wine on LTSP</title>
      <link>https://chrisjrob.com/2010/10/06/install-wine-on-ltsp/</link>
      <pubDate>Wed, 06 Oct 2010 15:29:55 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2010/10/06/install-wine-on-ltsp</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/winehq_logo_glass.png" align="right" alt="Featured Image">
         
         <p><strong>These instructions have not been tested since re-writing, in particular there will be permissions issues.</strong></p>

<h2 id="step-1-install-wine">Step 1: Install Wine</h2>

<p>Please visit for instructions on how to install Wine:</p>

<!--more-->

<ul>
  <li>http://www.winehq.org/site/download</li>
</ul>

<p>If you get a problem with applications appearing without any text, then you need to install some Windows fonts in Wine. 
One option is to simply download them from <a href="http://sourceforge.net/projects/corefonts/">http://sourceforge.net/projects/corefonts/</a>. You may also be able to install via a debian installer package:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo apt-get ttf-mscorefonts-installer
</code></pre></div></div>

<p>Install Wine packages:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo apt-get install libwine libwine-print libwine-sane libwine-alsa
</code></pre></div></div>

<p>Your requirements may vary, a non-inclusive list of available libraries is:</p>

<ul>
  <li>libwine: the core wine library</li>
  <li>libwine-print: the printing library</li>
  <li>libwine-sane: the scanning library</li>
  <li>libwine-alsa: the alsa sound library</li>
  <li>libwine-oss: the oss sound library</li>
</ul>

<p>You will notice winetools mentioned on several websites, my understanding is that this is no longer supported.</p>

<h2 id="step-2-create-a-wine-directory-for-your-application">Step 2: Create a Wine directory for your application</h2>

<p>By default Windows applications are installed in <code class="language-plaintext highlighter-rouge">/home/user/.wine</code>. If you want to install your application in a different directory then you must use the WINEPREFIX variable.</p>

<p>If you want your application to be installed in <code class="language-plaintext highlighter-rouge">/usr/local/share/appname</code> you must first create the directory:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ cd /usr/local/share
$ mkdir appname
$ WINEPREFIX="/usr/local/share/appname" wineprefixcreate
</code></pre></div></div>

<p>In this directory you will now find a fake Windows drive and the Wine configuration files system.reg and user.reg.</p>

<h2 id="step-3-configure-your-wine-directory">Step 3: Configure your Wine directory</h2>

<p><strong>You can probably skip this step for typical installations.</strong></p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ WINEPREFIX="/usr/local/share/appname" winecfg
</code></pre></div></div>

<h2 id="step-4-install-your-application">Step 4: Install your application</h2>

<h4 id="installing-from-an-msi-file">Installing from an .msi file</h4>

<p>You can install .msi files with the msiexec.exe utility. This command is built into Wine, so you don’t have to install Windows Installer from Microsoft.
If the .msi file is called msifile.msi you just have to type msiexec /i msifile.msi and the application will be installed.</p>

<p><strong>Make sure you’re not using a native version of msi.dll, but the builtin one.</strong>
To run the Windows install program, please type the following:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ WINEPREFIX="/usr/local/share/appname" wine /path/to/setup.exe
</code></pre></div></div>

<p><strong>Substitute “/path/to/setup.exe” with the installation path executable for your application</strong></p>

<h2 id="step-5-test-your-application">Step 5: Test your application</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ WINEPREFIX="/usr/local/share/appname" wine "drive_c/Program Files/app/appname.exe"
</code></pre></div></div>

<h2 id="step-6-configure-for-multi-user-operation">Step 6: Configure for multi-user operation</h2>

<p><strong>This section needs a re-write (or just refer to Example automation script below)</strong></p>

<p>It is possible to configure the system so that a system Wine installation (and applications) can be shared by all the users, and still let the users all have their own personalized configuration.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># Creating individual user directory, e.g. /home/username/.appname
# Symlink directory structure to /usr/local/share/appname
# Remove symlink for user.reg (will be auto-created for each user on first run)

$ ln -sf /usr/local/share/appname/system.reg system.reg
</code></pre></div></div>

<p>To assist in this process, please refer to the following guide:</p>

<ul>
  <li>http://www.winehq.org/site/docs/wineusr-guide/using-regedit</li>
</ul>

<p>and perhaps even symlink these back to the administrator’s account, to make it easier to install apps system-wide later:</p>

<p>You might be tempted to do the same for user.reg as well, however that file contains user specific settings. Every user should have their own copy of that file along with the permissions to modify it.</p>

<p>You’ll want to pay attention to drive mappings. If you’re sharing the system.reg file you’ll want to make sure the registry settings are compatible with the drive mappings in ~/.wine/dosdevices of each individual user. As a general rule of thumb, the closer you keep your drive mappings to the default configuration provided by wineprefixcreate, the easier this will be to manage. You may or may not be able to share some or all of the actual “c:” drive you originally installed the application to. Some applications require the ability to write specific settings to the drive, especially those designed for Windows 95/98/ME.</p>

<h3 id="example-automation-script">Example automation script</h3>

<p>This script was probably cobbled together from the superb ies4linux installation, or possibly from Franks Corner,</p>

<div class="language-pl highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">#!/usr/bin/perl</span>
<span class="c1"># Launch script for multiuser appname, master copy in /usr/local/share/appname.</span>

<span class="k">use</span> <span class="nv">strict</span><span class="p">;</span>

<span class="k">my</span> <span class="nv">$MASTERPREFIX</span> <span class="o">=</span> <span class="p">'</span><span class="s1">/usr/local/share/appname</span><span class="p">';</span>
<span class="k">my</span> <span class="nv">$WINEPREFIX</span>   <span class="o">=</span> <span class="nv">$ENV</span><span class="p">['</span><span class="s1">HOME</span><span class="p">'}</span> <span class="o">.</span> <span class="p">'</span><span class="s1">/.appname</span><span class="p">';</span>

<span class="k">use</span> <span class="nv">vars</span> <span class="sx">qw($MASTERPREFIX $WINEPREFIX)</span><span class="p">;</span>

<span class="c1"># If we're not set up, create the user's magic symlink-copy of the master</span>
<span class="c1"># installation.</span>

<span class="k">unless</span> <span class="p">(</span><span class="o">-</span><span class="nv">d</span> <span class="p">"</span><span class="si">$WINEPREFIX</span><span class="p">")</span> <span class="p">{</span>
	<span class="nb">system</span><span class="p">('</span><span class="s1">mkdir</span><span class="p">',</span> <span class="p">'</span><span class="s1">-p</span><span class="p">',</span> <span class="p">"</span><span class="si">$WINEPREFIX</span><span class="p">")</span> <span class="o">==</span> <span class="mi">0</span> <span class="p">](</span><span class="o">|</span> <span class="nb">die</span> <span class="p">"</span><span class="s2">mkdir -p </span><span class="si">$WINEPREFIX</span><span class="s2">: $?</span><span class="p">";</span>
	<span class="nb">system</span><span class="p">('</span><span class="s1">lndir</span><span class="p">',</span> <span class="p">"</span><span class="si">$MASTERPREFIX</span><span class="p">",</span> <span class="p">"</span><span class="si">$WINEPREFIX</span><span class="p">")</span> <span class="o">==</span> <span class="mi">0</span> <span class="o">||</span> <span class="nb">die</span> <span class="p">"</span><span class="s2">lndir failed: is xutils installed? $?</span><span class="p">";</span>

	<span class="c1"># The profile directory will be recreated automatically by wine on the</span>
	<span class="c1"># first run, so it's OK to blow away eny existing copy hanging around in</span>
	<span class="c1"># unwritable symlink form from the install, and it's OK to just create a</span>
	<span class="c1"># blank one.</span>
   
	<span class="nv">$PROFILES</span> <span class="o">=</span> <span class="nv">$WINEPREFIX</span> <span class="o">.</span> <span class="p">'</span><span class="s1">/drive_c/windows/profiles</span><span class="p">';</span>
	<span class="nb">system</span><span class="p">('</span><span class="s1">rm</span><span class="p">',</span> <span class="p">'</span><span class="s1">-fr</span><span class="p">',</span> <span class="p">"</span><span class="si">$PROFILES</span><span class="p">")</span> <span class="o">==</span> <span class="mi">0</span> <span class="o">||</span> <span class="nb">die</span> <span class="p">"</span><span class="s2">rm -fr </span><span class="si">$PROFILES</span><span class="s2"> failed: $?</span><span class="p">";</span>
	<span class="nb">system</span><span class="p">('</span><span class="s1">mkdir</span><span class="p">',</span> <span class="p">'</span><span class="s1">-p</span><span class="p">',</span> <span class="p">"</span><span class="si">$PROFILES</span><span class="p">")</span> <span class="o">==</span> <span class="mi">0</span> <span class="o">||</span> <span class="nb">die</span> <span class="p">"</span><span class="s2">mkdir -p </span><span class="si">$PROFILES</span><span class="s2"> failed: $?</span><span class="p">";</span>

	<span class="c1"># WINE needs to be able to write to the following files, so they can't be</span>
	<span class="c1"># symlinks to root-owned ones.</span>
   
	<span class="k">foreach</span> <span class="k">my</span> <span class="nv">$file</span> <span class="p">('</span><span class="s1">.no_prelaunch_window_flag</span><span class="p">',</span> <span class="p">'</span><span class="s1">system.reg</span><span class="p">',</span> <span class="p">'</span><span class="s1">userdef.reg</span><span class="p">',</span> <span class="p">'</span><span class="s1">user.reg</span><span class="p">')</span> <span class="p">{</span>
		<span class="k">if</span> <span class="p">(</span><span class="o">-</span><span class="nv">l</span> <span class="nv">$WINEPREFIX</span> <span class="o">.</span> <span class="p">'</span><span class="s1">/</span><span class="p">'</span> <span class="o">.</span> <span class="nv">$file</span><span class="p">)</span> <span class="p">{</span>
			<span class="nb">system</span><span class="p">('</span><span class="s1">rm</span><span class="p">',</span> <span class="p">'</span><span class="s1">-f</span><span class="p">',</span> <span class="nv">$WINEPREFIX</span> <span class="o">.</span> <span class="p">'</span><span class="s1">/</span><span class="p">'</span> <span class="o">.</span> <span class="nv">$file</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span> <span class="o">||</span> <span class="nb">die</span> <span class="p">"</span><span class="s2">rm -f </span><span class="si">$WINEPREFIX</span><span class="s2">/</span><span class="si">$file</span><span class="s2"> failed: $?</span><span class="p">";</span>
			<span class="nb">system</span><span class="p">('</span><span class="s1">cp</span><span class="p">',</span> <span class="nv">$MASTERPREFIX</span> <span class="o">.</span> <span class="p">'</span><span class="s1">/</span><span class="p">'</span> <span class="o">.</span> <span class="nv">$file</span><span class="p">,</span> <span class="nv">$WINEPREFIX</span> <span class="o">.</span> <span class="p">'</span><span class="s1">/</span><span class="p">'</span> <span class="o">.</span> <span class="nv">$file</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span> <span class="o">||</span> <span class="nb">die</span> <span class="p">"</span><span class="s2">Cannot copy </span><span class="si">$MASTERPREFIX</span><span class="s2">/</span><span class="si">$file</span><span class="s2"> to </span><span class="si">$WINEPREFIX</span><span class="s2">/</span><span class="si">$file</span><span class="s2">: $?</span><span class="p">";</span>
		<span class="p">)</span>
	<span class="p">}</span>
	<span class="nb">system</span><span class="p">('</span><span class="s1">chmod</span><span class="p">',</span> <span class="p">'</span><span class="s1">-R</span><span class="p">',</span> <span class="p">'</span><span class="s1">og-rwx</span><span class="p">',</span> <span class="nv">$WINEPREFIX</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span> <span class="o">||</span> <span class="nb">die</span> <span class="p">"</span><span class="s2">Cannot chmod -R og-rwx </span><span class="si">$WINEPREFIX</span><span class="s2">: $?</span><span class="p">";</span>

<span class="p">}</span>

<span class="nb">exec</span><span class="p">('</span><span class="s1">env</span><span class="p">',</span> <span class="p">'</span><span class="s1">WINEPREFIX=</span><span class="p">'</span> <span class="o">.</span> <span class="nv">$WINEPREFIX</span><span class="p">,</span> <span class="p">'</span><span class="s1">wine</span><span class="p">',</span> <span class="nv">$WINEPREFIX</span> <span class="o">.</span> <span class="p">'</span><span class="s1">/drive_c/Program Files/appname/appname.exe</span><span class="p">',</span> <span class="nv">@ARGV</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span> <span class="o">||</span> <span class="nb">die</span> <span class="p">"</span><span class="s2">Failed to launch appname: $?</span><span class="se">\n</span><span class="p">";</span>

<span class="nb">exit</span><span class="p">;</span>
</code></pre></div></div>

<h2 id="references">References</h2>

<ul>
  <li><a href="http://www.winehq.org/">WineHQ</a>
    <ul>
      <li><a href="http://www.winehq.org/mailman/listinfo/wine-users">Wine Mailing List</a></li>
    </ul>
  </li>
  <li><a href="http://www.ltsp.org/">LTSP</a>
    <ul>
      <li><a href="http://marc.info/?l=ltsp-discuss&amp;r=1&amp;w=2">LTSP Mailing List</a></li>
    </ul>
  </li>
  <li><a href="http://www.tatanka.com.br/">IES4Linux</a></li>
  <li>
    <table>
      <tbody>
        <tr>
          <td>Franks Corner</td>
          <td>http://frankscorner.org/}</td>
        </tr>
      </tbody>
    </table>
  </li>
  <li>Wine printing problems:
    <ul>
      <li>http://www.la-sorciere.de/Wine-HOWTO/wineprintconfig.html</li>
      <li>http://groups.google.com/group/comp.emulators.ms-windows.wine/msg/b05da7237281dbab</li>
    </ul>
  </li>
</ul>

       ]]>
      </description>
    </item>
    
    <item>
      <title>Howto | OpenVZ Notes</title>
      <link>https://chrisjrob.com/2010/10/05/openvz-notes/</link>
      <pubDate>Tue, 05 Oct 2010 13:09:30 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2010/10/05/openvz-notes</guid>
      <description>
       <![CDATA[
         
         <h2 id="warning">Warning</h2>

<p>This is just an aide-memoire, please don’t try and follow it.</p>

<h2 id="creating-a-template">Creating a template</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># rm -f /etc/ssh/ssh_host_*
cat &lt;&lt; EOF &gt; /etc/rc2.d/S15ssh_gen_host_keys
#!/bin/bash
ssh-keygen -f /etc/ssh/ssh_host_rsa_key -t rsa -N ''
ssh-keygen -f /etc/ssh/ssh_host_dsa_key -t dsa -N ''
rm -f \$0
EOF
# chmod a+x /etc/rc2.d/S15ssh_gen_host_keys
</code></pre></div></div>

<!--more-->

<h2 id="tip-re-freenx-server">Tip re. freenx-server</h2>

<p>You will need to reconfigure the freenx-server:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo dpkg-reconfigure freenx-server
</code></pre></div></div>

<h2 id="updating-template">Updating template</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo vzctl enter XXX
$ sudo apt-get clean
$ exit
$ sudo vzctl set XXX --ipdel all --save
$ sudo vim /var/lib/vz/private/XXX/etc/resolv.conf
$ sudo rm -f /var/lib/vz/private/XXX/etc/hostname
$ sudo vzctl stop XXX
$ cd /var/lib/vz/private/XXX
$ tar --numeric-owner -zcf /var/lib/vz/template/cache/debian-5.0-i386-minimal.tar.gz .
</code></pre></div></div>

<h2 id="create-configuration-template-for-10-vms">Create configuration template for 10 vms</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo vzsplit -n 10 -f vps.tenth
</code></pre></div></div>

<h2 id="create-new-vm">Create new vm</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo vzctl create XXX --ostemplate debian-5.0-i386-minimal --config vps.basic
sudo vzctl create XXX --ostemplate debian-5.0-i386-kde --config vps.tenth
sudo vzctl start XXX
sudo vzctl set XXX --ipadd 192.168.0.XXX --save
sudo vzctl set XXX --nameserver 192.168.0.254 --save
sudo vzctl set XXX --onboot yes --save
sudo vzctl set XXX --hostname server-XXXXXX.example.co.uk --save
sudo vzctl set XXX --diskspace $(( 1048576*2 )):$(( 1153434*2 )) --save
sudo vzctl set XXX --diskspace 10G:11G --save
vzcfgvalidate /etc/vz/conf/XXX.conf
</code></pre></div></div>

<h2 id="other-tricks">Other tricks</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo vzctl start XXX
sudo vzctl exec XXX passwd
sudo vzctl exec XXX ps aux
sudo vzctl enter XXX
sudo vzctl stop XXX
</code></pre></div></div>

<h2 id="removing-a-vm">Removing a vm</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo vzctl destroy XXX
$ sudo rm /etc/vz/conf/XXX.conf.destroyed
</code></pre></div></div>

<h2 id="list-running-and-non-running">List running and non-running</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo vzlist -a
</code></pre></div></div>

<h2 id="memory-use">Memory use</h2>

<h3 id="check-memory-usage-for-guest-103">Check memory usage for guest 103</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo vzcalc -v 103
</code></pre></div></div>

<h3 id="set-minimum-memory-256-x-memory-wanted">Set minimum memory 256 x memory wanted</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo vzctl set vpsid --vmguarpages $((256 * 256)) --save
</code></pre></div></div>

<h3 id="set-maximum-memory-256-x-memory-wanted">Set maximum memory 256 x memory wanted</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo vzctl set vpsid --privvmpages $((256 * 1024)) --save
</code></pre></div></div>

<h2 id="references">References</h2>

<ul>
  <li>http://wiki.openvz.org/Debian_template_creation</li>
  <li>http://wiki.openvz.org/Resource_shortage</li>
  <li>http://www.linux.com/archive/feature/114214</li>
</ul>

       ]]>
      </description>
    </item>
    
    <item>
      <title>Howto | Install Kiosktool</title>
      <link>https://chrisjrob.com/2010/09/29/install-kiosktool/</link>
      <pubDate>Wed, 29 Sep 2010 10:06:35 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2010/09/29/install-kiosktool</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/kiosktool3.png" align="right" alt="Featured Image">
         
         <p>First let’s take a look at where KDE squirrels away all these settings. KDE is complex, but it’s well-organised, and there is always a method to whatever KDE madness you find yourself in.</p>

<ul>
  <li><code class="language-plaintext highlighter-rouge">/etc/kderc</code> :  This points to the file locations where configuration profiles are stored.</li>
  <li><code class="language-plaintext highlighter-rouge">/etc/kde3</code> : Global configuration files are here.</li>
  <li><code class="language-plaintext highlighter-rouge">/home/~username~/.kde</code> : User’s individual settings go here.</li>
</ul>

<!--more-->

<p>You can see for yourself where your particular KDE installation is going to look for configuration files:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ kde-config --path config
/home/carla/.kde/share/config/:/etc/kde3/:/usr/share/kubuntu-
default-settings/kde-profile/default/share/config/
</code></pre></div></div>

<p>KDE reads these in reverse order, so if it encounters any conflicts, the last value read is the one used. User’s individual configurations take precedence, so they are read last. 
There is a way to make an exception to the precedence rule: using $i, or the “immutable” key. You’ll see how this is used in the examples below. Anything marked immutable has precedence, no matter what order it’s in.</p>

<h2 id="installing-kiosktool">Installing Kiosktool</h2>

<p><strong>This is now unnecessary, as this has been fixed on Debian, you should now be able to simply do an aptitude install.</strong></p>

<p>Kiosktool is simply an easy way of administering the above files. Kiosk Admin Tool is available in Debian Testing/Unstable and should be as simple to install as:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo apt-get install kiosktool
</code></pre></div></div>

<p>Unfortunately the current version of Kiosktool is broken for Debian, as Debian have changed the filename for the menu configuration from applications.menu to kde-applications.menu, and unfortunately Kiosktool is now unmaintained, so to install requires a few more steps than normal:</p>

<h3 id="install-the-build-dependencies">Install the build dependencies</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo apt-get build-dep kiosktool
</code></pre></div></div>

<p><strong>Before installing the dependencies, please copy them into the clipboard.</strong></p>

<h3 id="download-the-source">Download the source</h3>

<p>Note that you do not need to be root to do this, and it helps later if you’re not! Change your repository if necessary, or remove it entirely to install from your default repository. Note however that at the time of writing Kiosktool is only available in testing, unstable and backports (the same versions in each).</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ apt-get -t etch-backports source kiosktool
</code></pre></div></div>

<h3 id="edit-the-source">Edit the source</h3>

<p>This will download three files: a .orig.tar.gz, a .dsc and a .diff.gz. In the case of packages made specifically for Debian, the last of these is not downloaded and the first usually won’t have “orig” in the name. The .dsc file is used by dpkg-source for unpacking the source package into the directory packagename-version. Within each downloaded source package there is a debian/ directory that contains the files needed for creating the .deb package.</p>

<p>Navigate to this directory and open the following file in a text editor:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/path/to/kiosktool-1.0/kiosktool/menueditComponent.cpp
</code></pre></div></div>

<p>Replace all instances of applications.menu with kde-applications.menu.</p>

<h3 id="build-the-deb">Build the deb</h3>

<p>From within the directory that was created for the package after downloading.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ apt-get -b source kiosktool
</code></pre></div></div>

<p>To install the package built by the commands above one must use the package manager directly, like this:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># dpkg -i kiosktool-&lt;version&gt;.deb
</code></pre></div></div>

<h3 id="remove-the-build-dependencies">Remove the build dependencies</h3>

<p>It seems that some of the build dependencies may be incompatible with the LTSP enlightened sound daemon (esd), if you copied them (as recommended in Install the build dependencies section), then please purge them now. Otherwise you will need to review <code class="language-plaintext highlighter-rouge">/var/log/dpkg.log</code> for the relevant files.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo apt-get --purge remove package1 package2 etc
</code></pre></div></div>

<h2 id="using-kiosktool">Using Kiosktool</h2>

<p>After installation you should have a menu entry for it in System -&gt; KIOSK Admin Tool, or use the kiosktool command to start it from the command prompt.</p>

<p>You may find that a copying dialog crops up at regular intervals and that often it will stall, please read:</p>

<ul>
  <li><a href="/2010/09/29/fix-kiosktool-fish-protocol-stalls/">Fix kiosktool fish protocol stalls</a></li>
</ul>

<h2 id="references">References</h2>

<p>This document was cobbled from the following sources:</p>

<ul>
  <li><a href="http://www.debian.org/doc/manuals/apt-howto/ch-sourcehandling.en.html">APT HOWTO Chapter 6 Working with source packages</a></li>
  <li><a href="http://www.enterprisenetworkingplanet.com/netos/article.php/3573736">Lock Down Desktops with KDE Kiosk by Carla Schroder</a></li>
</ul>

<p>Other references:</p>

<ul>
  <li>http://techbase.kde.org/User:Danimo/KIOSK</li>
</ul>

<p>The advice in the Edit the source section was copied from a mailing list post, which I now cannot find. The post also mentioned that patches were available for this issue, although I could not find any such patches, and anyway the method above is probably just as easy.</p>

       ]]>
      </description>
    </item>
    
    <item>
      <title>Howto | Fix Kiosktool Fish Protocol Stalls</title>
      <link>https://chrisjrob.com/2010/09/29/fix-kiosktool-fish-protocol-stalls/</link>
      <pubDate>Wed, 29 Sep 2010 10:05:41 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2010/09/29/fix-kiosktool-fish-protocol-stalls</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/kiosk_1.gif" align="right" alt="Featured Image">
         
         <p>When making changes to profiles under kiosktool, it stalls when uploading changes to the local machine using the fish protocol, see screenshots.</p>

<p>Persistently clicking cancel followed by retry does deliver the goods, but sometimes it can take ten attempts or more, with the load average quickly escalating to ten times the server’s usual level.</p>

<!--more-->

<p>I understand it requires the fish protocol, even though it is editing the local machine, because kiosk has to be run as a standard user, but requires root access to edit the profile.</p>

<p>The fish protocol usually works fine in konqueror.</p>

<p>Under our Kiosk configuration I have the base directory set as <code class="language-plaintext highlighter-rouge">/etc/kde-profile</code> and the option “On exit, upload profiles to a remote server” is unchecked.</p>

<h2 id="screenshots">Screenshots</h2>

<p><img src="/assets/kiosk_1.gif" />
<img src="/assets/kiosk_2.gif" />
<img src="/assets/kiosk_3.gif" /></p>

<h2 id="workaround">Workaround</h2>

<p>Keep cancelling the copy and then retry.</p>

<p><strong>Never come out without successfully completing the copy, or you can end up with corruption in your personal desktop, or menus, or even end up unable to log in.  You have been warned.</strong></p>

<h2 id="the-solution">The Solution</h2>

<p>The solution seems to be to edit the menu entry for Kiosk-Tool and change it to:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>env KDE_FORK_SLAVES=true kiosktool
</code></pre></div></div>

<h2 id="references">References</h2>

<ul>
  <li>http://lists.kde.org/?t=111633283900002&amp;r=1&amp;w=2 (Similar problem under SUSE)</li>
  <li>http://bugs.kde.org/show_bug.cgi?id=8137 (similar problem under FreeBSD)</li>
</ul>

       ]]>
      </description>
    </item>
    
    <item>
      <title>Westminster eForum - Open Source</title>
      <link>https://chrisjrob.com/2010/09/28/westminster-eforum-open-souce/</link>
      <pubDate>Tue, 28 Sep 2010 00:00:03 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2010/09/28/westminster-eforum-open-souce</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/westminster_eforum.png" align="right" alt="Featured Image">
         
         <p>Earlier this week I went up to the <a href="http://www.westminstereforum.co.uk/">Westminster eForum</a> to speak at the Keynote Seminar <em>“Open source software: in business, in government”</em>.  The Westminster eForum provides an environment for policy makers in Parliament, Whitehall and government agencies to engage with key stakeholders.  The event was sponsored by <a href="http://www.siriusit.co.uk/">Sirius IT</a>, the company which advised us on our move to Linux and who now provide ongoing support for our Linux servers.</p>

<!--more-->

<p>I caught a train from Woking, arriving promptly at 61 Whitehall at 0845.  I was greeted warmly by Bash, the person organising the seminar, who showed me around and took <a href="https://chrisjrob.com/downloads/westminster_eforum_presentation.pdf">my slideshow presentation</a>.</p>

<p><a href="http://www.zdnet.co.uk/blogs/ruperts-diary/">Rupert Goodwins</a>, Editor at <a href="http://www.zdnet.co.uk">ZDNet UK</a>, was Chairman of the meeting and introduced <a href="http://blogs.fsfe.org/gerloff/">Karsten Gerloff</a>, President of the <a href="http://www.fsfe.org">Free Software Foundation Europe</a>.  I recognised some of the themes of his speech, including the definition of Free and Open Source and the “Four Freedoms”, and I was already aware of some of the developments in countries like Brazil.  That said, I was not the target audience for his speech and I am sure that it must have been a powerful message for those MPs present.</p>

<p>There were four more speeches before mine, starting with Alan Lord of the <a href="http://www.theopenlearningcentre.com/">Open Learning Centre</a>, an Open Source Software Consulting and Services business based in Surrey.  Alan discussed the challenges of Open Source, in particularly the challenge of procurement, given that standard procurement practices struggled with the concept of free software.  Alan went on to reassure the audience regarding the risks and vulnerability of Open Source.  This is something about which I feel passionately; to my mind, if you have the source code and access to that incredible resource “The Internet” then any risks and vulnerabilities are solvable.  This is in stark contrast to proprietary software, where you are completely in the hands of the supplier.</p>

<p>Next up was Paul Holt, Corporate Sales Director at <a href="http://www.canonical.com">Canonical</a>.  I was impressed that he avoided the temptation to do a big sell on Canonical, and this was a feature of all the speeches, no-one seemed to be overtly pushing their wares.  He did labour the point that Open Standards are what is important, much more so than Open Source, and in this he is undoubtedly right; the world would be a rosy place indeed if we all ran a combination of Open Source and proprietary systems, all of which worked together smoothly according to common open standards.</p>

<p>Andrew Katz from <a href="http://www.moorcrofts.com/">Moorcrofts</a> went on to reassure the audience on the safety of running Open Source software as an end user.  I must confess that this was not something about which I was worried, but in the face of the usual FUD from its detractors, it was probably worthwhile to tackle this issue.  It was interesting to hear from Andrew that he often asks the Chief Financial Officer whether software contains any Free and Open Source software to be told that it doesn’t, only to find that quizzing the Chief Technology Office gives the opposite answer.  Having written some simple scripts, I can’t imagine how you could do so without using the myriad of Open Source libraries; it is interesting to hear that, all too often, proprietary software companies find exactly the same!</p>

<p>At last it was my turn.  Thanks to the magic of organisation, my slideshow was up and Rupert Goodwins had announced me.  Yikes.  I ran through <a href="https://chrisjrob.com/downloads/westminster_eforum_speech.pdf">my speech</a>, much as I rehearsed it, even remembering to switch between <a href="https://chrisjrob.com/downloads/westminster_eforum_presentation.pdf">slides</a>.  The speakers were only permitted to talk for a maximum of 5 minutes, with a yellow card being raised at 4 minutes and a red card at 5 minutes.  Nothing like a little time pressure to calm my nerves!  In the event I needn’t have worried about yellow and red cards, as I completely forgot to look out for them anyway; hopefully my speech ended broadly on time!</p>

<p>Having been given the brief of the discussion, my first draft of the speech followed very closely to the other speakers, outlining the implementation of Open Source, the Challenges, and the Risks and Vulnerabilities.  After reading my rather poorly written offering, I decided that I should leave the other speakers to follow that pattern and to treat myself instead as a case study, not attempting to address any particular issues, but merely to run through what we had done and why.  My speech seemed fairly well received and I don’t think I made too many mistakes.</p>

<p>I had expected that there would be questions after each speech, but in the event it seemed that questions were to be left for the end of all of our speeches.  I was somewhat astonished by the first question from Robert Onslow, in which he alluded to the fact that Open Source is not as flexible as proprietary software.  I apologise to Robert, as I did laugh; which was most rude of me, but if Open Source is anything, then it is flexible and thus I was so taken aback by such a question.  The fact is that Open Source is most often written as small components - <em>“do one thing and do it well”</em> - and combining these components together is what gives Open Source its incredible flexibility.  And the fact, of course, that you have access to the source code and have the option of paying a developer to make changes to it.</p>

<p>I also laboured my hobby horse regarding the benefit of having access to the source code.  I hear so many people, even Open Source users, saying that they don’t think that having the source code is really that big a benefit.  I feel passionately that even non-developers can benefit from Open Source, partly through the wider community having access to the code, but also directly, by viewing the code to debug a problem, or even fix a simple typological bug.  The best example that I have was when KDE changed one of their environment paths, which broke kiosk-tool, I was delighted to be able to track down that error and fit it.  Similarly getting KAddressBook to work with LDAP resources needed a very simple code change.</p>

<p>There were a number of other questions, but none in which I played any key part.</p>

<p>After the session was a coffee break, and I got talking to Mark Taylor of Sirius and Rupert Goodwin and David Meyer from ZDNet UK.  David Meyer showed me his netbook running <a href="http://www.jolicloud.com">Jolicloud</a>, which seemed to be a very professional and user friendly implementation of Linux, in which Linux, Windows and Web software are offered seamlessly from the software centre.  Very impressive, and I’ll certainly be looking at that soon.</p>

<p>I regret that I did not stay for the remainder of the day; whilst it sounded very interesting, the majority was related to the public sector, which is not directly relevant to me.</p>

<p>Thank you to Bash at Westminster eForums and Mark Taylor of Sirius.  Oh, and Rupert Goodwins, for allowing me to share his taxi to the station when the heavens opened!</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>QEMU-KVM Black Screen</title>
      <link>https://chrisjrob.com/2010/09/28/qemu-kvm-black-screen/</link>
      <pubDate>Tue, 28 Sep 2010 00:00:03 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2010/09/28/qemu-kvm-black-screen</guid>
      <description>
       <![CDATA[
         
         <p>I upgraded one of our servers yesterday, including an upgrade from the Debian Stable kvm72 package, to the Debian Backports qemu-kvm version 0.12.4, whereon I could no longer start our Windows Server 2003 virtual machine.  As soon as the machine started, it locked up completely with just a black screen, and had to be terminated with a kill -9 signal.</p>

<!--more-->

<p>After a considerable time spent googling without any success, I decided to upgrade the Kernel from 2.6.26 to the backports 2.6.32 and normal operation was restored.  I mention this only in the hope that the next person who googles qemu-kvm black screen might be saved a considerable time searching for the solution!</p>

       ]]>
      </description>
    </item>
    
    <item>
      <title>Home Theatre PC - Continued</title>
      <link>https://chrisjrob.com/2010/09/21/home-theatre-pc-continued/</link>
      <pubDate>Tue, 21 Sep 2010 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2010/09/21/home-theatre-pc-continued</guid>
      <description>
       <![CDATA[
         
         <p>I’ve been asked recently for an update on how my HTPC is performing.  Well the good news is that we are now using it as our main system, and pretty much everything is working perfectly, including:</p>

<!--more-->

<ul>
  <li>Live TV - Pause Rewind etc</li>
  <li>Programme Guide</li>
  <li>Schedule Recordings</li>
  <li>MythVideo (for ripped DVDs)</li>
  <li>MythWeb (personal webpage for controlling Myth and viewing programme guide)</li>
</ul>

<p>The best news is that Audio is now working over HDMI; although to be honest, I don’t believe I ever fixed this, so I suspect I just hadn’t tested it properly.  All I did was select the Audio over HDMI setting in KDE Control Centre and it just worked.</p>

<p>So what is left to fix?</p>

<ul>
  <li>System does not shutdown automatically - this is normal behaviour for MythTV, but I prefer to have it shutdown when not in use.  This is a neat feature actually, as it will literally completely shutdown with a timer set in the bios to come on for the next schedule.  Hopefully I can sort this out soon.</li>
  <li>MythTV Backend needs to be restarted every time the machine is powered up - this is a known issue and may even have been sorted; having been without Internet for the past three weeks, I have no idea where we are.  Basically on first boot we just type <code class="language-plaintext highlighter-rouge">$ sudo service mythtv-backend restart</code>.  Obviously if there is no fix, it would be simple enough to add to the start-up process. <a href="/2010/10/14/home-theatre-pc-continued/">Subsequently fixed</a>.</li>
  <li>My card has dual tuners, so can record one thing and watch another, or record two things.  I have now read that some channels are on the same “mux” and that you can therefore record multiple programs on a single card.  I need to research this further, but sounds exciting.</li>
  <li>For some reason it is not saving a bookmark when you stop watching a recorded program in the middle, so that you have to find where you were manually.  This worked fine on our old machine, so just need to find out what is wrong.  I can research this when I have time. <a href="/2010/12/05/home-theatre-pc-continued/">Subsequently fixed</a>.</li>
  <li>The case fans are a little noisier than they ought to be, so really need replacing for silent alternatives.</li>
</ul>

<p>And, not MythTV related, but I am still struggling with KDE4, Akonadi and our Contacts in Kontact.  I suspect this may be related to the use of MySQL for both MythTV and Akonadi.  In the meantime my wife is using Gmail, but obviously would prefer to have Kontact back.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Desktop Wallpaper</title>
      <link>https://chrisjrob.com/2010/09/18/desktop-wallpaper/</link>
      <pubDate>Sat, 18 Sep 2010 00:00:03 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2010/09/18/desktop-wallpaper</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/trident-wallpaper-300.png" align="right" alt="Featured Image">
         
         <p>When I launched our first LTSP server, I was very keen to make the system as pleasurable for the users as possible; to this end, I left users able to customise their desktop pretty much how they liked.  I decided that this free-for-all had gone too far, when I saw customers sitting in front of one user’s computer, sporting a desktop wallpaper of his baby son.  At the time I just set a system default of a fairly neutral blue / dark blue radial gradient, and put an item on my to-do list to create a desktop wallpaper.</p>

<!--more-->

<p>Those who read <a href="/2010/06/26/kde-wallpaper/">my earlier post regarding KDE Wallpaper</a> may have seen examples, and basically I created a red background with company logo and a few lighting affects, making suitable wallpapers for most of the common screen sizes.  It was when I went to implement these wallpapers that I realised that I had a problem - KDE only allows you to force one single wallpaper to all users, regardless of screen size.  I could allow the users to set their own wallpaper, from a select list, but it would be impossible to restrict them only to that list.  And what if they hop from one computer to another - the screen size will be wrong again.  No, I needed a way of changing the wallpaper at login to the correct wallpaper for their screensize, and that meant a perl script running at login.  The task could be broken into three parts:</p>

<ol>
  <li>Determine screen size</li>
  <li>Choose best wallpaper</li>
  <li>Set wallpaper</li>
</ol>

<p>To determine the screen size, I used a small Perl Tk routine:</p>

<div class="language-pl highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">sub </span><span class="nf">get_screen_size</span> <span class="p">{</span>
    <span class="k">use</span> <span class="nv">Tk</span><span class="p">;</span>
    <span class="k">my</span> <span class="nv">$mw</span><span class="o">=</span><span class="nv">tkinit</span><span class="p">;</span>
    <span class="nv">$mw</span><span class="o">-&gt;</span><span class="nv">withdraw</span><span class="p">;</span>
    <span class="k">return</span><span class="p">(</span><span class="nv">$mw</span><span class="o">-&gt;</span><span class="nv">screenwidth</span><span class="p">,</span> <span class="nv">$mw</span><span class="o">-&gt;</span><span class="nv">screenheight</span><span class="p">,</span> <span class="nv">$mw</span><span class="o">-&gt;</span><span class="nv">screendepth</span><span class="p">);</span>
<span class="p">}</span>
</code></pre></div></div>

<p>To select the best wallpaper, I found this far more complicated that I would have liked - the issue is that NX users have screen sizes that are non-standard, so I couldn’t rely on exact matches.  In any case, if I relied on perfect matches I would have been creating new wallpapers for each and every obscure monitor resolution.  The best approach I found was to score each wallpaper based on aspect, width and height, calculating the percentage error for each compared to the users screen size, summing the errors and picking the wallpaper with the lowest error.  Logically aspect would be far more important that the other errors, so I trebled the aspect error to make that the dominant criteria.</p>

<p>Lastly, I set the wallpaper using a simple dcop command:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>`dcop kdesktop KBackgroundIface setWallpaper "$newwallpaper" 6`;
</code></pre></div></div>

<p>After testing it thoroughly, I inserted a shortcut to the script in all users’ Autostart directories last night.</p>

<p>I arrived this morning to the comment <em>“it’s a bit bright any chance we could tone it down a bit”</em>.</p>

<p>I was very polite.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Howto | Create Nagios Status Map Icons</title>
      <link>https://chrisjrob.com/2010/09/16/create-nagios-statusmap-icons/</link>
      <pubDate>Thu, 16 Sep 2010 09:42:07 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2010/09/16/create-nagios-statusmap-icons</guid>
      <description>
       <![CDATA[
         
         <h2 id="install-gd-tools">Install GD Tools</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo apt-get install libgd-tools
</code></pre></div></div>

<h2 id="create-image-in-gimp">Create image in Gimp</h2>

<!--more-->

<p>Create a suitable image in Gimp, ensuring that it has a transparent rather than a white background.</p>

<p>From the menu - Image → Mode → Indexed and “Generate Optimum Palette” with “Maximum number of colours: 255”.</p>

<p>Save result as a PNG file, e.g. “router.png”</p>

<h2 id="convert-to-gd2">Convert to GD2</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ pngtogd2 router.png router.gd2 0 1
</code></pre></div></div>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Hauppauge HVR-2200</title>
      <link>https://chrisjrob.com/2010/08/04/hauppauge-hvr2200/</link>
      <pubDate>Wed, 04 Aug 2010 00:00:03 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2010/08/04/hauppauge-hvr2200</guid>
      <description>
       <![CDATA[
         
         <h2 id="introduction">Introduction</h2>

<p>It seems that the HVR-2200 is something of a work-in-progress under Linux.  Plenty of people seem to have it working, but it is not simple to configure.  See the references at the end for further reading.</p>

<p>I now have this card working under MythTV, but I have not yet managed to get the programme guide updating via EIT (Freeview).</p>

<!--more-->

<p>Those new to MythTV should visit: <a href="http://parker1.co.uk/mythtv_ubuntu.php">http://parker1.co.uk/mythtv_ubuntu.php</a></p>

<h2 id="installation">Installation</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo apt-get install mercurial libncurses5-dev unzip

$ wget http://www.steventoth.net/linux/hvr22xx/22xxdrv_27086.zip
$ wget  http://www.steventoth.net/linux/hvr22xx/HVR-12x0-14x0-17x0_1_25_25271_WHQL.zip
$ wget http://www.steventoth.net/linux/hvr22xx/firmwares/4019072/NXP7164-2010-03-10.1.fw
$ wget http://www.steventoth.net/linux/hvr22xx/extract.sh
$ sh extract.sh
$ sudo cp *fw /lib/firmware
or
$ sudo cp *fw /lib/firmware/`uname -r`

$ hg clone http://kernellabs.com/hg/saa7164-stable/

$ cd saa7164-stable
$ make CONFIG_DVB_FIREDTV:=n
$ sudo make install
$ wget http://www.steventoth.net/linux/hvr22xx/firmwares/4038864/v4l-saa7164-1.0.3-3.fw 
$ sudo cp v4l-saa7164-1.0.3-3.fw /lib/firmware

$ sudo adduser &amp;lt;userid&amp;gt; video
$ sudo reboot
</code></pre></div></div>

<h2 id="create-channelconf">Create Channel.conf</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo apt-get install dvb-apps
$ scan ./uk-CrystalPalace -o zap &gt; ~/.mythtv/channels.conf
</code></pre></div></div>

<h2 id="scan">Scan</h2>

<p>Now go to Mythbackend-Setup and perform a full scan.</p>

<h2 id="test">Test</h2>

<p>You should now have a working system, unfortunately I found that the programme guide, or EPG, was not updating.</p>

<h2 id="fixing-epg">Fixing EPG</h2>

<p>(Thanks to “Neon Dusk” from the second Ubuntu forum link in the references below.)</p>

<p>Using channels.conf to get the channel information is OK, but sometimes it doesn’t fill in all the information required.</p>

<p>Make a note of your mysql password from <code class="language-plaintext highlighter-rouge">/etc/mythtv/mysql.txt</code> - there should be a field DBPassword</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ mysql -u mythtv -p
&lt;enter mysql password&gt;
use mythconverg;
select * from `dtv_multiplex`;
</code></pre></div></div>

<p>Copy the resulting output into a text editor, here was mine.  Note the networkid is null.</p>

<table>
  <thead>
    <tr>
      <th>mplexid</th>
      <th>sourceid</th>
      <th>transportid</th>
      <th>networkid</th>
      <th>frequency</th>
      <th>inversion</th>
      <th>symbolrate</th>
      <th>fec</th>
      <th>polarity</th>
      <th>modulation</th>
      <th>bandwidth</th>
      <th>lp_code_rate</th>
      <th>transmission_mode</th>
      <th>guard_interval</th>
      <th>visible</th>
      <th>constellation</th>
      <th>hierarchy</th>
      <th>hp_code_rate</th>
      <th>mod_sys</th>
      <th>rolloff</th>
      <th>sistandard</th>
      <th>serviceversion</th>
      <th>updatetimestamp</th>
      <th>default_authority</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>1</td>
      <td>1</td>
      <td>4100</td>
      <td>NULL</td>
      <td>505833330</td>
      <td>a</td>
      <td>0</td>
      <td>auto</td>
      <td>v</td>
      <td>qam_16</td>
      <td>8</td>
      <td>3/4</td>
      <td>2</td>
      <td>1/32</td>
      <td>0</td>
      <td>qam_16</td>
      <td>n</td>
      <td>3/4</td>
      <td>UNDEFINED</td>
      <td>0.35</td>
      <td> </td>
      <td>33</td>
      <td>2010-06-29 19:28:10</td>
      <td> </td>
    </tr>
    <tr>
      <td>2</td>
      <td>1</td>
      <td>8197</td>
      <td>NULL</td>
      <td>481833330</td>
      <td>a</td>
      <td>0</td>
      <td>auto</td>
      <td>v</td>
      <td>qam_64</td>
      <td>8</td>
      <td>1/2</td>
      <td>2</td>
      <td>1/32</td>
      <td>0</td>
      <td>qam_64</td>
      <td>n</td>
      <td>2/3</td>
      <td>UNDEFINED</td>
      <td>0.35</td>
      <td> </td>
      <td>33</td>
      <td>2010-06-29 19:28:10</td>
      <td> </td>
    </tr>
    <tr>
      <td>3</td>
      <td>1</td>
      <td>12290</td>
      <td>NULL</td>
      <td>561833330</td>
      <td>a</td>
      <td>0</td>
      <td>auto</td>
      <td>v</td>
      <td>qam_64</td>
      <td>8</td>
      <td>1/2</td>
      <td>2</td>
      <td>1/32</td>
      <td>0</td>
      <td>qam_64</td>
      <td>n</td>
      <td>2/3</td>
      <td>UNDEFINED</td>
      <td>0.35</td>
      <td> </td>
      <td>33</td>
      <td>2010-06-29 19:28:10</td>
      <td> </td>
    </tr>
    <tr>
      <td>4</td>
      <td>1</td>
      <td>16384</td>
      <td>NULL</td>
      <td>529833330</td>
      <td>a</td>
      <td>0</td>
      <td>auto</td>
      <td>v</td>
      <td>qam_16</td>
      <td>8</td>
      <td>3/4</td>
      <td>2</td>
      <td>1/32</td>
      <td>0</td>
      <td>qam_16</td>
      <td>n</td>
      <td>3/4</td>
      <td>UNDEFINED</td>
      <td>0.35</td>
      <td> </td>
      <td>33</td>
      <td>2010-06-29 19:28:10</td>
      <td> </td>
    </tr>
    <tr>
      <td>5</td>
      <td>1</td>
      <td>20480</td>
      <td>NULL</td>
      <td>578166670</td>
      <td>a</td>
      <td>0</td>
      <td>auto</td>
      <td>v</td>
      <td>qam_16</td>
      <td>8</td>
      <td>3/4</td>
      <td>2</td>
      <td>1/32</td>
      <td>0</td>
      <td>qam_16</td>
      <td>n</td>
      <td>3/4</td>
      <td>UNDEFINED</td>
      <td>0.35</td>
      <td> </td>
      <td>33</td>
      <td>2010-06-29 19:28:10</td>
      <td> </td>
    </tr>
    <tr>
      <td>6</td>
      <td>1</td>
      <td>24576</td>
      <td>NULL</td>
      <td>537833330</td>
      <td>a</td>
      <td>0</td>
      <td>auto</td>
      <td>v</td>
      <td>qam_16</td>
      <td>8</td>
      <td>3/4</td>
      <td>2</td>
      <td>1/32</td>
      <td>0</td>
      <td>qam_16</td>
      <td>n</td>
      <td>3/4</td>
      <td>UNDEFINED</td>
      <td>0.35</td>
      <td> </td>
      <td>33</td>
      <td>2010-06-29 19:28:10</td>
      <td> </td>
    </tr>
  </tbody>
</table>

<p>6 rows in set (0.00 sec)</p>

<p>In mythtv-setup -&gt; channel editor -&gt; Edit transport
Delete all existing transports (highlight transport then press d)</p>

<p>Go to channel scanner
Select Scan Type: Full Scan (Tuned)</p>

<p>Use the values recorded from the sql statement and then do a scan. You’ll need to do this for the 6 muxes.</p>

<p>Hopefully this should find all the channels and if you repeat the sql commands you’ll see the networkid value filled in. This should then allow the EIT EPG to work</p>

<p>My resulting output was as attached:</p>

<table>
  <thead>
    <tr>
      <th>mplexid</th>
      <th>sourceid</th>
      <th>transportid</th>
      <th>networkid</th>
      <th>frequency</th>
      <th>inversion</th>
      <th>symbolrate</th>
      <th>fec</th>
      <th>polarity</th>
      <th>modulation</th>
      <th>bandwidth</th>
      <th>lp_code_rate</th>
      <th>transmission_mode</th>
      <th>guard_interval</th>
      <th>visible</th>
      <th>constellation</th>
      <th>hierarchy</th>
      <th>hp_code_rate</th>
      <th>mod_sys</th>
      <th>rolloff</th>
      <th>sistandard</th>
      <th>serviceversion</th>
      <th>updatetimestamp</th>
      <th>default_authority</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>10</td>
      <td>1</td>
      <td>16384</td>
      <td>9018</td>
      <td>529833330</td>
      <td>a</td>
      <td>0</td>
      <td>auto</td>
      <td>v</td>
      <td>qam_16</td>
      <td>8</td>
      <td>3/4</td>
      <td>2</td>
      <td>1/32</td>
      <td>0</td>
      <td>qam_16</td>
      <td>n</td>
      <td>3/4</td>
      <td>UNDEFINED</td>
      <td>0.35</td>
      <td>dvb</td>
      <td>33</td>
      <td>2010-08-08 18:27:49</td>
      <td> </td>
    </tr>
    <tr>
      <td>9</td>
      <td>1</td>
      <td>12290</td>
      <td>9018</td>
      <td>561833330</td>
      <td>a</td>
      <td>0</td>
      <td>auto</td>
      <td>v</td>
      <td>qam_64</td>
      <td>8</td>
      <td>1/2</td>
      <td>2</td>
      <td>1/32</td>
      <td>0</td>
      <td>qam_64</td>
      <td>n</td>
      <td>2/3</td>
      <td>UNDEFINED</td>
      <td>0.35</td>
      <td>dvb</td>
      <td>33</td>
      <td>2010-08-08 18:27:49</td>
      <td> </td>
    </tr>
    <tr>
      <td>8</td>
      <td>1</td>
      <td>8197</td>
      <td>9018</td>
      <td>481833330</td>
      <td>a</td>
      <td>0</td>
      <td>auto</td>
      <td>v</td>
      <td>qam_64</td>
      <td>8</td>
      <td>1/2</td>
      <td>2</td>
      <td>1/32</td>
      <td>0</td>
      <td>qam_64</td>
      <td>n</td>
      <td>2/3</td>
      <td>UNDEFINED</td>
      <td>0.35</td>
      <td>dvb</td>
      <td>33</td>
      <td>2010-08-08 18:27:49</td>
      <td> </td>
    </tr>
    <tr>
      <td>7</td>
      <td>1</td>
      <td>4100</td>
      <td>9018</td>
      <td>505833330</td>
      <td>a</td>
      <td>0</td>
      <td>auto</td>
      <td>v</td>
      <td>qam_16</td>
      <td>8</td>
      <td>3/4</td>
      <td>2</td>
      <td>1/32</td>
      <td>0</td>
      <td>qam_16</td>
      <td>n</td>
      <td>3/4</td>
      <td>UNDEFINED</td>
      <td>0.35</td>
      <td>dvb</td>
      <td>33</td>
      <td>2010-08-08 18:27:49</td>
      <td> </td>
    </tr>
    <tr>
      <td>11</td>
      <td>1</td>
      <td>20480</td>
      <td>9018</td>
      <td>578166670</td>
      <td>a</td>
      <td>0</td>
      <td>auto</td>
      <td>v</td>
      <td>qam_16</td>
      <td>8</td>
      <td>3/4</td>
      <td>2</td>
      <td>1/32</td>
      <td>0</td>
      <td>qam_16</td>
      <td>n</td>
      <td>3/4</td>
      <td>UNDEFINED</td>
      <td>0.35</td>
      <td>dvb</td>
      <td>33</td>
      <td>2010-08-08 18:27:49</td>
      <td> </td>
    </tr>
    <tr>
      <td>12</td>
      <td>1</td>
      <td>24576</td>
      <td>9018</td>
      <td>537833330</td>
      <td>a</td>
      <td>0</td>
      <td>auto</td>
      <td>v</td>
      <td>qam_16</td>
      <td>8</td>
      <td>3/4</td>
      <td>2</td>
      <td>1/32</td>
      <td>0</td>
      <td>qam_16</td>
      <td>n</td>
      <td>3/4</td>
      <td>UNDEFINED</td>
      <td>0.35</td>
      <td>dvb</td>
      <td>33</td>
      <td>2010-08-08 18:27:49</td>
      <td> </td>
    </tr>
    <tr>
      <td>13</td>
      <td>1</td>
      <td>8197</td>
      <td>0</td>
      <td>481833330</td>
      <td>a</td>
      <td>0</td>
      <td>auto</td>
      <td>v</td>
      <td>qam_64</td>
      <td>8</td>
      <td>1/2</td>
      <td>2</td>
      <td>1/32</td>
      <td>0</td>
      <td>qam_64</td>
      <td>n</td>
      <td>2/3</td>
      <td>UNDEFINED</td>
      <td>0.35</td>
      <td>dvb</td>
      <td>33</td>
      <td>2010-08-08 18:27:59</td>
      <td> </td>
    </tr>
    <tr>
      <td>14</td>
      <td>1</td>
      <td>16384</td>
      <td>0</td>
      <td>529833330</td>
      <td>a</td>
      <td>0</td>
      <td>auto</td>
      <td>v</td>
      <td>qam_16</td>
      <td>8</td>
      <td>3/4</td>
      <td>2</td>
      <td>1/32</td>
      <td>0</td>
      <td>qam_16</td>
      <td>n</td>
      <td>3/4</td>
      <td>UNDEFINED</td>
      <td>0.35</td>
      <td>dvb</td>
      <td>33</td>
      <td>2010-08-08 18:27:59</td>
      <td> </td>
    </tr>
    <tr>
      <td>15</td>
      <td>1</td>
      <td>24576</td>
      <td>0</td>
      <td>537833330</td>
      <td>a</td>
      <td>0</td>
      <td>auto</td>
      <td>v</td>
      <td>qam_16</td>
      <td>8</td>
      <td>3/4</td>
      <td>2</td>
      <td>1/32</td>
      <td>0</td>
      <td>qam_16</td>
      <td>n</td>
      <td>3/4</td>
      <td>UNDEFINED</td>
      <td>0.35</td>
      <td>dvb</td>
      <td>33</td>
      <td>2010-08-08 18:27:59</td>
      <td> </td>
    </tr>
  </tbody>
</table>

<p>9 rows in set (0.00 sec)</p>

<h2 id="test-again">Test Again</h2>

<p>Have a look at your programme guide, give it a few minutes - it isn’t instantaneous.</p>

<h2 id="references">References</h2>

<ul>
  <li><a href="http://parker1.co.uk/mythtv_ubuntu.php">http://parker1.co.uk/mythtv_ubuntu.php</a></li>
  <li><a href="http://www.uluga.ubuntuforums.org/showthread.php?t=942403">http://www.uluga.ubuntuforums.org/showthread.php?t=942403</a>
    <ul>
      <li><a href="http://www.uluga.ubuntuforums.org/showpost.php?p=9351505&amp;postcount=271">http://www.uluga.ubuntuforums.org/showpost.php?p=9351505&amp;postcount=271</a></li>
    </ul>
  </li>
  <li><a href="http://ubuntuforums.org/showpost.php?p=9292366&amp;postcount=3">http://ubuntuforums.org/showpost.php?p=9292366&amp;postcount=3</a></li>
  <li><a href="http://www.zedlopez.com/strangeloopiness/2010/04/mythtv_on_ubuntu_lucid_gotchas.html">http://www.zedlopez.com/strangeloopiness/2010/04/mythtv_on_ubuntu_lucid_gotchas.html</a></li>
  <li><a href="http://www.kernellabs.com/blog/?p=721">http://www.kernellabs.com/blog/?p=721</a></li>
  <li><a href="http://ubuntuforums.org/showthread.php?t=1167640">http://ubuntuforums.org/showthread.php?t=1167640</a></li>
  <li><a href="http://www.hauppauge.co.uk/site/products/data_hvr2200mc.html">http://www.hauppauge.co.uk/site/products/data_hvr2200mc.html</a></li>
  <li><a href="http://www.mythtvtalk.com/forum/hardware/8096-there-status-hvr-2250-linux-driver-2.html#post46347">http://www.mythtvtalk.com/forum/hardware/8096-there-status-hvr-2250-linux-driver-2.html#post46347</a></li>
  <li><a href="http://www.linuxtv.org/wiki/index.php/Hauppauge_WinTV-HVR-2200">http://www.linuxtv.org/wiki/index.php/Hauppauge_WinTV-HVR-2200</a></li>
  <li><a href="http://www.mythtvtalk.com/forum/hardware/12229-hvr-2200-not-picking-up-all-channels.html">http://www.mythtvtalk.com/forum/hardware/12229-hvr-2200-not-picking-up-all-channels.html</a></li>
  <li><a href="http://ubuntuforums.org/archive/index.php/t-1410407.html">http://ubuntuforums.org/archive/index.php/t-1410407.html</a></li>
</ul>

<p>The tuner card is now working under MythTV to “Watch TV”; however the programme guide is still not updating correctly over EIT.  In theory this should happen automatically after a full scan, but for some reason this seems not to be working.  It may be that this is because I have simply not left the backend to idle for long enough for an EIT scan to be initiated.</p>

<p>More news when I have it.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Home Theatre PC - Continued</title>
      <link>https://chrisjrob.com/2010/08/04/home-theatre-pc-continued/</link>
      <pubDate>Wed, 04 Aug 2010 00:00:01 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2010/08/04/home-theatre-pc-continued</guid>
      <description>
       <![CDATA[
         
         <p>Oh dear, it seems I failed to update my blog after the last work I did on my HTPC.  Well the good news is that the programme guide is now working, it was a bit of a pain, in that you have to use the command line to create a channel listing that is then read my the guide updating process.  But given that you only have to do this when your channel line-up changes, this isn’t a big deal.</p>

<!--more-->

<p>I have updated my notes on the following page:</p>

<ul>
  <li><a href="/2010/08/04/hauppauge-hvr2200/">Hauppauge HVR-2200</a></li>
</ul>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Microsoft XPS under Linux</title>
      <link>https://chrisjrob.com/2010/08/04/microsoft-xps-under-linux/</link>
      <pubDate>Wed, 04 Aug 2010 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2010/08/04/microsoft-xps-under-linux</guid>
      <description>
       <![CDATA[
         
         <p>A member of staff asked how he could open a personal XPS file, created in Windows 7.  Now XPS is the Microsoft replacement for PDF and it is apparently installed as a printer by default in Vista and Windows 7, which means increasingly people are going to start sending XPS files whether we like it or not.</p>

<!--more-->

<p>Fortunately it seems XPS is supported in Okular under KDE4 (which we don’t have yet), and can also be readily converted to PDF using the Ghostscript “gxps” tool.  This has to be built from source, but proved relatively simple.  As our users do not have access to the command line, I also had to also create a Konqueror service menu, to enable right-click Action “Convert XPS to PDF”.</p>

<p>I am pleased to say it all works beautifully, and I have typed up my instructions for Debian Lenny here:</p>

<ul>
  <li>
    <table>
      <tbody>
        <tr>
          <td>[Howto</td>
          <td>Convert XPS to PDF](/2013/03/12/convert-xps-to-pdf/)</td>
        </tr>
      </tbody>
    </table>
  </li>
</ul>

       ]]>
      </description>
    </item>
    
    <item>
      <title>Howto | Install FreeNX</title>
      <link>https://chrisjrob.com/2010/07/08/install-freenx/</link>
      <pubDate>Thu, 08 Jul 2010 16:01:27 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2010/07/08/install-freenx</guid>
      <description>
       <![CDATA[
         
         <h2 id="introduction">Introduction</h2>

<p>Installing from Ubuntu onto Debian Lenny seems sub-optimal, but is quick and dirty.</p>

<h2 id="step-1---add-sources">Step 1 - Add sources</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># deb http://ppa.launchpad.net/freenx-team/ppa/ubuntu intrepid main
# deb-src http://ppa.launchpad.net/freenx-team/ppa/ubuntu intrepid main
</code></pre></div></div>

<!--more-->

<h2 id="step-2---install-freenx-in-debian">Step 2 - Install FreeNX in Debian</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># aptitude update
# aptitude install freenx
</code></pre></div></div>

<h2 id="step-3---connecting">Step 3 - Connecting</h2>

<p>To connect, you need to download the NoMachine client.  If you have issues with the arrow/cursor keys, please see:</p>

<ul>
  <li><a href="/2010/07/08/fix-nxclient-arrow-keys/">Fix nxclient arrow keys</a></li>
</ul>

<h2 id="references">References</h2>

<ul>
  <li><a href="http://freenx.berlios.de/info.php">FreeNX</a></li>
  <li><a href="http://wiki.debian.org/freenx">FreeNX on Debian Wiki</a> ← Read this</li>
  <li><a href="http://www.debianhelp.co.uk/freenx.htm">FreeNX on DebianHelp</a></li>
  <li><a href="http://www.telemedia.ch/publ/ltsp-howto.html">FreeNX on LTSP</a>
    <ul>
      <li><a href="http://www.telemedia.ch/publ/freenx-setup-howto.html">FreeNX</a></li>
    </ul>
  </li>
  <li><a href="http://www.nomachine.com/">NoMachine</a></li>
</ul>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Howto | Fix nxclient arrow keys</title>
      <link>https://chrisjrob.com/2010/07/08/fix-nxclient-arrow-keys/</link>
      <pubDate>Thu, 08 Jul 2010 15:59:28 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2010/07/08/fix-nxclient-arrow-keys</guid>
      <description>
       <![CDATA[
         
         <h2 id="introduction">Introduction</h2>

<p>I recently that the arrow keys on my laptop were not working correctly, usually triggering knapshot.  The following webpage addresses this concern.  You should go there now, only read on if that page is gone.</p>

<ul>
  <li>http://wiki.laptop.org/go/Remote_Desktop</li>
</ul>

<!--more-->

<h2 id="keyboard-mapping">Keyboard mapping</h2>

<p>The UK keyboard layout of my laptop is not correctly mapped by the nxclient (which sees it as pc102 instead of pc105). For instance, on a KDE session, the arrow keys are not working, and the Up key thinks it is a PrntScr key and starts ksnapshot! Not really handy… Here is a manual workaround.</p>

<p>When connected remotely to the server, open a terminal and register this keymap configuration with X.</p>

<p><strong>Please note that these instructions are for the XO and may not be correct - I will correct the following as/when I have time or find problems.</strong></p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ xmodmap xmodmap.keys

Content of the xmodmap.keys file
keycode   8 =
keycode   9 = Escape
keycode  10 = 1 exclam exclamdown exclamdown exclamdown exclamdown
keycode  11 = 2 at notsign notsign notsign notsign
keycode  12 = 3 numbersign U0300 U0300 U0300 U0300
keycode  13 = 4 dollar U0301 U0301 U0301 U0301
keycode  14 = 5 percent U0306 U0306 U0306 U0306
keycode  15 = 6 asciicircum U030A U030A U030A U030A
keycode  16 = 7 ampersand U0302 U0302 U0302 U0302
keycode  17 = 8 asterisk U0324 U0324 U0324 U0324
keycode  18 = 9 parenleft U0307 U0307 U0307 U0307
keycode  19 = 0 parenright U0308 U0308 U0308 U0308
keycode  20 = minus underscore U0304 U0304 U0304 U0304
keycode  21 = equal plus U0303 U0303 U0303 U0303
keycode  22 = BackSpace Terminate_Server
keycode  23 = Tab ISO_Left_Tab
keycode  24 = q Q Greek_omega Greek_OMEGA Greek_omega Greek_OMEGA
keycode  25 = w W oslash Oslash oslash Oslash
keycode  26 = e E oe OE oe OE
keycode  27 = r R U0327 U0327 U0327 U0327
keycode  28 = t T U032E U032E U032E U032E
keycode  29 = y Y U0325 U0325 U0325 U0325
keycode  30 = u U U032D U032D U032D U032D
keycode  31 = i I U032C U032C U032C U032C
keycode  32 = o O U0323 U0323 U0323 U0323
keycode  33 = p P U0304 U0304 U0304 U0304
keycode  34 = bracketleft braceleft U0331 U0331 U0331 U0331
keycode  35 = bracketright braceright U0330 U0330 U0330 U0330
keycode  36 = Return
keycode  37 = Control_L
keycode  38 = a A ae AE ae AE
keycode  39 = s S ssharp ssharp ssharp ssharp
keycode  40 = d D eth ETH eth ETH
keycode  41 = f F thorn THORN thorn THORN
keycode  42 = g G
keycode  43 = h H sterling sterling sterling sterling
keycode  44 = j J EuroSign EuroSign EuroSign EuroSign
keycode  45 = k K
keycode  46 = l L
keycode  47 = semicolon colon masculine ordfeminine masculine ordfeminine
keycode  48 = apostrophe quotedbl currency currency currency currency
keycode  49 = grave asciitilde dead_grave dead_tilde dead_grave dead_tilde
keycode  50 = Shift_L
keycode  51 = backslash bar section section section section
keycode  52 = z Z
keycode  53 = x X
keycode  54 = c C ccedilla Ccedilla ccedilla Ccedilla
keycode  55 = v V
keycode  56 = b B
keycode  57 = n N ntilde Ntilde ntilde Ntilde
keycode  58 = m M mu mu mu mu
keycode  59 = comma less guillemotleft guillemotleft guillemotleft guillemotleft
keycode  60 = period greater guillemotright guillemotright guillemotright guillemotright
keycode  61 = slash question questiondown questiondown questiondown questiondown
keycode  62 = Shift_R
keycode  63 = KP_Multiply XF86_ClearGrab
keycode  64 = Alt_L Meta_L
keycode  65 = space
keycode  66 = Caps_Lock
keycode  67 = F1 XF86_Switch_VT_1
keycode  68 = F2 XF86_Switch_VT_2
keycode  69 = F3 XF86_Switch_VT_3
keycode  70 = F4 XF86_Switch_VT_4
keycode  71 = F5 XF86_Switch_VT_5
keycode  72 = F6 XF86_Switch_VT_6
keycode  73 = F7 XF86_Switch_VT_7
keycode  74 = F8 XF86_Switch_VT_8
keycode  75 = F9 XF86_Switch_VT_9
keycode  76 = F10 XF86_Switch_VT_10
keycode  77 = Num_Lock Pointer_EnableKeys
keycode  78 = Scroll_Lock
keycode  79 = KP_Home KP_7
keycode  80 = KP_Up KP_8
keycode  81 = KP_Prior KP_9
keycode  82 = KP_Subtract XF86_Prev_VMode
keycode  83 = KP_Left KP_4
keycode  84 = KP_Begin KP_5
keycode  85 = KP_Right KP_6
keycode  86 = KP_Add XF86_Next_VMode
keycode  87 = KP_End KP_1
keycode  88 = KP_Down KP_2
keycode  89 = KP_Next KP_3
keycode  90 = KP_Insert KP_0
keycode  91 = KP_Delete KP_Decimal
keycode  92 = ISO_Level3_Shift
keycode  93 =
keycode  94 = less greater bar brokenbar bar brokenbar
keycode  95 = F11 XF86_Switch_VT_11
keycode  96 = F12 XF86_Switch_VT_12
keycode  97 =
keycode  98 =
keycode  99 =
keycode 100 =
keycode 101 =
keycode 102 =
keycode 103 =
keycode 104 = KP_Enter
keycode 105 = Control_R
keycode 106 = KP_Divide XF86_Ungrab
keycode 107 = Print Sys_Req
keycode 108 = ISO_Level3_Shift
keycode 109 =
keycode 110 = Home
keycode 111 = Up
keycode 112 = Prior
keycode 113 = Left
keycode 114 = Right
keycode 115 = End
keycode 116 = Down
keycode 117 = Next
keycode 118 = Insert
keycode 119 = Delete
keycode 120 =
keycode 121 =
keycode 122 =
keycode 123 =
keycode 124 =
keycode 125 = KP_Equal
keycode 126 =
keycode 127 = Pause Break
keycode 128 =
keycode 129 =
keycode 130 =
keycode 131 =
keycode 132 =
keycode 133 = Super_L
keycode 134 = Super_R
keycode 135 = Menu
keycode 136 =
keycode 137 =
keycode 138 =
keycode 139 =
keycode 140 =
keycode 141 =
keycode 142 =
keycode 143 =
keycode 144 =
keycode 145 =
keycode 146 =
keycode 147 =
keycode 148 =
keycode 149 =
keycode 150 =
keycode 151 =
keycode 152 =
keycode 153 =
keycode 154 =
keycode 155 =
keycode 156 =
keycode 157 =
keycode 158 =
keycode 159 =
keycode 160 =
keycode 161 =
keycode 162 =
keycode 163 =
keycode 164 =
keycode 165 =
keycode 166 =
keycode 167 =
keycode 168 =
keycode 169 =
keycode 170 =
keycode 171 =
keycode 172 =
keycode 173 =
keycode 174 =
keycode 175 =
keycode 176 =
keycode 177 =
keycode 178 =
keycode 179 =
keycode 180 =
keycode 181 =
keycode 182 =
keycode 183 =
keycode 184 =
keycode 185 =
keycode 186 =
keycode 187 =
keycode 188 =
keycode 189 =
keycode 190 =
keycode 191 =
keycode 192 =
keycode 193 =
keycode 194 =
keycode 195 =
keycode 196 =
keycode 197 =
keycode 198 =
keycode 199 =
keycode 200 =
keycode 201 =
keycode 202 =
keycode 203 = Mode_switch
keycode 204 = NoSymbol Alt_L
keycode 205 = NoSymbol Meta_L
keycode 206 = NoSymbol Super_L
keycode 207 = NoSymbol Hyper_L
keycode 208 =
keycode 209 =
keycode 210 =
keycode 211 =
keycode 212 =
keycode 213 =
keycode 214 =
keycode 215 =
keycode 216 =
keycode 217 =
keycode 218 =
keycode 219 = multiply division ISO_Next_Group ISO_Prev_Group ISO_Next_Group ISO_Prev_Group
keycode 220 = XF86Search
keycode 221 = XF86Meeting
keycode 222 =
keycode 223 =
keycode 224 =
keycode 225 =
keycode 226 =
keycode 227 =
keycode 228 =
keycode 229 =
keycode 230 =
keycode 231 =
keycode 232 =
keycode 233 =
keycode 234 =
keycode 235 = XF86Display
keycode 236 =
keycode 237 =
keycode 238 =
keycode 239 =
keycode 240 =
keycode 241 =
keycode 242 =
keycode 243 =
keycode 244 =
keycode 245 =
keycode 246 =
keycode 247 =
keycode 248 =
keycode 249 =
keycode 250 =
keycode 251 =
keycode 252 =
keycode 253 =
keycode 254 =
keycode 255 =
</code></pre></div></div>

<p>Now, all arrows keys can be used, but the Up one. Go into KDE Control Center. In the Regional &amp; Accessibility/Input Action pane, look for the Preset Action/PrintScreen. In the General tab, click on the Disable check box.</p>

       ]]>
      </description>
    </item>
    
    <item>
      <title>LTSP | LTSP Iceweasel Hacks</title>
      <link>https://chrisjrob.com/2010/07/06/ltsp-iceweasel-hacks/</link>
      <pubDate>Tue, 06 Jul 2010 15:06:17 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2010/07/06/ltsp-iceweasel-hacks</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/ltsp_logo.png" align="right" alt="Featured Image">
         
         <p>This is just a list of the hacks or fixes that I currently have in place on Iceweasel.  These were not my invention, and surely I owe a debt of thanks to various sites; unfortunately I have no way of knowing which sites.</p>

<p>Some of these hacks are too facilitate system wide control, others help to maximise performance on a thin client system.</p>

<!--more-->

<h2 id="iceweasel-global-preferences">Iceweasel Global Preferences</h2>

<p><code class="language-plaintext highlighter-rouge">/etc/iceweasel/pref/iceweasel.js</code></p>

<div class="language-js highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">// This is the Debian specific preferences file for Iceweasel</span>
<span class="c1">// You can make any change in here, it is the purpose of this file.</span>
<span class="c1">// You can, with this file and all files present in the</span>
<span class="c1">// /etc/iceweasel/pref directory, override any preference that is</span>
<span class="c1">// present in /usr/lib/iceweasel/defaults/preferences directory.</span>
<span class="c1">// While your changes will be kept on upgrade if you modify files in</span>
<span class="c1">// /etc/iceweasel/pref, please note that they won't be kept if you</span>
<span class="c1">// do make your changes in /usr/lib/iceweasel/defaults/preferences.</span>
<span class="c1">//</span>
<span class="c1">// Note that lockPref is allowed in these preferences files if you</span>
<span class="c1">// don't want users to be able to override some preferences.</span>

<span class="nx">lockPref</span><span class="p">(</span><span class="dl">"</span><span class="s2">extensions.update.enabled</span><span class="dl">"</span><span class="p">,</span> <span class="kc">true</span><span class="p">);</span>

<span class="c1">// Use LANG environment variable to choose locale</span>
<span class="nx">lockPref</span><span class="p">(</span><span class="dl">"</span><span class="s2">intl.locale.matchOS</span><span class="dl">"</span><span class="p">,</span> <span class="kc">true</span><span class="p">);</span>

<span class="c1">// Disable default browser checking.</span>
<span class="nx">lockPref</span><span class="p">(</span><span class="dl">"</span><span class="s2">browser.shell.checkDefaultBrowser</span><span class="dl">"</span><span class="p">,</span> <span class="kc">false</span><span class="p">);</span>

<span class="c1">// ========= LTSP SPECIFIC HACKS ========</span>

<span class="c1">// Disable "safe browsing" feature that hogs CPU, HDD, etc. etc. in LTSP</span>
<span class="nx">lockPref</span><span class="p">(</span><span class="dl">"</span><span class="s2">browser.safebrowsing.enabled</span><span class="dl">"</span><span class="p">,</span> <span class="kc">false</span><span class="p">);</span>
<span class="nx">lockPref</span><span class="p">(</span><span class="dl">"</span><span class="s2">browser.safebrowsing.malware.enabled</span><span class="dl">"</span><span class="p">,</span> <span class="kc">false</span><span class="p">);</span>

<span class="c1">// Disable annoying location-bar suggestion "feature" that is sludgy with thin-clients</span>
<span class="nx">lockPref</span><span class="p">(</span><span class="dl">"</span><span class="s2">browser.urlbar.maxRichResults</span><span class="dl">"</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>

<span class="c1">// Disable offline/disk caching of web pages</span>
<span class="nx">lockPref</span><span class="p">(</span><span class="dl">"</span><span class="s2">browser.cache.offline.enable</span><span class="dl">"</span><span class="p">,</span> <span class="kc">false</span><span class="p">);</span>
<span class="nx">lockPref</span><span class="p">(</span><span class="dl">"</span><span class="s2">browser.cache.disk.enable</span><span class="dl">"</span><span class="p">,</span> <span class="kc">false</span><span class="p">);</span>
<span class="nx">lockPref</span><span class="p">(</span><span class="dl">"</span><span class="s2">browser.cache.memory.enable</span><span class="dl">"</span><span class="p">,</span> <span class="kc">false</span><span class="p">);</span>

<span class="c1">// ========= PROXY HACKS =========</span>

<span class="nx">lockPref</span><span class="p">(</span><span class="dl">"</span><span class="s2">network.proxy.type</span><span class="dl">"</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
<span class="nx">lockPref</span><span class="p">(</span><span class="dl">"</span><span class="s2">network.proxy.share_proxy_settings</span><span class="dl">"</span><span class="p">,</span> <span class="kc">true</span><span class="p">);</span>
<span class="nx">lockPref</span><span class="p">(</span><span class="dl">"</span><span class="s2">network.proxy.http</span><span class="dl">"</span><span class="p">,</span> <span class="dl">"</span><span class="s2">192.168.1.254</span><span class="dl">"</span><span class="p">);</span>
<span class="nx">lockPref</span><span class="p">(</span><span class="dl">"</span><span class="s2">network.proxy.http_port</span><span class="dl">"</span><span class="p">,</span> <span class="mi">800</span><span class="p">);</span>
<span class="nx">lockPref</span><span class="p">(</span><span class="dl">"</span><span class="s2">network.proxy.no_proxies_on</span><span class="dl">"</span><span class="p">,</span> <span class="dl">"</span><span class="s2">localhost, 127.0.0.1, 192.168.1.0/24</span><span class="dl">"</span><span class="p">);</span>

<span class="c1">// ========= MISC HACKS ==========</span>

<span class="nx">lockPref</span><span class="p">(</span><span class="dl">"</span><span class="s2">browser.startup.homepage</span><span class="dl">"</span><span class="p">,</span> <span class="dl">"</span><span class="s2">http://www.example.co.uk/</span><span class="dl">"</span><span class="p">);</span>
<span class="nx">lockPref</span><span class="p">(</span><span class="dl">"</span><span class="s2">app.update.enabled</span><span class="dl">"</span><span class="p">,</span> <span class="kc">false</span><span class="p">);</span>
</code></pre></div></div>

<h2 id="iceweasel-image-caching">Iceweasel Image Caching</h2>

<p>I understand that, on websites with certain size of image, that the thin client xorg starts to take a ridiculous amount of memory, resulting xorg dieing and the thin client returning to the login page.  The following may help:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo echo "MOZ_DISABLE_IMAGE_OPTIMIZE=1" &gt;&gt; /etc/profile
</code></pre></div></div>

<h2 id="references">References</h2>

<p>I must apologise for the lack of references, if you recognise some of your work in the above, please do accept my apologies.</p>

       ]]>
      </description>
    </item>
    
    <item>
      <title>LTSP | LTSP5 Display Troubleshooting</title>
      <link>https://chrisjrob.com/2010/07/06/ltsp5-display-troubleshooting/</link>
      <pubDate>Tue, 06 Jul 2010 09:50:08 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2010/07/06/ltsp5-display-troubleshooting</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/ltsp_logo.png" align="right" alt="Featured Image">
         
         <p>This is currently a few scrappy notes just to jog my memory as to things to try.  Messing about with monitor settings can blow your monitor, graphics card and probably both; although in practice sensible use should ensure that never happens to you.</p>

<p>Note that some of these commands may not exist on your system, if you need to install them, then remember to install into the chroot, e.g.:</p>

<!--more-->

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># chroot /opt/ltsp/i386
# apt-get update
# apt-get install lshw
# exit
</code></pre></div></div>

<p>Erm, suppose I should mention this whole page was tested on Debian Lenny.</p>

<h2 id="cables">Cables</h2>

<p>Do consider trying a new monitor cable - as a poor quality or damaged cable can cause problems that are difficult to trace.  A few seconds to try a different cable might save you endless time.</p>

<h2 id="a-word-about-drivers">A word about drivers</h2>

<p>There are often multiple drivers for a particular graphics card, for example with nvidia cards you can sometimes use the opensource “nv” driver and sometimes the proprietary “nvidia” driver, and I believe there is a “nouveau” driver, which I have not yet experienced.  Similarly in intel, stipulating that the driver should be “intel” may solve your problem.  See lspci below for details.</p>

<h2 id="x-authority">X Authority</h2>

<p>All of the following commands were run from an ssh session to the thin client itself, for this to work you need to install openssh-server in the chroot.  Alternatively you can simply go to the client and type ctrl-alt-f1 to access to the client’s console and type the following commands from there.  Obviously the benefit to the ssh approach is that you can do it remotely and cut and paste from your browser into the client.</p>

<p>We need to be able to access the xserver from the console, so we need to set the XAUTHORITY:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># export XAUTHORITY=`find /var/run -name Xauthority`
# echo $XAUTHORITY
/var/run/ldm-xauth-qOQkpTdNp/Xauthority
# export DISPLAY=:7
#
</code></pre></div></div>

<h2 id="useful-programs">Useful Programs</h2>

<h3 id="lspci">lspci</h3>

<p>In order to google your problems, you’ll need to know the make and model of your graphics card, to find this out, run the lspci command:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># lspci
# lspci -v | more
</code></pre></div></div>

<p>The first command is a summary, the second command gives you more information.  The “VGA compatible controller” is probably for what you’re looking.</p>

<h3 id="lshw">lshw</h3>

<p>List Hardware will list all the hardware on your PC.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># lshw -C display
</code></pre></div></div>

<h3 id="getltscfg">getltscfg</h3>

<p>Report all the settings from lts.conf which apply to this terminal.  This helps diagnose those occasions where the client is refusing to obey your lts.conf commands.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># getltscfg -a
</code></pre></div></div>

<h3 id="xvidtune">xvidtune</h3>

<p>xvidtune -show will report the current monitor settings as a modeline:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># xvidtune -show
</code></pre></div></div>

<p>You can also run xvidtune as a localapp when logged into the thin client:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>"/usr/bin/ltsp-localapps xvidtune"
</code></pre></div></div>

<h3 id="xdpyinfo">xdpyinfo</h3>

<p>xdpyinfo reports a great many details from the xserver, including resolution, colour depth etc:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># xdpyinfo | more
</code></pre></div></div>

<h3 id="gtf-cvt">gtf cvt</h3>

<p>There are two tools for creating a modeline - gtf and cvt.  My understanding is that cvt is the newer tool, in use from 2003, but tbh I really don’t know which you should use.  Both tools work in the same way.  Some examples:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># gtf 1920 1080 60
# cvt 1280 1024 75
</code></pre></div></div>

<h3 id="xrandr">xrandr</h3>

<p>To save rebooting endlessly you can test monitor settings on the fly with xrandr:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># xrandr
# xrandr --newmode "1920x1080_60.00"  172.80  1920 2040 2248 2576  1080 1081 1084 1118  -HSync +Vsync
# xrandr --addmode VGA "1920x1080_60.00"
# xrandr --output VGA --mode "1920x1080_60.00"
# xrandr --auto
</code></pre></div></div>

<p>The first command provides you with useful information about your xserver, including the available modes, and most importantly the available “outputs” (these are your monitors/displays); in the above example my only output is a monitor called “VGA”.  newmode creates the newmode (e.g. as output by gtf or cvt), addmode makes that mode applicable to the output, and the next command activates that mode.  The final command “auto” will reset your display automatically, probably your previous settings.</p>

<h2 id="references">References</h2>

<p>For once almost all of this was my own work, and so all my fault ;).  That said the following page was helpful to me in the section about xrandr:</p>

<ul>
  <li>https://wiki.ubuntu.com/X/Config/Resolution</li>
</ul>

       ]]>
      </description>
    </item>
    
    <item>
      <title>Home Theatre PC - Continued...</title>
      <link>https://chrisjrob.com/2010/06/29/home-theatre-pc-continued/</link>
      <pubDate>Tue, 29 Jun 2010 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2010/06/29/home-theatre-pc-continued</guid>
      <description>
       <![CDATA[
         
         <p>Finally spent a few hours on my HTPC.  Previously the Hauppauge HVR-2200 was working fine in Kaffeine, but was not working in MythTV.  I finally resolved this issue, and typed up some details here.</p>

<ul>
  <li><a href="/2010/08/04/hauppauge-hvr2200/">Hauppauge HVR-2200</a></li>
</ul>

       ]]>
      </description>
    </item>
    
    <item>
      <title>KDE Wallpaper</title>
      <link>https://chrisjrob.com/2010/06/26/kde-wallpaper/</link>
      <pubDate>Sat, 26 Jun 2010 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2010/06/26/kde-wallpaper</guid>
      <description>
       <![CDATA[
         
         <p>In an effort to make my desktop a little more elegant, I have designed some new wallpapers for use with KDE on Debian.  They may be a little too bling for some of you, but I’m quite pleased with them.  All created using free software, in the form of The Gimp.  In the spirit of free software, I have uploaded to <a href="http://kde-look.org/usermanager/search.php?username=chrisjrob&amp;action=contents">KDE Look</a> under a Creative Commons licence.</p>

       ]]>
      </description>
    </item>
    
    <item>
      <title>LTSP | LTSP5 Upgrade</title>
      <link>https://chrisjrob.com/2010/06/25/ltsp5-upgrade/</link>
      <pubDate>Fri, 25 Jun 2010 17:05:31 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2010/06/25/ltsp5-upgrade</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/ltsp_logo.png" align="right" alt="Featured Image">
         
         <h2 id="introduction">Introduction</h2>

<p>This is a guide to upgrading from Debian Etch and LTSP 4.2 to Debian Etch and LTSP 5.  This is largely based on the following page which should be your primary guidance on installation:</p>

<ul>
  <li>http://wiki.debian.org/LTSP/Howto</li>
</ul>

<!--more-->

<p>Now that Debian Lenny has become the stable release, you should install that instead, see the above document for guidance, and/or my LTSP5 Install page.</p>

<h2 id="warning">Warning</h2>

<p>This page seems a little outdated, most importantly it refers to the LTSP Backports repository, which is now obsolete.  You should instead visit http://backports.org/ and add the Debian Lenny repository.  All references to alioth.debian.org are redundant.  You are probably best off going to this page:</p>

<ul>
  <li>http://wiki.debian.org/LTSP/Howto</li>
</ul>

<h2 id="back-up-optltsp">Back-up /opt/ltsp</h2>

<p>This will copy your entire <code class="language-plaintext highlighter-rouge">/opt/ltsp</code> to <code class="language-plaintext highlighter-rouge">/opt/ltsp42</code>.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># cd /opt
# mkdir ltsp42
# cd ltsp
# tar cf - * | (cd /opt/ltsp42; tar xfp - )
</code></pre></div></div>

<h2 id="backup-other-configurations">Backup other configurations</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># cd /opt/ltsp42
# mkdir conf
# cp /etc/ltsp.conf /opt/ltsp42/conf/
# cp /etc/ltsp-localdev.conf /opt/ltsp42/conf/
# cp /etc/dhcp3/dhcpd.conf /opt/ltsp42/conf/
</code></pre></div></div>

<p><strong>This list is not exhaustive - if you can think of any other configurations outside of <code class="language-plaintext highlighter-rouge">/opt/ltsp</code> - back them up!</strong></p>

<h2 id="backup-tftpboot">Backup tftpboot</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># cd /opt/ltsp42
# mkdir tftpboot
# cd /tftpboot
# tar cf - * | (cd /opt/ltsp42/tftpboot; tar xfp - )
</code></pre></div></div>

<h2 id="remove-lbe-if-installed">Remove lbe if installed</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># cd /usr/local
# rm -r lbe
</code></pre></div></div>

<h2 id="add-backports-repository">Add Backports Repository</h2>

<p><strong>This section is outdated - the latest packages are simply in Debian Backports for Lenny.</strong></p>

<p>Given that you have chosen to upgrade to LTSP5, it is probably that you want to have the new technologies, which are currently only available in Backports.  If you already have Backports listed in <code class="language-plaintext highlighter-rouge">/etc/apt/sources.list</code> then you may skip this stage.</p>

<h3 id="add-the-keys-for-the-repository-to-your-keyringafter-verifying-that-you-trust-them">Add the key(s) for the repository to your keyring(after verifying that you trust them)</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># wget http://pkg-ltsp.alioth.debian.org/debian/pkg-ltsp-keyring
# apt-key add pkg-ltsp-keyring 
</code></pre></div></div>

<h3 id="add-to-etcaptsourceslist">Add to /etc/apt/sources.list</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>deb http://pkg-ltsp.alioth.debian.org/debian etch-ltsp-backports main
</code></pre></div></div>

<h3 id="configure-pinning-in-etcaptpreferences">Configure pinning in /etc/apt/preferences</h3>

<p>If you do not have a preferences file, then an example one might be:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Package: ltsp-server
Pin: origin pkg-ltsp.alioth.debian.org
Pin-Priority: 998

Package: ltsp-server-standalone
Pin: origin pkg-ltsp.alioth.debian.org
Pin-Priority: 998

Package: ltspfs
Pin: origin pkg-ltsp.alioth.debian.org
Pin-Priority: 998

Package: *
Pin: release o=Debian,a=stable
Pin-Priority: 900

Package: *
Pin: origin www.backports.org
Pin-Priority: 700

Package: *
Pin: release o=Debian,a=testing
Pin-Priority: 500

Package: *
Pin: release o=Debian,a=unstable
Pin-Priority: 300

Package: *
Pin: release o=Debian
Pin-Priority: -1
</code></pre></div></div>

<h3 id="apt-get-update">Apt-get Update:</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># apt-get update
</code></pre></div></div>

<h2 id="how-you-are-logged-in">How you are logged in?</h2>

<p>You should be logged in either directly to the console, or via ssh (or perhaps FreeNX).  If you are logged in from an LTSP Client, then there is a likelihood that your client will be terminated during installation.</p>

<p>The same clearly applies to your users.  In any case some of these processes are CPU intensive (e.g. ltsp-build-client) and it’s a good idea to have everyone off the system (this may even be a necessity).</p>

<h2 id="remove-old-ltsp-packages">Remove Old LTSP Packages</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># apt-get --purge remove ltsp-utils atftpd
# cd /opt
# rm -r ltsp
</code></pre></div></div>

<h2 id="install-new-packages">Install new packages</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># apt-get -t 'etch-ltsp-backports' install ltsp-server-standalone ltsp-server
# dpkg -l ltsp-server | awk '/^ii/{print $2" "$3}'
</code></pre></div></div>

<p><strong>Make sure the version ltsp-server is 5.0.40~ or greater.</strong></p>

<h2 id="build-the-ltsp-client-environment">Build the LTSP client environment</h2>

<p><strong>The ltsp-build-client script needs a lot of time if you have an older server.</strong></p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>#  ltsp-build-client --extra-mirror "http://pkg-ltsp.alioth.debian.org/debian etch-ltsp-backports main" --apt-key /etc/apt/trusted.gpg
</code></pre></div></div>

<p><strong>Don’t be tempted to use a simple ltsp-build-client command, as you need to specify backports repository (as shown above).</strong></p>

<p>The ltsp-build-client command will download a complete Debian filesystem into <code class="language-plaintext highlighter-rouge">/opt/ltsp/i386</code> (or specify an alternate location with ‘–base’) and install the ltsp-client and ldm packages (the LTSP Display Manager).</p>

<p>The 2 ltsp configuration files inside the client are <code class="language-plaintext highlighter-rouge">/etc/lts.conf</code> and <code class="language-plaintext highlighter-rouge">/etc/default/ltsp-client-setup</code>. See the examples in <code class="language-plaintext highlighter-rouge">/usr/share/doc/ltsp-client*</code>. Also see the <a href="http://doc.ubuntu.com/edubuntu/edubuntu/handbook/C/customizing-thin-client.html">Edubuntu wiki</a>.</p>

<p><strong>Debian LTSP still uses NFS by default.</strong></p>

<p><strong>If you change the IP data after you have done the initial setup and run ltsp-update-sshkeys on the server.</strong></p>

<p>The files the client will boot are installed on the server into <code class="language-plaintext highlighter-rouge">/var/lib/tftpboot</code>, unlike LTSP4.2 which installed in <code class="language-plaintext highlighter-rouge">/tftpboot</code>.</p>

<h2 id="configure-dhcp-server">Configure DHCP Server</h2>

<p>Edit <code class="language-plaintext highlighter-rouge">/etc/dhcp3/dhcpd.conf</code>.</p>

<p>As you already had DHCP working, under LTSP4.2, then it will just need some modification.  In order to configure your dhcpd.conf, you should refer to examples in <code class="language-plaintext highlighter-rouge">/usr/share/doc/ltsp-server/examples/dhcpd.conf</code> or <code class="language-plaintext highlighter-rouge">/etc/ltsp/dhcpd.conf</code> and adjust for your network.</p>

<p>Specifically, you need to make the following changes:</p>

<h3 id="root-path">Root Path</h3>

<p>Take the IP address out of your root-path statement as LTSP5 doesn’t support that style of root-path</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>option root-path  "/opt/ltsp/i386";
</code></pre></div></div>

<h3 id="filename">Filename</h3>

<p>Change the filename entries to:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>filename   "/ltsp/i386/pxelinux.0";
</code></pre></div></div>

<h3 id="next-server">Next Server</h3>

<p>Etch is still affected by: http://bugs.debian.org/416868 so you need to add this line if the dhcp server and tftp server are the same:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>next-server ip.address.of.server;
</code></pre></div></div>

<h3 id="restart-dhcp3-server">Restart dhcp3-server</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># /etc/init.d/dhcp3-server restart
</code></pre></div></div>

<p>Watch for errors, if it will not restart then correct errors and try again.</p>

<h2 id="configure-exports">Configure Exports</h2>

<p>Edit <code class="language-plaintext highlighter-rouge">/etc/exports</code> to include the following line:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/opt/ltsp *(ro,no_root_squash,async,no_subtree_check)
</code></pre></div></div>

<p>Then restart the NFS Kernel Server:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># /etc/init.d/nfs-kernel-server restart
</code></pre></div></div>

<h2 id="start-tftpd">Start tftpd</h2>

<p>By default, tftpd-hpa is started from inetd, so you may need to restart inetd after installing tftpd-hpa.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># /etc/init.d/openbsd-inetd restart
</code></pre></div></div>

<p>Alternately, edit <code class="language-plaintext highlighter-rouge">/etc/default/tftpd-hpa</code> to have tftpd-hpa start on it’s own.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>RUN_DAEMON="yes"
</code></pre></div></div>

<p>And then restart with:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># /etc/init.d/tftpd-hpa restart
</code></pre></div></div>

<h2 id="test-boot-a-client">Test boot a client</h2>

<p>Boot a PXE or Etherboot capable machine and enjoy!</p>

<h2 id="changing-the-client">Changing the Client</h2>

<p>See the following page for details:  http://doc.ubuntu.com/edubuntu/edubuntu/handbook/C/customizing-thin-client.html</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># sudo chroot /opt/ltsp/i386
# apt-get install rdesktop
# sudo ltsp-update-image
</code></pre></div></div>

<h2 id="setting-root-password-for-client">Setting root password for client</h2>

<p>Screen scripts are how LTSP determines what type of login will run on what virtual screen. Most GNU/Linux machines have 12 virtual consoles, which you can access by pressing Control-Alt-F1, through Control-Alt-F12. There is a text based getty that is started on screen 1, but you normally can’t log into it, as there are no local users on the thin client.</p>

<p>However, for debugging purposes, you may want to set up root to log in on the thin client. You may need to do this if you’re debugging problems with local devices, for example. Fortunately, it’s easy to do: on the server, just chroot into the LTSP chroot, and set the password with passwd.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo chroot /opt/ltsp/i386
passwd
</code></pre></div></div>

<h2 id="further-information">Further information</h2>

<ul>
  <li><a href="/2009/04/30/ltsp5-sound/">LTSP5 Sound</a></li>
  <li><a href="/2010/11/19/ltsp5-local-devices/">LTSP5 Local Devices</a></li>
</ul>

<h2 id="references">References</h2>

<ul>
  <li>http://wiki.debian.org/LTSP/Howto
    <ul>
      <li>http://doc.ubuntu.com/edubuntu/edubuntu/handbook/C/customizing-thin-client.html</li>
    </ul>
  </li>
  <li>http://www.mail-archive.com/ltsp-discuss@lists.sourceforge.net/msg33415.html</li>
  <li>http://www.linuxagora.com/vbforum/showthread.php?t=749</li>
  <li>http://www.ltsp.org/twiki/bin/view/Ltsp/Debian#LTSP_5</li>
  <li>http://marc.info/?l=ltsp-discuss&amp;w=2&amp;r=1&amp;s=ltsp5+debian+etch&amp;q=b</li>
</ul>


       ]]>
      </description>
    </item>
    
    <item>
      <title>LTSP | LTSP Client Hardware</title>
      <link>https://chrisjrob.com/2010/06/22/ltsp-client-hardware/</link>
      <pubDate>Tue, 22 Jun 2010 08:49:21 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2010/06/22/ltsp-client-hardware</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/ltsp_logo.png" align="right" alt="Featured Image">
         
         <h2 id="introduction">Introduction</h2>

<p>The selection of client hardware is an interesting topic, that causes much confusion for those unfamiliar with LTSP.  When you start out with LTSP, the likelihood is that one of your motivations is to extend the life of your existing clients.  But you’d be lucky indeed not to require a few new clients, and of course over time you will need to purchase replacements for hardware failures.  So what are your options?</p>

<!--more-->

<h2 id="options">Options</h2>

<ul>
  <li><a href="#existing-pcs">Existing PCs</a></li>
  <li><a href="#thin-clients-designed-for-ltsp">Thin clients designed for LTSP</a></li>
  <li><a href="#thin-clients-designed-for-citrix">Thin clients designed for Citrix</a></li>
  <li><a href="#barebones-pcs">Barebones PCs</a></li>
  <li><a href="#self-build-pcs">Self-build PCs</a></li>
  <li><a href="#new-pcs">New PCs</a></li>
</ul>

<h2 id="existing-pcs">Existing PCs</h2>

<p>Well you obviously don’t want to throw out all your existing hardware, but do bear in mind that the electrical cost is likely to be around £40 a year, and so a replacement that brings this down to £15 a year, might be easier to justify than you might imagine.  If you do want to keep your existing PCs, then do consider unplugging the hard drives.  Hard drives are not required on LTSP clients and they consume unnecessary power.  They also can often be noisy, unplugging an old drive can miraculously silence an annoyingly loud older PC.</p>

<h2 id="thin-clients-designed-for-ltsp">Thin clients designed for LTSP</h2>

<p>I have no experience of this route.  One option is to purchase from Diskless Workstations, who support the LTSP project.</p>

<ul>
  <li>http://www.disklessworkstations.com/</li>
</ul>

<h2 id="thin-clients-designed-for-citrix">Thin clients designed for Citrix</h2>

<p>I have had mixed success with thin clients that were designed for Citrix and/or Windows Terminal Services.  The Wyse terminals tend to be very sluggish and quirky, and I find that I cannot recommend them for LTSP.</p>

<p>HP thin clients seem to work very much better, and are certainly an option.  Such devices tend to be very low power.  On the downside, they do tend to be surprisingly expensive, for what they provide.  That said, if you have a good hardware budget, I believe you could do very much worse than buy some HP Linux Thin Clients but, as with any client hardware, do buy one and test before committing yourself to considerable expenditure.</p>

<h2 id="barebones-pcs">Barebones PCs</h2>

<p>Obviously the above is probably not true of dedicated LTSP thin client hardware, designed from the ground up to work with LTSP.</p>

<p>I have found that the best client hardware is to purchase low-cost barebones PCs, low-power and preferably fanless.  I tend to only buy barebones PCs that include the CPU, in order to keep down the overall cost and keep commissioning time to a minimum.  Previously this meant Via C7 CPUs, which haven’t the best reputation; although so far I have not had any failures.  Nowadays I think you’d be searching for “intel atom barebones”.</p>

<p>Yes, you need to open the case, add some RAM, and maybe add an optical drive - perhaps 10 minutes work - the flipside is that you’re not paying for an operating system, and you’re not paying for a hard drive (which you don’t need).</p>

<p>Such barebones PCs currently cost about £125 (plus VAT), seem much less likely to have compatibility issues, perform much faster than dedicated “thin client” devices, and could easily be changed to fat clients, should your requirements subsequently change.</p>

<h2 id="self-build-pcs">Self-build PCs</h2>

<p>I have had great success building small Mini-ITX form factor PCs, on Via CPUs.  The hardware was all purchased from <a href="http://linitx.com">LinITX.com</a>, who I found very helpful.  Build time was about an hour for the first, but this dropped to about 30 minutes for the remaining ones.  The result are stunningly attractive tiny PCs which grace our showroom.  Just do concentrate on low-power consumption and look where possible for “fanless”.  LTSP uses very little of the local CPU, so heat is unlikely to be an issue.</p>

<h2 id="new-pcs">New PCs</h2>

<p>Full blown desktops are, I think, a poor option.  These tend to be power hungry, and come with a Windows licence, hard drive and other bits that you will not need.  There are a new generation of tiny PCs like the Acer Reevo and the Asus EeeBox, which may be a good option.</p>

<h2 id="references">References</h2>

<p>There are no references for this page, which was written without reference to other information.</p>

       ]]>
      </description>
    </item>
    
    <item>
      <title>Ubuntu Lucid Lynx</title>
      <link>https://chrisjrob.com/2010/06/16/ubuntu-lucid-lynx/</link>
      <pubDate>Wed, 16 Jun 2010 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2010/06/16/ubuntu-lucid-lynx</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/ubuntu1004_350.png" align="right" alt="Featured Image">
         
         <p>As a died-in-the-wool KDE user, I’m just coming to terms with KDE4 and mostly loving it.  A few niggles remain, but in the main it is very good indeed.  But I suppose I would hesitate to recommend it to a new user.  Having seen and heard much praise for the latest Ubuntu 10.04 Lucid Lynx, which uses the Gnome desktop, I thought I’d give it a go.</p>

<!--more-->

<p>I started by downloading the ISO image from the Ubuntu website and followed my instructions to Make A Linux USB Key, basically by formatting in super-floppy format (which I find to be the most consistently successful method) and using Unetbootin to write the ISO to the USB Key.  Using a USB key is more convenient, more portable and more environmentally friendly than burning a CD/DVD.</p>

<p>I took a spare laptop, an HP NX7300, and inserted the USB Key.  I entered the BIOS settings and changed the boot order to boot first from USB.   I then booted up the laptop.</p>

<p>HP are not know for their Linux compatibility, but Ubuntu booted up with an attractive boot splash, before logging straight into the very attractively themed Gnome desktop.  The new colour scheme is purple, which is very attractive, although brown still exists in the OpenOffice splash screen to remind us of what used to be.</p>

<p>As expected, network manager failed to activate, and I knew from past experience that I would need to load the proprietary broadcom driver.  Continuing to play it dumb, I waited to see if I would get any help from Ubuntu.  After about half a minute, the restricted drivers’ manager appeared on the top panel, although there was no guidance as to why it had appeared, nor what to do with it.  I clicked on it and then clicked on the option to install the Broadcom STR driver and clicked activate.</p>

<p>After a minute or so it had loaded the Broadcom driver from the USB stick and I noticed that the wireless light had illuminated on the laptop.  Promising!  Unfortunately it then suggested I reboot to load the new driver; which obviously I can’t do, as I am running off a USB stick and would effectively start from scratch again if I rebooted.  I decided to just wait and, sure enough, after a while when I clicked on the wireless symbol on the top panel it offered my local wireless access point.  I selected it, and entered the encryption key, and I was connected.</p>

<p>At this point I had a completely usable desktop environment, including a full office suite (OpenOffice.org), a working web browser (Firefox) and everything else you could possibly wish in a modern desktop environment, all working off a USB stick.  I still find that just amazing.</p>

<p>I must admit that I am surprised by Gnome, it looks gorgeous, it feels very integrated, as if it had been designed as a whole, rather than being a collection of applications brought together.  No it’s not my much loved Debian, and no it’s not my much loved KDE, but it does feel easy to use, very uniform and just… well “right”.</p>

<p>I was particularly impressed by Rhythmbox, which had the built in music store, podcast reader, and local collection.  This does look like an application which would reassure an erstwhile iTunes user.  It’s probably not as good as amaroK, but having pushed amaroK on my mother and regretted it mightily, I think Rhythmbox is a good choice, being infinitely more user friendly.</p>

<p>I even set-up my Gmail account in Evolution, simply by clicking on the mail icon in the top panel and following the wizard to set up my Gmail account.  I played completely dumb, it provided all the necessary server information and network settings for me, and all I needed to know was my Gmail address and password.  That is incredible, anyone could set up their email if it’s that easy.</p>

<p>Having tested it, just to decide whether to recommend it to friends and family, I find myself sorely tempted to install it on my own laptop.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Nochex on-line credit card payment</title>
      <link>https://chrisjrob.com/2010/06/14/nochex-on-line-credit-card-payment/</link>
      <pubDate>Mon, 14 Jun 2010 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2010/06/14/nochex-on-line-credit-card-payment</guid>
      <description>
       <![CDATA[
         
         <p>I recently made a payment to an on-line supplier, via “Nochex”.  The supplier failed to come up with the goods and then failed to respond to my emails.  I submitted a support ticket to Nochex and they promised to respond with 48 hours, but failed to do so.</p>

<!--more-->

<p>After conducting further research, it seems that Nochex itself <a href="http://www.reviewcentre.com/reviews115027.html">does not have the best reputation</a>.</p>

<p>Further to this, I contacted them again, and once again they have failed to respond within 24 hours.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Google relent</title>
      <link>https://chrisjrob.com/2010/06/10/google-relent/</link>
      <pubDate>Thu, 10 Jun 2010 12:30:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2010/06/10/google-relent</guid>
      <description>
       <![CDATA[
         
         <p>Apparently <a href="/2010/06/10/google-you-plonkers/">it was a 24 hour experiment</a>, but Google saw sense and ended it 10 hours early, after the twitterverse went beserk.</p>

<ul>
  <li><a href="http://techcrunch.com/2010/06/10/google-kills-its-homepage-background-image-experiment-early/">Techcrunch: Google Kills Its Homepage Background Image Experiment Early</a></li>
</ul>

<!--more-->

<p>Now those that want pictures of kittens as their background can and the rest of us can keep our plain simple and fast search page.  After spending the day using <a href="http://ixquick.com">ixquick</a>, I’ll be glad to return to google.com, which is still the best search engine that I have ever used.</p>

<p>When are we going to see a decent open source search engine, maybe distributed in some way amongst its user base?</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Google you plonkers</title>
      <link>https://chrisjrob.com/2010/06/10/google-you-plonkers/</link>
      <pubDate>Thu, 10 Jun 2010 09:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2010/06/10/google-you-plonkers</guid>
      <description>
       <![CDATA[
         
         <p>Why do we use Google?  Because it is lightweight and fast.  What could Google do to make themselves less appealing?  Well, I suppose they could add a desktop background that adds to the clutter of the page and requires everyone to download a pointless image, but they’d never do something that stupid, would they?</p>

<p>And they have.</p>

<!--more-->

<p>I can only imagine Google are wanting to reduce their monopoly and increase competition in the search engine market, and perhaps that is to be applauded.</p>

<p>Okay, so what can I use instead of Google?  I think I’ll try Bing, supposedly their privacy policy is better as well.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Howto | SeamlessRDP</title>
      <link>https://chrisjrob.com/2010/06/08/seamless-rdp/</link>
      <pubDate>Tue, 08 Jun 2010 17:02:16 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2010/06/08/seamless-rdp</guid>
      <description>
       <![CDATA[
         
         <p>Before proceeding please visit <a href="http://www.cendio.com/seamlessrdp/">Cendio</a> and <a href="http://www.fontis.com.au/rdesktop">Fontis</a> and use their respective instructions in preference to this page.</p>

<h2 id="cendio-seamlessrdp">Cendio SeamlessRDP</h2>

<p>The Cendio SeamlessRDP component has two halves, a Windows executable as the “server component” for installation on the Windows server, and patches to the rdesktop application, to work with the server component.  At the time of writing, these Cendio patches have now been merged into the rdesktop 1.5.0 and later core.</p>

<!--more-->

<ul>
  <li>You can download <a href="http://rdesktop.svn.sourceforge.net/viewvc/rdesktop/seamlessrdp/trunk/">the source</a> using Subversion.</li>
  <li>You can <a href="http://www.cendio.com/seamlessrdp/seamlessrdp.zip">get a binary</a> and unzip the files into <code class="language-plaintext highlighter-rouge">c:\seamlessrdp</code> (or similar).</li>
</ul>

<p>Once you have a binary on your Windows server, then from you Linux client, type:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ rdesktop -A -s "c:\seamlessrdp\seamlessrdpshell.exe notepad"
</code></pre></div></div>

<p><strong>Under W2K8, both seamlessrdpshell.exe, and the Windows application you wish to run with it, must be published terminal services applications.  And seamlessrdpshell.exe must have command line parameters enabled, by running “TS RemoteApp Manager’s” “Add RemoteAppProgram” dialog (remoteprograms.msc).</strong></p>

<h2 id="fontis-seamlessrdp">Fontis SeamlessRDP</h2>

<p>Fontis have further developed Cendio SeamlessRDP, to enable connection sharing, allowing a single rdesktop connection to launch multiple applications.  When run in seamless mode, rdesktop creates and listens on a control socket.  A new option allows rdesktop to be run in slave mode, which notifies the master rdesktop instance of a new command to be run and then exits.  The master instance sends a client-to-server message to the SeamlessRDP server component, which runs the new command.</p>

<p>I see this development as fairly fundamental to the use of SeamlessRDP.</p>

<h3 id="installation-of-fontis-patch">Installation of Fontis patch</h3>

<p>Download source for the latest version of rdesktop from CVS (press enter when prompted for a password):</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ cvs -d:pserver:anonymous@rdesktop.cvs.sourceforge.net:/cvsroot/rdesktop login
$ cvs -z3 -d:pserver:anonymous@rdesktop.cvs.sourceforge.net:/cvsroot/rdesktop co -P rdesktop
</code></pre></div></div>

<p>Alternatively, download the <a href="http://www.fontis.com.au/system/files/rdesktop_src.tar.gz">rdesktop CVS snapshot</a> which has been tested with the patch.  Download the rdesktop patch to the checked out directory:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ cd rdesktop $ wget http://www.fontis.com.au/system/files/rdesktop.patch
</code></pre></div></div>

<p>Apply the patch and compile:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ patch -p1 &lt; rdesktop.patch
$ ./bootstrap
$ ./configure
$ make
</code></pre></div></div>

<p>Download updated server component and unpack. Alternatively, obtain the seamlessrdp CVS snapshot or download direct from CVS, apply the seamlessrdp patch and then compile:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ cvs -z3 -d:pserver:anonymous@rdesktop.cvs.sourceforge.net:/cvsroot/rdesktop co -P seamlessrdp
$ patch -p1 &lt; seamlessrdp.patch
</code></pre></div></div>

<h3 id="usage">Usage</h3>

<p>The following examples assume the SeamlessRDP server component files (seamlessrdpshell.exe, seamlessrdp.dll and vchannel.dll) have been unpacked to <code class="language-plaintext highlighter-rouge">C:\seamlessrdp</code>.
To start a SeamlessRDP session, invoke rdesktop in the same way as before applying the patch:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ ./rdesktop -A -s "C:\seamlessrdp\seamlessrdpshell.exe notepad" server
</code></pre></div></div>

<p>To run a new command inside the existing SeamlessRDP session:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ ./rdesktop -l "calc"
</code></pre></div></div>

<p>New command-line options:</p>

<ul>
  <li>-M: Specify the path for the control socket that the rdesktop process listens on. By default, this is <code class="language-plaintext highlighter-rouge">$HOME/.rdesktop/seamless.socket</code></li>
  <li>-l: Instead of starting a new rdesktop process, connect to an existing process’ control socket and tell it to run a command on the server. Can be combined with the -M option to use a non-standard socket.</li>
</ul>

       ]]>
      </description>
    </item>
    
    <item>
      <title>Home Theatre PC - Progress Report</title>
      <link>https://chrisjrob.com/2010/06/01/home-theatre-pc-progress-report/</link>
      <pubDate>Tue, 01 Jun 2010 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2010/06/01/home-theatre-pc-progress-report</guid>
      <description>
       <![CDATA[
         
         <p>Spent some time setting up my wife’s email on the new HTPC, using Kmail and disconnected IMAP.  Installed Google Chrome.  Added a KDE Plasmoid on the desktop for Facebook and Twitter, which hopefully my wife will like.  Other than that I have had no time to spend on the completing the MythTV installation.  More soon hopefully.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Home Theatre PC - Configuring Hauppauge HVR2200 TV Card</title>
      <link>https://chrisjrob.com/2010/05/22/home-theatre-pc-configuring-hauppage-hvr2200-tv-card/</link>
      <pubDate>Sat, 22 May 2010 00:00:02 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2010/05/22/home-theatre-pc-configuring-hauppage-hvr2200-tv-card</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/hvr2200_board_s_200.jpg" align="right" alt="Featured Image">
         
         <p>Wow, this really is a second post in one day!</p>

<p>Following on from the DPI issue, I decided to throw science to the wind and just set DPI to 96x96 rather than 50x50, and the login screen looks better and the font size is improved (slightly larger).</p>

<!--more-->

<p>Next, I decided that I ought to check that the TV Tuner was properly detected, but whilst it was detected correctly, it was unsure of the card number, and was unable to download the firmware.  This is not entirely surprising as this TV card is fairly recent and (as usual) Hauppauge do not themselves support Linux.</p>

<p><a href="http://ubuntuforums.org/showpost.php?p=9219191&amp;postcount=212">This link</a> provided me with the basis for fixing this issue, but in the event I only needed the following:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ cd ~
$ wget http://www.steventoth.net/linux/hvr22xx/22xxdrv_27086.zip
$ wget http://www.steventoth.net/linux/hvr22xx/HVR-12x0-14x0-17x0_1_25_25271_WHQL.zip
$ wget http://www.steventoth.net/linux/hvr22xx/extract.sh
$ sh extract.sh
$ sudo su
# cp *.fw /lib/firmware/`uname -r`/
# echo "options saa7164 card=4" &gt;&gt; /etc/modprobe.d/options.conf
# exit
</code></pre></div></div>

<p>Then reboot.  Hopefully tomorrow I will have some time to continue setting up the TV card under MythTV; but for now the aerial input is required by our old MythTV system in order to record Doctor Who :).</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Home Theatre PC - Setting DPI in Xorg</title>
      <link>https://chrisjrob.com/2010/05/22/home-theatre-pc-setting-dpi-in-xorg/</link>
      <pubDate>Sat, 22 May 2010 00:00:01 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2010/05/22/home-theatre-pc-setting-dpi-in-xorg</guid>
      <description>
       <![CDATA[
         
         <p>A second post on the same day, has hell frozen over?  No, actually I put the wrong date on yesterday’s post.  Oops.</p>

<p>The DPI problem was fixed very easily by following the instructions on the link I provided in my previous post, I calculated that my Sony Bravia KDL 32S3000 had dimensions of 700mm x 390mm and a native resolution of 1366x768.</p>

<!--more-->

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ xdpyinfo | grep dimensions
$ xdpyinfo | grep "dots per inch"
</code></pre></div></div>

<p>Converting the millimetres to inches and dividing the resolution by the inches dimensions gave me DPI of 50x50, surprisingly low.  I believe this is because the KDL 32S3000 is not a full HD TV but only 1080i.  Setting this in <code class="language-plaintext highlighter-rouge">/etc/X11/xorg.conf</code> cured the problem with the KDM login manager.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Section "Monitor"
    Identifier "Monitor0"
    Option   "DPI" "50 x 50"
EndSection
</code></pre></div></div>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Home Theatre PC - Test Boot II</title>
      <link>https://chrisjrob.com/2010/05/22/home-theatre-pc-test-boot-ii/</link>
      <pubDate>Sat, 22 May 2010 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2010/05/22/home-theatre-pc-test-boot-ii</guid>
      <description>
       <![CDATA[
         
         <p>Changing the connectors around corrected the problem, I had assumed that the arrows on the connectors indicated +ve, when clearly they must indicate -ve, fixed and the LEDs all work fine.</p>

<!--more-->

<p>Installed the Nvidia binary driver, which worked fine, except that, as I’ve found on a few installs recently the KDE screen DPI defaults to something absurd, resulting in unreadably small fonts.  Easily fixed in KDE, via System Settings (as long as you know your way around!), but haven’t yet found out how to do it in KDM (the login manager).  This is not a huge problem, as it is easy enough to type in your password, and anyway on a home theatre PC you probably want it automatically logging in.  That said, I am determined to fix this problem when I have some time.  Interestingly this was also the case on our existing mythbox, which has completely different hardware, the common thread being the nvidia driver.  I suspect the issue may be related to the KDE virtual desktop, and the nvidia driver calculating this back to a reasonable DPI.  <a href="http://wiki.archlinux.org/index.php/Xorg#Display_Size_and_DPI">This link</a> may help, I will give this a go when I have some time.</p>

<p>Anyway, the good news is that, with the binary driver installed, the standard KDE compositing is working beautifully.</p>

<p>As to sound, this is still not working via HDMI, but is working fine through the sound outputs.  This seems to be a widespread issue, which I think has been resolved, so it’s just a matter of waiting for the fix to filter downstream.  In the meantime, I will continue to work as we do on our existing mythbox, with a 2.1 speaker system plugged into the HTPC.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Home Theatre PC - Test Boot</title>
      <link>https://chrisjrob.com/2010/05/13/home-theatre-test-boot/</link>
      <pubDate>Thu, 13 May 2010 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2010/05/13/home-theatre-test-boot</guid>
      <description>
       <![CDATA[
         
         <p>At last the 24-pin ATX PSU extension cable has arrived - enabling me to perform a test boot.</p>

<p>It switched on okay, but the front LEDs were not working, neither the power nor the disk LED; so it seems that they are not wired up correctly, although I really can’t see how I could have got it wrong.</p>

<!--more-->

<p>It booted into a Kubuntu 10.04 USB stick without any problems.  The network card was detected correctly and I was able to browse the Internet without any configuration.  The Nvidia card was detected correctly, using the open source driver, obviously I will install the Nvidia binary driver.  The only strangeness was the lack of sound via the HDMI cable, but looking in the BIOS afterward I noticed an option “Audio via HDMI” which I have enabled, it was set to auto, but maybe that’ll make a difference.</p>

<p>It is difficult to say how quiet it is at present, as any sound it was making was being drowned out by our noisy old mythbox.</p>

<p>I can’t wait to have a decent chunk of time to start the installation.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Home Theatre PC - The Build</title>
      <link>https://chrisjrob.com/2010/05/09/home-theatre-build/</link>
      <pubDate>Sun, 09 May 2010 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2010/05/09/home-theatre-build</guid>
      <description>
       <![CDATA[
         
         <p>Well the build went quite well. I encountered two problems:</p>

<p>The Intel Atom A330 ION motherboard had two prongs for the Power LED, but the Lian-Li PC-C37 case had a cable for a three prong connector.  The cable on has two wires, so I got around this issue by levering up the plastic catch holding one of the cables and moved it into the middle connector, which then fitted the motherboard fine, just with the now vacant connector overlapping the connectors.</p>

<!--more-->

<p>The second problem that I encountered was the question of which way up the PSU should go.  Normally an ATX PSU sits at the top of a tower case with the fan downwards, pulling the hot air out of the case.  In a desktop (horizontal) PC this is never going to be as effective.  With my case, there is no space below the PSU, so that the fan would be drawing air from nowhere and exhausting it out the back of the PC.  Not only will this not cool the case, it will also burn the PSU in a very short time.  By mounting the PSU upside down, the cool air should be drawn in from outside, via the top vent, cooling the PSU and exhausting out the back.  This does mean that the PSU is not helping to cool the case, but at least it is not adding heat into the case.</p>

<p>Unfortunately, mounting the PSU upside down has meant that the power cables are furthest from the motherboard, with the result that the main 24-pin lead does not reach.  It seems that extension leads are available, and I’m to have a go at getting one from Maplin in Guildford today.</p>

<p>This lack of PSU fan cooling for the case does mean that we are very reliant on the two case fans.  The case does allow for several more case fans if necessary, although the Intel Atom processor shouldn’t be generating too much heat.</p>

<p>Hopefully the following should be a slideshow of the build.  I’m sorry to say that I didn’t take many interim photos, so this slideshow is rather a before/after:</p>

<embed type="application/x-shockwave-flash" src="http://picasaweb.google.com/s/c/bin/slideshow.swf" width="800" height="533" flashvars="host=picasaweb.google.com&amp;captions=1&amp;hl=en_US&amp;feat=flashalbum&amp;interval=8&amp;RGB=0x000000&amp;feed=http%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2Fchrisjrob%2Falbumid%2F5469200580828386401%3Falt%3Drss%26kind%3Dphoto%26hl%3Den_US" pluginspage="http://www.macromedia.com/go/getflashplayer" />

<p>These days building PCs is not a black art - the connectors are all labelled - and the motherboards generally have a helpful manual detailing exactly what goes where.  Building a PC is primarily a challenge from the perspective of making sure that you buy compatible components and that you design in sufficient cooling.</p>

<p>With luck my next post will be the power-up and install of Kubuntu 10.04 with MythTV!</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Home Theatre PC - The Hardware</title>
      <link>https://chrisjrob.com/2010/05/07/home-theatre-pc-the-hardware/</link>
      <pubDate>Fri, 07 May 2010 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2010/05/07/home-theatre-pc-the-hardware</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/lian_li_pc_c37_muse_200.jpg" align="right" alt="Featured Image">
         
         <p>Just a reminder of what I was wanting for our HTPC:</p>

<ul>
  <li>Low power</li>
  <li>Silent</li>
  <li>Powerful enough to run KDE fully</li>
  <li>DVI and HDMI interfaces</li>
  <li>Decent on-board sound</li>
  <li>Plenty of USB slots</li>
  <li>Needs to visually go with our HiFi amp and Blu-Ray player</li>
  <li>Powerful enough graphics to support 1080p (or 720p if not possible)</li>
</ul>

<!--more-->

<h2 id="the-case-lian-li-pc-c37">The Case: Lian Li PC-C37</h2>

<p><img src="https://chrisjrob.com/assets/lian_li_pc_c37_muse_200.jpg" alt="Lian Li PC-37 Case" /></p>

<p>I started, perversely, with the case.  Normally you would start with the cpu/mb, but I knew that, in order to get spouse approval, it had to look right.  You can spend from £20 to £1000 on cases, and I dare say more.  I wanted something that looked like a black HiFi separate, both in dimensions and styling.  I would have thought that there would have been a considerable choice, but there really wasn’t, the only one I found was the <a href="http://www.productwiki.com/lian-li-pc-c37-muse/">Lian-Li PC-C37</a>.  It would seem to be a well made quality case, for about £100. I would have liked to have spent a little less, but really there was no choice whatsover.</p>

<h2 id="motherboardcpu-asrock-a330ion">Motherboard/CPU: Asrock A330ION</h2>

<p><img src="https://chrisjrob.com/assets/a330ion_angleshot_200.jpg" alt="Asrock A330ION" /></p>

<p>The Lian-Li PC-C37 takes both Mini-ITX and Micro-ATX motherboards.  Well that’s just fine, given that my aim was a low power, silent and powerful PC, really the Intel Atom was the only choice and they invariably come in Mini-ITX motherboards.  Well there is a vast array of Intel Atom motherboards on the market but, oddly enough, almost all of them had problems.  Most of them only had 4 usb ports, which would be okay, just.  Almost none of them had DVI, let alone HDMI.  One motherboard stood out from the rest, the <a href="http://www.legitreviews.com/article/1213/1/">Asrock A330ION</a>.  Yes it’s the old Atom 330, but it allowed the faster DDR3 RAM, and the specification of the motherboard was fantastic, including:</p>

<ul>
  <li>2 x DDR3 DIMM slots (up to 4GB)</li>
  <li>Integrated NVIDIA® GeForce 9 Series</li>
  <li>DVI and HDMI</li>
  <li>7.1 channel HD Audio</li>
  <li>Gigabit LAN</li>
  <li>1 x PCI Express 2.0 x16 slot</li>
  <li>4 x SATAII 3.0 Gb/s connectors + 2 e-SATA</li>
  <li>4 rear USB plus support for upto 4 front USB</li>
</ul>

<p>That feature set is almost unbelievable, (4+2 SATA!! 4+4 USB!! DDR3!!!) by the time I had read the specification, I barely cared about the price.</p>

<p>I also bought 2gb of compatible DDR3 RAM.</p>

<h2 id="dvb-t-tuner">DVB-T Tuner</h2>

<p><img src="https://chrisjrob.com/assets/hvr2200_board_s_200.jpg" alt="HVR-2200" /></p>

<p>Well, as I said in my last post, we need to have DVB-T, and of course I have my Hauppauge Nova-T500 PCI card.  Ah, but I have just bought a motherboard that only has PCI-Express; so a new card is required.  I do hope my wife isn’t reading this.  Anyway, I like Hauppauge products, and the <a href="http://www.hauppauge.co.uk/site/products/data_hvr2200mc.html">HVR-2200</a> is the obvious PCI-Express low profile dual DVB-T tuner card.  No decision to make really, other than should I pay twice the amount for the HVR-4400, which has satellite capability, err no, have to draw the line somewhere ;).</p>

<h2 id="hard-drives">Hard Drives</h2>

<p>Well, we’re making a lower power device, so we need low-power drives.  Two were recommended to me, the Seagate Barracuda LP Series and the Western Digital Caviar Green Series.  Starting to get rather concerned about the money I have been spending, I decided to opt for a relatively low capacity of 500gb, but to go for two drives, so that I could configure a RAID1 array.  For those that don’t know, a RAID1 array means that you have the same data on both drives, so that if you lose one drive, you don’t lose your data.  In short, your data is mirrored to the two drives.  This doesn’t replace backups, but it certainly saves a headache if you lose one of your drives.</p>

<p>It was suggested to me that I should use a <code class="language-plaintext highlighter-rouge">NAS</code> for storage, but I don’t particularly want two machines on almost permanently.  I already have an Icybox NAS, which I have stopped using after it ate two drives; so I don’t trust it and I don’t particularly want it.  We’ll probably configure our HTPC to behave as a NAS as well as an HTPC.</p>

<ul>
  <li><a href="http://www.dabs.com/products/western-digital-500gb-caviar-green-32mb-sata-69T6.html">Western Digital 500GB Caviar Green 32MB SATA 69T6</a></li>
</ul>

<h2 id="conclusion">Conclusion</h2>

<p>All the hardware is now ordered, with the exception of the PSU, as I have one in my stores somewhere, hopefully it will be compatible!  More tomorrow, when hopefully I will be starting the build.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Home Theatre PC</title>
      <link>https://chrisjrob.com/2010/05/06/home-theatre-pc/</link>
      <pubDate>Thu, 06 May 2010 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2010/05/06/home-theatre-pc</guid>
      <description>
       <![CDATA[
         
         <p>We bought our current media centre in 2003, choosing Microsoft Windows XP Media Center Edition (XPMCE).  This was a disaster.  If it was an open source application, then I would say that the first edition of XPMCE was worse than Alpha quality, being utterly unusable.  We upgraded to 2004 at the first opportunity, it was marginally better, possibly Alpha quality.  At last we upgraded to 2005, and we had a barely usable system, Beta quality I would say.  It still crashed regularly, but it no longer lost all our channel set-up every day or two.</p>

<p>Those that say that Linux is free if your time is free have never spent evening after evening setting up XPMCE.</p>

<!--more-->

<p>In 2008 we <a href="/2009/03/01/mythbuntu/">upgraded to Mythbuntu 8.10</a>.  My wife was easy to persuade, simply because she could not see how Linux could possibly be worse than Microsoft Windows XP Media Center Edition.  And so it proved, it wasn’t perfect by any means, but it was just good enough that we never regretted the change.</p>

<p>Conventional wisdom is that, if you have a working MythTV system, then you should leave it well alone; but I decided that I wanted to move to KDE from the standard XFCE.  It was only after the installation was well under-way that I realised that this meant KDE 4.1, which was an unusable version.  Kicking myself for such stupidity, I quickly upgraded to 9.04 and 9.10.  Both upgrades went almost flawlessly, and the system has been pretty good ever since.</p>

<p>Unfortunately we’ve come to hate the Evesham emedia station that runs our MythTV.  I stupidly bought four PCs from Evesham and have always regretted it.  Evesham have a good reputation, but my experience is that the hardware is very poor indeed.  Specifically it has always been very noisy and suffered from overheating.  In addition we have issues with USB support on this PC in Ubuntu.  Something to do with OHCI, UCHI etc, I forget what exactly.  It’s also ugly as sin.  In short it was not a good buy and we have always regretted it.</p>

<p>If you’re interested you can <a href="http://www.pcpro.co.uk/reviews/desktops/48993/evesham-emedia">read a review on this god-awful PC</a>. Having read this very positive review, I can only assume that Evesham reduced the component quality significantly by the time I bought this machine.</p>

<p>So we’ve decided to replace our media centre.  I have considered XBMC and Boxee, but with such a poor Internet connection, we really do still need to get our TV via our aerial.  And that means MythTV, as far as I know.</p>

<p>I considered buying an Acer Revo, but a huge prejudice against Acer put me off this decision (oh god, not Acer, not ever).  I did not consider for a second buying a dedicated XP MCE machine and putting MythTV onto it - we’ve experienced what can go wrong first hand - and I wanted 100% control over the components.</p>

<p>So what are we looking for in our new media centre (or Home Theatre PC as the jargon now has it!)?</p>

<ul>
  <li>Low power</li>
  <li>Silent</li>
  <li>Powerful enough to run KDE fully</li>
  <li>DVI and HDMI interfaces</li>
  <li>Decent on-board sound</li>
  <li>Plenty of USB slots</li>
  <li>Needs to visually go with our HiFi amp and Blu-Ray player</li>
  <li>Powerful enough graphics to support 1080p (or 720p if not possible)</li>
</ul>

<p><a href="/2010/05/07/home-theatre-pc-the-hardware/">In my next post</a> I will run through the hardware I’ve chosen.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Howto | Make a Linux USB Key</title>
      <link>https://chrisjrob.com/2010/04/30/make-a-linux-usb-key/</link>
      <pubDate>Fri, 30 Apr 2010 11:59:28 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2010/04/30/make-a-linux-usb-key</guid>
      <description>
       <![CDATA[
         
         <p>Despite all the fantastic tools around, making a Linux USB key seems to be inconsistent.  Modern hardware seems to be fairly good, but older hardware may need fat 16 or fat 32 or superfloppy format.  The eee pc 701 for example seemed to need superfloppy format to work.</p>

<!--more-->

<h2 id="the-shortcut">The Shortcut</h2>

<p>Try erasing the contents of your USB key, then skipping down to Install Unetbootin below.  You could be lucky, and save yourself some fiddling about!</p>

<h2 id="step-1-make-sure-that-your-usb-key-is-unmounted">Step 1: Make sure that your USB key is unmounted</h2>

<p>Open a terminal and type:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ mount
</code></pre></div></div>

<p>This will list your current mounts, including your USB key (if mounted).  Take a note of the mount point (e.g. <code class="language-plaintext highlighter-rouge">/media/disk</code>) and type:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo umount /media/disk
</code></pre></div></div>

<p>Once you are confident that the drive is not mounted, you may proceed.</p>

<h2 id="step-2-determine-the-device">Step 2: Determine the device</h2>

<p>Find you USB key by typing:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo fdisk -l

Disk /dev/sdc: 64 MB, 64487424 bytes
4 heads, 32 sectors/track, 984 cylinders
Units = cylinders of 128 * 512 = 65536 bytes
Disk identifier: 0x5187ef1e

Device Boot      Start         End      Blocks   Id  System
/dev/sdc1   *           1         983       62896    6  FAT16
</code></pre></div></div>

<h2 id="step-3-delete-the-old-partitions">Step 3: Delete the old partitions</h2>

<p><strong>This will lose any data on this drive!!!</strong></p>

<p>Ignore the number after the letter, so in the above example the device is <code class="language-plaintext highlighter-rouge">/dev/sdc</code>, not <code class="language-plaintext highlighter-rouge">/dev/sdc1</code>; the 1 is partition 1, but fdisk works on the whole drive, not just a single partition.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo fdisk /dev/sdX
</code></pre></div></div>

<p>Command (m for help):</p>

<ul>
  <li>Type “p” and enter to view the existing partitions (generally only one)</li>
  <li>Type “d” and enter to delete the partition (if there are multiple partitions, you may need to enter 1 for the first)</li>
  <li>Type “p” to view the remaining partitions (there should not be any!)</li>
</ul>

<p>At this point, nothing has <em>really</em> happened, you can “q” to quit and nothing will have been touched.</p>

<h2 id="step-4-create-the-new-partition">Step 4: Create the new partition</h2>

<ul>
  <li>Type “n” to make a new partition</li>
  <li>Type “p” to make this partition primary and press enter</li>
  <li>Type “1” (one) to make this the first partition and then press enter</li>
  <li>Press [enter] to accept the default first cylinder</li>
  <li>Press [enter] again to accept the default last cylinder</li>
  <li>Type “p” to view what you have done</li>
</ul>

<p>This should display the current configuration of your drive:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Disk /dev/sdc: 64 MB, 64487424 bytes
4 heads, 32 sectors/track, 984 cylinders
Units = cylinders of 128 * 512 = 65536 bytes
Disk identifier: 0x5187ef1e

Device Boot      Start         End      Blocks   Id  System
/dev/sdc1               1         984       62960   83  Linux
</code></pre></div></div>

<h2 id="step-5-change-partition-to-w95-fat32">Step 5: Change partition to W95 Fat32</h2>

<ul>
  <li>Type “t” to change type</li>
  <li>Type “b” for Win95 Fat32</li>
  <li>Type “p” to view what you have done</li>
</ul>

<h2 id="step-6-make-partition-bootable">Step 6: Make partition bootable</h2>

<ul>
  <li>Type “a” to add bootable flag</li>
  <li>Type “1” (one) to select first partition</li>
  <li>Type “p” to view what you have done</li>
</ul>

<h2 id="step-7-write-partition-changes">Step 7: Write partition changes</h2>

<p>Up to this point, nothing has actually been changed; if you are happy with the changes you have made, then:</p>

<ul>
  <li>Type “w” to write the new partition information to the USB key</li>
</ul>

<h2 id="step-8-format-the-partition">Step 8: Format the partition</h2>

<p>The final step is to create the fat filesystem:</p>

<p><strong>Note that this time we DO quote the partition number</strong></p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo mkfs.vfat -F 32 /dev/sdx1
</code></pre></div></div>

<p>This process ends by sync’ing the disk.</p>

<h2 id="step-9-mount-the-usb-key">Step 9: Mount the USB key</h2>

<p>For most systems, this can be easily achieved by simply unplugging and replugging in the key, and taking option to Mount when prompted.  Equally you can mount manually by typing:</p>

<p><strong>Change “mountpoint” below for an appropriate name</strong></p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo mkdir /mnt/mountpoint
$ sudo mount /dev/sdx1 /mnt/mountpoint
</code></pre></div></div>

<h2 id="step-9-install-unetbootin">Step 9: Install Unetbootin</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo aptitude install unetbootin
</code></pre></div></div>

<h2 id="step-10-use-unetbootin">Step 10: Use Unetbootin</h2>

<p><img src="/assets/unetbooting_350.gif" class="image-right" /></p>

<p>Run Unetbootin from your menu, either select a distribution and version, or take the option to install an already downloaded disk image.</p>

<p>Next select the usb drive.</p>

<p>Given the tiny size of my USB key, I am using slitaz, which is a minimal distribution.</p>

<p><strong>Have a look at the contents of the USB drive, in at least one test, unetbootin had only copied a single file across.  Just run unetbooting again if that happens.</strong></p>

<h2 id="step-11-reboot-and-test">Step 11: Reboot and Test</h2>

<p>That’s it, you should now be able to reboot onto the drive.</p>

<h2 id="step-12-troubleshooting">Step 12: Troubleshooting</h2>

<p>My first attempt was using FAT32, which did not work.  Next I tried FAT16, which also did not work, then I tried EXT2, by change partition type to “83 Linux” and then typing the following command (replacing the “x” for your correct drive letter):</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo mkfs.ext2 /dev/sdx1
</code></pre></div></div>

<p>This time the USB key was detected as USB-HDD and booted perfectly.  It does seem that everyone’s has different experiences, and there is an element of trial and error to get things working.</p>

<p>If you have a usb key over 512mb and are using FAT32, then you might try reducing the size of the partition to 512k, and create a second partition with the remaining space.</p>

<p>See Alternative Methods for other options.</p>

<h2 id="step-13-superfloppy">Step 13: Superfloppy</h2>

<p>I understand that the problem with USB booting, is that many BIOS’s understand the superfloppy format - i.e. a formatted but unpartitioned drive.  This is easy enough to create under Linux, simply delete the partitions in fdisk and format with:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># mkdosfs -I /dev/sdx
</code></pre></div></div>

<p>or possibly on older hardware:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># mkdosfs -v -F 16 -I /dev/sdx
</code></pre></div></div>

<p>The problem is that superfloppies will not be auto-mounted under Linux, with the result that Unetbootin cannot write to them.  But you can mount superfloppies manually:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ cd /media
$ sudo mkdir sdx
$ sudo mount /dev/sdx sdx
</code></pre></div></div>

<p>Then use unetbooting to write to /dev/sdx, and not forgetting to umount afterwards:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo sync
$ sudo umount sdx
</code></pre></div></div>

<h2 id="alternative-methods">Alternative Methods</h2>

<p>Some distributions offer their own USB key creation software, including Ubuntu 8.10+, PuppyLinux 4.10+, and Slitaz, to name but a few.</p>

<p>Also, it is possible to obtain disk images that can be written to a usb key directly, thus circumventing these problems.  For example:</p>

<ul>
  <li><a href="http://wiki.debian.org/DebianEeePC/HowTo/Install">Debian Installer</a></li>
  <li><a href="http://wiki.debian.org/DebianEeePC/Live">Debian Live</a></li>
</ul>

<h2 id="references">References</h2>

<ul>
  <li><a href="http://www.ubuntu-eee.com/wiki/index.php5?title=Install:_from_a_Live_Ubuntu_image_on_a_USB_stick">Install a Live Ubuntu image on a USB stick</a></li>
  <li><a href="http://www.pendrivelinux.com/">PenDriveLinux</a></li>
  <li><a href="http://d-i.pascal.at/">Installing Debian Sarge from a USB memory stick</a></li>
  <li><a href="http://wiki.debian.org/BootUsb">Debian Wiki USB Boot</a></li>
  <li><a href="http://wiki.debian.org/DebianEeePC/HowTo/Install">Debian EeePC Install</a></li>
</ul>


       ]]>
      </description>
    </item>
    
    <item>
      <title>LTSP | LTSP5 Troubleshooting</title>
      <link>https://chrisjrob.com/2010/04/21/ltsp5-troubleshooting/</link>
      <pubDate>Wed, 21 Apr 2010 08:16:24 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2010/04/21/ltsp5-troubleshooting</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/ltsp_logo.png" align="right" alt="Featured Image">
         
         <h2 id="job-control-turned-off-nbd0-not-found">Job control turned off nbd0 not found</h2>

<p><strong>These instructions do not apply for Ubuntu.</strong></p>

<p>If you receive an error message stating initramfs “job control turned off”, then look further up for a line stating that <code class="language-plaintext highlighter-rouge">/path/to/nbd0</code> not found.  If you’re on Debian then this is an indication that the client is trying to boot via NBD instead of NFS.  Check the following:</p>

<p>Firstly, see if there is a directory <code class="language-plaintext highlighter-rouge">/opt/ltsp/i386/images</code>, this is the default directory for the ltsp-update-image generated unionfs files.  If it exists you should probably delete it, reboot the client and all may be well.</p>

<!--more-->

<p>If not, then on the server, use the chroot command to maintain the LTSP chroot:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo chroot /opt/ltsp/i386
</code></pre></div></div>

<p>Now edit <code class="language-plaintext highlighter-rouge">/etc/default/ltsp-client-setup</code> and change the value of the <code class="language-plaintext highlighter-rouge">root_write_method</code> variable to use <code class="language-plaintext highlighter-rouge">bind mounts</code> instead of <code class="language-plaintext highlighter-rouge">unionfs</code>, it should look like this afterwards:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>root_write_method="bind_mounts"
</code></pre></div></div>

<p>Next, create the file <code class="language-plaintext highlighter-rouge">/etc/initramfs-tools/conf.d/ltsp</code> and add the following line (set the value of the BOOT variable to nfs):</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>BOOT=nfs
</code></pre></div></div>

<p>Regenerate the initramfs:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>update-initramfs -u
</code></pre></div></div>

<p>Hit CTRL-D to exit the chroot now. Make sure LTSP uses the new initramfs to boot:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo ltsp-update-kernels
</code></pre></div></div>

<h2 id="clients-cannot-login-via-ldm">Clients cannot login via LDM</h2>

<p>If your clients get to the LDM login page, but none of them can login, and particularly if you are aware of recent updates affecting ssh, then:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo ltsp-update-sshkeys
$ sudo ltsp-update-image  (skip this for debian*)
</code></pre></div></div>

<p>*It is important that you do not ltsp-update-image for debian (unless you have moved to nbd in which case you presumably know what you are doing), if you do, then you are likely to find that the client will attempt to boot from the generated image.</p>

<p>See https://bugs.launchpad.net/ubuntu/+source/ltsp/+bug/144296  for more details (which may not be relevant for Debian).</p>

<h2 id="no-client-sound">No client sound</h2>

<p>See <a href="/2009/05/06/ltsp5-sound-client/">LTSP5 Client Sound</a>.</p>

<h2 id="display-problems">Display Problems</h2>

<p>See <a href="/2010/07/06/ltsp5-display-troubleshooting/">LTSP5 Display Troubleshooting</a>.</p>

<h2 id="client-has-loud-hissing-noise">Client has loud hissing noise</h2>

<p>The microphone has likely been activated by default.  With normal PCs the user fixes the problem once and that fix it remembered, with LTSP the problem repeats on every boot.  The solution is to mute the microphone on every boot.  To achieve this we need to login to the client shell and run “alsamixer” to mute the microphone.  Silence, ah bliss.  Take a note of the name of the microphone audio channel.  The amixer program is also very helpful - see <a href="/2009/05/06/ltsp5-sound-client/">LTSP5 Client Sound</a> for details of how to use this.</p>

<p>Next set the volume on this channel in lts.conf:</p>

<p>Volume parameters take the form of:</p>

<p><code class="language-plaintext highlighter-rouge">"channel_name"_VOLUME</code>, where “channel_name” is the name of the audio channel (you can find audio channel names by running alsamixer or “amixer -c0 scontrols” at a client shell) with unfriendly variable characters replaced or removed. In other words, forward slashes, hyphens, and spaces are replaced by underscores, and anything in parentheses is dropped completely.</p>

<p>So, if you have a channel called “Front Mic”, then FRONT_MIC_VOLUME should already work with no need for special scripts.</p>

<p>Thanks to Gadi for explaining this on the LTSP mailing list.</p>

<h2 id="ldm-only-prompts-for-password-on-login-failure">LDM only prompts for password on login failure</h2>

<p>Login window asks for Username and then Password.  But, if you enter the username incorrectly then it says “Password incorrect. Try again.”.  Of course, no password will work because the username is wrong.</p>

<p>Edit <code class="language-plaintext highlighter-rouge">/opt/ltsp/i386/etc/ssh/ssh_config</code> and add this line to the bottom:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>NumberOfPasswordPrompts 1
</code></pre></div></div>

<p>Then for Ubuntu or NBD setups (not Debian) run:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo ltsp-update-image
</code></pre></div></div>

<p>Then reboot your thin client.</p>

<p>Credit to Gavin McCullagh from the Edubuntu mailing list for this workaround (<a href="https://lists.ubuntu.com/archives/edubuntu-users/2007-November/002636.html">read more</a>).</p>

<h2 id="ldm-password-expiry-loop">LDM password expiry loop</h2>

<p>There is an odd loop that arises with the LDM password expiry process:</p>

<ul>
  <li>User enters username and hits enter</li>
  <li>User enters password and hits enter</li>
  <li>LDM tells user password has expired enter new password</li>
  <li>User enters new password and hits enter</li>
  <li>LDM tells user to verify password</li>
  <li>User enters new password again and hits enter</li>
</ul>

<p>It seems that after this process it always returns “No response from server”, and usually logging in with your the password will work just fine.  Unfortunately the error leads people to think that the password change has failed and they seem unable to resolve the problem.</p>

<p>But on other occasions, typing the new password does not work, but it is possible that the operator set the password incorrectly.</p>

<p>If there is a bug, it may be related to the following thread:</p>

<ul>
  <li><a href="http://marc.info/?t=121069447400001&amp;r=1&amp;w=2">ldm problems with debian etch</a></li>
</ul>

<h2 id="ldm-login-screen-shows-white-background">LDM login screen shows white background</h2>

<p>In Debian Etch, the LDM login screen shows a white background with an ugly LTSP logo in the middle.  Actually the background is a light grey, but people describe it as white.  The LTSP logo was not designed to work with a light grey background, and that’s the reason it looks so ugly.  This problem has been fixed in Debian Lenny, and you should now upgrade from Etch.</p>

<p>No known workaround at this time, but see <a href="/ltsp/create-a-custom-ldm-theme/">How to Create a custom LDM theme</a> for details of how to change the logo, which really is the only issue with the grey background.</p>

<h2 id="ltspfs-mounts-appear-strange-when-running-df">LTSPFS mounts appear strange when running df</h2>

<p>util-linux 2.13 fixed this bug; however it is still present in etch. workaround is to make <code class="language-plaintext highlighter-rouge">/etc/mtab</code> a symlink to <code class="language-plaintext highlighter-rouge">/proc/mounts</code>:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># mv /etc/mtab /etc/mtab.old
# ln -s /proc/mounts /etc/mtab
</code></pre></div></div>

<h2 id="ltsp-client-hostname-displays-as-none">LTSP client hostname displays as (none)</h2>

<p>Workaround set up dns on the thin-client network, or:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># mv /etc/mtab /etc/mtab.old
# ln -s /proc/mounts /etc/mtab
</code></pre></div></div>

<h2 id="ldm-support-for-mostly-insecure-logins-ldm_directx">LDM support for mostly insecure logins (LDM_DIRECTX)</h2>

<p>Requires getting /root to be writeable:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># echo 'copy_dirs="$copy_dirs /root"' &gt;&gt;/opt/ltsp/i386/etc/default/ltsp-client-setup
</code></pre></div></div>

<h2 id="kde-local-device-icons-on-desktop">KDE local device icons on desktop</h2>

<p>In KDE there may not be any local device icons appearing on the desktop.  If you find this to be the case, but the device does exist under <code class="language-plaintext highlighter-rouge">/media</code>, then you may need to script <code class="language-plaintext highlighter-rouge">/usr/sbin/ltspfsmounter</code> code to create symlinks on <code class="language-plaintext highlighter-rouge">~/Desktop</code>.</p>

<h2 id="x-configuration">X Configuration</h2>

<p>If X doesn’t automatically configure properly (it uses X.org’s built-in configuration, which doesn’t work as well on the version on X.org in etch), you may want to switch back to the slower but more reliable X configuration using xdebconfigurator:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># chroot /opt/ltsp/i386 apt-get install xdebconfigurator
# cp /opt/ltsp/i386/usr/share/doc/ltsp-client-core/examples/configure-x-xdebconfigurator.gz /opt/ltsp/i386/etc/
# gunzip /opt/ltsp/i386/etc/configure-x-xdebconfigurator.gz
# chmod +x /opt/ltsp/i386/etc/configure-x-xdebconfigurator
# echo CONFIGURE_X_COMMAND=/etc/configure-x-xdebconfigurator &gt;&gt; /opt/ltsp/i386/etc/lts.conf
# echo 'copy_dirs="$copy_dirs /var/cache/debconf"' &gt;&gt; /opt/ltsp/i386/etc/default/ltsp-client-setup
# echo 'temp_copy_dirs=" "' &gt;&gt; /opt/ltsp/i386/etc/default/ltsp-client-setup
</code></pre></div></div>

       ]]>
      </description>
    </item>
    
    <item>
      <title>LTSP | LTSP5 Install</title>
      <link>https://chrisjrob.com/2010/03/30/ltsp5-install/</link>
      <pubDate>Tue, 30 Mar 2010 09:55:14 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2010/03/30/ltsp5-install</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/ltsp_logo.png" align="right" alt="Featured Image">
         
         <h2 id="introduction">Introduction</h2>

<p>Time to install a new server - yay!  The hardware is an HP Proliant DL360 G5, with a single quad-core processor and 4GB ram.  This page is about creating a complete desktop server and, as such, much of this is actually nothing to do with LTSP, but is all about setting up a functional and attractive desktop server.</p>

<h2 id="server-specification">Server Specification</h2>

<!--more-->

<p>The following page, which I wrote for LTSP4.2, should largely hold true:</p>

<ul>
  <li><a href="/2010/02/15/ltsp-server-sizing/">Server Sizing</a></li>
</ul>

<h2 id="server-set-up">Server Set-up</h2>

<p>Physically install the server and plug the network into a Gigabit port on your network switch and install your disk drives and configure your RAID volume.</p>

<h2 id="debian-base-install">Debian Base Install</h2>

<p>Download the netinst ISO from Debian.  Burn the ISO to disk.  Insert the disk into the optical drive of your server and boot.  Follow the installer prompts, until you get to the section on partitioning.</p>

<h2 id="partitioning">Partitioning</h2>

<p>There is no way that I can tell you what to do here - there are just too many variables - but here is what I did:</p>

<p>In addition to the following, you will need to create a swap partition which should be roughly equal to your RAM.  Opinions do differ on this point, and if you have plenty of RAM, then you should be able to have a much smaller swap partition, perhaps only 1 GB.  For low-memory systems, you should probably create a swap partition that is much larger than your RAM, but expect the performance to suffer as a result!  Server based systems should be given adequate RAM, and the swap should really only be used occasionally.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/cciss/c0d0p5       885436    150672    689784  18% /
/dev/cciss/c0d0p1        85528     28829     52283  36% /boot
/dev/cciss/c0d0p2        85549      5664     75468   7% /rescue
/dev/cciss/c0d0p6     48062440    184344  45436620   1% /home
/dev/cciss/c0d0p7     48062440    184324  45436640   1% /opt
/dev/cciss/c0d0p8     28834716    176200  27193792   1% /srv
/dev/cciss/c0d0p11     2529920     69384   2332020   3% /tmp
/dev/cciss/c0d0p9      6728280    293660   6092840   5% /usr
/dev/cciss/c0d0p10     2885780    256356   2482836  10% /var
</code></pre></div></div>

<p>With an LTSP system it is sensible to have a separate <code class="language-plaintext highlighter-rouge">/opt</code> partition; it doesn’t need to be as large as this, but I choose to use <code class="language-plaintext highlighter-rouge">/opt</code> for my virtual machines, 10GB should be adequate.  On servers it is sensible to have separate <code class="language-plaintext highlighter-rouge">/usr</code>, <code class="language-plaintext highlighter-rouge">/var</code> and <code class="language-plaintext highlighter-rouge">/tmp</code> file systems.  The <code class="language-plaintext highlighter-rouge">/srv</code> is simply going to be for shared documents - so your requirements may be different - perhaps you have a NAS for that purpose.  A separate <code class="language-plaintext highlighter-rouge">/home</code> is recommended for all systems.  The <code class="language-plaintext highlighter-rouge">/tmp</code> partition here is HUGE, this is because I will be installing a virtualised Windows server using KVM in snapshot mode, which uses <code class="language-plaintext highlighter-rouge">/tmp</code> for working files; you should be able to get away with 0.5GB.  Lastly the <code class="language-plaintext highlighter-rouge">/rescue</code> partition is optional, it should be a mirrored copy of <code class="language-plaintext highlighter-rouge">/boot</code> and then should be removed from <code class="language-plaintext highlighter-rouge">/etc/fstab</code>, as a rescue partition.</p>

<h2 id="installing-debian">Installing Debian</h2>

<p>My personal preference is to install a base system only, unchecking even the “Standard system” when prompted.  This leaves you with a perfectly working system on which to build your LTSP server.  Follow the prompts to remove the install CD and reboot.</p>

<h2 id="install-openssh-server-and-screen">Install OpenSSH Server and Screen</h2>

<p>These packages make it easy to remotely administer your server, openssh creates the connection, screen enables you to use multiple terminals and to disconnect and reconnect to each (<a href="http://www.kuro5hin.org/story/2004/3/9/16838/14935">Simple Tutorial</a>).  Screen is optional but recommended, this tutorial will make no further mention of it, you should just use it as appropriate, or if you don’t wish to use it, simply remove it from the following command.</p>

<p>Log into the server as root and install openssh:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># apt-get install openssh-server screen
</code></pre></div></div>

<p>You may need to create some static routes in <code class="language-plaintext highlighter-rouge">/etc/network/interfaces</code>, depending from where you will be ssh’ing.</p>

<p>Return to the comfort of your workstation and ssh into the server in the usual way (this isn’t a tutorial on ssh!).</p>

<h2 id="install-k-desktop-environment-kde">Install K Desktop Environment (KDE)</h2>

<p>We use KDE, so these instructions are specific to KDE; however you can simply change the install command below according to the desktop environment that you prefer.</p>

<p>N.B. Note that I am installing the minimum software, if you prefer to have KDE in total, then just install <code class="language-plaintext highlighter-rouge">kde-desktop</code> instead of <code class="language-plaintext highlighter-rouge">kde-core kdm</code>.</p>

<p>N.B. Change <code class="language-plaintext highlighter-rouge">kde-i18n-engbi</code> for the correct package for your language.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># apt-get install kde-core kdm kde-i18n-engb
</code></pre></div></div>

<p>N.B. Even installing a base KDE will result in a large number of packages being downloaded, go get yourself a cup of coffee.</p>

<h2 id="reboot">Reboot</h2>

<p>Now reboot the server, and ensure that you get a graphical login on the console.</p>

<h2 id="install-ltsp">Install LTSP</h2>

<p>N.B. Please read the <a href="http://wiki.debian.org/LTSP/Howto">Debian LTSP Howto</a> before continuing.</p>

<p>N.B. Please note that there are now <a href="http://wiki.debian.org/LTSP/Howto/Lenny-With-Backports">lenny-backports</a> available.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># apt-get install ltsp-server-standalone
</code></pre></div></div>

<p>You can safely ignore the error message about DHCP server not being “authoritative”, and don’t worry that your DHCP server doesn’t start - you need to configure it before it will start cleanly.</p>

<h2 id="build-ltsp-client">Build LTSP Client</h2>

<p>N.B. Please note that there are now <a href="http://wiki.debian.org/LTSP/Howto/Lenny-With-Backports">lenny-backports</a> available.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ ltsp-build-client
</code></pre></div></div>

<p>The <a href="/2010/03/30/ltsp-build-client/">ltsp-build-client</a> command will download a complete Debian filesystem into <code class="language-plaintext highlighter-rouge">/opt/ltsp/i386</code> (or specify an alternate location with ‘–base’) and install the ltsp-client and ldm packages (the LTSP Display Manager).</p>

<p>N.B. If you change the IP data after you have done the initial setup and run <a href="/2010/03/30/ltsp-update-ssh-keys/">ltsp-update-sshkeys</a> on the server.</p>

<p>N.B. The files the client will boot are installed on the server into <code class="language-plaintext highlighter-rouge">/var/lib/tftpboot</code>, unlike LTSP4.2 which installed in <code class="language-plaintext highlighter-rouge">/tftpboot</code>.</p>

<h2 id="set-up-nfs-share">Set-up NFS Share</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ nano /etc/exports
/opt/ltsp       *(ro,no_root_squash,async,no_subtree_check)
$ invoke-rc.d nfs-kernel-server reload
</code></pre></div></div>

<p>The 2 ltsp configuration files inside the client are <code class="language-plaintext highlighter-rouge">/etc/lts.conf</code> and <code class="language-plaintext highlighter-rouge">/etc/default/ltsp-client-setup</code>. See the examples in <code class="language-plaintext highlighter-rouge">/usr/share/doc/ltsp-client*</code>. Also see the <a href="http://doc.ubuntu.com/edubuntu/edubuntu/handbook/C/customizing-thin-client.html">Edubuntu wiki</a>.</p>

<h2 id="configure-dhcp-server">Configure DHCP Server</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># cp /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.conf.lenny
# cp /etc/ltsp/dhcpd.conf /etc/dhcp3/
# nano /etc/dhcp3/dhcpd.conf
</code></pre></div></div>

<p>Edit <code class="language-plaintext highlighter-rouge">/etc/dhcp3/dhcpd.conf</code>, updating the IP addresses according for your network.</p>

<h2 id="test-client-boot">Test Client Boot</h2>

<p>Now is the time to test that your client is booting okay.</p>

<h2 id="audio-set-up">Audio Set-up</h2>

<p>Next we need to set-up the audio, and to that end please follow the instructions on our LTSP5 Sound page:</p>

<ul>
  <li><a href="/2009/04/30/ltsp5-sound/">LTSP5 Sound</a></li>
</ul>

<h2 id="local-devices-set-up">Local Devices Set-up</h2>

<p>Next we need to set-up local devices, and to that end please follow the instructions on our LTSP5 Local Devices page:</p>

<ul>
  <li><a href="/2010/11/19/ltsp5-local-devices/">LTSP5 Local Devices</a></li>
</ul>

<h2 id="optional---installing-freenx">Optional - Installing FreeNX</h2>

<p>If you wish to be able to remotely support your server with a GUI, then you may like to install freeNX:</p>

<ul>
  <li><a href="/howto/install-freenx/">Install FreeNX</a></li>
</ul>

<p>Then visit the NoMachine website and download the client for your PC.</p>

<h2 id="optional---kde-style-changes">Optional - KDE Style Changes</h2>

<p>N.B. These instructions will increase server load, but do make KDE look a great deal more attractive - your choice.</p>

<p>I apologise in advance for this section; I know that “Bling” has no place on a server, but equally I know that getting Linux adopted in your workplace is tough, and a little bling goes a long way towards user acceptance.  Unfortunately these changes WILL increase the load on the server, if you are not happy with this, then simply skip this section.</p>

<h3 id="crystal-windows-decoration">Crystal Windows Decoration</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># apt-get install kwin-style-crystal
</code></pre></div></div>

<p>Go to the KDE Control Panel, Appearance &amp; Themes and change the Windows Decorations to Crystal.  Then, under the General tab, make the top corners rounded, and increase the titlebar size to 21.  Under the Buttons tab, change the buttons to Kubuntu-Edgy.  Under the Background tab, I suggest you switch off transparency, which will but an unnecessary load on the server.  Under the Overlay tab, change both active and inactive to Simple Lighting.</p>

<h3 id="nuovext">NuoveXT</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># apt-get install kde-icons-nuovext
</code></pre></div></div>

<p>Go to the KDE Control Panel, Appearance &amp; Themes and change the Icons to nuoveXT.  Under the Advanced tab you may like to increase the Desktop icon size to 48, which suits these icons.</p>

<h3 id="desktop-background">Desktop Background</h3>

<p>I believe one of the most attractive backgrounds is a simple two colour elliptic gradient.  To achieve this, simply go to KDE Control Panel, Appearance &amp; Themes, Background. Change the Background picture to “No Picture” and set colours to Elliptic Gradient.  You can choose any two colours, but these two look good:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>#2E3B4E
#7698CA
</code></pre></div></div>

<p>Other colours may not go well with the rest of my suggested changes.</p>

<h3 id="panel">Panel</h3>

<p>The default panel doesn’t look that great, you can download any number of Kicker Wallpapers from KDE Look, but one that I think looks very good is this one:</p>

<ul>
  <li><a href="http://www.kde-look.org/content/show.php/Apple-like+kickers+background?content=88147">Apple-like Kicker Wallpaper</a></li>
</ul>

<p>It looks plain on that page, but much better in KDE.</p>

<h2 id="add-debian-multimedia-repository">Add Debian Multimedia Repository</h2>

<p>The Debian Multimedia is a useful resource for multimedia codecs, converters and players.  In particularly it includes Adobe Flash Player.  This is not an official repository, although it is a very common one.  I have decided to take the risk of installing this software on my system, you may not agree!</p>

<p>Edit <code class="language-plaintext highlighter-rouge">/etc/apt/sources.list</code> and add the following repository:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>deb http://www.debian-multimedia.org lenny main
</code></pre></div></div>

<p>Download and install the following:</p>

<ul>
  <li><a href="http://www.debian-multimedia.org/pool/main/d/debian-multimedia-keyring/debian-multimedia-keyring_2008.10.16_all.deb">debian-multimedia.org keyring</a></li>
</ul>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># dpkg -i debian-multimedia-keyring_2008.10.16_all.deb
# aptitude update
</code></pre></div></div>

<h2 id="optional---iceweasel">Optional - Iceweasel</h2>

<p>In my opinion, Konqueror, whilst an amazing piece of software, is not going to be suitable as your main web-browser.  Mozilla Firefox is the answer, and this is available in the Lenny repositories, named “Iceweasel”.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># apt-get install iceweasel icedtea-gcjwebplugin flashplayer-mozilla mozilla-acroread mozilla-mplayer
</code></pre></div></div>

<p>Unfortunately, being a GTK application (not native to KDE) it looks ghastly, so…</p>

<h2 id="optional---gtk-applications-in-kde">Optional - GTK Applications in KDE</h2>

<p>GTK applications in KDE always look horrible. In Kubuntu this is taken care of for you, but in Debian it is only a quick install away:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># apt-get install gtk-qt-engine
</code></pre></div></div>

<p>There are other ways of achieving this, e.g. qtcurve, but for me this seems perfectly satisfactory. Having installed, you visit your control panel and you will find a new option under “Appearance &amp; Themes” called “GTK Styles and Fonts” change this to use your KDE style for your GTK applications, and restart KDE.</p>

<h2 id="optional---other-applications">Optional - Other Applications</h2>

<p>Applications you might consider installing for your users are:</p>

<ul>
  <li><strong>KUser</strong> : <code class="language-plaintext highlighter-rouge">apt-get install kuser</code></li>
  <li><strong>The Gimp</strong> : <code class="language-plaintext highlighter-rouge">apt-get install gimp gimp-help-en gimp-data-extras</code></li>
  <li><strong>Inkscape</strong> : <code class="language-plaintext highlighter-rouge">apt-get install inkscape</code></li>
  <li><strong>Scribus</strong> : <code class="language-plaintext highlighter-rouge">apt-get install scribus-ng scribus-ng-doc scribus-template</code> (Development branch, but more up-to-date than “scribus”)</li>
  <li><strong>OpenOffice</strong> : <code class="language-plaintext highlighter-rouge">apt-get install openoffice.org-kde openoffice.org-help-en-gb openoffice.org-l10n-en-gb openclipart-openoffice.org</code></li>
  <li><strong>Freemind</strong> : <code class="language-plaintext highlighter-rouge">apt-get install freemind</code></li>
  <li><strong>KCalc</strong> : <code class="language-plaintext highlighter-rouge">apt-get install kcalc</code></li>
  <li><strong>Microsoft Fonts</strong> : <code class="language-plaintext highlighter-rouge">apt-get install ttf-mscorefonts-installer</code></li>
  <li><strong>KeePassX</strong> : <code class="language-plaintext highlighter-rouge">apt-get install keepassx</code></li>
  <li><strong>Unison</strong> : <code class="language-plaintext highlighter-rouge">apt-get install unison unison-gtk</code></li>
  <li><strong>Wine</strong> : <code class="language-plaintext highlighter-rouge">apt-get install wine wine-utils</code></li>
  <li><strong>Kontact</strong> : <code class="language-plaintext highlighter-rouge">apt-get install kontact</code></li>
  <li><strong>Ark</strong> : <code class="language-plaintext highlighter-rouge">apt-get install ark</code></li>
  <li><strong>Dia</strong> : <code class="language-plaintext highlighter-rouge">apt-get install dia</code></li>
</ul>

<h2 id="optional---install-kvm-virtualisation">Optional - Install KVM Virtualisation</h2>

<p>If you intend adding a virtualised Windows server on top of the LTSP server (not recommended - but we do it and it works well), then you need KVM (or an alternative) installed:</p>

<p>N.B. I suggest you right-click on the following link and Open in New Tab, so that you don’t lose your place in this document.</p>

<ul>
  <li><a href="/howto/install-kvm/">How to install KVM</a></li>
</ul>

<h2 id="optional---umask">Optional - UMask</h2>

<p>I dislike that every created file is given read access to all users, to change this behaviour we need to change <code class="language-plaintext highlighter-rouge">umask</code>.  In KDE the easiest way to achieve this system wide is by editing <code class="language-plaintext highlighter-rouge">/etc/profile</code> and changing the umask line from the default line of <code class="language-plaintext highlighter-rouge">umask 022</code> to your preferred setting.  We use <code class="language-plaintext highlighter-rouge">umask 007</code>, which gives full access to the user and group, but no access to other.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Default permissions umask 022: -rw-r--r--
New permissions     umask 007: -rw-rw----
</code></pre></div></div>

<p>Your view may well vary from mine.</p>

<h2 id="set-client-root-password">Set Client Root Password</h2>

<p>You will almost certainly need access to the client, in order to troubleshoot:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># chroot /opt/ltsp/i386
# passwd root
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
# exit
exit
# ltsp-update-image
</code></pre></div></div>

<h2 id="references">References</h2>

<ul>
  <li><a href="http://wiki.debian.org/LTSP">Debian LTSP</a>
    <ul>
      <li><a href="http://wiki.debian.org/LTSP/Howto">Debian Lenny Howto</a></li>
      <li><a href="http://wiki.debian.org/LTSP/Howto/Lenny-With-Backports">Debian Lenny Backports Howto</a></li>
    </ul>
  </li>
  <li><a href="ftp://ftp.hp.com/pub/softlib2/software1/pubsw-linux/p1538177301/v45350/Debian-5.0-lenny-readme.pdf">HP Proliant Debian Lenny Installation Instructions by HP</a> <a href="http://h71028.www7.hp.com/enterprise/downloads/Debian-5.0-lenny-readme.pdf">Alternative link</a></li>
  <li><a href="http://www.gnu.org/software/screen/manual/screen.html">GNU Screen Manual</a>
    <ul>
      <li><a href="http://www.kuro5hin.org/story/2004/3/9/16838/14935">Simple Tutorial</a></li>
    </ul>
  </li>
  <li><a href="http://linuxmafia.com/~karsten/Linux/FAQs/partition.html">Linux Partitioning mini-FAQ</a></li>
  <li><a href="http://pkg-kde.alioth.debian.org/kde3.html">Installing KDE</a></li>
  <li><a href="http://www.debianadmin.com/how-to-install-adobe-flash-in-debian-etchlennysid.html">Installing Adobe Flash in Debian</a></li>
  <li><a href="https://help.ubuntu.com/community/ThinClientHowto">Ubuntu Thin Client Howto</a></li>
</ul>


       ]]>
      </description>
    </item>
    
    <item>
      <title>LTSP | Create a Custom LDM Theme</title>
      <link>https://chrisjrob.com/2010/03/30/ltsp-create-a-custom-ldm-theme/</link>
      <pubDate>Tue, 30 Mar 2010 09:32:32 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2010/03/30/ltsp-create-a-custom-ldm-theme</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/ltsp_logo.png" align="right" alt="Featured Image">
         
         <h2 id="paths">Paths</h2>

<p>The ldm-theme is loaded from a symlink at:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/opt/ltsp/i386/usr/share/ldm/themes/default
</code></pre></div></div>

<!--more-->

<p>Which points to further symlink at:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/opt/ltsp/i386/etc/alternatives/ldm-theme
</code></pre></div></div>

<p>Which points back to :</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/opt/ltsp/i386/usr/share/ldm/themes/ltsp
</code></pre></div></div>

<h2 id="copy-existing-theme">Copy existing theme</h2>

<p>Copy this ltsp directory, e.g.:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># cd /opt/ltsp/i386/usr/share/ldm/themes
# cp -r ltsp custom
# cd custom
# ls -al
</code></pre></div></div>

<h2 id="set-symlink-to-new-theme">Set symlink to new theme</h2>

<p>Then you need to change the symlink to point to your new theme:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># cd /opt/ltsp/i386/etc/alternatives
# rm ldm-theme
# ln -s /usr/share/ldm/themes/custom ldm-theme
</code></pre></div></div>

<h2 id="customise-your-custom-ldm-theme">Customise your custom LDM theme</h2>

<p>Now you can customise your ldm theme to your heart’s content.  Please note that editing the bg.png currently has no effect (hence the existence of this page!), but you can at least tidy up the login page by replacing the logo.png with something tidier than the current ltsp.org logo, which looks dreadful on the grey background (because of a transparency issue).</p>

<h3 id="change-background-colour">Change background colour</h3>

<p>Firstly change the background colour to your desired background colour (personally I quite like the light grey of “efebe7”), so left it like that.</p>

<p>You can change the colour of the background by opening the greeter-gtkrc in your theme and looking for the following line:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>    bg[NORMAL]        = "#efebe7"
</code></pre></div></div>

<p>Change the colour for whatever colour you wish.  Under KDE you can use the KColorChooser for this purpose, or indeed the colour picker in Gimp.</p>

<h3 id="create-new-logo">Create new logo</h3>

<p>Next open your organisation’s logo in the Gimp (or whatever logo you wish to appear on LDM login).  Add a shadow (Script4u → Shadow → Drop Shadow), I would suggest making the X/Y offsets 0/0.  You can play with the radius and opacity to create the effect you desire.</p>

<p>Next create a new layer of the same colour as the background (e.g. efebe7 unless you changed it) and put that background at the bottom of the layers.  The gimp makes this easy by enabling you to key in the efebe7 in the colour picker.</p>

<p>Save the resulting image as logo.png into your custom ldm theme.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>LTSP | LTSP Update Kernels</title>
      <link>https://chrisjrob.com/2010/03/30/ltsp-update-kernels/</link>
      <pubDate>Tue, 30 Mar 2010 09:21:30 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2010/03/30/ltsp-update-kernels</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/ltsp_logo.png" align="right" alt="Featured Image">
         
         <h2 id="command">Command</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ltsp-update-kernels
</code></pre></div></div>

<h2 id="introduction">Introduction</h2>

<p>The ltsp-update-kernels script copies it into the chroot environment and automatically updates the symlinks for the boot loader in the process.</p>

<!--more-->

<p>ltsp-update-kernels updates the current client kernel by using the current kernel from the chroot and copying it to the tftpboot directory (<code class="language-plaintext highlighter-rouge">/var/lib/tftpboot/ltsp/i386/</code>).  It also copies the initramfs across and sets up the PXE linux boot files.</p>

<p>This command must be run each time the kernel changes in the chroot.  There should be no harm in running this command each time you update the chroot, just in case.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>LTSP | LTSP Update Image</title>
      <link>https://chrisjrob.com/2010/03/30/ltsp-update-image/</link>
      <pubDate>Tue, 30 Mar 2010 09:21:11 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2010/03/30/ltsp-update-image</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/ltsp_logo.png" align="right" alt="Featured Image">
         
         <h2 id="command">Command</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ltsp-update-image
</code></pre></div></div>

<h2 id="comment">Comment</h2>

<p>For systems that use NBD (not Debian), this command will create a client image from the contents of <code class="language-plaintext highlighter-rouge">/opt/ltsp/i386</code>, and store it in <code class="language-plaintext highlighter-rouge">/opt/ltsp/i386/images</code>.</p>

<p>Any change you make in the chroot will only take effect for the clients after you run ltsp-update-image.  As such, this is the command that you will run most often.</p>

<!--more-->

<p>As Debian uses NFS, this command is not necessary, unless you have chosen to change to NBD, in which case you presumably know that you are “different”.</p>

<p>If you are on Debian and you have a directory <code class="language-plaintext highlighter-rouge">/opt/ltsp/i386/images</code>, then this is likely to mean that you have run this command by mistake.  This may trigger the clients to attempt to use NBD, so you should probably remove this directory, or explicitly tell your clients to use NFS - see LTSP5 Troubleshooting for details.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>LTSP | LTSP Build Client</title>
      <link>https://chrisjrob.com/2010/03/30/ltsp-build-client/</link>
      <pubDate>Tue, 30 Mar 2010 09:20:54 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2010/03/30/ltsp-build-client</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/ltsp_logo.png" align="right" alt="Featured Image">
         
         <h2 id="command">Command</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ltsp-build-client
</code></pre></div></div>

<h2 id="introduction">Introduction</h2>

<p>The ltsp-build-client command will download a complete Debian filesystem into <code class="language-plaintext highlighter-rouge">/opt/ltsp/i386</code> (or specify an alternate location with <code class="language-plaintext highlighter-rouge">--base</code>) and install the ltsp-client and ldm (LTSP Display Manager) packages.  As such, you will probably only run this command the first time you install LTSP5.</p>

<!--more-->

<p>You should move <code class="language-plaintext highlighter-rouge">/opt/ltsp</code> to <code class="language-plaintext highlighter-rouge">/opt/ltsp_old</code> before you start.</p>

<h2 id="man-page">Man Page</h2>

<p>You should see the man page appropriate for your system, but the Debian Lenny man page current states:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ltsp-build-client(8)                                                                                                                                                                                               ltsp-build-client(8)

NAME
    ltsp-build-client - Builds an LTSP client system for use with the LTSP server

SYNOPSIS
    ltsp-build-client  &lt;options&gt;

DESCRIPTION
    ltsp-build-client  builds  an  ltsp client chroot using standard packages for use with the ltsp server.  This chroot installation  can be modified in a number of ways as outlined in the OPTIONS section.  If present, defaults
    will be read from the configuration file /etc/ltsp/ltsp-build-client.conf, and will be overridden by using the command line options. ltsp-build-client is usually run as the root  user.   Visit  http://www.ltsp.org  for  more
    information.

OPTIONS
    Not all options are available on all installations. For a complete list of available options, use the --help and --extra-help options.

    --arch arch
                Builds a chroot with the specified architecture. Must be a supported architecture of the distribution, and compatible with the host architecture.  Defaults vary by distribution.

    --base dir
                Sets the default path for the ltsp chroots to be installed into. Defaults to /opt/ltsp/.

    --chroot file
                Sets the default name for the ltsp chroot. Defaults to the architecture selected with --arch or the running architecture.

    --conf file
                Load configuration defaults from specified file. See CONFIG FILE below for more information.

    --dist distribution
                Distribution : Sets the distribution to be installed in the client chroot.  Defaults to the running distribution.

    --extra-help
                Displays all available commandline options.

    --help    Displays the ltsp-build-client help message.

    --mirror mirror_url
                Select the mirror to download packages from. file:/// and http:// URLs are supported.

CONFIG FILE
    ltsp-build-client will read a configuration file to override built-in defaults. the default location for this configuration file is /etc/ltsp/ltsp-build-client.conf, and can be specified with the --conf commandline option.

    values are NAME="VALUE" pairs, with # representing commented lines. most commandline options have an equivalent. an example Debian based system with an alternate base location, architecture, and distribution:

        # set alternate default location for ltsp chroot (--base)
        BASE="/srv/ltsp"
        # build an amd64 chroot by default (--arch)
        ARCH="amd64"
        # build a Debian sid environment (--dist)
        DIST="sid"

SEE ALSO
    ltsp-update-sshkeys(8), ltsp-update-kernels(8).

AVAILABILITY
    ltsp-build-client is part of ltsp package and the latest versions are available in source form from https://launchpad.net/products/ltsp.

MAN PAGE AUTHOR
    Peter Savage
    updated 2006, 2009 by Vagrant Cascadian
</code></pre></div></div>

       ]]>
      </description>
    </item>
    
    <item>
      <title>LTSP | LTSP Update SSH Keys</title>
      <link>https://chrisjrob.com/2010/03/30/ltsp-update-ssh-keys/</link>
      <pubDate>Tue, 30 Mar 2010 09:20:24 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2010/03/30/ltsp-update-ssh-keys</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/ltsp_logo.png" align="right" alt="Featured Image">
         
         <h2 id="command">Command</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ltsp-update-sshkeys
</code></pre></div></div>

<h2 id="introduction">Introduction</h2>

<p>Secure Shell Handler or SSH is a network protocol that allows data to be exchanged using a secure channel between two computers.  LTSP uses it to enable secure communication between clients and the Server.  SSH uses public-key cryptography to authenticate the client, this command rebuilds the keys.</p>

<!--more-->

<p>You would run this command only at first install, or upon subsequent change of server IP addressing or DHCP or possibly hosts.  Basically if you get the “workstation not authorised” message, then you should run this command.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>LTSP | LTSP Client Upgrade</title>
      <link>https://chrisjrob.com/2010/03/06/ltsp-client-upgrade/</link>
      <pubDate>Sat, 06 Mar 2010 10:05:07 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2010/03/06/ltsp-client-upgrade</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/ltsp_logo.png" align="right" alt="Featured Image">
         
         <p>All the following commands are entered on the server.  Normally this would be having logged into your normal LTSP desktop and opened a terminal session, but it could equally be from an ssh session to the server.  The key thing is that you do not run these commands from a client shell, as the client system is read-only.</p>

<!--more-->

<p>These instructions are for Debian, Ubuntu users will also need to update the client image afterwards.</p>

<h2 id="step-by-step-process">Step by Step Process</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo chroot /opt/ltsp/i386
# mount -t proc /proc /proc
# mount -t sysfs sys /sys
# apt-get update
# apt-get upgrade
# umount sys
# umount /proc
# exit
$ sudo ltsp-update-kernels
</code></pre></div></div>

<p>The mount proc and mount sysfs commands are not always required, and can be omitted in many instances, but if in doubt I don’t believe they cause any harm.</p>

<p>The <a href="/2010/03/30/ltsp-update-kernels/">ltsp-update-kernels</a> command is only required if the client kernel has been upgraded, but again I don’t believe it causes any harm to run it unnecessarily.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Howto | Install Adempiere on Debian Lenny</title>
      <link>https://chrisjrob.com/2010/02/22/install-adempiere-on-debian-lenny/</link>
      <pubDate>Mon, 22 Feb 2010 17:28:11 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2010/02/22/install-adempiere-on-debian-lenny</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/adempiere_logo.png" align="right" alt="Featured Image">
         
         <p>I have run through these notes again and corrected the odd mistake and they do seem to work.  At least until something changes!!</p>

<p>I have not yet got the init.d script working, but am able to successfully start adempiere and reach the login page.</p>

<p>I need to review the postgresql security settings as “trust” for all is probably unsafe.</p>

<!--more-->

<p>Lastly, I am an adempiere newbie, so please take everything I say with a pinch of salt.</p>

<p>Good luck!</p>

<h2 id="install-a-debian-system">Install a Debian system</h2>

<p>Please visit Debian for guidance on how to do this.  Personally I like to install an absolutely bare system as my starting point (I even uncheck the option for “standard system”).</p>

<p>It is possible, I believe, to do a headless (non-GUI) installation, but these instructions do require a desktop environment, as some of the setup screens require a GUI.</p>

<p>For example to install a minimal KDE on a Debian base system:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># apt-get install kdm kde-core
</code></pre></div></div>

<h2 id="install-tofrodos">Install tofrodos</h2>

<p>Required for the database migration.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># apt-get install tofrodos
</code></pre></div></div>

<h2 id="install-postgresql--82">Install Postgresql &gt; 8.2</h2>

<p>Fortunately Debian includes version 8.3, so a simple apt-get should do the trick:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># apt-get install postgresql postgresql-doc oidentd
</code></pre></div></div>

<p>And a ton of dependencies will also be installed.</p>

<p>Once installed, you should have a functional postgresql database installed and running.  Debian places the database in <code class="language-plaintext highlighter-rouge">/var/lib/postgresql/version</code> the default database is named <code class="language-plaintext highlighter-rouge">main</code> and is located in <code class="language-plaintext highlighter-rouge">/var/lib/postgresql/version/main</code>. We assume in this guide that Adempiere’s database will be created in the default cluster.</p>

<h2 id="install-java">Install Java</h2>

<p>sun-java6 is the version to install, unless you are using the ajax interface in which case you can even use openjdk. To do add <code class="language-plaintext highlighter-rouge">contrib non-free</code> to <code class="language-plaintext highlighter-rouge">/etc/apt/sources.list</code> repositories.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># apt-get install sun-java6-jdk sun-java6-fonts sun-java6-jre sun-java6-plugin
</code></pre></div></div>

<h2 id="configure-postgresql-for-java">Configure postgresql for java</h2>

<p>Now we must add the <code class="language-plaintext highlighter-rouge">JAVA_HOME</code> variable to the <code class="language-plaintext highlighter-rouge">/etc/postgresql/8.3/main/environment</code> so postgresql can find the java virtual machine:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>JAVA_HOME = '/usr/lib/jvm/java-6-sun'
</code></pre></div></div>

<h2 id="authorise-users-for-postgres">Authorise users for postgres</h2>

<p>Now we must enable users to access the database as the postgres user, which is the system user of the database and will be used by the <code class="language-plaintext highlighter-rouge">RUN_ImportAdempiere.sh</code> script to import the database data.</p>

<p>Add the following lines to <code class="language-plaintext highlighter-rouge">/etc/postgresql/8.3/main/pg_hba.conf</code>:</p>

<p><strong>You may wish to change the IP address to the external IP</strong></p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># Database administrative login by UNIX sockets
#local   all         postgres                          ident sameuser

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD

# "local" is for Unix domain socket connections only
local   all         all                                 trust

# IPv4 local connections for user postgres:
host    all         postgres       127.0.0.1/32         trust
# IPv4 local connections for user adempiere:
host    all         all            127.0.0.1/32         trust
# IPv6 local connections:
host    all         all            ::1/128              trust
</code></pre></div></div>

<p><strong>trust or md5 - trust is probably wrong</strong></p>

<h2 id="configure-postgresql-listen-address">Configure postgresql listen address</h2>

<p>Running the database configured in localhost isn’t probably what you want, as all the clients will need access to this database and the address you tell the script the database runs from will be remembered in the future (but it can be altered). So you should probably put you server external IP address (the address of the eth0 interface i.e.) instead of the 127.0.0.1 address of the previous line.</p>

<p>If this is a test server and you will only be accessing it locally, then leaving it as 127.0.0.1 is fine.</p>

<h2 id="restart-postgresql">Restart Postgresql</h2>

<p>We must now restart the postgresql server to active the changes in the configuration files:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># /etc/init.d/postgresql-8.3 restart
</code></pre></div></div>

<h2 id="install-subversion">Install Subversion</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># apt-get install subversion
</code></pre></div></div>

<h2 id="download-adempiere-from-svn-head">Download Adempiere from SVN Head</h2>

<p><strong>This could take a very long time, depending on your Internet bandwidth</strong></p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ svn co https://adempiere.svn.sourceforge.net/svnroot/adempiere/trunk */svnworkdir/adempiere
</code></pre></div></div>

<h2 id="build-adempiere">Build Adempiere</h2>

<p>Open a terminal window.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ export JAVA_HOME='/usr/lib/jvm/java-6-sun'
$ cd */svnworkdir/adempiere/utils_dev
$ ./RUN_build.sh
</code></pre></div></div>

<h2 id="install-adempiere">Install Adempiere</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># unzip */svnworkdir/adempiere/install/build/Adempiere_354a.zip -d /opt
</code></pre></div></div>

<p>Now the extracted folder <code class="language-plaintext highlighter-rouge">/opt/Adempiere</code> exists in <code class="language-plaintext highlighter-rouge">/opt</code>:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ cd /opt
$ sudo mv Adempiere adempiere-3.54a
$ sudo ln -sf adempiere-3.54a adempiere
</code></pre></div></div>

<p>Now it looks like this:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ ls -l /opt
$ total 4
$ lrwxrwxrwx  1 root root   15 Oct 18 19:22 adempiere -&gt; adempiere-3.54a
$ drwxr-xr-x 10 root root 4096 Oct 18 19:11 adempiere-3.54a
</code></pre></div></div>

<h2 id="create-the-database">Create the database</h2>

<p>Switch to the postgres user:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>debian:/opt$ sudo su - postgres
postgres@debian:*$ export ADEMPIERE_HOME="/opt/adempiere"
postgres@debian:*$ /usr/bin/createdb adempiere
postgres@debian:*$ /usr/bin/createuser adempiere
Shall the new role be a superuser? (y/n) y
</code></pre></div></div>

<h2 id="set-database-password">Set database password</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>postgres@debian:*$ echo "ALTER USER adempiere WITH PASSWORD 'your-chosen-password';" | psql
ALTER ROLE
</code></pre></div></div>

<h2 id="check-database">Check database</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>postgres@debian:*$ echo "select * from pg_user; select * from pg_roles;" | psql
  usename  | usesysid | usecreatedb | usesuper | usecatupd |  passwd  | valuntil | useconfig
-----------+----------+-------------+----------+-----------+----------+----------+-----------
 postgres  |       10 | t           | t        | t         | ******** |          |
 adempiere |    16385 | t           | t        | t         | ******** |          |
(2 rows)

  rolname  | rolsuper | rolinherit | rolcreaterole | rolcreatedb | rolcatupdate | rolcanlogin | rolconnlimit | rolpassword | rolvaliduntil | rolconfig |  oid
-----------+----------+------------+---------------+-------------+--------------+-------------+--------------+-------------+---------------+-----------+-------
 postgres  | t        | t          | t             | t           | t            | t           |           -1 | ********    |               |           |    10
 adempiere | t        | t          | t             | t           | t            | t           |           -1 | ********    |               |           | 16385
(2 rows)
postgres@debian:*$ exit
</code></pre></div></div>

<h2 id="load-database">Load database</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ export ADEMPIERE_HOME="/opt/adempiere"
$ psql -h localhost -d adempiere -U adempiere &lt; $ADEMPIERE_HOME/data/Adempiere_pg.dmp
</code></pre></div></div>

<h2 id="set-up-adempiere">Set-up Adempiere</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ export ADEMPIERE_HOME="/opt/adempiere"
$ cd $ADEMPIERE_HOME
$ sudo chmod +x *.sh
$ export JAVA_HOME='/usr/lib/jvm/java-6-sun'
$ sudo ./RUN_setup.sh
</code></pre></div></div>

<p>Please note that this section must be able to write to the display, so either the desktop session needs to be root, or use sudo.  If you get an error about connecting to DISPLAY then try using sudo.</p>

<p>The following screen should now be displayed.  Change the database name to adempiere, database type to postgresql, set your mailserver settings.  You may need to set the database server to localhost, if the hostname does not work.</p>

<p><img src="/assets/adempiere_server_setup.png" /></p>

<h2 id="migrate-to-head">Migrate to Head</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ cd */svnworkdir/adempiere/migration
$ chmod +x *.sh
$ ./migrate_postgresql.sh 354a-trunk commit | psql -U adempiere -d adempiere &gt; 354a-trunk.lst
NOTICE:  ALTER TABLE / ADD PRIMARY KEY will create implicit index "ad_document_action_access_key" for table "ad_document_action_access"
NOTICE:  ALTER TABLE / ADD PRIMARY KEY will create implicit index "r_contactinterest_key" for table "r_contactinterest"
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "c_ordersource_pkey" for table "c_ordersource"
NOTICE:  CREATE TABLE / UNIQUE will create implicit index "c_ordersource_ad_client_id_key" for table "c_ordersource"
WARNING:  there is no transaction in progress
</code></pre></div></div>

<h2 id="start-server">Start Server</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ cd $ADEMPIERE_HOME/utils
$ sudo nohup ./RUN_Server2.sh &amp;
$ sudo tail -f nohup.out
</code></pre></div></div>

<p><strong>The output of nohub.out will indicate that the server started in only a few seconds, this is only the JBoss server, the site will not be accessible for several minutes.</strong></p>

<h2 id="client-login">Client Login</h2>

<p>On the server, open a browser and go to: http://hostname.yourdomain/admin/ and follow the Adempiere ZK Webui</p>

<p><strong>http://localhost/admin/ will not work.</strong></p>

<table>
  <thead>
    <tr>
      <th>Usage</th>
      <th>User</th>
      <th>Password</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>System Management</td>
      <td>System</td>
      <td>System</td>
    </tr>
    <tr>
      <td>System Management or any role/company</td>
      <td>SuperUser</td>
      <td>System</td>
    </tr>
    <tr>
      <td>Sample Client Administration</td>
      <td>GardenAdmin</td>
      <td>GardenAdmin</td>
    </tr>
    <tr>
      <td>Sample Client User</td>
      <td>GardenUser</td>
      <td>GardenUser</td>
    </tr>
  </tbody>
</table>

<p>For guidance visit <a href="http://www.adempiere.com/index.php/InstallClient">http://www.adempiere.com/index.php/InstallClient</a>.</p>

<h2 id="optional-install-initd-script">Optional: Install init.d script</h2>

<p>Not essential for a test server (and I have not yet got this working, I suspect because I am not using user = adempiere.</p>

<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># ./RUN_Server2Stop.sh</span>
<span class="c"># sudo cp unix/adempiere_Debian.sh /etc/init.d/adempiere</span>
<span class="c"># /etc/init.d/adempiere start </span>
</code></pre></div></div>

<h2 id="read-the-functional-user-manual">Read the Functional User Manual</h2>

<ul>
  <li>http://www.adempiere.com/index.php/Functional_User_Manual</li>
</ul>

<h2 id="references">References</h2>

<ul>
  <li>http://www.adempiere.com/index.php/Debian_and_PostgreSQL_Install</li>
  <li>http://www.adempiere.com/index.php/Adempiere/Libero_Linux_install_from_subversion_head</li>
  <li>http://www.adempiere.com/index.php/Manual_Installation_From_Trunk</li>
  <li>http://www.adempiere.com/index.php/ADempiere_Install_Linux&amp;PostgreSQL</li>
  <li>http://www.adempiere.com/index.php/ADempiere_Install#JDBC_Connection_Error
    <ul>
      <li>http://www.adempiere.com/index.php/CreateDatabase</li>
      <li>http://www.adempiere.com/index.php/InstallComplete</li>
    </ul>
  </li>
  <li>http://www.adempiere.com/index.php/ADempiere_with_Postgresql_on_Ubuntu_9.04_Jaunty</li>
</ul>


       ]]>
      </description>
    </item>
    
    <item>
      <title>LTSP | LTSP Server Sizing</title>
      <link>https://chrisjrob.com/2010/02/15/ltsp-server-sizing/</link>
      <pubDate>Mon, 15 Feb 2010 15:09:47 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2010/02/15/ltsp-server-sizing</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/ltsp_logo.png" align="right" alt="Featured Image">
         
         <h2 id="ram">RAM</h2>

<p>LTSP website recommends 256mb for the core system plus 50mb per user:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Total RAM = 256mb + (25 users x 50mb)
          = 1506mb
</code></pre></div></div>

<p>However Edubuntu recommends a different formula:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Total RAM = 150mb x 25 users
          = 3750mb
</code></pre></div></div>

<p>We recommend you choose the greater of the two, and double-it if you can (see update below).</p>

<!--more-->

<h3 id="post-install-update">Post install update</h3>

<p>This memory has proved a little low, mainly because we are also virtualising Windows on the same server.  If you don’t require Windows, or you are providing that service from a different server, then the higher of these two figures should be sufficient; I would certainly recommend the higher figure, because of the high memory demands of Firefox and Adobe Flash.</p>

<h2 id="cpu">CPU</h2>

<p>LTSP website states that each user is likely to require around 3% of a CPU:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Total CPU = 3% x 25
          = 0.75
          = 75% of a CPU
</code></pre></div></div>

<p>So a single processor should be sufficient; however this requirement doubles or even trebles if we opt to virtualise a Windows server on the installation.  We would say that a minimum of a quad-core would be sensible if virtualising Windows on the LTSP server.  If this is a problem for you, simply host the Windows server elsewhere; which is probably better anyway.</p>

<h3 id="post-install-update-1">Post install update</h3>

<p>We have now upgraded both servers to dual quad-core, which is proving ample capacity.  I believe a single quad-core would have been ample had we not been virtualising windows on the same server.</p>

<h2 id="network">Network</h2>

<p>LTSP recommend a Gigabit connection for the server and fast Ethernet for the terminals.  Many fast ethernet switches include a gigabit connection, alternatively gigabit switches are becoming quite affordable.</p>

<p><strong>There can be issues running LTSP via multiple switches - so if you’re buying a new switch - consider the greatest number of ports that you are likely to require.</strong></p>

<h3 id="post-install-update-2">Post install update</h3>

<p>This has all provided to be correct - Gigabit on the server is nearly essential if you want decent performance and similarly, PCs with only old 10-base-t internet are noticeably slower to boot.</p>

       ]]>
      </description>
    </item>
    
    <item>
      <title>Howto | VirtualBox Mismatch</title>
      <link>https://chrisjrob.com/2010/02/01/virtualbox-mismatch/</link>
      <pubDate>Mon, 01 Feb 2010 09:45:53 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2010/02/01/virtualbox-mismatch</guid>
      <description>
       <![CDATA[
         
         <p>I have been told that installing package <code class="language-plaintext highlighter-rouge">virtualbox-ose-dkms</code> solves all these problems.  I have installed and it reported that my modules were up-to-date, which is promising.  I shall try and remember to update this page later, but I thought I’d write this now in case I forget!!</p>

<h2 id="solving-virtualbox-mismatch">Solving VirtualBox Mismatch</h2>

<!--more-->

<p>If you install <code class="language-plaintext highlighter-rouge">virtualbox-ose</code> under Debian, along with <code class="language-plaintext highlighter-rouge">virtualbox-ose-modules-2.6</code>, there can be a mismatch between versions, which will prevent VirtualBox from running.  At the time of writing <code class="language-plaintext highlighter-rouge">virtualbox-ose</code> is at version 1.66 and <code class="language-plaintext highlighter-rouge">virtualbox-ose-modules-2.6</code> is at 1.62.</p>

<p>Unfortunately you need to build the kernel module yourself.</p>

<h3 id="step-1-determine-modules-package-name">Step 1: Determine modules package name</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ dpkg -l "virtualbox-ose-modules*" | grep ii
ii  virtualbox-ose-modules-2.6.30-2-amd64 3.0.12-dfsg-1+2.6.30-8squeeze1 VirtualBox modules for Linux (kernel 2.6.30-
</code></pre></div></div>

<p>Take a note of this package name for the next step.</p>

<h3 id="step-2-uninstall-the-debian-package">Step 2: Uninstall the Debian package</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo apt-get remove virtualbox-ose-modules-2.6.30-2-amd64
</code></pre></div></div>

<h3 id="step-3-install-virtualbox-source">Step 3: Install VirtualBox Source</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo apt-get install virtualbox-ose-source
$ sudo module-assistant auto-install virtualbox-ose
</code></pre></div></div>

<p>This will produce a custom <code class="language-plaintext highlighter-rouge">virtualbox-ose-modules</code> package in <code class="language-plaintext highlighter-rouge">/usr/src</code>, which will then be used to install.</p>

<p><strong>Look out for error messages, if it states that a deb file already exists, remove it and try again.</strong></p>

<h3 id="step-4-load-kernel-driver">Step 4: Load Kernel Driver</h3>

<p><strong>This step was carried out automatically in the version that I have.</strong></p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo modprobe -r vboxdrv
$ sudo modprobe vboxdrv
</code></pre></div></div>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Howto | Submit a UK Self-Assessment Return under Linux</title>
      <link>https://chrisjrob.com/2010/01/15/submit-a-self-assessment-tax-return-under-linux/</link>
      <pubDate>Fri, 15 Jan 2010 10:48:27 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2010/01/15/submit-a-self-assessment-tax-return-under-linux</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/hmrc.jpg" align="right" alt="Featured Image">
         
         <p>Yes once again I come to complete my tax return, last time it was <a href="/2009/01/11/uk-self-assessment-for-linux/">a far from successful experience</a>.</p>

<p>Given that that page is now a year old and my next year’s return is required, I thought it was an opportune time to update it.  Unfortunately nothing much has changed, the list of personal tax applications has shrunk, as TaxCalc’s market domination continues.  The only Linux-compatible competitor seems to still be ftax and it requires Acrobat Reader, which isn’t available for 64-bit Linux.</p>

<!--more-->

<p>The problem is that you don’t really want to mess about with your personal tax, especially when that includes on-line submission.  You need to have faith in the company that offers the product, and you need them to have sufficient numbers of customers that, if there is a problem, it gets fixed quickly.</p>

<p>In short, the only meaninful competition for TaxCalc would seem to be HMRC’s own web-based offering.  If it weren’t for my positive experiences in using TaxCalc, the convenience of being able to import the previous year’s return, and the fact that I have a Windows virtual-machine on my laptop, I would probably try out the HMRC system.  As it is, sadly, the Windows-only TaxCalc wins again.</p>

<h2 id="introduction">Introduction</h2>

<p>I created this page when completing my tax return for 2007/8, and am now updating it for 2008/09 tax year (January 2010).  I currently use TaxCalc running on Linux under my Windows virtual machine (in VirtualBox OSE), I would like to stop relying on Windows; so what are the options for submitting a UK Self-assessment tax return under Linux?</p>

<ul>
  <li>Linux alternatives</li>
  <li>HMRC On-line Self-Assessment</li>
  <li>Install TaxCalc under Wine</li>
  <li>Run TaxCalc in VirtualBox</li>
</ul>

<h2 id="linux-alternatives">Linux Alternatives</h2>

<p>The following is HMRC’s list of approved software:</p>

<ul>
  <li>http://www.hmrc.gov.uk/efiling/SA_efiling/soft_dev.htm</li>
</ul>

<p>The list updated as at January 2010 is as follows:</p>

<ul>
  <li><a href="http://www.taxcalc.com/">Acorah Software Products Ltd (TaxCalc)</a> - Windows only</li>
  <li><a href="http://www.andica.com/">Andica Limited</a> - Windows only</li>
  <li><a href="http://www.btcsoftware.co.uk/">BTC Software Limited</a> - Professional only</li>
  <li><a href="http://www.prosystem.cch.co.uk/">CCH Software</a> - Professional only</li>
  <li><a href="http://www.drummohr.com/">Drummohr Technology Ltd</a> - Professional only</li>
  <li><a href="http://www.tax.co.uk/">Forbes Computer Systems Ltd</a> - Windows only</li>
  <li><a href="http://www.iris.co.uk/">IRIS Software Ltd</a> - Professional only</li>
  <li><a href="http://www.isokon.com/">Isokon Limited</a> - Professional only</li>
  <li><a href="http://www.keytimesystems.co.uk/">Keytime Objective Ltd</a> - Not available for download</li>
  <li><a href="http://www.ftax.co.uk/">Legatio Ltd (Ftax)</a> - Windows, Mac and Linux</li>
  <li><a href="http://www.ptpgroup.co.uk/">PTP Software Ltd</a> - Professional only</li>
  <li><a href="http://www.sa2000.co.uk/">Quality Management Software Ltd</a> - Windows only</li>
  <li><a href="http://www.pinacleaccounts.co.uk/">RFA Limited</a> - Professional only</li>
  <li><a href="http://www.sage.co.uk/accountants/welcome.aspx">Sage (UK) Ltd</a> - Professional only</li>
  <li><a href="http://www.digita.com/">Thomson Reuters</a> - Not seemingly available for download</li>
</ul>

<p><strong>The comments are my own personal impression at the time of visiting the websites, these opinions may be wrong and you should make your own enquiries before making a decision.</strong></p>

<p>Some of these, like Sage, are clearly not consumer level products, and my impression is that the above list is somewhat misleading, as in practice TaxCalc seems to have the personal market pretty much sown up.  Am I wrong?  Let me know in the Comments section at the bottom.</p>

<p>Of those that are consumer level products only ftax seems to support Linux.  Ftax requires Adobe Acrobat Reader, which is not currently available for 64-bit Linux, also the demonstration shows that it is a smart walk-through of the actuals forms; which does fall short of the wizard mode under TaxCalc.  So to run ftax I am only swapping one set of compatibility issues for another.  If you are running 32-bit Linux, then I would definitely investigate ftax further, perhaps by searching reviews of ftax.</p>

<p>If you are going to try ftax, then you will notice the lack of any help for Linux on their site.  In fact there is help, but it is difficult to find, given their lack of a search facility.  Google to the rescue:</p>

<ul>
  <li><a href="http://www.google.co.uk/search?hl=en&amp;source=hp&amp;q=site:ftax.co.uk+linux">google “site:ftax.co.uk linux”</a></li>
</ul>

<h2 id="hmrc-on-line-self-assessment">HMRC On-line Self-Assessment</h2>

<p>Another option is to use HMRC’s own software, which I believe is web-based.  The only issue with this is that it appears that you need to enrol in the on-line service, even if you have previously used TaxCalc (or other Internet-filing service); see the following page for details:</p>

<ul>
  <li>http://www.hmrc.gov.uk/sa/using-online.htm</li>
</ul>

<p>Nevertheless, this is probably a good option, judging from the on-line demo:</p>

<ul>
  <li>http://www.hmrc.gov.uk/demo/individual/self-assessment/</li>
</ul>

<p>However, the system requirements for this service state:</p>

<p><em>“If you use HMRC’s tax software and; or the Data Provisioning Service, you will also need a minimum browser level, Internet Explorer 5.0 (Windows users) Safari 2.0.4 (Mac users) or Opera 7.0 (Windows or Mac) Your Internet browser must have JavaScript and cookies enabled and be capable of supporting 128-bit SSL. Other operating systems and browsers, such as Mozilla Firefox, may allow you to access the site and use the pages but might not display the site as designed or allow you to access all the functionality.”</em></p>

<p>Okay, so it doesn’t mention Linux, but I wouldn’t be unduly concerned about that.  No the issue seems to be the browser, and, reading between the lines, this would suggest to me that the site is using extensive Javascript, which is largely blocked (quite rightly) by Firefox.  The chances are that there would be issues; although it wouldn’t be massive problem for me to fallback on IE under a Virtual Machine, your mileage may vary.</p>

<h2 id="install-taxcalc-under-wine">Install TaxCalc under Wine</h2>

<p>TaxCalc themselves state:</p>

<p><em>“We do have some customers that run Windows emulation software to enable the use of Taxcalc on other Operating Systems (e.g. MAC OS). Although we have had some positive feedback on this we do not officially support the use of TaxCalc on Non-Windows Operating Systems at this time.”</em></p>

<p>So the next option is to consider installing TaxCalc under Wine, my concern with this is that I would expect that a simple application like TaxCalc would indeed install fine under Wine.  My concern would be that I would complete my tax return and go to upload to the tax office, and that point hit a snag.  Also, I am running on Debian Lenny 64-bit, surely that must effect Wine as well - can 64-bit Wine run 32-bit Windows applications?  The existence of this page would suggest that there may be issues:</p>

<ul>
  <li>http://wiki.winehq.org/WineOn64bit</li>
</ul>

<p>Having downloaded TaxCalc, I opened the installation program in Wine.  The installation was successful, and the first run prompted for me to either enter the registration key, or connect to the Internet to find the registration key.  I decided to do the latter, in order to test connectivity, and it worked fine.  Then it crashed and I was unable to get back into TaxCalc again.</p>

<h3 id="update-for-2010">Update for 2010</h3>

<p>A quick search on the <a href="http://appdb.winehq.org">WineHQ AppDB</a> showed that someone has successfully installed TaxCalc under Wine; however he has not tested the online submission, which is crucial for me.  Given that he has used winetricks to install IE6 under Wine, then there is a good chance that it will work.  If you try it, do update the <a href="http://appdb.winehq.org">WineHQ AppDB</a> and consider posting a comment in the new comments section below!</p>

<ul>
  <li><a href="http://appdb.winehq.org/objectManager.php?sClass=version&amp;iId=18299&amp;iTestingId=46244">TaxCalc 2009 under Wine</a></li>
</ul>

<h2 id="run-taxcalc-in-virtualbox">Run TaxCalc in VirtualBox</h2>

<p>It is outside of the scope of this document to describe this in detail, suffice to say it works flawlessly.  The downside is that you are effectively running under Windows, which can hardly be considered a success.</p>

<h2 id="conclusion">Conclusion</h2>

<p>So what have I decided?  Well this year I will again continue with TaxCalc, installed on Windows XP running through VirtualBox.  Yes I could give ftax a go, but I am fairly unimpressed with their website, and lack of any obvious linux help.  Also Googling for information on ftax and linux leads you back to this page - and, if this page really is the best help available for ftax and linux, then you’re in real trouble.</p>

<p>So the best hope for Linux users is HMRC’s own on-line service.  It is web-based and free, and whilst it does not promise Firefox support, I suspect that may not be an issue.  If you would like to be able to use TaxCalc natively under Linux, then why not let them know: by emailing them at sales@taxcalc.com.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Howto | Add Global OpenOffice.org Extensions</title>
      <link>https://chrisjrob.com/2009/11/21/add-global-openoffice-org-extensions/</link>
      <pubDate>Sat, 21 Nov 2009 11:33:43 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/11/21/add-global-openoffice-org-extensions</guid>
      <description>
       <![CDATA[
         
         <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># unopkg add --shared sun-pdfimport.oxt
</code></pre></div></div>

<p>For further information please visit:</p>

<ul>
  <li>http://api.openoffice.org/docs/DevelopersGuide/Extensions/Extensions.xhtml</li>
</ul>

       ]]>
      </description>
    </item>
    
    <item>
      <title>Howto | Install SMR2000 under Wine</title>
      <link>https://chrisjrob.com/2009/11/20/install-smr2000-wine/</link>
      <pubDate>Fri, 20 Nov 2009 17:45:22 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/11/20/install-smr2000-wine</guid>
      <description>
       <![CDATA[
         
         <p>I managed to install the Honda menu-pricing SMR2000 program on Wine:</p>

<ul>
  <li>Installed winetricks</li>
  <li>winetricks: fakeie, vb6run, mdac25, mdac28, jet40, vcrun6, wsh56, allfonts, riched30, mdac27, native_mdac, native_oldaut32, gecko</li>
  <li>Installed Adobe Reader 8.1.2 from Intranet Downloads</li>
  <li>Accepted Adobe licence via “wine regedit”, <code class="language-plaintext highlighter-rouge">HKEY_CURRENT_USER/Software/Adobe/Acrobat Reader/8.0/AdobeViewer</code>, add a DWORD “EULA” = “1”</li>
  <li>Installed SMR2000</li>
  <li>Updated SMR2000 by running update self-extracting zip files</li>
</ul>

       ]]>
      </description>
    </item>
    
    <item>
      <title>LTSP | LTSP5 Scanning</title>
      <link>https://chrisjrob.com/2009/11/18/ltsp5-scanning/</link>
      <pubDate>Wed, 18 Nov 2009 12:29:45 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/11/18/ltsp5-scanning</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/ltsp_logo.png" align="right" alt="Featured Image">
         
         <h2 id="scanning-with-ltsp-5-in-debian-etch-or-lenny">Scanning with LTSP 5 in Debian Etch or Lenny</h2>

<p>At the time of writing these instructions worked for Etch, but have not been completed for Lenny.</p>

<h2 id="introduction">Introduction</h2>

<p><strong>This is a description for a scanner physically connected to a terminal (not to the server).</strong></p>

<!--more-->

<p>For LTSP scanning to work, you just need to remember that the roles are reversed - that is the client is the scanning server and the server is the scanning client.  With the exception of the fact that you have to chroot to get at the client, the set-up is an ordinary Linux network scanning set-up.</p>

<h2 id="configure-client">Configure client</h2>

<h3 id="install-client-packages">Install client packages</h3>

<p>You have to be root in the chroot LTSP client environment for the next steps:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo chroot /opt/ltsp/i386
# mount -t proc /proc /proc
# mount -t sysfs sys /sys
# apt-get install libexif12 libgphoto2-2 libgphoto2-port0 libieee1284-3 libltdl3 libsane libsane-extras sane-utils
# umount sys
# umount /proc
</code></pre></div></div>

<h3 id="user-saned-needs-an-additional-group">User ‘saned’ needs an additional group:</h3>

<p>Still in the chroot:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># usermod -a -G scanner saned
</code></pre></div></div>

<h3 id="modify-etcinetdconf-etch">Modify <code class="language-plaintext highlighter-rouge">/etc/inetd.conf</code> (Etch)</h3>

<p>Still in the chroot, open <code class="language-plaintext highlighter-rouge">/etc/inetd.conf</code> (e.g. with vi) and add at the end of the file (after ‘#:OTHER: Other services’) this line:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sane-port stream tcp nowait saned.saned /usr/sbin/saned saned
</code></pre></div></div>

<h3 id="modify-etcdefaultsaned-lenny">Modify <code class="language-plaintext highlighter-rouge">/etc/default/saned</code> (Lenny)</h3>

<p>The problem with this is that it will run for all users, which seems a bit pointless, should be possible to use an ldm rc.d script, but this did not work correctly for me.</p>

<p>Still in the chroot, open <code class="language-plaintext highlighter-rouge">/etc/default/saned</code> and change <code class="language-plaintext highlighter-rouge">RUN=no</code> to <code class="language-plaintext highlighter-rouge">RUN=yes</code>.</p>

<p>On an upgraded server, this was not enough, I also needed to symlink:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># cd /etc/rc2.d
# ln -s ../init.d/saned S99saned
</code></pre></div></div>

<h3 id="the-initial-openbsd-inetd-links-are-wrong-etch">The initial openbsd-inetd links are wrong. (Etch)</h3>

<p>Still in the chroot, Delete openbsd-inetd links  with:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># rm /etc/rc*/*openbsd*
</code></pre></div></div>

<p>Create new one’s:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># ln -s ../init.d/openbsd-inetd /etc/rc2.d/S20openbsd-inetd
# ln -s ../init.d/openbsd-inetd /etc/rc3.d/S20openbsd-inetd
# ln -s ../init.d/openbsd-inetd /etc/rc4.d/S20openbsd-inetd
# ln -s ../init.d/openbsd-inetd /etc/rc5.d/S20openbsd-inetd
# ln -s ../init.d/openbsd-inetd /etc/rc0.d/K20openbsd-inetd
# ln -s ../init.d/openbsd-inetd /etc/rc1.d/K20openbsd-inetd
# ln -s ../init.d/openbsd-inetd /etc/rc6.d/K20openbsd-inetd
</code></pre></div></div>

<p>Check if everything is fine:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># ls -l /etc/rc*/*openbsd*
</code></pre></div></div>

<h3 id="leave-chroot">Leave chroot</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># exit or [Ctrl]+[d]
</code></pre></div></div>

<h2 id="configure-server">Configure server</h2>

<h3 id="install-server-packages">Install server packages</h3>

<p>Thanks to the Debian package system it’s easy to get almost all software (as root):</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># apt-get install libsane libsane-extras sane-utils
</code></pre></div></div>

<h3 id="set-user-grants">Set user grants</h3>

<p>You have to set the saned group for every scanner user:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># usermod -a -G saned ~username~
</code></pre></div></div>

<h3 id="sanedconf-configuration-client">saned.conf Configuration (client)</h3>

<p>Modify the saned.conf file. Put the IP address of your server, e.g.:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/opt/ltsp/i386/etc/sane.d/saned.conf

#
# saned.conf
#
# The contents of the saned.conf  file  is  a  list  of  host  names,  IP
# addresses or IP subnets (CIDR notation) that are permitted to use local
# SANE devices. IPv6 addresses must be enclosed in brackets,  and  should
# always  be specified in their compressed form.
#
# The hostname matching is not case-sensitive.
#
~serverip~
</code></pre></div></div>

<h3 id="netconf-configuration-client">net.conf Configuration (client)</h3>

<p>Modify the net.conf file. Put the IP addresses &amp; names of your server, scanner terminal; client and localhost here, e.g.:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/opt/ltsp/i386/etc/sane.d/net.conf

# This is the net config file.  Each line names a host to attach to.
# If you list "localhost" then your backends can be accessed either
# directly or through the net backend.  Going through the net backend
# may be necessary to access devices that need special privileges.

localhost
~server-ip~
~server-hostname~
</code></pre></div></div>

<h3 id="modify-the-dllconf-client">Modify the dll.conf (client)</h3>

<p>Enable only two lines, one with ‘net’ and the other one with the name of your (!) scanner backend (for me: snapscan -&gt; works with Epson scanner).</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/opt/ltsp/i386/etc/sane.d/dll.conf

# enable the next line if you want to allow access through the network:
net
snapscan
#abaton
#agfafocus
#apple
#avision
#artec
#artec_eplus48u
#as6e
...
</code></pre></div></div>

<p>Here you find an overview of supported backends:</p>

<ul>
  <li>http://www.sane-project.org/sane-mfgs.html</li>
</ul>

<h3 id="modify-dllconf-server">Modify dll.conf (server)</h3>

<p>Modify dll.conf.  Enable only the line with ‘net’ (disable all others):</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/etc/sane.d/dll.conf

# enable the next line if you want to allow access through the network:
net
#abaton
#agfafocus
#apple
#avision
#artec
#artec_eplus48u
#as6e
...
</code></pre></div></div>

<h3 id="modify-netconf-server">Modify net.conf (server)</h3>

<p>Modify net.conf.  Put the IP address of your scanner terminal client (!) here, e.g.:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/etc/sane.d/net.conf

# This is the net config file.  Each line names a host to attach to.
# If you list "localhost" then your backends can be accessed either
# directly or through the net backend.  Going through the net backend
# may be necessary to access devices that need special privileges.
~client-ip~
</code></pre></div></div>

<p>Alternatively (and better in my opinion) is to script the scanner program, so that it starts with:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SANE_NET_HOSTS=client-ip
export SANE_NET_HOSTS
scanimage &gt; test.pnm
</code></pre></div></div>

<p>See Alternative Configuration.</p>

<h2 id="restart-your-client-terminal">Restart your client terminal</h2>

<h2 id="restart-hplip-etch-only">Restart hplip (Etch only)</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo /etc/init.d/hplip restart
Stopping HP Linux Printing and Imaging System: hpiod hpssd.
Starting HP Linux Printing and Imaging System: hpiod hpssd.
</code></pre></div></div>

<h2 id="test">Test</h2>

<p>If it doesn’t work - take a look at your syslog.</p>

<h2 id="alternative-configuration">Alternative configuration</h2>

<p>If your client doesn’t have a static ip and hostname (as with the default ltsp set-up), then you can either configure <code class="language-plaintext highlighter-rouge">/etc/dhcp3/dhcpd.conf</code> to provide you with a static ip and hostname, or use this alternative scanner configuration.</p>

<h3 id="step-1-remove-all-client-references-above">Step 1: Remove all client references above</h3>

<p>Work back through the above configurations, commenting out all references to your client-ip and client-hostname.</p>

<h3 id="step-2-write-a-script">Step 2: Write a script</h3>

<p>Here is a simple test script to determine your client, and list your connected scanner:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SANE_NET_HOSTS=`echo $SSH_CLIENT | cut -d " "  -f 1`
export SANE_NET_HOSTS
scanimage -L
</code></pre></div></div>

<p>You would need to modify this script to do something more useful with scanimage.</p>

<h2 id="references">References</h2>

<ul>
  <li>http://wiki.ltsp.org/twiki/bin/view/Ltsp/Debian#Scanning_with_LTSP_5_in_Debian_E</li>
  <li>http://wiki.ltsp.org/twiki/bin/view/Ltsp/Scanners</li>
  <li>http://www.enterprisenetworkingplanet.com/nethub/article.php/%203637076</li>
  <li>http://www.jumako.de/cms/index.php?option=com_content&amp;task=view&amp;id=26&amp;Itemid=31</li>
</ul>

       ]]>
      </description>
    </item>
    
    <item>
      <title>Installing Nagios on Debian Lenny</title>
      <link>https://chrisjrob.com/2009/10/16/installing-nagios-on-debian-lenny/</link>
      <pubDate>Fri, 16 Oct 2009 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/10/16/installing-nagios-on-debian-lenny</guid>
      <description>
       <![CDATA[
         
         <p>Turns out this is as simple as:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo -i
# apt-get install nagios3
# cd /etc/nagios3
# htpasswd -c htpasswd.users nagiosadmin
</code></pre></div></div>

<p>Then point your browser at <a href="http://localhost/nagios3/">http://localhost/nagios3/</a>.</p>

       ]]>
      </description>
    </item>
    
    <item>
      <title>Howto | Optimise Firefox</title>
      <link>https://chrisjrob.com/2009/10/15/optimise-firefox/</link>
      <pubDate>Thu, 15 Oct 2009 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/10/15/optimise-firefox</guid>
      <description>
       <![CDATA[
         
         <p>Apparently Firefox uses sqlite for its databases, maintaining several <code class="language-plaintext highlighter-rouge">*.sqlite</code> files in your <code class="language-plaintext highlighter-rouge">.mozilla/</code> profile directory.  Over time these become cluttered and it helps if you vacuum it:</p>

<!--more-->

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo apt-get install sqlite3
$ cd ~
$ find .mozilla/ -iname '*'.sqlite -exec sqlite3 "{}" VACUUM \;
</code></pre></div></div>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Howto | Install IPCop Firewall</title>
      <link>https://chrisjrob.com/2009/10/12/install-ipcop-firewall/</link>
      <pubDate>Mon, 12 Oct 2009 11:42:39 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/10/12/install-ipcop-firewall</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/ipcop_logo.png" align="right" alt="Featured Image">
         
         <p>This document is for the purpose of building in IPCop Firewall onto a MSI Axis 700 barebones PC.  The firewall will also be used as a NTP time-server, Content-filtering proxy server and OpenVPN server.</p>

<!--more-->

<h2 id="requirements">Requirements</h2>

<p><img src="/assets/msi-axis-700.jpg" class="image-right" alt="MSI Axis 700" /></p>

<ul>
  <li>MSI C7 VIA CN700 5.1 Audio Lan DDRII quicklinx:<a href="https://www.dabs4work.com/productview.aspx?Quicklinx=4FY9">4FY9WS</a></li>
  <li>D-Link DFE 580TX - network adapter - 4 ports quicklinx:<a href="https://www.dabs4work.com/productview.aspx?QuickLinx=1YH9">1YH9WS</a></li>
  <li>LG Electronics DVD ROM 16X BLACK DRIVE ONLY quicklinx:<a href="https://www.dabs4work.com/productview.aspx?QuickLinx=4N6S">4N6SWS</a></li>
  <li>Seagate Barracuda 7200.10 80GB S300 8MB quicklinx:<a href="https://www.dabs4work.com/productview.aspx?QuickLinx=4MRK">4MRKWS</a></li>
  <li>Crucial 512MB 240Pin DIMM DDR2 PC2-4200 Non-ECC quicklinx: <a href="http://www.dabs4work.com/productview.aspx?Quicklinx=36TC">36TCWS</a></li>
</ul>

<p>N.B. I believe 512mb is insufficient and I would recommend purchasing Kingston Memory - KVR667D2NG/1G</p>

<h2 id="key-steps">Key Steps</h2>

<ul>
  <li>Assemble above</li>
  <li>Disable “EHCP on chip” under “Integrated peripherals” in BIOS (prevents NIC being loaded correctly)</li>
  <li>Disable “ACPI” under Power Management (from memory)</li>
  <li>Download IPCop at <a href="https://sourceforge.net/project/showfiles.php?group_id=40604">IPCop.org</a> and burn to CD</li>
  <li>Boot CD</li>
  <li>Follow prompts to install (you may find this <a href="http://www.howtoforge.net/perfect_linux_firewall_ipcop">Howtoforge</a> useful)</li>
  <li>Connect to web admin page</li>
  <li>Install Copfilter (for Virus protection and more)</li>
  <li>Install Advanced Proxy (for user authentication and control)</li>
  <li>Install URL Filter (for content filtering)</li>
  <li>Install Zerina OpenVPN</li>
  <li>Configure Zerina OpenVPN</li>
</ul>

<h2 id="install-copfilter">Install Copfilter</h2>

<p><a href="http://www.copfilter.org/downloads.php">Download Copfilter</a>.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># scp -P 222 copfilter-version.tgz root@ipcop_green_address:/root
# ssh -p 222 -l root ipcop_green_address
# cd /root
# tar xzvf copfilter-version.tgz
# cd copfilter-version
# ./install
</code></pre></div></div>

<p>This should complete with a message such as this:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Copfilter ~version~ installation completed successfully!
</code></pre></div></div>

<h2 id="install-advanced-proxy">Install Advanced Proxy</h2>

<p><a href="http://www.advproxy.net/download.html">Download Advanced Proxy</a>.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># scp -P 222 ipcop-advproxy-version.tar.gz root@ipcop_green_address:/root
# ssh -p 222 -l root ipcop_green_address
# tar -xzf ipcop-advproxy-version.tar.gz
# ipcop-advproxy/install
</code></pre></div></div>

<h2 id="install-enhanced-proxy-log-viewer">Install Enhanced Proxy Log Viewer</h2>

<p><a href="http://www.advproxy.net/download.html">Download Advanced Proxy Log Viewer</a>.</p>

<p>This package enables the capability to show usernames within the proxy log viewer.</p>

<p>Copy the file <code class="language-plaintext highlighter-rouge">proxylog.dat</code> to the directory <code class="language-plaintext highlighter-rouge">/home/httpd/cgi-bin/logs.cgi</code> and set the file permissions to 755 (<code class="language-plaintext highlighter-rouge">rwxr-xr-x</code>).</p>

<h2 id="install-url-filter-add-on">Install URL Filter Add-on</h2>

<p><a href="http://www.urlfilter.net/download.html">Download URL Filter</a>.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># scp -P 222 ipcop-urlfilter-version.tar.gz root@ipcop_green_address:/root
# ssh -p 222 -l root ipcop_green_address
# tar -xzf ipcop-urlfilter-version.tar.gz
# ipcop-urlfilter/install
</code></pre></div></div>

<h2 id="install-zerina-openvpn">Install Zerina OpenVPN</h2>

<p><a href="http://www.openvpn.eu/index.php?id=35">Zerina OpenVPN</a>.</p>

<p>If you are updating, first stop the OpenVPN Server through the GUI.</p>

<p>These instruction include a dangerous bodge to arbitrarily alter the IPCop version requirement, only proceed if you are happy to accept the inherent risk in so doing.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># scp -P 222 ZERINA-version-Installer.tar.gz root@ipcop_green_address:/root
# ssh -p 222 -l root ipcop_green_address
# mkdir /root/zerina
# mv ZERINA-version-Installer.tar.gz /root/zerina/
# cd /root/zerina
# tar -xzvf ZERINA-version-Installer.tar.gz
# sed -i s/1\.4\.18/1.4.21/ install
# ./install
</code></pre></div></div>

<h2 id="configure-zerina-openvpn">Configure Zerina OpenVPN</h2>

<ul>
  <li><a href="http://www.zerina.de/zerina/?q=documentation/howto-roadwarrior">Zerina OpenVPN</a></li>
</ul>

<h2 id="configure-openvpn-for-network-manager">Configure OpenVPN for Network-Manager</h2>

<p>Download and extract the ZIP file from IPCOP OpenVPN, and extract the contents into (for example <code class="language-plaintext highlighter-rouge">~/.openvpn</code>).</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo apt-get install network-manager-openvpn
$ cd ~/.openvpn
$ sudo su
# openssl pkcs12 -nocerts -in default.p12 -out key.pem
# openssl pkcs12 -nokeys -clcerts -in default.p12 -out cert.pem
# openssl pkcs12 -nokeys -cacerts -in default.p12 -out ca.pem
# exit
</code></pre></div></div>

<p>These converted files can then be used in Network Manager.</p>

<p>If you’re struggling to connect to OpenVPN with Network Manager, consider that you need to ensure that the settings are mirrored on both IPCop and on the client’s Network Manager, for example I struggled to connect until I realised that LZO Compression was switched on on IPCop but off in Network Manager.</p>

<h2 id="static-routes">Static Routes</h2>

<p>There is no way to set this in the GUI, so connect via SSH (see above):</p>

<p>In <code class="language-plaintext highlighter-rouge">/etc/rc.d/rc.netaddress.up</code> add:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>if [ "$1" != "NOTGREEN" ]; then
if [ "$GREEN_DEV" != "" ]; then
    ifconfig $GREEN_DEV $GREEN_ADDRESS netmask $GREEN_NETMASK broadcast $GREEN_BROADCAST up

    ####CUSTOM EDIT FOR STATIC ROUTE####
    route add -net 10.100.1.0 netmask 255.255.255.0 gw 10.2.0.1
    ####CUSTOM EDIT FOR STATIC ROUTE####
</code></pre></div></div>

<h2 id="identifying-network-interfaces-in-linux">Identifying Network Interfaces in Linux</h2>

<p>If your network card supports it, you can blink the LED on the specified network interface in Linux like this:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># ethtool -p eth# 5
</code></pre></div></div>

<p>This blinks the LED on the interface for five seconds-without interrupting network traffic.</p>

<ul>
  <li><a href="http://www.coolcommands.com/index.php?option=com_cc&amp;task=display&amp;id=1287">Cool Command</a></li>
</ul>

<h2 id="flushing-the-dns-cache">Flushing the DNS Cache</h2>

<p>There may be times that you wish to flush the DNS cache.  IPCop uses dnsmasq, log onto ipcop using root and run the following:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># ps -ef | grep dnsmasq
# kill -s SIGHUP &amp;lt;PID&amp;gt; (replacing &amp;lt;PID&amp;gt; with the PID shown by the previous command)
</code></pre></div></div>

<h2 id="references">References</h2>

<ul>
  <li><a href="http://ipcop.org/">IPCop.org</a>
    <ul>
      <li><a href="http://marc.info/?l=ipcop-user">User forum</a></li>
    </ul>
  </li>
  <li><a href="http://www.howtoforge.net/perfect_linux_firewall_ipcop">Howtoforge</a>
    <ul>
      <li><a href="http://howtoforge.net/perfect_linux_firewall_ipcop_p2">Continued…</a></li>
    </ul>
  </li>
  <li><a href="http://firewalladdons.sourceforge.net/cop.html">Addons</a></li>
  <li><a href="http://dansguardian.org/">DansGuardian</a></li>
  <li><a href="http://en.wikipedia.org/wiki/Iptables">IPTables on Wikipedia</a></li>
  <li><a href="http://www.securityfocus.com/infocus/1556">IPCop Review</a></li>
  <li><a href="http://www.snort.org/">Snort</a></li>
  <li><a href="http://ipcop.org/index.php?module=pnWikka&amp;tag=OpenVPNHowto">Installing OpenVPN</a></li>
  <li><a href="http://copfilter.endlich-mail.de/viewtopic.php?t=1069&amp;highlight=havp+dansguardian">Resolving add-on conflicts</a></li>
</ul>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Howto | DD over SSH</title>
      <link>https://chrisjrob.com/2009/10/09/dd-over-ssh/</link>
      <pubDate>Fri, 09 Oct 2009 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/10/09/dd-over-ssh</guid>
      <description>
       <![CDATA[
         
         <p>Wow, can’t believe my last post was 4 months ago, well a quick tip to get me back into the blogging frame of mind.  If you wish to take a drive image copy over the network, then apparently you do not have to have an nfs share available.  Instead you can use ssh as follows:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ dd if=/dev/sda bs=1M | ssh root@blah "cat &gt; /root/disk.img"
</code></pre></div></div>

<!--more-->

<p>Haven’t tried it yet, but it sounds incredible.  The <code class="language-plaintext highlighter-rouge">bs=1M</code> is essential or the copy will take forever.</p>

       ]]>
      </description>
    </item>
    
    <item>
      <title>May the source be with you</title>
      <link>https://chrisjrob.com/2009/06/09/may-the-source-be-with-you/</link>
      <pubDate>Tue, 09 Jun 2009 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/06/09/may-the-source-be-with-you</guid>
      <description>
       <![CDATA[
         
         <p>From time to time I see the comment advocating a closed source program, with the response <em>“as I’m not a developer it doesn’t bother me whether or not I have the source code”</em>.   I believe that that view is wrong, and that there are many occasions where non-developers will find benefit from having access to the source code.</p>

<!--more-->

<p>For example,I’ve just found that Kmail will not auto-complete email addresses from an LDAP KDE resource.  A <a href="http://bugs.kde.org/show_bug.cgi?id=146247">simple bug</a>; although strictly speaking it’s not a bug, as it was a deliberate feature.  Fortunately <a href="http://websvn.kde.org/?view=rev&amp;revision=800071">there is a fix</a>,  with a modification made to one of the components.  Unfortunately this fix has not found its way into Debian Lenny or Squeeze, and Sid is now KDE4.</p>

<p>I could install from the KDE SVN repository, but that version has not been tested with Debian, and I don’t really want to have such a significant part of a production server to have come from outside of Debian.  Perhaps I am being overly cautious.</p>

<p>Anyway, I changed to <code class="language-plaintext highlighter-rouge">/usr/src</code> and ran <code class="language-plaintext highlighter-rouge">apt-get source kdepim</code> to download the source from Debian.  I used “find” to locate the offending component, and used diff to determine what differences there were between the modified KDE version and the standard Debian version.  I was pleased to note that only one line had changed.  I copied in the new component and ran <code class="language-plaintext highlighter-rouge">apt-get build-dep kdepim</code> (with help from Dominic in #surrey).   Then a quick <code class="language-plaintext highlighter-rouge">./configure</code>, a very slow “make”, and a quick <code class="language-plaintext highlighter-rouge">sudo checkinstall make install</code> and the fix was made.</p>

<p>There are many many more benefits to open source than the ability to modify the source, but I just wanted to point out that, even for non-developers, there is a very real and very direct benefit to having the source.</p>

<p>May the source be with you.</p>

<p>Update - the actual patch may be found <a href="http://goo.gl/FbHwh">here</a>.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Building a new mailserver</title>
      <link>https://chrisjrob.com/2009/05/27/building-a-new-mailserver/</link>
      <pubDate>Wed, 27 May 2009 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/05/27/building-a-new-mailserver</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/debian_logo.png" align="right" alt="Featured Image">
         
         <p>Our Debian Lenny <a href="/2009/01/24/ltsp5-clean-install/">LTSP5 Install</a> has hit a road block: currently the site are using a Citrix server at another location over a 256k connection to pick up their emails.  I really didn’t feel that I could ask them all to collect their emails over a 256k connection, so what are the alternatives?</p>

<!--more-->

<p>Well I could upgrade the bandwidth by creating an inter-site VPN, but that will still only provide perhaps 600k (that being the upload bandwidth of the host site).  The solution is to move the mailserver onto the ‘net, so that they can benefit from a full 8mb ADSL download.</p>

<p>After seeking advice, I choose <a href="http://bytemark.co.uk">Bytemark</a> as a trusted Debian VPS supplier, a day later I had my login to my new virtual server.  But what to install?  Advice pointed me in the direction of Postfix and Dovecot, which were not much more than an apt-get install:</p>

<ul>
  <li><a href="http://www.debianadmin.com/debian-mail-server-setup-with-postfix-dovecot-sasl-squirrel-mail.html">Debian Admin Mailserver</a></li>
</ul>

<p>Great, a working mailserver, but the problem with the installation was that the users were local system accounts, which made it more cumbersome to administer.  The best solution seemed to be LDAP, and I duly followed the guide <a href="http://www.debuntu.org/ldap-server-and-linux-ldap-clients">Debuntu</a> to install, and I managed to integrate LDAP with PAM thus giving me the ability to allow users to login with an LDAP account; but in a nutshell that was exactly what was wrong with this solution - the users <em>had</em> to login to the server, before their system account would be created, and if that was the case I might as well have stuck with local system accounts in the first place.  What I needed was a true virtual mail host.  To that end, I was pointed in the direction of a <a href="http://www.howtoforge.com/postfix-virtual-hosting-with-ldap-and-dovecot-on-ubuntu8.04">Ubuntu howto on Howtoforge</a>.</p>

<p>Okay but this was for Ubuntu not Debian and for one reason and another I simply could not get it working.  After starting from scratch a couple of times, but ending up in the same place, I found that I had to combine the howto with <a href="http://www.howtoforge.com/postfix-virtual-hosting-with-ldap-backend-and-with-dovecot-pop3-imap-on-ubuntu-8.10">this one for 8.10</a>.</p>

<p>Even then it took a fair amount of battling to get it working on Debian Lenny.  The key to most of my problems was in reading the comments on every page, as these include invaluable corrections and suggestions.</p>

<p>So after a week of pain, I now have a working virtual mail host, now I just need to set-up the domains, users and mailgroups.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Howto | Apache SSL</title>
      <link>https://chrisjrob.com/2009/05/19/apache-ssl/</link>
      <pubDate>Tue, 19 May 2009 12:02:19 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/05/19/apache-ssl</guid>
      <description>
       <![CDATA[
         
         <p>How to enable Apache SSL:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># a2enmod ssl
# cd /etc/apache2/
# mkdir ssl
# openssl req -new -x509 -days 3650 -nodes -out /etc/apache2/ssl/apache.pem -keyout /etc/apache2/ssl/apache.pem
# chmod 600 /etc/apache2/ssl/apache.pem
# /etc/init.d/apache2 restart
</code></pre></div></div>

<!--more-->

<p><strong>When generating the certificate it prompts for “Your name”, this should be the name of your site e.g. host.example.com.</strong></p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.pem
</code></pre></div></div>

       ]]>
      </description>
    </item>
    
    <item>
      <title>LTSP | LTSP5 NX Client</title>
      <link>https://chrisjrob.com/2009/05/13/ltsp5-nx-client/</link>
      <pubDate>Wed, 13 May 2009 17:14:37 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/05/13/ltsp5-nx-client</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/ltsp_logo.png" align="right" alt="Featured Image">
         
         <h2 id="instructions">Instructions</h2>

<p>These instructions are for installing NoMachine’s NX Client for Linux on LTSP, to enable connection to a FreeNX (or NX) server from a screen script.</p>

<!--more-->

<h2 id="warning">Warning</h2>

<p>These instructions are for Debian Lenny.  They are my notes of what I did, and may contain errors or missed steps.</p>

<p>This assumes you have FreeNX installed somewhere to which to connect.  You might like to see my <a href="/2010/07/08/install-freenx/">Install FreeNX</a> for details.</p>

<h2 id="download-nxclient">Download NXClient</h2>

<p>Visit <a href="http://www.nomachine.com/download.php">NoMachine.com</a> and download the Debian .deb installation.  Copy the deb file into <code class="language-plaintext highlighter-rouge">/opt/ltsp/i386/root</code>.</p>

<h2 id="install-nxclient-in-chroot">Install NXClient in chroot</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo chroot /opt/ltsp/i386
# cd root
# apt-get install libaudiofile0
# dpkg -i nxclient_3.3.0-6_i386.deb (or whatever the name of the file is)
# exit
</code></pre></div></div>

<h2 id="install-openbox-in-chroot">Install OpenBox in chroot</h2>

<p>Unfortunately running nxclient restarts X every time that it’s about to connect.  The solution is to install a lightweight Window Manager like xfwm4 or openbox.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo chroot /opt/ltsp/i386
# apt-get install openbox
# exit
</code></pre></div></div>

<h2 id="create-user-settings">Create User Settings</h2>

<p>Easiest way is to install NXClient on the server, and run it to create your settings, then copy your <code class="language-plaintext highlighter-rouge">/home/user/.nx</code> directory into the chroot.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo cp -r /home/userid/.nx /opt/ltsp/i386/home/
</code></pre></div></div>

<p>Move your <code class="language-plaintext highlighter-rouge">/home/userid/.ssh/known_hosts</code> file sideways, and connect to any and all freenx servers that you wish to be able to use.  Then copy this file to <code class="language-plaintext highlighter-rouge">/opt/ltsp/i386/home/.ssh/</code>.</p>

<h2 id="edit-nx-settings">Edit nx settings</h2>

<p>Unfortunately these settings include duff information, change to <code class="language-plaintext highlighter-rouge">/opt/ltsp/i386/home/.nx/config</code> and edit <code class="language-plaintext highlighter-rouge">nxclient.cfg</code> file, change the location in the following line to:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>&lt;option key="Personal NX dir" value="/home/.nx" /&gt;
</code></pre></div></div>

<h2 id="create-screen-script">Create Screen Script</h2>

<p>Create a new screen script:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo nano /opt/ltsp/i386/usr/share/ltsp/screen.d/openbox
</code></pre></div></div>

<p>And copy the following into it:</p>

<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c">#!/bin/sh</span>

<span class="nv">PATH</span><span class="o">=</span>/bin:<span class="nv">$PATH</span><span class="p">;</span> <span class="nb">export </span>PATH
<span class="nv">HOME</span><span class="o">=</span>/home<span class="p">;</span> <span class="nb">export </span>HOME

<span class="nb">.</span> /usr/share/ltsp/screen-x-common

<span class="k">if</span> <span class="o">[</span> <span class="nt">-x</span> /usr/share/ltsp/xinitrc <span class="o">]</span><span class="p">;</span> <span class="k">then
    </span><span class="nv">xinitrc</span><span class="o">=</span>/usr/share/ltsp/xinitrc
<span class="k">fi

</span>xinit <span class="nv">$xinitrc</span> /usr/bin/openbox-session <span class="nt">--</span> <span class="k">${</span><span class="nv">DISPLAY</span><span class="k">}</span> vt<span class="k">${</span><span class="nv">TTY</span><span class="k">}</span> <span class="k">${</span><span class="nv">X_ARGS</span><span class="k">}</span> <span class="nt">-br</span> <span class="o">&gt;</span>/dev/null
</code></pre></div></div>

<p>This script will make the root user’s home directory to be <code class="language-plaintext highlighter-rouge">/home</code>.  I probably should have set it to <code class="language-plaintext highlighter-rouge">/root</code>, but when I experimented with that it didn’t work correctly, I suspect I should have persevered, but I did not, with the result that I am pointing everything to /home instead.</p>

<h2 id="make-openbox-autostart-nxclient">Make OpenBox Autostart NXClient</h2>

<p>Create the Openbox configuration directory:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo mkdir -p /opt/ltsp/i386/home/.config/openbox
</code></pre></div></div>

<p>Then create a new file <code class="language-plaintext highlighter-rouge">autostart.sh</code>:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo nano /opt/ltsp/i386/home/.config/openbox/autostart.sh
</code></pre></div></div>

<p>And paste in the following:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>(sleep 2 &amp;&amp; /usr/NX/bin/nxclient) &amp;
</code></pre></div></div>

<p>And make it executable:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo chmod a+x /opt/ltsp/i386/home/.config/openbox/autostart.sh
</code></pre></div></div>

<h2 id="update-ltsconf">Update <code class="language-plaintext highlighter-rouge">lts.conf</code></h2>

<p>In <code class="language-plaintext highlighter-rouge">lts.conf</code>, on the client you wish to test, just set <code class="language-plaintext highlighter-rouge">SCREEN_07 = openbox</code>.</p>

<h2 id="reboot-client">Reboot Client</h2>

<p>Reboot client the and test!</p>

<h2 id="references">References</h2>

<p>None, sadly.  No-one to blame but me.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Howto | Huawei E220 3G USB Modem</title>
      <link>https://chrisjrob.com/2009/05/11/install-huawei-e220-3g-usb-modem/</link>
      <pubDate>Mon, 11 May 2009 08:34:15 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/05/11/install-huawei-e220-3g-usb-modem</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/huawei-e220.jpg" align="right" alt="Featured Image">
         
         <h2 id="introduction">Introduction</h2>

<p>Following a failure of our Internet connection, I hastily cobbled together a new proxy server using my 3G modem.  The reason I did not simply add the modem to our existing IPCop solution, was because IPCop currently only supports a single Red/WAN interface.  The IPCop FAQs specifically warn against attempting multiple interfaces.</p>

<!--more-->

<p>There were many instructions on the Internet, but in reality it proved to be quite straightforward.  I followed these instructions, varying them slightly for Vodafone:</p>

<ul>
  <li><a href="http://www.richs.me.uk/content/view/132/51/">http://www.richs.me.uk/content/view/132/51/</a></li>
</ul>

<p>This was tested on IPCOP version 1.4.18, older versions may not work.</p>

<h2 id="warning">Warning</h2>

<p>These are my own personal notes, they relate to a UK Vodafone install, you would need to alter instructions for your location and telco.</p>

<h2 id="configure-kernel-modules">Configure Kernel modules</h2>

<p>When building your IPCOP, you need to set the IPCOP to use a network adaptor for the Green Interface and a Modem to use as the Red Interface.</p>

<p>From the command prompt logged on as root on the IPCOP you need to edit the /etc/modules.conf file.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># nano /etc/modules.conf
</code></pre></div></div>

<p>Add the following lines at the bottom:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>alias char-major-188 usbserial
options usbserial vendor=0x12d1 product=0x1003 maxSize=4096
</code></pre></div></div>

<p>Then save the file and access (Press CTRL + O and press enter then press CTRL + X).</p>

<h2 id="web-console---modem">Web Console - Modem</h2>

<p>Log onto the web console and choose the Network menu and Modems.  Change INIT to:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>AT+CGDCONT=16,"IP","internet"
</code></pre></div></div>

<h2 id="web-console---dial-up">Web Console - Dial-up</h2>

<p>Now select Dial-Up.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Interface = "Modem on USB0"
Enter Number = "*99#"
Username = internet
Password = internet
Authentication method = PAP
DNS = Automatic
Profile name = Vodafone
</code></pre></div></div>

<p>Press “Save”.</p>

<h2 id="test">Test</h2>

<p>Connect your 3G modem into the IPCOP box and reboot.</p>

<p>You should now be able to connect to the net using your 3G dongle.</p>

<h2 id="references">References</h2>

<ul>
  <li><a href="http://www.richs.me.uk/content/view/132/51/">http://www.richs.me.uk/content/view/132/51/</a></li>
</ul>

<h2 id="conclusion">Conclusion</h2>

<p>Amazingly it only took a couple of hours, including building a new PC, and it worked beautifully.  Unfortunately, or perhaps that’s fortunately, no-one will ever know how good it was, because our Internet connection started working again about 15-minutes after I had completed it!</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>LTSP | LTSP5 Client Sound</title>
      <link>https://chrisjrob.com/2009/05/06/ltsp5-sound-client/</link>
      <pubDate>Wed, 06 May 2009 16:17:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/05/06/ltsp5-sound-client</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/ltsp_logo.png" align="right" alt="Featured Image">
         
         <h2 id="background">Background</h2>

<p>On Ubuntu and Debian sound on the client gets started automatically during boot by default (the distros udev and the alsa scripts will detect your soundcard and start all needed services if a soundcard was detected on your client).  LDM (the default display manager we use in ltsp5) then sets up a virtual ALSA device in the users session during login.  The tunnel ALSA uses as endpoint is set up through LDM by setting the <code class="language-plaintext highlighter-rouge">PULSE_SERVER</code> variable, it should point to the clients IP at port 4713 (check that by runing “env” in a terminal when logged in).</p>

<!--more-->

<p><strong>The pulse server only runs on the client, it has nothing to do with sound but being the transport endpoint… do not play with any pulse audio on the server, it’s all ALSA.</strong></p>

<h2 id="warning">Warning</h2>

<p>This document is the LTSP 4.2 Client Sound document, which I am in the process of migrating to LTSP 5.  I think it’s pretty much there now down to the last step, which may or may not be appropriate for LTSP 5.</p>

<h2 id="step-1---ensure-users-are-in-the-audio-group">Step 1 - Ensure users are in the audio group</h2>

<p>LDM (the default display manager we use in ltsp5) then sets up a virtual ALSA device in the users session during login.  The users that shall use sound need to be in the audio group to have access to the virtual sound device and volume control.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo adduser kate audio
Password: *******
The user `kate' is already a member of `audio'.
</code></pre></div></div>

<h2 id="step-2---switch-on-sound">Step 2 - Switch on sound</h2>

<p>You need to switch sound on for the clients, either for all clients by adding to <code class="language-plaintext highlighter-rouge">[default]</code> group at the top of the <code class="language-plaintext highlighter-rouge">lts.conf</code> file, or by adding to the specific client in the usual way.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># File: /opt/ltsp/i386/etc/lts.conf
#
[default] 
    SOUND_DAEMON       = pulse
    SOUND              = True
</code></pre></div></div>

<h2 id="step-3---check-alsa-set-up">Step 3 - Check alsa set-up</h2>

<p>To check the alsa setup is proper, have a look at <code class="language-plaintext highlighter-rouge">/etc/asound.conf</code>.  There should be two lines like the following:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>pcm.!default { type pulse }
ctl.!default { type pulse }
</code></pre></div></div>

<p>You may also have a file in the user’s home directory <code class="language-plaintext highlighter-rouge">.asound.conf</code>, which should probably be removed in order to default to the global setting?</p>

<h2 id="step-4---check-port">Step 4 - Check port</h2>

<p>The tunnel ALSA uses as endpoint is set up through LDM by setting the <code class="language-plaintext highlighter-rouge">PULSE_SERVER</code> variable, it should point to the clients IP at port 4713 (check that by runing “env” in a terminal when logged in).</p>

<p>Open a shell and type:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ env | grep PULSE
PULSE_SERVER=tcp:192.168.0.48:4713
$
</code></pre></div></div>

<h2 id="step-5---identify-soundcard">Step 5 - Identify soundcard</h2>

<p>To determine what Soundcard is installed in your PC, key [Ctrl]+[Alt]+[F1] and log in as root.  If you cannot log in, you may need to set the LTSP Client Root Password.</p>

<p>In the shell, to show any PCI Soundcards, type:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># lspci -v | more
</code></pre></div></div>

<p>Look for a device stating “audio” and make a note of the salient details.</p>

<h2 id="step-5b---check-sound-not-muted">Step 5b - Check Sound not Muted</h2>

<p>Some soundcards seem to suffer from a problem that they start-up muted.  To test this, whilst logged onto the client type:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># alsamixer
</code></pre></div></div>

<p>If for example the main volume is at nil and there is “MM” (Muted left and Muted right) at the bottom of the slider, then pressing M to unmute, and the cursor keys to increase the volume, will resolve the problem.  The only thing is that this fix will be lost next time you boot the client.</p>

<p>See <a href="/2009/02/17/ltsp5-sound-client-unmute-fix/">Unmute Fix</a> for details on how to permanently cure this problem.</p>

<h2 id="step-6---identify-sound-module-with-knoppix">Step 6 - Identify sound module with Knoppix</h2>

<p>Boot the client with Knoppix or another live CD and from a terminal window type <code class="language-plaintext highlighter-rouge">lsmod</code> to identify the sound module.  Use this information to help you in the next step.</p>

<h2 id="step-7---determine-appropriate-driver">Step 7 - Determine appropriate driver</h2>

<p>To decide the appropriate driver to use, typing the following command on the server or functioning client, will give you a list of available drivers:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ find /opt/ltsp/i386/lib/modules/ | grep snd
</code></pre></div></div>

<h2 id="step-8---trial-and-error">Step 8 - Trial and error</h2>

<p>At this point it’s probably worth removing, or commenting out the sound options, so that the client boots without any sound modules loaded. Once booted key Ctrl+Alt+F1.</p>

<p>Unless you have a good knowledge of sound drives, this is going to be a little bit of trial and error - remember Google is your friend. In this instance I Googled for “LTSP Intel 82801EB” and found a page detailing the following:</p>

<blockquote>
  <blockquote>
    <p>Intel Corp. 82801EB/ER (ICH5/ICH5R) AC’97 Audio Controller</p>
  </blockquote>

  <table>
    <tbody>
      <tr>
        <td>lsmod</td>
        <td>grep -i intel</td>
      </tr>
    </tbody>
  </table>

  <p>snd_intel8x0m 20036 1</p>
</blockquote>

<p>I compared this with the output from Step 4 and decided the best match was <code class="language-plaintext highlighter-rouge">snd-intel8x0</code>.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># modprobe snd-intel8x0
</code></pre></div></div>

<p>The command responded with some clean output. I therefore added the following to LTS.CONF:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SMODULE_01         = "snd-intel8x0"
</code></pre></div></div>

<p>And success!</p>

<p>A common Soundblaster compatible card is:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># File: /opt/ltsp/i386/etc/lts.conf
#
SMODULE_01 = "sb io=0x220 irq=5 dma=1"
</code></pre></div></div>

<h2 id="related-pages">Related Pages</h2>

<ul>
  <li><a href="/2008/06/21/ltsp-sound-on-compaq-ensff-pcs/">LTSP5 Sound Client :: Configure Compaq Deskpro ENSFF</a></li>
  <li><a href="/2009/02/17/ltsp5-sound-client-unmute-fix/">LTSP5 Sound Client :: Unmute Fix</a></li>
</ul>

       ]]>
      </description>
    </item>
    
    <item>
      <title>LTSP | LTSP5 Sound</title>
      <link>https://chrisjrob.com/2009/04/30/ltsp5-sound/</link>
      <pubDate>Thu, 30 Apr 2009 08:32:19 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/04/30/ltsp5-sound</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/ltsp_logo.png" align="right" alt="Featured Image">
         
         <h2 id="introduction">Introduction</h2>

<p>One of the many benefits of LTSP5 is that it does away with the need for ESD sound (or other hacks), and instead utilises Pulseaudio on the client and Alsa on the server.</p>

<p>The rest of this document is largely based on the following Ubuntu/Gnome instructions:</p>

<ul>
  <li>http://developer.novell.com/wiki/index.php/Feisty/HOWTO:_PulseAudio</li>
</ul>

<!--more-->

<p>Those instruction now state that they are obsolete for new versions of Ubuntu; however they still seem to be required for Debian Lenny.</p>

<h2 id="install-packages-on-server">Install packages on server</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo apt-get install pulseaudio liboil0.3 pulseaudio-utils libpulse-browse0 libpulse-mainloop-glib0 padevchooser pulseaudio-esound-compat
$ sudo apt-get install libao-pulse (for etch)
$ sudo apt-get install libao2 (for lenny)
$ sudo apt-get install alsa-base alsa-utils libasound2-plugins
</code></pre></div></div>

<h2 id="install-packages-on-client">Install packages on client</h2>

<p>I believe that these packages are already installed in Lenny, but no harm in checking:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo chroot /opt/ltsp/i386/
# apt-get install pulseaudio pulseaudio-esound-compat pulseaudio-module-x11
# exit
</code></pre></div></div>

<h2 id="alsa-configuration">ALSA configuration</h2>

<p>On the server, configure ALSA to forward audio to PulseAudio by creating a file <code class="language-plaintext highlighter-rouge">/etc/asound.conf</code> with the following:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>pcm.!default {
        type pulse
}

ctl.!default {
        type pulse
}
</code></pre></div></div>

<h2 id="pulseaudio-configuration">PulseAudio configuration</h2>

<p>Configure the PulseAudio daemon, create <code class="language-plaintext highlighter-rouge">/opt/ltsp/i386/etc/pulse/daemon.conf</code> as follows:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>daemonize = 1
high-priority = 1
log-target = stderr
resample-method = trivial
no-cpu-limit = 1
system-instance = 1
disable-shm = 1
</code></pre></div></div>

<h2 id="conclusion">Conclusion</h2>

<p>In my experience there is no need to reboot the server, in KDE I just restarted the sound system by switching sound off and back on in the KDE Control Panel, and clicked Test button.  I could probably just have logged off/on.</p>

<h2 id="references">References</h2>

<ul>
  <li>http://developer.novell.com/wiki/index.php/Feisty/HOWTO:_PulseAudio</li>
</ul>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Howto | Analyse Boot Speed</title>
      <link>https://chrisjrob.com/2009/04/29/analyse-boot-speed/</link>
      <pubDate>Wed, 29 Apr 2009 19:45:16 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/04/29/analyse-boot-speed</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/bootchart.png" align="right" alt="Featured Image">
         
         <h2 id="step-1---install-bootchart">Step 1 - Install bootchart</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># aptitude install bootchart
</code></pre></div></div>

<h2 id="step-2---update-grub">Step 2 - Update Grub</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># nano /boot/grub/menu.lst
</code></pre></div></div>

<!--more-->

<p>Look for a line that looks like this:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># altoptions=(single-user mode) single
</code></pre></div></div>

<p>And add a similar line after it that looks like this:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># altoptions=(single-user mode) single
# altoptions=(bootchart) init=/sbin/bootchartd
</code></pre></div></div>

<p>Then update your grub entries by typing:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># update-grub
</code></pre></div></div>

<h2 id="step-3---reboot">Step 3 - Reboot</h2>

<p>Reboot, making sure that you select the bootchart option from the grub menu.</p>

<p>Once the boot has finished, open a terminal and type:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ bootchart
</code></pre></div></div>

<h2 id="step-4---analyse">Step 4 - Analyse</h2>

<p>You chould find a new png image in your current directory (the one you ran the bootchart command from) called bootchart.png.  Open it, analyse it and write a really good howto on how to optimise your system, and then publish it on the web!</p>

<p>Good luck!</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Howto | Install Citrix Presentation Server Client</title>
      <link>https://chrisjrob.com/2009/04/24/install-citrix-presentation-server-client/</link>
      <pubDate>Fri, 24 Apr 2009 14:36:46 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/04/24/install-citrix-presentation-server-client</guid>
      <description>
       <![CDATA[
         
         <h2 id="install-openmotif">Install OpenMotif</h2>

<p>Before installing Citrix presentation server, you need to install OpenMotif.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ apt-get libmotif3
</code></pre></div></div>

<p>Unfortunately this is not available in Etch, so you have to get it from unstable. Add unstable to the source.list and install as follows:</p>

<!--more-->

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ apt-get -t "sid" libmotif3
</code></pre></div></div>

<h2 id="create-a-dummy-libxmso4">Create a dummy libXm.so.4</h2>

<p>libmotif3 only provides libXm.so.3, but libXm.so.4 is required:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo ln -s /usr/lib/libXm.so.3 /usr/lib/libXm.so.4
</code></pre></div></div>

<h2 id="download-client-from-citrix">Download client from Citrix</h2>

<p>Decide whether you wish to do an alien/rpm install, which will give you an easy uninstall method, or a standard binary installation. Currently my preference is the binary installation using checkinstall. Download the appropriate file from:</p>

<ul>
  <li>http://www.citrix.com/English/SS/downloads/details.asp?downloadID=3323&amp;productID=-1</li>
</ul>

<h2 id="binary-installation">Binary Installation</h2>

<p>If you decide to do a simple binary install, then simply extract the downloaded file and execute setup/install executable.  I suggest you use the checkinstall program.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo checkinstall ./setupwfc
</code></pre></div></div>

<h2 id="alien-installation">Alien Installation</h2>

<p><strong>I have not tested this method for the latest Citrix Receiver 11 software.</strong></p>

<p>Alternatively download the rpm package and convert using alien:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># sudo alien ICAClient-10.6-1.i386.rpm
# sudo dpkg --install icaclient_10.6-2_i386.deb
# /usr/lib/ICAClient/wfcmgr
</code></pre></div></div>

<h2 id="client-hostname">Client Hostname</h2>

<p><em>Is the client name configurable in UNIX clients or must it assume the host name?</em></p>

<p>The client name can be configured (though not through the user interface). A ClientName= entry can be placed in either the [WFClient] section of wfclient.ini, in the relevant description section of appsrv.ini, or in both. An appsrv.ini entry takes precedence over any wfclient.ini entry. If no name is specified, the default name is the host name.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ cd ~/.ICAClient
$ cat wfclient.ini | grep Name
ClientName=ltsp_cjr    
</code></pre></div></div>

<h2 id="sound">Sound</h2>

<ul>
  <li>http://ltsp.sourceforge.net/contrib/ica/ica-howto.html#audio</li>
</ul>

       ]]>
      </description>
    </item>
    
    <item>
      <title>LTSP | Install iTalc on Debian Lenny</title>
      <link>https://chrisjrob.com/2009/04/24/ltsp-install-italc-on-debian-lenny/</link>
      <pubDate>Fri, 24 Apr 2009 13:35:12 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/04/24/ltsp-install-italc-on-debian-lenny</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/italc_icon.png" align="right" alt="Featured Image">
         
         <h2 id="warning">Warning</h2>

<p>After completing this installation, the clients received an error on login about port 5900 already in use.  Upgrading italc-client (by temporarily adding the sid repository to <code class="language-plaintext highlighter-rouge">/etc/apt/source.list</code> in the chroot and re-installing italc-client) fixed this problem.</p>

<p>However, I was unable to get an acceptable performance from italc for shadowing, and ended up install x11vnc.  See <a href="/2013/03/19/ltsp-install-x11vnc-on-ltsp5/">Install x11vnc on LTSP5</a> for more information.</p>

<!--more-->

<h2 id="install-italc-client-in-chroot">Install italc-client in chroot</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo chroot /opt/ltsp/i386
# mount -t proc /proc /proc
# mount -t sysfs sys /sys
# apt-get install italc-client
# umount sys
# umount /proc
# exit
</code></pre></div></div>

<p><strong>If you are using ubuntu rather than debian, or have switched to nbd instead of nfs, remember to do an ltsp-update-client after leaving the chroot.</strong></p>

<h2 id="install-italc-master-on-server">Install italc-master on server</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo apt-get install italc-master
</code></pre></div></div>

<h2 id="generate-key-pairs">Generate Key Pairs</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo ica -role teacher -createkeypair
</code></pre></div></div>

<p><strong>I tried in vain to stipulate -role admin - could not get the keys to work.</strong></p>

<h2 id="set-permissions">Set Permissions</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo addgroup italc
$ sudo addgroup &lt;userid&gt; italc
$ sudo chgrp -R italc /etc/italc/keys
$ sudo chmod -R 640 /etc/italc/keys/private/
$ sudo chmod -R ug+X /etc/italc/keys/private/
</code></pre></div></div>

<h2 id="transfer-keys-to-client">Transfer keys to client</h2>

<p><strong>This assumes a standard /opt/ltsp/i386 chroot, change path to suit your installation.</strong></p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo mkdir /opt/ltsp/i386/etc/italc/keys
$ sudo cp -r /etc/italc/keys/public /opt/ltsp/i386/etc/italc/keys/
</code></pre></div></div>

<h2 id="create-client-start-script">Create client start script</h2>

<p>Enter the chroot:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo chroot /opt/ltsp/i386
</code></pre></div></div>

<p>And create the following script:</p>

<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c">#!/bin/sh</span>
<span class="c"># /usr/share/ldm/rc.d/S20-ica-launcher</span>
/usr/bin/ica &amp;
<span class="nb">true</span>
</code></pre></div></div>

<h2 id="test">Test</h2>

<ul>
  <li>Reboot client</li>
  <li>Log into client</li>
  <li>Open a terminal on the server and run /usr/bin/ica -noshm</li>
  <li>Run italc</li>
</ul>

<h2 id="references">References</h2>

<ul>
  <li>https://help.ubuntu.com/community/UbuntuLTSP/iTalc</li>
  <li>http://indianalinux.blogspot.com/2007/02/howto-install-italc-from-source-on.html</li>
  <li>http://wiki.ubuntu-fi.org/LTSP5_iTalc (Finnish)</li>
  <li>http://www.mail-archive.com/debian-edu@lists.debian.org/msg15477.html</li>
</ul>

       ]]>
      </description>
    </item>
    
    <item>
      <title>LTSP | Install iTalc on Debian Etch</title>
      <link>https://chrisjrob.com/2009/04/24/ltsp-install-italc-on-debian-etch/</link>
      <pubDate>Fri, 24 Apr 2009 13:34:25 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/04/24/ltsp-install-italc-on-debian-etch</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/italc_icon.png" align="right" alt="Featured Image">
         
         <h2 id="introduction">Introduction</h2>

<p><strong>Stop!  I believe there are now instructions on the ‘net for installing the client on the client instead of on the server</strong></p>

<p>iTalc is a “teacher tool” including screen shadowing functionality.  It has replaced Thin Client Manager in Edubuntu 8.04.</p>

<!--more-->

<p>The problem with italc is that the documentation is, I believe, for LTSP4.2, not LTSP5.  Worse, the <a href="http://italc.sourceforge.net/wiki/index.php?title=Download:Debian">Download → Debian</a> points at a defunct location, and goes on to state that the official Debian repositories contain out-of-date packages.</p>

<p>The following is a description for installing from source; which largely the document I followed, and you should read it in conjunction with this:</p>

<ul>
  <li><a href="http://indianalinux.blogspot.com/2007/02/howto-install-italc-from-source-on.html">http://indianalinux.blogspot.com/2007/02/howto-install-italc-from-source-on.html</a></li>
</ul>

<h2 id="warnings">Warnings</h2>

<p>This is a description of how I personally installed iTalc on Debian Etch with KDE 3.55.</p>

<p>The installation worked fine, except that iTalc kept bombing out every few seconds, making it completely useable.  It was quite obvious that this was down to Qt4, which Etch’s version is too old for iTalc.  Unfortunately there was no backports, so I ended up installing Qt4 from Lenny; resulting in several additional packages needing to be installed.  This immediately resolved the stability issues.</p>

<h2 id="download-source">Download source</h2>

<p>Navigate to the <a href="http://sourceforge.net/project/showfiles.php?group_id=132465">italc download page</a> and copy the link to the latest tar.gz file.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ cd /usr/src
$ sudo wget http://downloads.sourceforge.net/italc/italc-1.0.9-rc4.tar.bz2?modtime=1215423893&amp;big_mirror=0
</code></pre></div></div>

<h2 id="extract">Extract</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo tar -xvvjf italc-1.0.9-rc4.tar.bz2
$ cd italc*
</code></pre></div></div>

<h2 id="read-installation-notes">Read installation notes</h2>

<p>Yes, believe it or not you shouldn’t follow howto’s like this blindly, instead read the developer’s installation instructions and make your own judgements!</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ cat INSTALL | more
</code></pre></div></div>

<h2 id="install-dependencies">Install dependencies</h2>

<p>At the time of writing the above install file stated the following dependencies, which you should now install:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo apt-get install libqt4-dev qt4-dev-tools xorg-dev libxtst-dev libjpeg62-dev zlib1g-dev libssl-dev
</code></pre></div></div>

<p>xorg-dev will install a great many other files (probably worth removing them later)</p>

<p>In addition, we will need build-essential, in order to compile from source:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo apt-get install build-essential
</code></pre></div></div>

<p>And lastly, <a href="http://indianalinux.blogspot.com/2007/02/howto-install-italc-from-source-on.html">this page</a> included the following dependency, which we may as well install:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo apt-get install libxtst-dev
</code></pre></div></div>

<h2 id="compile-and-install">Compile and install</h2>

<p>As normal we need to ensure that we are in the source directory and then:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ ./configure --prefix=/usr
</code></pre></div></div>

<p>If that completes successfully, we can proceed to make:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ make
</code></pre></div></div>

<p>And, if that completes successfully, we can proceed to install:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo make install
</code></pre></div></div>

<h2 id="client-installation-on-the-server">Client installation on the server</h2>

<p>The installation was done as part of the server install, so all we need to do is create the client keys:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo ica -role teacher -createkeypair
</code></pre></div></div>

<p>Change permissions to increase security:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo addgroup italc
$ sudo adduser username italc
$ sudo chgrp -R italc /etc/italc/keys/private
$ sudo chmod -R o-rwx /etc/italc/keys/private
</code></pre></div></div>

<p>This method has a problem in that all the clients are going to be coming from the same IP address, i.e. the server IP, so we need to give each user their own port.  A good idea is to base the port number on 10000 + the last segment of their IP address.  Edubuntu has a script for this, which requires the $LTSP_CLIENT variable to be present. I have modified so that it instead uses the $SSH_CLIENT variable, as follows:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>#!/bin/sh

# /usr/bin/ica-launcher
if [ "$SSH_CLIENT" ]
then
        PORT=`echo $SSH_CLIENT | awk -F . '{print \$4}' | awk -F " " '{print \$1}'`
        IVS=$((10000 + $PORT))
        ISD=$((11000 + $PORT))
        ica -noshm -ivsport $IVS -isdport $ISD &amp;
else
        ica -noshm
fi
</code></pre></div></div>

<h2 id="autostart">Autostart</h2>

<p>We need the client to run automatically when users log in.  In KDE this means a .desktop file in /usr/share/autostart.  If you’re unsure how to do this, then an example “italc.desktop” file is shown below:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/usr/share/autostart/italc.desktop:

[Desktop Entry]
Comment=
Comment[en_GB]=
Encoding=UTF-8
Exec=/usr/bin/ica-launcher
GenericName=
GenericName[en_GB]=
Icon=/usr/share/icons/italc.png
MimeType=
Name=iTalc Client
Name[en_GB]=iTalc Client
Path=
StartupNotify=true
Terminal=false
TerminalOptions=
Type=Application
X-DCOP-ServiceType=
X-KDE-SubstituteUID=false
X-KDE-Username=
</code></pre></div></div>

<p>You also need to exclude from session restoring for all users (if you use KDE session restore):</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/home/username/.kde/share/config/ksmserverrc:

[General]
excludeApps=ica
</code></pre></div></div>

<p><strong>Do the same for <code class="language-plaintext highlighter-rouge">/etc/skel/.kde/share/config/ksmserverrc</code> to effect new users when they are created.</strong></p>

<h2 id="alternative-method---client-installation-in-chroot">Alternative Method - client installation in chroot</h2>

<p>In theory I would have liked to have the client installed in the chroot.  This should run quicker and provide full functionality of logon/logoff etc.  In practice I was unable to get this working, with very much the same results as I had with x11vnc, in that the software would run, but netstat would not show any ports opened.  A mystery.  After spending a couple of days on this, I decided to give up and instead run both client and server on the server.</p>

<p>If you are determined to install in the chroot, I found that it was possible to download and install the following prebuilt binaries for Ubuntu (requires some packages installing from lenny):</p>

<ul>
  <li>http://www.stgraber.org/download/ubuntu/italc/hardy-i386/</li>
</ul>

<p>This will automatically generate the keys, and you will need to copy the private key to the server.</p>

<p>Also, you should probably make the X.Org Module change (see below).</p>

<p>And don’t forget to update the image:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo ltsp-update-image
</code></pre></div></div>

<h2 id="references">References</h2>

<ul>
  <li>http://italc.sourceforge.net/
    <ul>
      <li>http://italc.sourceforge.net/wiki/index.php?title=ITALC_in_a_ThinClient_environment</li>
    </ul>
  </li>
  <li>https://wiki.ubuntu.com/iTalc</li>
  <li>http://italc.sourceforge.net/home.php</li>
  <li>http://wiki.skolelinux.de/Etch/Italc</li>
  <li>http://www.stgraber.org/</li>
  <li>http://indianalinux.blogspot.com/2007/02/howto-install-italc-from-source-on.html</li>
</ul>

       ]]>
      </description>
    </item>
    
    <item>
      <title>Howto | Determine vendor-class-identifier</title>
      <link>https://chrisjrob.com/2009/04/14/determine-vendor-class-identifier/</link>
      <pubDate>Tue, 14 Apr 2009 07:49:13 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/04/14/determine-vendor-class-identifier</guid>
      <description>
       <![CDATA[
         
         <h2 id="introduction">Introduction</h2>

<p>All the advice about DHCP and PXEClient tells you about the ability to configure based on the client’s vendor-class-identifier string, but nowhere tells you how to find out the contents of this magical string.  In fact it couldn’t really be easier, as the following instructions explain:</p>

<h2 id="step-1---update-dhcp-server">Step 1 - Update DHCP Server</h2>

<!--more-->

<p>Simply modify <code class="language-plaintext highlighter-rouge">/etc/dhcp3/dhcpd.conf</code> on your DHCP server and add the following somewhere near the top:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># So that the vendor-class-identifier shows in dhcpd.leases file
set vendor-string = option vendor-class-identifier;
</code></pre></div></div>

<h2 id="step-2---restart-your-dhcp-server">Step 2 - Restart your DHCP server</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># /etc/init.d/dhcp3-server restart
</code></pre></div></div>

<h2 id="step-3---test-boot-a-client">Step 3 - Test Boot a Client</h2>

<p>Then boot a client and look at the contents of the <code class="language-plaintext highlighter-rouge">/var/lib/dhcp3/dhcpd.leases</code> file, you should find entries like this:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>lease 192.168.0.174 {
    starts 2 2009/04/14 07:40:21;
    ends 2 2009/04/14 13:40:21;
    binding state active;
    next binding state free;
    hardware ethernet 00:fb:3d:5f:fg:7e;
    set vendor-string = "PXEClient:Arch:00000:UNDI:002001";
}
</code></pre></div></div>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Improving boot performance</title>
      <link>https://chrisjrob.com/2009/04/14/improving-boot-performance/</link>
      <pubDate>Tue, 14 Apr 2009 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/04/14/improving-boot-performance</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/bootchart_500.png" align="right" alt="Featured Image">
         
         <p>One thing you need to know about me is that I am rarely satisfied.  For example, my laptop boots up in a very acceptable 25 seconds, but still I am looking for better.  So far I have not managed to improve matters, but I did find a great tool for graphing your boot performance, and a very neat way of adding it as a grub boot option, read the following article for how to set this up:</p>

<!--more-->

<h2 id="analyse-boot-speed">Analyse Boot Speed</h2>

<h3 id="step-1---install-bootchart">Step 1 - Install bootchart</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># aptitude install bootchart
</code></pre></div></div>

<h3 id="step-2---update-grub">Step 2 - Update Grub</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># nano /boot/grub/menu.lst
</code></pre></div></div>

<p>Look for a line that looks like this:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># altoptions=(single-user mode) single
</code></pre></div></div>

<p>And add a similar line after it that looks like this:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># altoptions=(single-user mode) single
# altoptions=(bootchart) init=/sbin/bootchartd
</code></pre></div></div>

<p>Then update your grub entries by typing:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># update-grub
</code></pre></div></div>

<h3 id="step-3---reboot">Step 3 - Reboot</h3>

<p>Reboot, making sure that you select the bootchart option from the grub menu.</p>

<p>Once the boot has finished, open a terminal and type:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ bootchart
</code></pre></div></div>

<h3 id="step-4---analyse">Step 4 - Analyse</h3>

<p>You chould find a new png image in your current directory (the one you ran the bootchart command from) called bootchart.png.  Open it, analyse it and write a really good howto on how to optimise your system, and then publish it on the web!</p>

<p>Good luck!</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Surrey LUG Bring-a-Box Meeting</title>
      <link>https://chrisjrob.com/2009/04/11/surrey-lug-bring-a-box-meeting/</link>
      <pubDate>Sat, 11 Apr 2009 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/04/11/surrey-lug-bring-a-box-meeting</guid>
      <description>
       <![CDATA[
         
         <p>I’ve just returned from my first <a href="http://surrey.lug.org.uk/Meetings/BringABox/Archive/20090411">Bring-a-Box meeting at Nokia in Farnborough</a>.  I found it hugely enjoyable to have people who actually want to talk about Linux.</p>

<!--more-->

<p>I was introduced to Firestarter, which is a GUI to configure a firewall and share your Internet connection, if you so wish, I’m looking forward to having a play with this.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Howto | Create a Virtual Machine in KVM</title>
      <link>https://chrisjrob.com/2009/04/09/create-a-virtual-machine-in-kvm/</link>
      <pubDate>Thu, 09 Apr 2009 19:26:35 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/04/09/create-a-virtual-machine-in-kvm</guid>
      <description>
       <![CDATA[
         
         <h2 id="creating-a-disk-image-for-the-guest">Creating a disk image for the guest</h2>

<p>The following command will create a resizing 10G image in your current directory:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># /usr/bin/qemu-img create -f qcow2 vdisk.img 10G
</code></pre></div></div>

<!--more-->

<h2 id="booting-from-cdrom">Booting from CDROM</h2>

<p>I struggled on our LTSP server to boot from CDROM, but found that I could boot easily from the downloaded IMG files (from Microsoft).</p>

<p>Boot from first CD image:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ kvm -no-acpi -m 512 -cdrom /home/username/vdisks/w2k3/iso/X13-04874.img -boot d -hda w2k3.img -k en-gb -smp 2
</code></pre></div></div>

<p>Boot from second CD image:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ kvm -no-acpi -m 512 -cdrom /home/username/vdisks/w2k3/iso/X13-04795.img -boot d -hda w2k3.img -k en-gb -smp 2
</code></pre></div></div>

<h2 id="references">References</h2>

<ul>
  <li>http://kvm.qumranet.com/kvmwiki/HOWTO</li>
  <li>http://www.debian-administration.org/articles/545</li>
</ul>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Howto | Uninstall applications installed from source</title>
      <link>https://chrisjrob.com/2009/04/03/uninstall-applications-installed-from-source/</link>
      <pubDate>Fri, 03 Apr 2009 09:21:03 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/04/03/uninstall-applications-installed-from-source</guid>
      <description>
       <![CDATA[
         
         <h2 id="the-problem">The Problem</h2>

<p>Sometimes you have to compile and install packages from source.  Other times you have to install an application from a tarball.  But how do you uninstall it?</p>

<h2 id="automated-uninstall-method">Automated uninstall method</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ cd /usr/src/&lt;yourapp&gt;
$ make uninstall
</code></pre></div></div>

<!--more-->

<p>This will probably fail with make:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>*** No rule to make target `uninstall'.  Stop.
</code></pre></div></div>

<h2 id="manual-uninstall-method">Manual uninstall method</h2>

<p>In which case your only recourse is to manually unpick the application. One way to do this is to run the following:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ cd /usr/src/package &amp;larr; assuming you still have the source
$ sudo make -n install &gt; install.log
</code></pre></div></div>

<p>I.e. reinstall the application (if you still have the source code) and then read the install.log file and work backwards unpicking the changes made by the installation.</p>

<h2 id="checkinstall">Checkinstall</h2>

<p>As usual prevention is better than cure, and in this case the answer is to always install applications with checkinstall (available in the Debian repositories).  This converts an installer into debian package, which can then be installed and uninstalled like any other debian package.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo apt-get install checkinstall
$ man checkinstall
</code></pre></div></div>

<p>Then to use checkinstall, you simply prefix your install command with “checkinstall”.  So compiling an application from source would look like this:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ ./configure
$ make
$ sudo checkinstall make install
</code></pre></div></div>

<p>Or if you are installing from a ./install.sh or some such, just prefix this with “checkinstall” - e.g.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo checkinstall ./install.sh
</code></pre></div></div>

<p>This will result in the creation and installation of a “deb” package.  This means that you can upgrade or simply remove the package simply using the “dpkg -r packagename” command.</p>

<p><strong>If you’re not on a Debian-based system, then just add the relevant switch for rpm or slackware packages (read the man page).</strong></p>

<h2 id="warning">Warning</h2>

<p>In theory you could upgrade a package installed by checkinstall, once an application enters the standard repos, in practice you might get messed up; as checkinstall is quite likely to install stuff in different locations to a standard debian/ubuntu package.  In practice this issue only arises very occasionally (there is a reason why you installed the package from source/tarball).  But if it does happen, then you are probably best advised to remove the package using “dpkg -r” and then install it from the repos in the usual way.</p>

<h2 id="references">References</h2>

<ul>
  <li><a href="http://www.asic-linux.com.mx/~izto/checkinstall/">Checkinstall Homepage</a></li>
  <li><a href="http://www.debian-administration.org/articles/147">Debian Tutorial</a></li>
  <li><a href="http://www.falkotimme.com/howtos/checkinstall/index.php">Falko Timme’s Tutorial</a></li>
</ul>


       ]]>
      </description>
    </item>
    
    <item>
      <title>A warm fuzzy feeling</title>
      <link>https://chrisjrob.com/2009/03/22/a-warm-fuzzy-feeling/</link>
      <pubDate>Sun, 22 Mar 2009 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/03/22/a-warm-fuzzy-feeling</guid>
      <description>
       <![CDATA[
         
         <p>I apologise in advance for this shameless piece of self-congratulation; but a while ago I wrote about how to Recover Data from a Hard Disk, and I published it also on my local <a href="http://surrey.lug.org.uk/kb/datarecovery">LUG’s knowledgebase</a>.  I have just received an email to say that my instructions have enabled someone to recover two years’ worth of lesson plans for a special-needs teacher.  So I must admit to feeling rather pleased with myself!</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>LTSP | LTSP Rdesktop Sound</title>
      <link>https://chrisjrob.com/2009/03/21/ltsp5-sound-rdesktop/</link>
      <pubDate>Sat, 21 Mar 2009 06:28:35 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/03/21/ltsp5-sound-rdesktop</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/ltsp_logo.png" align="right" alt="Featured Image">
         
         <h2 id="background">Background</h2>

<p>Rdesktop is a problem, because it uses <code class="language-plaintext highlighter-rouge">/dev/dsp</code> as the sound device (for version 1.5 at least).  This is incompatible with ALSA.</p>

<h2 id="solution">Solution</h2>

<!--more-->

<p>Specifying “oss” as the sound driver, instead of the default, worked fine:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ padsp rdesktop -r sound:local:oss 192.168.0.1
</code></pre></div></div>


       ]]>
      </description>
    </item>
    
    <item>
      <title>LTSP | Local Device Icons on KDE Desktop</title>
      <link>https://chrisjrob.com/2009/03/21/ltsp-local-device-icons-on-kde-desktop/</link>
      <pubDate>Sat, 21 Mar 2009 06:27:07 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/03/21/ltsp-local-device-icons-on-kde-desktop</guid>
      <description>
       <![CDATA[
         
         <p>Read:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/usr/share/doc/ltspfs/examples/kde-desktop-icons
</code></pre></div></div>

<p>Add follow instructions.  You’ll need to create the directory mentioned.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>LTSP | LTSP4.2 Client Sound</title>
      <link>https://chrisjrob.com/2009/03/21/ltsp4.2-sound-client/</link>
      <pubDate>Sat, 21 Mar 2009 06:26:08 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/03/21/ltsp4.2-sound-client</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/ltsp_logo.png" align="right" alt="Featured Image">
         
         <h2 id="step-1---switch-on-sound">Step 1 - Switch on sound</h2>

<p>Firstly, you need to switch sound on for the clients.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># File: /opt/ltsp/i386/etc/lts.conf
#
# enable sound by default
SOUND                   = Y
# choose either esd or nasd to be the default (esd only on x86_64)
SOUND_DAEMON            = esd
VOLUME                  = 100 # Speaker &amp; WAVE volume pecentage
MIC_VOLUME              = 100 # Microphone volume
CD_VOLUME               = 75  # CD Audio volume
</code></pre></div></div>

<!--more-->

<h2 id="step-2---identify-soundcard">Step 2 - Identify soundcard</h2>

<p>To determine what Soundcard is installed in your PC, add the line:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># File: /opt/ltsp/i386/etc/lts.conf
#
SCREEN_02          = shell
</code></pre></div></div>

<p>Then enter after rebooting, enter shell by typing Ctrl+Alt+F2. In the shell, to show any PCI Soundcards, type:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># lspci -v | more
</code></pre></div></div>

<p>Look for a device stating “audio” and make a note of the salient details. For example my test PC has the following details:</p>

<p>Intel 82801EB/ER AC97 IRQ5 IO Port d400 @ 256k and d800 @ 64k.</p>

<h2 id="step-3---check-ltsporg">Step 3 - Check LTSP.org</h2>

<p>Check the following website - you might strike lucky!</p>

<ul>
  <li>http://wiki.ltsp.org/twiki/bin/view/Ltsp/SoundCards</li>
</ul>

<h2 id="step-4---determine-appropriate-driver">Step 4 - Determine appropriate driver</h2>

<p>To decide the appropriate driver to use, typing the following command on the server or functioning client, will give you a list of available drivers:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ find /opt/ltsp/i386/lib/modules/ | grep snd
</code></pre></div></div>

<h2 id="step-5---identify-sound-module-with-knoppix">Step 5 - Identify sound module with Knoppix</h2>

<p>Boot the client with Knoppix and from a terminal window type “lsmod” to identify the sound module.</p>

<h2 id="step-6---trial-and-error">Step 6 - Trial and error</h2>

<p>At this point it’s probably worth removing, or commenting out the sound options, so that the client boots without any sound modules loaded. Once booted key Ctrl+Alt+F2.</p>

<p>Unless you have a good knowledge of sound drives, this is going to be a little bit of trial and error - remember Google is your friend. In this instance I Googled for “LTSP Intel 82801EB” and found a page detailing the following:</p>

<blockquote>
  <blockquote>
    <p>Intel Corp. 82801EB/ER (ICH5/ICH5R) AC’97 Audio Controller</p>
  </blockquote>

  <table>
    <tbody>
      <tr>
        <td>lsmod</td>
        <td>grep -i intel</td>
      </tr>
    </tbody>
  </table>

  <p>snd_intel8x0m 20036 1</p>
</blockquote>

<p>I compared this with the output from Step 4 and decided the best match was “snd-intel8x0”.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># modprobe snd-intel8x0
</code></pre></div></div>

<p>The command responded with some clean output. I therefore added the following to LTS.CONF:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SMODULE_01         = "snd-intel8x0"
</code></pre></div></div>

<p>And success!</p>

<p>A common Soundblaster compatible card is:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># File: /opt/ltsp/i386/etc/lts.conf
#
SMODULE_01 = "sb io=0x220 irq=5 dma=1"
</code></pre></div></div>

<h2 id="other-issues">Other issues</h2>

<h3 id="soundcard-okay-but-no-sound">Soundcard okay but no sound</h3>

<p>If you are confident that the soundcard is being identified correctly and there are no errors on boot-up, then perhaps the volume is muted. The only volume controls at our disposal are:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>VOLUME                  = 100 # Speaker &amp; WAVE volume pecentage
MIC_VOLUME              = 100 # Microphone volume
CD_VOLUME               = 75  # CD Audio volume
</code></pre></div></div>

<p>However from a client shell you can try the following:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ cd /share/sounds/alsa
$ esdplay Noise.wav
$ amixer scontrols              # Take a note of them
$ amixer sget Front             # To view each control
$ amixer sset Front 75% unmute   # To set a control called Front to 75% volume
</code></pre></div></div>

<h2 id="snd-hda-intel-issues">snd-hda-intel issues</h2>

<p>Oh, so may issues. Try each of the following in <code class="language-plaintext highlighter-rouge">lts.conf</code>:</p>

<p><strong>Google for ALSA-Configuration.txt and review section on snd-hda-intel.</strong></p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SMODULE_01              = "snd-hda-intel model=auto"
SMODULE_01              = "snd-hda-intel model=3stack"
SMODULE_01              = "snd-hda-intel model=3stack-dig"
SMODULE_01              = "snd-hda-intel index=0 probe_mask=3 position_fix=3"
SMODULE_01              = "snd-hda-intel position_fix=1 model=3stack"
</code></pre></div></div>

<h2 id="sound-muted">Sound muted</h2>

<p>All working but sound muted. Save this script as “unmute” in <code class="language-plaintext highlighter-rouge">/opt/ltsp/i386/etc/rc.d</code>:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>#!/bin/bash
#
# Copyright Gideon Romm, Symbio Technologies
#
# Released under GPLv2
#
# This is a script to set up certain things 
# that are not already setup in an SBA environment
#
# Specifically:
#   1. restore sound levels
#

# Set up local environment
if [ -f /etc/lts.conf ]; then
    eval `getltscfg -a`
fi

# Set up sound
if [ -n "$VOLUME" ]; then
    amixer sset Master,0 ${VOLUME}% unmute 2&gt;/dev/null
    amixer sset 'Master Digital',0 ${VOLUME}% unmute 2&gt;/dev/null
    amixer sset Headphone,0 ${HEADPHONE_VOLUME:-$VOLUME}% unmute 2&gt;/dev/null
fi

if [ -n "$PCM_VOLUME" ]; then
    amixer sset PCM,0 ${PCM_VOLUME}% unmute 2&gt;/dev/null
fi

if [ -n "$MIC_VOLUME" ]; then
    amixer sset Mic,0 ${MIC_VOLUME}% unmute cap 2&gt;/dev/null
fi

if [ -n "$CD_VOLUME" ]; then
    amixer sset CD,0 ${CD_VOLUME}% unmute 2&gt;/dev/null
fi

if [ -n "$FRONT_VOLUME" ]; then
    amixer sset Front,0 ${FRONT_VOLUME}% unmute 2&gt;/dev/null
fi
</code></pre></div></div>

<p>Then add the following line to LTS.conf:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>RCFILE_01          = unmute
</code></pre></div></div>

<p>This unmute script also adds the functionality of FRONT_VOLUME, which may be set in LTS.CONF:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>FRONT_VOLUME       = 100
</code></pre></div></div>

<p>The script could be easily modified to enable other volume controls is required.</p>

       ]]>
      </description>
    </item>
    
    <item>
      <title>LTSP | LTSP4.2 Sound</title>
      <link>https://chrisjrob.com/2009/03/21/ltsp4.2-sound/</link>
      <pubDate>Sat, 21 Mar 2009 06:25:59 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/03/21/ltsp4.2-sound</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/ltsp_logo.png" align="right" alt="Featured Image">
         
         <h2 id="introduction">Introduction</h2>

<p>Warning: sound on LTSP should only be contemplated by those who enjoy good health and have no history of heart disease in their family. If you are of a nervous disposition you should not attempt sound on LTSP.</p>

<p>Please note that this solution, at best, result in poor quality sound. High fidelity it is not.</p>

<!--more-->

<p>The absolute gospel according to LTSP sound is the following web page. You may consider this page to be disjointed and contradictory, that is because it is disjointed and contradictory.</p>

<ul>
  <li>http://wiki.ltsp.org/twiki/bin/view/Ltsp/Sound</li>
</ul>

<p>Good luck!</p>

<h2 id="esd-socket">ESD Socket</h2>

<p>ESD requires a socket to run, but if your server doesn’t have a sound card, then the odds are that you do not have a socket. You will need to create this manually:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo mkdir /tmp/.esd
$ sudo touch /tmp/.esd/socket
</code></pre></div></div>

<p>You will need some form of script and cron job in order to make this persist beyond server reboots.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>#!/bin/bash
if [ ! -e /tmp/.esd/socket ]; then
    /bin/mkdir /tmp/.esd
    /bin/touch /tmp/.esd/socket
fi
</code></pre></div></div>

<p>Save this script somewhere, make it executable and add it to crontab.</p>

<h2 id="oss-transparent-redirection-to-esd">OSS transparent redirection to esd</h2>

<p>There are other ways of getting sound, but this seems to work. Most Linux application can use <code class="language-plaintext highlighter-rouge">/dev/oss</code>, KDE, RealPlayer, Skype, … support it. Also if sound redirection by OSS might not be the best quality, in order to listen voicemails and/or online training it is more than enough.</p>

<p>The other nice thing with OSS redirection, is that from a system admin point of view it is a piece of cake !!! After you’ve started esound server from <code class="language-plaintext highlighter-rouge">lts.conf</code> as explained before, make it available automatically from X11 startup. In order to do so add in <code class="language-plaintext highlighter-rouge">/etc/X11/Xsession</code> somewhere before it launches your window manager.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>REMOTE_X11=${DISPLAY%:*}
if test "$REMOTE_X11" == ""
then
  export REMOTEX_11=false
else
  export ESPEAKER=$REMOTE_X11:16001
  export ESDDSP_MIXER=1
# export LD_PRELOAD="/usr/lib/libesddsp.so.0 /usr/lib/libesd.so.0 $LD_PRELOAD"        # Non-debian
  export LD_PRELOAD="/usr/lib/esound/libesddsp.so.0 /usr/lib/libesd.so.0 $LD_PRELOAD" # Debian
  export REMOTE_X11=true
fi
</code></pre></div></div>

<p>Note that the line:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>export LD_PRELOAD="/usr/lib/libesddsp.so.0 /usr/lib/libesd.so.0 $LD_PRELOAD"
</code></pre></div></div>

<p>must be changed to</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>export LD_PRELOAD="/usr/lib/esound/libesddsp.so.0 /usr/lib/libesd.so.0 $LD_PRELOAD"
</code></pre></div></div>

<p>In order to check, connect from your LSTP client and check <code class="language-plaintext highlighter-rouge">$ESPEAKER</code>. It’s value should look like ltsp-client-name:16001.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ echo $ESPEAKER
ws179.ltsp:16001
</code></pre></div></div>

<p>Next step is to try it, by finding a .wav file somewhere is <code class="language-plaintext highlighter-rouge">/usr/share/sounds</code> and run it using esdplay:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ esdplay /usr/share/sounds/alsa/test.wav
</code></pre></div></div>

<p>Hopefully you heard some sound?</p>

<h2 id="flash-sound">Flash Sound</h2>

<p>For YouTube and other flash websites, if you want sound, you should download and run this deb:</p>

<ul>
  <li>http://pulseaudio.vdbonline.net/libflashsupport/</li>
</ul>

<p>This is experimental and unsupported, but it worked first time.</p>

<h2 id="realplayer">Realplayer</h2>

<h3 id="references">References</h3>

<ul>
  <li>http://forms.real.com/real/player/blackjack.html</li>
  <li>http://linux.derkeiler.com/Mailing-Lists/Debian/2004-02/3778.html</li>
</ul>

<h3 id="step-1-create-download-directory">Step 1: Create download directory</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ cd ~
$ mkdir realplayer8
$ cd realplayer8
</code></pre></div></div>

<h3 id="step-2-download-realplayer-8">Step 2: Download Realplayer 8</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ wget http://software-dl.real.com/2241543e04bd76d81218//support/unix/rp8_linux20_libc6_i386_cs1_rpm.htm
</code></pre></div></div>

<h3 id="step-3-correct-name-of-downloaded-file">Step 3: Correct name of downloaded file</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ mv rp8_linux20_libc6_i386_cs1_rpm.htm rp8_linux20_libc6_i386_cs1.rpm
</code></pre></div></div>

<h3 id="step-4-convert-and-install-deb">Step 4: Convert and install deb</h3>

<p>I have tested and the –scripts option seems to work well.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ alien --scripts rp8_linux20_libc6_i386_cs1.rpm
$ dpkg -i rp8_linux20_libc6_i386_cs1.deb
</code></pre></div></div>

<h3 id="step-5-create-symlink-to-mozilla-plugins">Step 5: Create symlink to Mozilla Plugins</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo ln -s /usr/local/netscape/plugins/rpnp.so /usr/lib/mozilla/plugins/rpnp.so
</code></pre></div></div>

<h2 id="esound-on-vmware">ESound on VMWare</h2>

<p>If Enlightenment Sound Daemon is enabled on the Linux host, the software opens the host machine’s sound device by the time X starts. When a virtual machine with sound configured is started on a host with ESD running, Workstation will not be able to access the sound device because it is in use. As a workaround, you can start the Workstation session using the esddsp wrapper. Start the session by typing <code class="language-plaintext highlighter-rouge">esddsp vmware</code> or <code class="language-plaintext highlighter-rouge">esddsp &lt;virtualmachinename&gt;.cfg</code>. The wrapper will pass the sound output generated by the virtual machine as an audio stream to the ESD audio server.</p>

<h2 id="mplayer">MPlayer</h2>

<p>MPlayer must be configured</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/etc/mplayer$ sudo nano mplayer.conf
vo=x11
ao=esd
framedrop=1

$ sudo nano /etc/mplayerplug-in.conf

# See http://mplayerplug-in.sourceforge.net/config.php
# for a description of these options
vo=x11
ao=esd
cachesize=512
cache-percent=25
dload-dir=$HOME/tmp
autostart=1
enable-wmp=1
enable-qt=1
enable-rm=1
enable-gmp=1
enable-dvx=1
enable-mpeg=1
enable-mp3=1
enable-midi=0
enable-pls=1
enable-ogg=1
enable-smil=1
enable-helix=1
nomediacache=0
nopauseonhide=0
rtsp-use-tcp=0
rtsp-use-http=0
framedrop=1
</code></pre></div></div>

<ul>
  <li>http://mplayerplug-in.sourceforge.net/config.php</li>
</ul>


       ]]>
      </description>
    </item>
    
    <item>
      <title>LTSP | LTSP4.2 Scanning</title>
      <link>https://chrisjrob.com/2009/03/21/ltsp4.2-scanning/</link>
      <pubDate>Sat, 21 Mar 2009 06:25:44 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/03/21/ltsp4.2-scanning</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/ltsp_logo.png" align="right" alt="Featured Image">
         
         <h2 id="enable-saned-on-terminal">Enable saned on terminal</h2>

<ul>
  <li>Edit <code class="language-plaintext highlighter-rouge">/opt/ltsp/i386/etc/lts.conf</code> and add <code class="language-plaintext highlighter-rouge">XINETD_SERVICES = "saned"</code> to the <code class="language-plaintext highlighter-rouge">[default]</code> or relevant terminal section</li>
  <li>Restart the terminal</li>
  <li>Run <code class="language-plaintext highlighter-rouge">scanimage -L</code> on workstation shell to verify that scanner has been detected</li>
</ul>

<!--more-->

<h2 id="usage">Usage</h2>

<ul>
  <li>Physically plug the scanner into the terminal using USB or parallel port.</li>
  <li>Edit <code class="language-plaintext highlighter-rouge">/etc/sane.d/net.conf</code> and add the hostname or address of client running saned</li>
  <li>Use xsane, OpenOffice.org, GIMP, or any other scanner-aware application, as they should now list the scanner.</li>
</ul>

<h2 id="alternative-to-netconf">Alternative to net.conf</h2>

<p>If you do not wish to add the host to net.conf (as shown above) then you can run the following:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ SANE_NET_HOSTS=`echo $DISPLAY | cut -d: -f1`
$ export SANE_NET_HOSTS
</code></pre></div></div>

<p><strong>This will only work for the life of the terminal window - so you will need to run the application from the command line. Alternatively add this to a script that does the scanning.</strong></p>

<h2 id="scanning-from-the-command-line">Scanning from the command line</h2>

<h3 id="check-scanner-detected">Check scanner detected</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ scanimage -L
</code></pre></div></div>

<h3 id="scan">Scan</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ scanimage -l 0 -t 0 -x 215 -y 297 --mode {Lineart|Gray|Color} --resolution {75..600} --format {pnm|tiff} --brightness {-100..100} --contrast {-100..100} &gt;test.pnm
</code></pre></div></div>

<h2 id="references">References</h2>

<ul>
  <li>http://wiki.ltsp.org/twiki/bin/view/Ltsp/Scanners</li>
</ul>


       ]]>
      </description>
    </item>
    
    <item>
      <title>LTSP | LTSP 4.2 or LTSP 5</title>
      <link>https://chrisjrob.com/2009/03/21/ltsp-4.2-or-ltsp5/</link>
      <pubDate>Sat, 21 Mar 2009 06:25:19 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/03/21/ltsp-4.2-or-ltsp5</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/ltsp_logo.png" align="right" alt="Featured Image">
         
         <h2 id="choosing-your-version-of-ltsp">Choosing your version of LTSP</h2>

<p>There are two versions of LTSP currently available:</p>

<ul>
  <li>LTSP4.2</li>
  <li>LTSP5</li>
</ul>

<p>If you visit the LTSP website, then you can’t help but notice that <em>all</em> the information is on LTSP4.2.  If you do some Googling about LTSP5, you will quickly determine that LTSP5 is full of problems, at an early stage of development and best avoided.</p>

<p>Wrong, wrong, wrong.  You are just about to make a mistake.</p>

<!--more-->

<p>In fact LTSP5 is the current version and has been since 2006.  Indeed, if you try and seek any help in respect of version 4.2, and you will invariably get the response - <em>“LTSP4.2 is obsolete, unmaintained and you are an idiot to have installed it”</em>.</p>

<p>Okay I exaggerate, but not by much!  If you <em>do</em> install 4.2, at some point you are going to want to update the client.  Well that requires LBE (read the Wiki for details) - then you will hit the problem that LBE is broken and will not install.  You’ll ask for help and the response you will receive is pretty much as above.</p>

<p>Good luck sorting <em>that</em> little problem out, for myself I upgraded to LTSP5 (see <a href="/2010/06/25/ltsp5-upgrade/">LTSP5 Upgrade</a>) and I have never looked back.  The client is up-to-date and configurable, the local devices work, sound works, and little fluffy bunny rabbits nibble the grass while the sun shines.</p>

<p>In short all his just fine and dandy in the world of LTSP5.  Always assuming it’s been packaged for your distro, it has for Debian and Ubuntu, for the rest you’ll need to make your own enquiries.</p>

<h2 id="what-you-can-expect-from-ltsp42">What you can expect from LTSP4.2</h2>

<h3 id="positives">Positives</h3>

<p>A working reliable system.  Sound (see <a href="/2009/03/21/ltsp4.2-sound/">LTSP4.2 Sound</a>).  Local Devices that appear on the desktop when you plug them in.  Works particularly well for older clients (Pentium II with 32mb RAM).</p>

<h3 id="negatives">Negatives</h3>

<p>Expect to fight any PC built in the last two or three years.  Expect to have battles getting sound working on your clients (usually solvable, usually you have wounds to lick afterwards).  I am told that USB keys don’t work quite as well, although I never found any problem in this area.  Indeed I managed to get USB keys working better under LTSP4.2 than I have subsequently managed to do in LTSP5.</p>

<h2 id="what-you-can-expect-from-ltsp5">What you can expect from LTSP5</h2>

<p>A system that pretty much works as you expect.  Sound was simple to configure and works well.  Scanning took a little bit of working out (see <a href="/2009/11/18/ltsp5-scanning/">LTSP5 Scanning</a>).  Local devices work just fine (with the exception of some incorrectly partitioned devices).  The client system works very well, although I am still learning exactly how it all hangs together.  Newer PCs work perfectly, and all but the oldest PCs seem fine.  The ones I did have to get rid of were no great loss; but if you feel differently then I understand it is technically possible to install LTSP4.2 and LTSP5 on the same server, and get the benefits of each.  You’ll need to search the LTSP Mailing List to find out how.</p>

<p>I understand that it is even conceivable to deliver a full-blown desktop client system - although you need LDAP on your network to enable client logon.  Again, search the LTSP Mailing List for details.</p>

       ]]>
      </description>
    </item>
    
    <item>
      <title>Howto | Unmount a share which fails</title>
      <link>https://chrisjrob.com/2009/03/21/unmount-a-share-which-fails/</link>
      <pubDate>Sat, 21 Mar 2009 06:23:50 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/03/21/unmount-a-share-which-fails</guid>
      <description>
       <![CDATA[
         
         <p>Unmounting a share fails with error message:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Could not unmount &lt;PATH&gt;: Device or resource busy
</code></pre></div></div>

<p>First of all, check that you are not accessing any directory or file of the share with any program, or on any screen. 
If this isn’t the case, you might have encountered a problem, that is known but not related to Smb4K. It seems that under certain circumstances (that we could not figure out exactly) kdeinit background processes access files and/or directories of the share and keep them open (KDE &lt; 3.4). Unmounting is not possible unless you send…</p>

<!--more-->

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ kill -HUP PID
</code></pre></div></div>

<p>… to each kdeinit instance that has access to the share or its files. Replace PID by the pid of the kdeinit instance. You can find it out by using e. g. KSysguard.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Howto | Microsoft Outlook</title>
      <link>https://chrisjrob.com/2009/03/21/transfer-emails-from-microsoft-outlook/</link>
      <pubDate>Sat, 21 Mar 2009 06:23:08 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/03/21/transfer-emails-from-microsoft-outlook</guid>
      <description>
       <![CDATA[
         
         <h2 id="introduction">Introduction</h2>

<p>Outlook email cannot be easily transferred into Kontact (at least at the time of writing). There are a couple of applications that might work, but the best solution at present is to use Mozilla Thunderbird as a conduit for emails and contacts, and Outport for Calendar. At the time of writing I have found no easy solution for Notes or Tasks, so at present the only solution for these is a re-key.</p>

<p><strong>This method can only be performed on a Windows system, with Outlook installed and working on the same client as you install Thunderbird.  This is because Thunderbird uses Outlook itself to perform the data exchange.  This means that you cannot just copy across a PST and expect Thunderbird to be able to import it - you must have a running Outlook session on the client.</strong></p>

<!--more-->

<h2 id="step-1-prepare-outlook">Step 1 Prepare Outlook</h2>

<p>Move any emails, calendar entries, tasks, contacts etc that are currently in your archive folder back into your main “Outlook today” Personal Folder.</p>

<p>In case you wish to refer to your Outlook folders again, I recommend that you make the following changes:</p>

<ul>
  <li>Switch off send/receive at start-up</li>
  <li>Switch off interval check</li>
  <li>Switch on “leave mail on host”</li>
</ul>

<p>This will enable to refer to your Outlook folders, and even collect your mail, without losing the mail on your Linux box.</p>

<h2 id="step-2-outport">Step 2 Outport</h2>

<p>Download:</p>

<ul>
  <li>http://outport.sourceforge.net/</li>
</ul>

<p>Check/tick your Calendar folder on the left-hand-side of Outport, and ensure that the chosen conversion format is:</p>

<ul>
  <li>Calendar: Evolution Calendar</li>
</ul>

<p>Originally I thought I wanted iCalendar, but this created individual files for every event; but, thanks to a tiny bug in Outport, occasionally it did not remember the setting that I had made, and instead defaulted to Evolution Calendar.  For ages I couldn’t understand why sometimes it would work perfectly and other times it would not!  Eventually I realised what was happening and accordingly have updated these instructions. Phew!</p>

<h2 id="step-3-thunderbird-import">Step 3 Thunderbird Import</h2>

<p>Download Mozilla Thunderbird and run it.</p>

<p><strong>If you have used Thunderbird before on this PC, then you need to erase “C:\Documents and Settings\USERID\Application Data\Thunderbird” folder (which will lose that data).</strong></p>

<p>Follow the prompts to import from Outlook, if the import prompt does not occur, then erase the folder (see above tip).  Be warned, this import process may take a long time (especially with 1gb plus pst files!)</p>

<p>Once complete, Thunderbird has the emails, but has not created index files for each folder.  If you click on each folder it will do this for you, but I have found that it crashes if you select empty folders.  Instead I have found that it is best to stay out of the folders.</p>

<p><strong>Don’t bother marking messages as read, as they will be transferred as unread to Kmail anyway.</strong></p>

<h2 id="step-4-export-thunderbird-address-book">Step 4 Export Thunderbird Address Book</h2>

<p>Access the Thunderbird address book, click into the correct folder, so that you can see all your contacts on the right-hand-side, and take option to export to LDIF.</p>

<h2 id="step-5-transfer-to-linux">Step 5 Transfer to Linux</h2>

<p>Transfer the exported iCalendar file, the exported LDIF address book, and the Thunderbird data store (e.g. <code class="language-plaintext highlighter-rouge">C:\Documents and Settings\USERID\Application Data\Thunderbird\Profiles\qmrx14h2.default\Mail\Local Folders</code>) to one of the user’s folders on the Linux system.  You’ll need to be able to access these from the user’s account, so somewhere logical might be /home/username/imported.</p>

<h2 id="step-6-convert-address-book">Step 6 Convert Address Book</h2>

<p>Two problems with the Thunderbird exported LDIF:</p>

<ul>
  <li>Uses “company”, whereas Kmail uses “organization” for the company name.</li>
  <li>Uses “cn” for contact names, whereas Kmail uses “formatted name”.</li>
</ul>

<p>You can change these manually, or a simple script:</p>

<h3 id="example-script">Example script</h3>

<p>The following script will replace “company: “ with “organization: “ and will update “cn: “ with a formatted name in the format “sn, givenName”, if givenName is available, or fall back on just “sn” if not. This worked for us, but you might have to tailor this to your requirements.</p>

<div class="language-pl highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">#!/usr/bin/perl</span>
<span class="c1"># thunder2kab</span>
<span class="c1"># Converts Thunderbird LDIF file into Kmail LDIF format</span>

<span class="k">my</span> <span class="nv">$count</span> <span class="o">=</span> <span class="nv">@ARGV</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="nv">$count</span> <span class="o">!=</span> <span class="mi">2</span><span class="p">)</span> <span class="p">[</span>
	<span class="k">print</span> <span class="p">"</span><span class="s2">Usage: thunder2kab source destination</span><span class="se">\n</span><span class="p">";</span>
	<span class="nb">exit</span><span class="p">;</span>
<span class="p">}</span>

<span class="nv">PrivoxyWindowOpen</span><span class="p">(</span><span class="nv">IN</span><span class="p">,</span> <span class="nv">$ARGV</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="p">](</span><span class="o">|</span> <span class="nb">die</span> <span class="p">"</span><span class="s2">Cannot open </span><span class="si">$ARGV</span><span class="s2">[0] for reading: $!</span><span class="p">";</span>
<span class="nv">PrivoxyWindowOpen</span><span class="p">(</span><span class="nv">OUT</span><span class="p">,</span> <span class="p">"</span><span class="s2">&gt;</span><span class="si">$ARGV</span><span class="s2">[1]</span><span class="p">")</span> <span class="o">||</span> <span class="nb">die</span> <span class="p">"</span><span class="s2">Cannot create </span><span class="si">$ARGV</span><span class="s2">[1] for writing: $!</span><span class="p">";</span>

<span class="k">my</span> <span class="p">(</span><span class="nv">$surname</span><span class="p">,</span> <span class="nv">$givenname</span><span class="p">,</span> <span class="nv">$formattedname</span><span class="p">);</span>
<span class="k">while</span> <span class="p">(</span><span class="nb">defined</span> <span class="p">(</span><span class="k">my</span> <span class="nv">$line</span> <span class="o">=</span> <span class="o">&lt;</span><span class="nv">IN</span><span class="o">&gt;</span><span class="p">))</span> <span class="p">{</span>
	<span class="c1"># Superchomp to cope with Windows nonsense</span>
	<span class="nv">$line</span> <span class="o">=*</span> <span class="sr">s/[\r\n]*$//</span><span class="p">;</span>

	<span class="c1"># givenName: Terry</span>
	<span class="c1"># sn: McCarthy</span>

	<span class="k">if</span> <span class="p">(</span><span class="nv">$line</span> <span class="ow">eq</span> <span class="nb">undef</span><span class="p">)</span> <span class="p">{</span>
		<span class="nb">undef</span> <span class="p">(</span><span class="nv">$surname</span><span class="p">);</span>
		<span class="nb">undef</span> <span class="p">(</span><span class="nv">$givenname</span><span class="p">);</span>
		<span class="nb">undef</span> <span class="p">(</span><span class="nv">$formattedname</span><span class="p">);</span>
	<span class="p">)</span> <span class="k">elsif</span> <span class="p">(</span><span class="nv">$line</span> <span class="o">=*</span> <span class="sr">/^givenName\: (.+)$/</span><span class="p">)</span> <span class="p">{</span>
		<span class="nv">$givenname</span> <span class="o">=</span> <span class="err">$</span><span class="mi">1</span><span class="p">;</span>
	<span class="p">}</span> <span class="k">elsif</span> <span class="p">(</span><span class="nv">$line</span> <span class="o">=*</span> <span class="sr">/^sn\: (.+)$/</span><span class="p">)</span> <span class="p">{</span>
		<span class="nv">$surname</span> <span class="o">=</span> <span class="err">$</span><span class="mi">1</span><span class="p">;</span>
	<span class="p">}</span> <span class="k">elsif</span> <span class="p">(</span><span class="nv">$line</span> <span class="o">=*</span> <span class="sr">/^cn\: /</span><span class="p">)</span> <span class="p">{</span>
		<span class="k">if</span> <span class="p">((</span><span class="nv">$givenname</span> <span class="ow">ne</span> <span class="nb">undef</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="nv">$surname</span> <span class="ow">ne</span> <span class="nb">undef</span><span class="p">))</span> <span class="p">{</span>
			<span class="nv">$line</span> <span class="o">=</span> <span class="p">"</span><span class="s2">cn: </span><span class="si">$surname</span><span class="s2">, </span><span class="si">$givenname</span><span class="p">";</span>
		<span class="p">}</span> <span class="k">elsif</span> <span class="p">(</span><span class="nv">$surname</span> <span class="ow">ne</span> <span class="nb">undef</span><span class="p">)</span> <span class="p">{</span>
			<span class="nv">$line</span> <span class="o">=</span> <span class="p">"</span><span class="s2">cn: </span><span class="si">$surname</span><span class="p">";</span>
		<span class="p">}</span>
	<span class="p">}</span>
			
	<span class="nv">$line</span> <span class="o">=~</span> <span class="sr">s/^company\: /organization\: /</span><span class="p">;</span>

	<span class="k">print</span> <span class="nv">OUT</span> <span class="nv">$line</span><span class="p">,</span> <span class="p">"</span><span class="se">\n</span><span class="p">";</span>

<span class="p">}</span>

<span class="nb">close</span> <span class="p">(</span><span class="nv">OUT</span><span class="p">)</span> <span class="o">||</span> <span class="nb">die</span> <span class="p">"</span><span class="s2">Cannot close </span><span class="si">$ARGV</span><span class="s2">[1]: $!</span><span class="p">";</span>
<span class="nb">close</span> <span class="p">(</span><span class="nv">IN</span><span class="p">)</span> <span class="o">||</span> <span class="nb">die</span> <span class="p">"</span><span class="s2">Cannot close </span><span class="si">$ARGV</span><span class="s2">[0]: $!</span><span class="p">";</span>

<span class="nb">exit</span><span class="p">;</span>
</code></pre></div></div>

<p><strong>Please change the PrivoxyWindowOpen command for just a plain “open” - this is just our http proxy trying to protect us and getting it wrong!</strong></p>

<h2 id="step-7-import-into-kontact">Step 7 Import into Kontact</h2>

<p>Oh joy, the final steps, and the good news is that this bit is really simple (hopefully).</p>

<ul>
  <li>Run Kontact, click on Contacts and take option to import from your converted LDIF.</li>
  <li>Click on Mail and take opion to import from Thunderbird mail structure.</li>
  <li>Click on Calendar and take option to import from the transferred iCalendar file.</li>
</ul>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Howto | Transfer Emails from Windows to Linux</title>
      <link>https://chrisjrob.com/2009/03/21/transfer-emails-from-windows-to-linux/</link>
      <pubDate>Sat, 21 Mar 2009 06:22:56 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/03/21/transfer-emails-from-windows-to-linux</guid>
      <description>
       <![CDATA[
         
         <p>These instructions explain how to transfer emails from a Windows email client to Linux Kmail.  This document has a number of provisos:</p>

<ol>
  <li>If your mailserver is running IMAP, then what are you doing here?  Just connect your Linux mail client to your IMAP server and you’re good to go!</li>
  <li>If you are running a common mail client on Windows, then consider installing Mozilla Thunderbird on Windows and importing your emails into that…
a. See <a href="/2009/03/21/transfer-emails-from-microsoft-outlook/">Transfer Emails from Microsoft Outlook</a></li>
  <li>If you are running Mozilla Thunderbird on Windows, then you can simply copy the files onto Linux and use Mozilla Thunderbird on Linux - job done.</li>
  <li>If your Windows email client stores in mbox format (unlikely) then again you should be able to simply copy the mail store to Linux.</li>
  <li>Check whether you have any export options and see if you can export into an easier format, e.g. Thunderbird/MBOX.</li>
  <li>If your Windows email client does not support IMAP, then you will need to upgrade it to a more recent version that does before proceeding.</li>
  <li>If your Windows email client does support IMAP, then let’s continue…</li>
</ol>

<!--more-->

<h2 id="install-courier-imap-on-server">Install Courier-IMAP on server</h2>

<p>See <a href="/2009/03/21/install-courier-imap-server/">Install Courier-IMAP Server</a></p>

<h2 id="create-ltsp-user">Create LTSP User</h2>

<p>In KUserManager create the user, and add to the following groups:</p>

<ul>
  <li>kiosk-standard</li>
  <li>Staff</li>
  <li>Users</li>
  <li>Fuse (only if you want them to be able to access USB devices)</li>
  <li>Saned (only if you want them to be able to use scanning)</li>
</ul>

<p><strong>Take a note of UID and GID before exiting KUserManager</strong></p>

<h2 id="create-imap-account">Create IMAP Account</h2>

<p><strong>You need to have installed an IMAP server first - see page Install Courier-IMAP Server</strong></p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo userdb USERNAME set uid=9999 gid=9999 shell=/bin/bash home=/opt/imap-mail/USERNAME
</code></pre></div></div>

<p>*Replace USERNAME and 9999 for actual username, uid and gid</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo userdbpw -md5 | sudo userdb USERNAME set systempw
$ sudo mkdir -p /opt/imap-mail/USERNAME
$ sudo maildirmake /opt/imap-mail/USERNAME/Maildir
$ sudo chown -R 9999:9999 /opt/imap-mail/USERNAME
$ sudo makeuserdb
$ sudo /etc/init.d/courier-authdaemon stop
$ sudo /etc/init.d/courier-imap stop
$ sudo /etc/init.d/courier-authdaemon start
$ sudo /etc/init.d/courier-imap start
</code></pre></div></div>

<p>*Replace USERNAME and 9999 for actual username, uid and gid</p>

<h2 id="key-steps">Key steps</h2>

<p>The rest of the process is simple enough, that hopefully I do not need to go through it in detail.  Briefly:</p>

<ul>
  <li>Install Courier-IMAP Server</li>
  <li>Create IMAP account in Windows email client</li>
  <li>Log onto LTSP</li>
  <li>Kontact → Mail → Create IMAP account</li>
  <li>Transfer each mail folder into IMAP Inbox then transfer each IMAP folder into Kmail folder</li>
  <li>Repeat last step for each folder</li>
</ul>

<p><strong>Change each client to work off-line between transfers - you don’t really want both clients connected to the same IMAP mailbox at the same time</strong></p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Howto | Synchronise files with Unison</title>
      <link>https://chrisjrob.com/2009/03/21/synchronise-files-with-unison/</link>
      <pubDate>Sat, 21 Mar 2009 06:22:37 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/03/21/synchronise-files-with-unison</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/unison_logo.png" align="right" alt="Featured Image">
         
         <h2 id="installing-unison">Installing Unison</h2>

<p>You need to install unison on both machines, unison-gtk probably only on the client.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo apt-get install unison unison-gtk
</code></pre></div></div>

<!--more-->

<p>N.B. unison-gtk is an optional component - if you are comfortable working from the command line.</p>

<h2 id="using-unison">Using Unison</h2>

<p>Under KMenu / Utilities there should be an option for Unison File Synchronisation.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ cd ~
$ mkdir unison
</code></pre></div></div>

<p>A sample <code class="language-plaintext highlighter-rouge">~/.unison/default.prf</code> config file is shown here:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># Unison preferences file
root = /home/user/unison
root = ssh://user@remote.server/unison
follow = Regex .*
</code></pre></div></div>

<p>This is a simple configuration which will synchronise a directory called “unison” under the user’s home directory to a users “unison” directory on “remote.server”.  If the unison directory includes symbolic links, then it will follow the link and copy the actual file, if this is not what you want, simply delete the “follow” line.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Howto | Send Files by Email</title>
      <link>https://chrisjrob.com/2009/03/21/send-files-by-email/</link>
      <pubDate>Sat, 21 Mar 2009 06:21:16 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/03/21/send-files-by-email</guid>
      <description>
       <![CDATA[
         
         <h2 id="explanation">Explanation</h2>

<p>Oddly enough, there is no option, when browsing folders, to right-click and send by email - something Windows users take for granted. Fortunately this omission may be easily corrected as follows.</p>

<p>These instructions are for Kmail, if you are not using Kmail (or KDE Kontact PIM) then these instructions will need to be modified for the command line of your email client.</p>

<!--more-->

<h2 id="installation">Installation</h2>

<p>Create the following file and save as “kmail.desktop” in the folder <code class="language-plaintext highlighter-rouge">/usr/share/apps/konqueror/servicemenus</code> (for all users on your system).</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>[Desktop Entry]
Encoding=UTF-8
ServiceTypes=all/allfiles
Actions=Email;

[Desktop Action Email]
Name=Send file(s) with KMail
Exec=kmail --attach %F
Icon=kmail
</code></pre></div></div>

       ]]>
      </description>
    </item>
    
    <item>
      <title>Howto | Recover Data from a Hard Disk</title>
      <link>https://chrisjrob.com/2009/03/21/recover-data-from-a-hard-disk/</link>
      <pubDate>Sat, 21 Mar 2009 06:21:01 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/03/21/recover-data-from-a-hard-disk</guid>
      <description>
       <![CDATA[
         
         <p>This is how I recovered data from an NTFS partitioned hard disk, I am not a recovery expert, and it would irresponsible of me to recommend that you follow these instructions.</p>

<h2 id="boot-in-ubuntu-live-cd">Boot in Ubuntu Live CD</h2>

<ul>
  <li>Boot onto a live CD</li>
  <li>Configure networking</li>
  <li>Uncomment repositories in <code class="language-plaintext highlighter-rouge">/etc/apt/sources.list</code></li>
</ul>

<!--more-->

<h2 id="mount-destination-drive">Mount destination drive</h2>

<p>You need access to a hard drive that is able to support large files.  I started with fat32 and came a cropper when it hit 4gb.  I replaced that with an NFS share on my desktop PC and it worked beautifully.  Mount it ready for action.</p>

<p>I will assume that the destination drive has been mounted at <code class="language-plaintext highlighter-rouge">/mnt/destination</code></p>

<p>Ensure that the source (broken) drive is not mounted (it shouldn’t be unless you mounted it).</p>

<h2 id="determine-source-drive-id">Determine source drive id</h2>

<p>You need to find out the id of the source drive.  This will be listed under <code class="language-plaintext highlighter-rouge">/dev</code> and if it’s your primary drive will probably be <code class="language-plaintext highlighter-rouge">/dev/sda</code> or <code class="language-plaintext highlighter-rouge">/dev/hda</code>.  If you’re not confident, do not proceed.</p>

<h2 id="install-gnu-ddrescue">Install GNU ddrescue</h2>

<p>Note for historical (and hysterical) reasons, the package is named gddrescue in Debian and Ubuntu.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo aptitude install gddrescue
$ man ddrescue
</code></pre></div></div>

<h2 id="run-gnu-ddrescue">Run GNU ddrescue</h2>

<p>Replace <code class="language-plaintext highlighter-rouge">/dev/sda</code> for actual source drive, and <code class="language-plaintext highlighter-rouge">/mnt/destination</code> for action destination drive.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo ddrescue -n /dev/sda /mnt/destination/recovered.img /mnt/destination/recovered.log
</code></pre></div></div>

<p>The “-n” should run faster as it will skip over the errors (although it seemed just as slow to me).</p>

<p>Data recovered is not a fast process, and it will probably take a few days.  The great thing about ddrescue is that you can abort at any time and recommence from where you left off.  You can also skip forward by adding the switch “-i” followed by the number bytes into the disk, e.g. to start from 10gb:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo ddrescue -n -i 10000000000 /dev/sda /mnt/destination/recovered.img /mnt/destination/recovered.log
</code></pre></div></div>

<p>My tip is to keep aborting (Ctrl+C) and skip forward until you pass the area of the disk which is causing problems.  Then, once the bulk of the drive has been recovered you can go back to the sections you skipped, or just move onto the second pass (see next section).</p>

<p>ddrescue will not replace data already recovered, so you can do this safely.</p>

<h2 id="run-gnu-ddrescue-again">Run GNU ddrescue again</h2>

<p>This time replacing the -n with “-r 1” or perhaps “-r 3” to try more than once to recover the data.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo ddrescue -r 1 /dev/sda /mnt/destination/recovered.img /mnt/destination/recovered.log
</code></pre></div></div>

<h2 id="copy-the-destination-image">Copy the destination image</h2>

<p>You don’t want to mess up your hard earned image - so copy it and work on the copy.</p>

<h2 id="install-sleuthkit">Install sleuthkit</h2>

<p>On the destination PC, install sleuthkit:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo aptitude install sleuthkit
$ man mmls
</code></pre></div></div>

<h2 id="run-mmls">Run mmls</h2>

<p>Simply</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo mmls copy.img

DOS Partition Table
Offset Sector: 0
Units are in 512-byte sectors

    Slot    Start        End          Length       Description
00:  -----   0000000000   0000000000   0000000001   Primary Table (#0)
01:  -----   0000000001   0000000062   0000000062   Unallocated
02:  00:00   0000000063   0117195119   0117195057   NTFS (0x07)
03:  -----   0117195120   0117210239   0000015120   Unallocated
</code></pre></div></div>

<h2 id="calculate-offset">Calculate Offset</h2>

<p>This shows several partitions. In this example, we want to mount the NTFS partition starting at block 63. To calculate the number of bytes, multiply by 512:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>63 x 512 = 32256
</code></pre></div></div>

<h2 id="mount-partition">Mount partition</h2>

<p>For a DOS partition:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo mount -o loop,offset=16384 copy.img mountpoint
</code></pre></div></div>

<p>For an NTFS partition:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo aptitude install ntfs-3g
$ sudo mount -t ntfs-3g -o ro,force,loop,offset=32256 copy.img mountpoint
</code></pre></div></div>

<p>I appreciate that ntfs-3g provides write access, which we do not need, but “-t ntfs” sinmply would not mount the image.</p>

<p>If it won’t mount, then the NTFS partition is probably corrupted (not surprisingly).  Try installing testdisk and then running:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ testdisk copy.img
</code></pre></div></div>

<h2 id="extracting-files-from-the-disk-image">Extracting files from the disk image</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>#### Foremost directory contents
drwxr-xr-x 30 root root   4096 2009-01-08 18:04 .
drwxrwxrwx  5 root root   4096 2009-01-08 18:03 ..
-rw-r--r--  1 root root 888832 2009-01-08 18:15 audit.txt
drwxr-xr--  2 root root  12288 2009-01-08 18:15 avi
drwxr-xr--  2 root root  12288 2009-01-08 18:15 bmp
drwxr-xr--  2 root root  69632 2009-01-08 18:15 dll
drwxr-xr--  2 root root   4096 2009-01-08 18:10 doc
drwxr-xr--  2 root root  20480 2009-01-08 18:15 exe
drwxr-xr--  2 root root 139264 2009-01-08 18:15 gif
drwxr-xr--  2 root root  20480 2009-01-08 18:15 htm
drwxr-xr--  2 root root   4096 2009-01-08 18:13 jar
drwxr-xr--  2 root root 135168 2009-01-08 18:15 jpg
drwxr-xr--  2 root root   4096 2009-01-08 18:04 mbd
drwxr-xr--  2 root root   4096 2009-01-08 18:15 mov
drwxr-xr--  2 root root   4096 2009-01-08 18:04 mpg
drwxr-xr--  2 root root   4096 2009-01-08 18:14 ole
drwxr-xr--  2 root root   4096 2009-01-08 18:14 pdf
drwxr-xr--  2 root root  57344 2009-01-08 18:15 png
drwxr-xr--  2 root root   4096 2009-01-08 18:04 ppt
drwxr-xr--  2 root root   4096 2009-01-08 18:14 rar
drwxr-xr--  2 root root   4096 2009-01-08 18:04 rif
drwxr-xr--  2 root root   4096 2009-01-08 18:04 sdw
drwxr-xr--  2 root root   4096 2009-01-08 18:04 sx
drwxr-xr--  2 root root   4096 2009-01-08 18:04 sxc
drwxr-xr--  2 root root   4096 2009-01-08 18:04 sxi
drwxr-xr--  2 root root   4096 2009-01-08 18:04 sxw
drwxr-xr--  2 root root   4096 2009-01-08 18:04 vis
drwxr-xr--  2 root root  12288 2009-01-08 18:15 wav
drwxr-xr--  2 root root   4096 2009-01-08 18:15 wmv
drwxr-xr--  2 root root   4096 2009-01-08 18:13 xls
drwxr-xr--  2 root root   4096 2009-01-08 18:14 zip
</code></pre></div></div>

<p>If it still won’t mount, then the general advice seems to be to copy the image to clean hardware and use a Windows recovery disk to boot.  Failing that, all is not lost, there are a number of tools that will search disk images for files.  I played with photorec, but whilst it recovered loads of cached images from IE, it failed to recover more than a handful of proper photos.  Foremost on the other hand seemed to be more successful.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ foremost -i copy.img -o output-folder
</code></pre></div></div>

<p>With luck this will give you a folder that looks like the one to the right.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Howto | Reconfigure Display Settings</title>
      <link>https://chrisjrob.com/2009/03/21/reconfigure-display-settings/</link>
      <pubDate>Sat, 21 Mar 2009 06:20:45 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/03/21/reconfigure-display-settings</guid>
      <description>
       <![CDATA[
         
         <h2 id="configuring-your-display">Configuring your display</h2>

<p>If the display resolution is VGA, the run:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ dpkg-reconfigure xserver-xorg
</code></pre></div></div>

<p><strong>When configuring XORG, do ensure that the maximum resolution is as you want it, as this will be the default resolution for every boot.</strong></p>

       ]]>
      </description>
    </item>
    
    <item>
      <title>Howto | Protect against rootkits</title>
      <link>https://chrisjrob.com/2009/03/21/protect-against-rootkits/</link>
      <pubDate>Sat, 21 Mar 2009 06:20:17 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/03/21/protect-against-rootkits</guid>
      <description>
       <![CDATA[
         
         <p>Apparently <strong>Rootkits</strong> are a major problem in the linux world.  Unlike viruses, you are much more likely to be infected without realising that you even have a problem.  The purpose of this document is twofold:</p>

<ol>
  <li>Check for existing infection</li>
  <li>Protect against future infection</li>
</ol>

<p>If you are unsure what a Rootkit is, then please read the <a href="https://en.wikipedia.org/wiki/Rootkit">Rootkit Wikipedia page</a> before continuing.</p>

<!--more-->

<h2 id="warning">Warning</h2>

<p><strong>This is how I checked and protected against rootkits and is not how I would recommend that anyone else should do so.</strong></p>

<h2 id="step-1-rkhunter">Step 1: rkhunter</h2>

<p>I suggest you visit the rkhunter website at: http://rkhunter.sourceforge.net/</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo apt-get install rkhunter
$ sudo rkhunter --upgrade
$ sudo rkhunter --checkall --createlogfile
</code></pre></div></div>

<p>Read the output and take corrective action as required.</p>

<h2 id="step-2-chkrootkit">Step 2: chkrootkit</h2>

<p>I suggest you visit the chkrootkit website at:</p>

<ul>
  <li>http://www.chkrootkit.org</li>
</ul>

<p>In particular, <a href="http://www.chkrootkit.org/faq/#9">the FAQS</a> would suggest that you shouldn’t trust the chkrootkit to use the commands on your system, bearing in mind that you suspect that they might be compromised; I chose not to take this additional precaution - you should make your decision based on the exposure of your server to the Internet and your assessment of the likelihood of your having a rootkit.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo apt-get install chkrootkit
$ sudo chkrootkit
</code></pre></div></div>

<h2 id="step-4-tripwire">Step 4: tripwire</h2>

<ul>
  <li>http://sourceforge.net/projects/tripwire/</li>
</ul>

<p>Tripwire creates a database of your system files and then tracks any changes to them.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo apt-get install tripwire
</code></pre></div></div>

<p>Follow all the prompts, which will require you to create a Site Key Pass-phrase and a Local key Pass-phrase.  Next we need to create the database:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo tripwire --init
Wrote database file: /var/lib/tripwire/hostname.domain.com.twd
The database was successfully generated.
</code></pre></div></div>

<p>Next we run a first check:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo tripwire --check
</code></pre></div></div>

<p>This will doubtless come back with far more information than you really want.  For example I received loads of lines about “/proc/PIDNO/”.</p>

<h2 id="references">References</h2>

<ul>
  <li><a href="http://sourceforge.net/docman/display_doc.php?docid=2078&amp;group_id=3130">Implementing Tripwire</a></li>
  <li><a href="http://www.alwanza.com/howto/linux/tripwire.html">Howto Linux - Tripwire</a></li>
</ul>

<h2 id="a-better-way">A better way</h2>

<ul>
  <li><a href="http://linuxgazette.net/issue98/moen.html">Combining AIDE and Tripwire</a></li>
</ul>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Howto | Open Multipage TIFFs in KDE</title>
      <link>https://chrisjrob.com/2009/03/21/open-multipage-tiffs-in-kde/</link>
      <pubDate>Sat, 21 Mar 2009 06:19:53 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/03/21/open-multipage-tiffs-in-kde</guid>
      <description>
       <![CDATA[
         
         <h2 id="the-issue">The Issue</h2>

<p>Most image viewers only show the first page of a multi-page <code class="language-plaintext highlighter-rouge">TIFF</code>.  The KDE document viewers, of which there are many (KView, KFax, KDVI) will not open them, stating “This version can only handle fax files”.</p>

<!--more-->

<h2 id="the-explanation">The Explanation</h2>

<p>Wikipedia states that: -“Programmers were free to specify new tags and options, but not all implemented programs supported all created tags. As a result, TIFF soon became the lowest common denominator. Today, the majority of TIFF images and readers are still based on uncompressed 32-bit CMYK or 24-bit RGB images.”~</p>

<p>The end result is that the KDE document viewers except a CCITT Group 4 compressed monochrome document, whilst ImageMagick creates a JPEG compressed document.</p>

<h2 id="the-solution">The Solution</h2>

<p>Currently my solution is simply to convert the document as required (you will need ImageMagick on your system):</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ convert source.tif -monochrome -compress group4 destination.tif
</code></pre></div></div>

<h2 id="further-thoughts">Further Thoughts</h2>

<p>This fix is fine for geeks, but not much use for mere mortals.  My thought is to create a script which uses ImageMagick to interrogate the TIFF file, convert it, if required, into a temporary location, and then open it in one of the KDE document viewers.  Then associate the file-type with that script.</p>

<h2 id="references">References</h2>

<ul>
  <li>http://www.imagemagick.org/Usage/formats/#tiff</li>
</ul>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Howto | Install WebDAV on ISPConfig</title>
      <link>https://chrisjrob.com/2009/03/21/install-webdav-on-ispconfig/</link>
      <pubDate>Sat, 21 Mar 2009 06:16:34 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/03/21/install-webdav-on-ispconfig</guid>
      <description>
       <![CDATA[
         
         <h2 id="step-1-create-a-web">Step 1: Create a web</h2>

<p>This is not an ISPConfig tutorial, so it is supposed that you know how to do this.</p>

<p><strong>Use the ISPConfig web interface. Probably sensible to make the site a maximum size.</strong></p>

<!--more-->

<h2 id="step-2-create-data-folder">Step 2: Create data folder</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ mkdir /var/www/webXX/web/webdav
$ chown webXX_trident:webXX /var/www/webXX/web/webdav
$ chmod o+w /var/www/webXX/web/webdav
</code></pre></div></div>

<h2 id="step-3-create-lock-folder">Step 3: Create lock folder</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ mkdir /var/www/webXX/DAVlocks
$ chown www-data:www-data /var/www/webXX/DAVlocks
$ chmod o+w /var/www/webXX/DAVlocks
</code></pre></div></div>

<h2 id="step-4-download-and-install">Step 4: Download and install</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ apt-get install libapache-mod-dav
$ a2enmod dav
$ a2enmod dav_fs
</code></pre></div></div>

<h2 id="step-5-create-user">Step 5: Create user</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ htpasswd -c /var/www/webXX/.DAVlogin username
</code></pre></div></div>

<h2 id="step-6-add-apache-directives-to-ispconfig-site">Step 6: Add Apache Directives to ISPConfig site</h2>

<p><strong>Use the web interface and browse to Sites.</strong></p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>DavLockDB /var/www/webXX/DAVlocks/DAVlocks
Alias /webdav /var/www/webXX/web/webdav
&lt;Location /webdav/&gt;
    DAV On
    AuthType Basic
    AuthName 'username'
    AuthUserFile /var/www/webXX/.DAVlogin
    &lt;LimitExcept GET POST PUT DELETE CONNECT OPTIONS PATCH PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK&gt;
        Require valid-user
    &lt;/LimitExcept&gt;
&lt;/Location&gt;
</code></pre></div></div>

<p>Restart apache service.</p>

<h2 id="step-7-install-cadaver-for-testing">Step 7: Install Cadaver for testing</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ apt-get install cadaver
$ cadaver http://webdav.tridentgarages.co.uk/webdav/
Username: username
Password: p455w0rd
dav:/webdav/&gt; put test.file
dav:/webdav/&gt; ls
dav:/webdav/&gt; get test.file
</code></pre></div></div>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Howto | Install Scanning in Wine</title>
      <link>https://chrisjrob.com/2009/03/21/install-scanning-in-wine/</link>
      <pubDate>Sat, 21 Mar 2009 06:16:07 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/03/21/install-scanning-in-wine</guid>
      <description>
       <![CDATA[
         
         <p>Ensure you install the same version as wine.  For me that meant installing as follows:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo apt-get install -t 'etch-backports' libwine-sane
</code></pre></div></div>

<!--more-->

<p>This worked to a fashion for me; in that it brought up a rather poor scanner dialog, and triggered the scanner, but never completed the scan job.  That said, I was using saned on LTSP (i.e. via network) which may be a step too far for libwine-sane!</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Howto | Install Samba to Access Windows Shares</title>
      <link>https://chrisjrob.com/2009/03/21/install-samba-to-access-windows-shares/</link>
      <pubDate>Sat, 21 Mar 2009 06:15:07 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/03/21/install-samba-to-access-windows-shares</guid>
      <description>
       <![CDATA[
         
         <p>If you are looking for a full Samba LDAP installation, please look elsewhere, this is a simple set-up to access files from an existing Windows or Samba server.</p>

<h2 id="installation">Installation</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># apt-get install smbfs smbclient
</code></pre></div></div>

<!--more-->

<h2 id="create-password-file">Create password file</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ echo "username=abc" &gt;&gt; /home/username/.smbpassword
$ echo "password=p455w0rd" &gt;&gt; /home/username/.smbpassword
$ chmod go-rwx /home/username/.smbpassword
</code></pre></div></div>

<h2 id="add-network-drives">Add network drives</h2>

<p>Edit /etc/fstab:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># /etc/fstab: static file system information.
#
# &lt;file system&gt; &lt;mount point&gt;      &lt;type&gt;      &lt;options&gt;                    &lt;dump&gt;  &lt;pass&gt;
proc            /proc              proc        defaults                     0       0
/dev/sda1       /                  ext3        defaults,errors=remount-ro   0       1
/dev/sda5       none               swap        sw                           0       0
/dev/scd0       /media/cdrom0      udf,iso9660 user,noauto                  0       0
//hostname/D$   /media/shared      cifs        auto,rw,uid=trident,gid=users,fmask=0664,dmask=0775,iocharset=iso8859-15,credentials=/home/user/.smbpassword 0 0
</code></pre></div></div>

<p>Having done this, I find that you have to issue a:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo mount -a
</code></pre></div></div>

<p>This simply remounts any unmounted filesystems from /etc/fstab.</p>

<h2 id="mount-directly">Mount directly</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo mount -t cifs //hostname/D$ /media/drive_d -o username=..,password=...,auto,rw,uid=...,gid=...,file_mode=0664,dir_mode=0775,iocharset=iso8859-15
$ sudo mount -t cifs //hostname/D$ /media/drive_d -o auto,rw,uid=...,file_mode=0664,dir_mode=0775,iocharset=iso8859-15,credentials=/home/user/.smbpasswd
$ sudo umount /media/drive_d
</code></pre></div></div>

<h2 id="unmount">Unmount</h2>

<p>You unmount by referencing the mount point.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo umount /media/drive_d
</code></pre></div></div>

<h2 id="openoffice">OpenOffice</h2>

<p>There is a bug in OpenOffice which prevents you from being able to open documents by clicking on the file from within a Samba share. To fix this replace the default %U switch with %f in the KDE Menu configuration editor - right click over the KDE start menu → Menu Editor; next find every occurrence of the OO suite and replace %U with %f.</p>

<h2 id="references">References</h2>

<ul>
  <li>http://www.justlinux.com/nhf/Filesystems/Mounting_smbfs_Shares_Permanently.html</li>
  <li>http://www.linuxquestions.org/questions/linux-newbie-8/mounting-an-smbfs-using-fstab-461202/</li>
</ul>

       ]]>
      </description>
    </item>
    
    <item>
      <title>Howto | Install Print System</title>
      <link>https://chrisjrob.com/2009/03/21/install-print-system/</link>
      <pubDate>Sat, 21 Mar 2009 06:06:29 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/03/21/install-print-system</guid>
      <description>
       <![CDATA[
         
         <p>This document is certainly incomplete and possible inaccurate, please proceed with caution:</p>

<h2 id="install-cups-print-system">Install Cups Print System</h2>

<p>This also installs printer libraries, printing for GIMP, additional fonts etc.</p>

<!--more-->

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo apt-get install cupsys cupsys-client cupsys-bsd cupsys-driver-gimpprint cups-pdf cupsys-pt cupsys-driver-gutenprint libgutenprint2 gutenprint-doc gutenprint-locales foomatic-db-gutenprint foomatic-db-engine foomatic-db foomatic-db-hpijs foomatic-filters foomatic-filters-ppds hplip hplip-doc hp-ppd hpijs hpijs-ppds hplip-data python-qt3 python-sip4 psfontmgr ttf-kochi-mincho ttf-arphic-bkai00mp ttf-arphic-bsmi00lp ttf-arphic-gbsn00lp ttf-arphic-gkai00mp ttf-baekmuk gs-cjk-resource xpp linuxprinting.org-ppds 
</code></pre></div></div>

<h2 id="wine-printing">Wine Printing</h2>

<p>See: http://frankscorner.org</p>

<p>Another way to print in Wine, steps:</p>

<ul>
  <li>regedit</li>
  <li>in <code class="language-plaintext highlighter-rouge">HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Print\Printers\~cups_printer_name~</code></li>
  <li>find the key “Port”</li>
  <li>change it’s value to <code class="language-plaintext highlighter-rouge">|kprinter</code> for KDE</li>
</ul>

<p>When the user wants to print, the standard print dialog appears.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Howto | Install NTP time server or client</title>
      <link>https://chrisjrob.com/2009/03/21/install-ntp-time-server-or-client/</link>
      <pubDate>Sat, 21 Mar 2009 06:06:08 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/03/21/install-ntp-time-server-or-client</guid>
      <description>
       <![CDATA[
         
         <p>I am not going to reinvent the wheel - the following link is excellent:</p>

<ul>
  <li><a href="http://www.debianadmin.com/ntp-server-and-client-configuration-in-debian.html">NTP Server and Client Configuration in Debian</a></li>
</ul>

       ]]>
      </description>
    </item>
    
    <item>
      <title>Howto | Install Microsoft Fonts</title>
      <link>https://chrisjrob.com/2009/03/21/install-microsoft-fonts/</link>
      <pubDate>Sat, 21 Mar 2009 06:05:43 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/03/21/install-microsoft-fonts</guid>
      <description>
       <![CDATA[
         
         <h2 id="quick-installation">Quick Installation</h2>

<p>Should be able to install simply by:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># apt-get install msttcorefonts
# dpkg-reconfigure --force msttcorefonts
</code></pre></div></div>

<!--more-->

<h2 id="manual-installation">Manual Installation</h2>

<p>Alternatively download each font as an .exe file and extract TTF contents (Konqueror → Actions → Extract):</p>

<ul>
  <li>http://sourceforge.net/project/showfiles.php?group_id=34153&amp;release_id=105355</li>
</ul>

<p>Then in KDE Control Center take option to Add Fonts.</p>

       ]]>
      </description>
    </item>
    
    <item>
      <title>Howto | Install KeePassX on Debian Etch</title>
      <link>https://chrisjrob.com/2009/03/21/install-keepassx-on-debian-etch/</link>
      <pubDate>Sat, 21 Mar 2009 06:03:30 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/03/21/install-keepassx-on-debian-etch</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/debian_logo.png" align="right" alt="Featured Image">
         
         <p>KeePassX cannot be installed on Debian Etch, because of some dependency issues:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Version: 0.3.1-1
Depends: libc6 (&gt;= 2.7-1), libgcc1 (&gt;= 1:4.1.1-21), libqt4-core (&gt;= 4.3.4), libqt4-gui (&gt;= 4.3.4), libstdc++6 (&gt;= 4.2.1-4), libx11-6, libxtst6
</code></pre></div></div>

<!--more-->

<h2 id="the-solution">The Solution</h2>

<p>The solution is to install from source.  These instructions were borrowed from the following comment (thank you “John”):</p>

<ul>
  <li>http://www.keepassx.org/howto/setup/inst_source_tar#comment-15355</li>
</ul>

<h3 id="install-recent-version-of-qt4">Install recent version of qt4</h3>

<p>I installed from lenny, which is not ideal.  The above instructions do not say to do this, but I had already done it to resolve stability problems (see Install italc notes).</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo apt-get install qt4-dev qt4-dev-tools qt4-designer
</code></pre></div></div>

<h3 id="install-source-repositories">Install Source Repositories</h3>

<p>You may need to add the lenny source repositories to <code class="language-plaintext highlighter-rouge">/etc/apt/sources.list</code>:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>deb-src http://ftp.uk.debian.org/debian/ lenny main non-free contrib
</code></pre></div></div>

<h3 id="download-source">Download Source</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ cd
$ mkdir keepassx
$ cd keepassx
$ apt-get source keepassx
</code></pre></div></div>

<h3 id="make">Make</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ cd keepass*
$ qmake-qt4
Project MESSAGE: See 'INSTALL' for configuration options.
Project MESSAGE: Install Prefix: /usr
Project MESSAGE: *** Makefile successfully generated.
Project MESSAGE: *** Start make now.
$ make
</code></pre></div></div>

<p><strong>If you downloaded the source from <a href="http://www.keepassx.org/">KeePassX</a> itself, then you will probably need to cd into the src directory, delete the Makefile that was created and run qmake-qt4 again from there (ie: qmake-qt4; cd src; rm Makefile ; qmake-qt4 ; cd ..</strong></p>

<h3 id="errors">Errors</h3>

<p>If the above still gives an error about libXtst (and mind didn’t), you can either fix the source code, or simply:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo ln -s /usr/lib/libXtst.so.6 /usr/lib/libXtst.so
$ make
</code></pre></div></div>

<p><strong>This section has not been tested by the author</strong></p>

<h3 id="install">Install</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo make install
</code></pre></div></div>

<h3 id="test">Test</h3>

<p>You should see it installed under your Utilities menu, but you may need to log off/on for this to appear.  Alternatively I usually find editing the menu and resaving has the same effect.</p>

<h2 id="references">References</h2>

<ul>
  <li><a href="http://www.keepassx.org/">KeePassX</a>
    <ul>
      <li><a href="http://www.keepassx.org/howto/setup/inst_source_tar#comment-15355">Forum post detailing install method</a></li>
    </ul>
  </li>
</ul>

       ]]>
      </description>
    </item>
    
    <item>
      <title>Howto | Install ImageMagick</title>
      <link>https://chrisjrob.com/2009/03/21/install-imagemagick/</link>
      <pubDate>Sat, 21 Mar 2009 06:02:20 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/03/21/install-imagemagick</guid>
      <description>
       <![CDATA[
         
         <h2 id="quick-installation">Quick Installation</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># apt-get build-dep imagemagick
# apt-get install imagemagick perlmagick html2ps lpr libwmf-bin
</code></pre></div></div>

<p>See <a href="#testing">Testing</a> below.</p>

<!--more-->

<h2 id="manual-installation">Manual Installation</h2>

<h3 id="references">References</h3>

<ul>
  <li>http://www.imagemagick.org/script/install-source.php#unix
    <ul>
      <li>http://www.imagemagick.org/script/advanced-unix-installation.php</li>
    </ul>
  </li>
</ul>

<h3 id="download">Download</h3>

<ul>
  <li>http://www.imagemagick.org/script/install-source.php#unix</li>
</ul>

<h3 id="installing-image-libraries">Installing Image Libraries</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># apt-get install libjpeg62-dev libpng12-dev libtiff4-dev
</code></pre></div></div>

<p>Alternatively the following should install everything needed by ImageMagick:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># apt-get build-dep imagemagick
</code></pre></div></div>

<p>I think its a good idea to remove the apt-get installed version of ImageMagick, if indeed it exists:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># apt-get remove imagemagick
</code></pre></div></div>

<p>Don’t worry about Ghostscript, if gslib is unavailable it will fall back on the Ghostscript binary.</p>

<h3 id="installation">Installation</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ gunzip -c ImageMagick-6.x.x.tar.gz | tar xvf -
$ cd ImageMagick-6.x.x
$ ./configure --without-x
$ make
$ make install
$ make clean
$ ldconfig /usr/local/lib
</code></pre></div></div>

<p><strong>To make ldconfig remember this change permanently, simply add <code class="language-plaintext highlighter-rouge">/usr/local/lib</code> to <code class="language-plaintext highlighter-rouge">/etc/ld.so.conf</code></strong></p>

<h2 id="testing">Testing</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ cd..
$ convert -version
$ convert logo: logo.gif
</code></pre></div></div>

<h2 id="support">Support</h2>

<ul>
  <li>http://studio.imagemagick.org/mailman/listinfo/magick-users
    <ul>
      <li>http://www.nabble.com/Magick-users-f13962.html</li>
    </ul>
  </li>
  <li>http://studio.imagemagick.org/magick/viewforum.php?f=7</li>
</ul>

<h2 id="tips">Tips</h2>

<p>PDF Thumbnails:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># convert "Trident Honda Fax Header.pdf[0]" -thumbnail "200x200" test.gif
</code></pre></div></div>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Howto | Install IES4Linux on LTSP</title>
      <link>https://chrisjrob.com/2009/03/21/install-ies4linux-on-ltsp/</link>
      <pubDate>Sat, 21 Mar 2009 06:02:07 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/03/21/install-ies4linux-on-ltsp</guid>
      <description>
       <![CDATA[
         
         <h2 id="ies4linux">IES4Linux</h2>

<p>Internet Explorer for Linux</p>

<h2 id="recent-developments">Recent developments</h2>

<h3 id="bugs">Bugs</h3>

<p>Versions of Wine greater than 0.92 seem to cause IES4Linux to consume vast amounts of CPU both for wineserver and iexplore.exe. This problem seems to occur when accessing SSL pages (possibly Active-X pages).  Bugs have been <a href="https://bugs.launchpad.net/bugs/205895">logged with Ubuntu</a> which was quite rightly <a href="http://bugs.winehq.org/show_bug.cgi?id=13687">redirected to Wine</a>, which was rejected pending a <a href="http://bugs.winehq.org/show_bug.cgi?id=13734">regression test</a>, which in turn was redirected to IES4Linux.  The issue seems to be that Wine do not support native DLLs, but these are essential in making IE work under Linux.</p>

<!--more-->

<h3 id="deb-package">Deb package</h3>

<p>There <em>may</em> be a multi-user install deb package (for Ubuntu at least):</p>

<ul>
  <li>http://ubuntuforums.org/showthread.php?t=636758</li>
</ul>

<h2 id="install-wine">Install Wine</h2>

<p>Make sure you’ve installed Wine.</p>

<h2 id="read-debian-installation">Read Debian Installation</h2>

<ul>
  <li>http://www.tatanka.com.br/ies4linux/page/Installation:Debian</li>
</ul>

<h2 id="master-installation-ies4linux">Master Installation IES4Linux</h2>

<p>First you must create a master installation of ies4linux under <code class="language-plaintext highlighter-rouge">/usr/local</code>. To create the master copy, perform a standard ies4linux install as an ordinary desktop user (i.e. unpack the tarball, run <code class="language-plaintext highlighter-rouge">./ies4linux</code>):</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ wget http://www.tatanka.com.br/ies4linux/downloads/ies4linux-latest.tar.gz
$ tar zxvf ies4linux-latest.tar.gz
$ cd ies4linux-*
$ ./ies4linux
</code></pre></div></div>

<h2 id="convert-to-multi-user-system">Convert to Multi-user System</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ cd
$ rm bin/ie{5,55,6}
$ sudo mkdir -p /usr/local/share
$ sudo chmod a+rX /usr/local/share
$ sudo mv .ies4linux /usr/local/share/ies4linux
$ sudo chown -R root:root /usr/local/share/ies4linux
$ sudo chmod -R a+rX /usr/local/share/ies4linux
</code></pre></div></div>

<ul>
  <li>http://www.tatanka.com.br/ies4linux/forum/viewtopic.php?t=431</li>
</ul>

<p>Then install this script as any or all of <code class="language-plaintext highlighter-rouge">/usr/local/bin/ie{5,55,6}</code> and let your users run it:</p>

<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c">#!/bin/sh</span>
<span class="c"># Launch script for multiuser ies4linux, master copy in /usr/local/share.</span>
<span class="c"># Install as /usr/local/bin/ie6 (or ie55 or ie5)</span>
<span class="c">#</span>
<span class="c"># Blame Andrew Chadwick &lt;andrewc-ies4linux0606@piffle.org&gt;, not Sergio.</span>
<span class="c">#</span>
<span class="c"># Released under the GNU GPL version 2 (or later, your call).</span>
<span class="c"># See ies4linux's own LICENSE or COPYING file for more information.</span>
<span class="c">####################################################</span>

<span class="nv">IE</span><span class="o">=</span><span class="sb">`</span><span class="nb">basename</span> <span class="s2">"</span><span class="nv">$0</span><span class="s2">"</span><span class="sb">`</span>
<span class="nv">MASTERPREFIX</span><span class="o">=</span><span class="s2">"/usr/local/share/ies4linux/</span><span class="nv">$IE</span><span class="s2">"</span>
<span class="nv">WINEPREFIX</span><span class="o">=</span><span class="s2">"</span><span class="k">${</span><span class="nv">HOME</span><span class="k">}</span><span class="s2">/.ies4linux/</span><span class="nv">$IE</span><span class="s2">"</span>

<span class="c"># If we're not set up, create the user's magic symlink-copy of the master</span>
<span class="c"># installation.</span>

<span class="k">if</span> <span class="o">!</span> <span class="nb">test</span> <span class="nt">-d</span> <span class="s2">"</span><span class="nv">$WINEPREFIX</span><span class="s2">"</span><span class="p">;</span> <span class="k">then
    if</span> <span class="o">!</span> <span class="nb">mkdir</span> <span class="nt">-p</span> <span class="s2">"</span><span class="nv">$WINEPREFIX</span><span class="s2">"</span><span class="p">;</span> <span class="k">then
        </span><span class="nb">echo</span> <span class="s2">"mkdir </span><span class="nv">$WINEPREFIX</span><span class="s2"> failed"</span>
        <span class="nb">exit </span>1
    <span class="k">fi
    if</span> <span class="o">!</span> lndir <span class="s2">"</span><span class="nv">$MASTERPREFIX</span><span class="s2">"</span> <span class="s2">"</span><span class="nv">$WINEPREFIX</span><span class="s2">"</span><span class="p">;</span> <span class="k">then
        </span><span class="nb">echo</span> <span class="s2">"lndir failed: is xutils installed?"</span>
        <span class="nb">exit </span>1
    <span class="k">fi</span>

    <span class="c"># The profile directory will be recreated automatically by wine on the</span>
    <span class="c"># first run, so it's OK to blow away eny existing copy hanging around in</span>
    <span class="c"># unwritable symlink form from the install, and it's OK to just create a</span>
    <span class="c"># blank one.</span>
   
    <span class="nv">PROFILES</span><span class="o">=</span><span class="s2">"</span><span class="nv">$WINEPREFIX</span><span class="s2">/drive_c/windows/profiles"</span>
    <span class="nb">rm</span> <span class="nt">-fr</span> <span class="s2">"</span><span class="nv">$PROFILES</span><span class="s2">"</span>
    <span class="nb">mkdir</span> <span class="nt">-p</span> <span class="s2">"</span><span class="nv">$PROFILES</span><span class="s2">"</span>

    <span class="c"># WINE needs to be able to write to the following files, so they can't be</span>
    <span class="c"># symlinks to root-owned ones.</span>
   
    <span class="k">for </span>file <span class="k">in</span> .no_prelaunch_window_flag system.reg userdef.reg user.reg<span class="p">;</span> <span class="k">do
        if </span><span class="nb">test</span> <span class="nt">-L</span> <span class="s2">"</span><span class="nv">$WINEPREFIX</span><span class="s2">/</span><span class="nv">$file</span><span class="s2">"</span><span class="p">;</span> <span class="k">then
            </span><span class="nb">rm</span> <span class="nt">-f</span> <span class="s2">"</span><span class="nv">$WINEPREFIX</span><span class="s2">/</span><span class="nv">$file</span><span class="s2">"</span>
            <span class="nb">cp</span> <span class="s2">"</span><span class="nv">$MASTERPREFIX</span><span class="s2">/</span><span class="nv">$file</span><span class="s2">"</span> <span class="s2">"</span><span class="nv">$WINEPREFIX</span><span class="s2">/</span><span class="nv">$file</span><span class="s2">"</span>
        <span class="k">fi
    done
    </span><span class="nb">chmod</span> <span class="nt">-R</span> og-rwx <span class="s2">"</span><span class="nv">$WINEPREFIX</span><span class="s2">"</span>
<span class="k">fi

</span><span class="nb">export </span>WINEPREFIX
<span class="nb">exec </span>wine <span class="s2">"</span><span class="nv">$WINEPREFIX</span><span class="s2">/drive_c/Program Files/Internet Explorer/IEXPLORE.EXE"</span>
<span class="nb">echo</span> <span class="s2">"Failed to launch WINE: see above for details"</span>
<span class="nb">exit </span>1
</code></pre></div></div>

<p>Run the script above as an ordinary desktop user. When it runs, this script tries to create a WINE prefix location under the user’s home, consisting mainly of symlinks to the master copy’s files. It then launches IE in the normal way.</p>

<p>If it screws up, delete your <code class="language-plaintext highlighter-rouge">~/.ies4linux</code> directory and try again.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Howto | Install Flashplayer</title>
      <link>https://chrisjrob.com/2009/03/21/install-flashplayer/</link>
      <pubDate>Sat, 21 Mar 2009 06:01:08 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/03/21/install-flashplayer</guid>
      <description>
       <![CDATA[
         
         <h2 id="install-flashplayer-on-debian-etch">Install Flashplayer on Debian Etch</h2>

<p>You should be able to install from Backports:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ apt-get -t "etch-backports" install flashplugin-nonfree
</code></pre></div></div>

<!--more-->

<p>If this fails, then leave it installed and manually download from Adobe:</p>

<ul>
  <li>http://www.adobe.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash&amp;P2_Platform=Linux</li>
</ul>

<p>Then extract contents and copy <code class="language-plaintext highlighter-rouge">libflashplayer.so</code> into <code class="language-plaintext highlighter-rouge">/usr/lib/flashplugin-nonfree/</code>. The failed install should have created all the necessary symlinks.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Howto | Install Courier-IMAP Server</title>
      <link>https://chrisjrob.com/2009/03/21/install-courier-imap-server/</link>
      <pubDate>Sat, 21 Mar 2009 06:00:37 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/03/21/install-courier-imap-server</guid>
      <description>
       <![CDATA[
         
         <h2 id="introduction">Introduction</h2>

<p>Courier-IMAP is quick and easy to install, but is probably not your best option for running a first class IMAP server.  In particularly I have been strongly recommended <code class="language-plaintext highlighter-rouge">Cyrus IMAP server</code>.  The big advantage to Courier-IMAP is that it can be very easily installed on your LTSP server as a temporary migration tool for email, i.e. to transfer users from Windows to Linux.</p>

<h2 id="install-imap">Install IMAP</h2>

<!--more-->

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo apt-get install courier-imap
</code></pre></div></div>

<p>This will prompt whether to create files for use by the web interfaces; it is safe to select “No” here.</p>

<p>Now you need to choose a directory where your mail will live:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo mkdir -p /opt/imap-mail
</code></pre></div></div>

<p>Now we need to define our users in the courier-imap user database. There are several ways to do this, including mass conversion of all your users in /etc/passwd using the pw2userdb tool as mentioned in the courier FAQ. Here is what we do to create a single user:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo touch /etc/courier/userdb
$ sudo chmod 600 /etc/courier/userdb
$ sudo userdb ~userid~ set uid=&lt;1000&gt; gid=&lt;1000&gt; shell=/bin/bash home=/opt/imap-mail/~userid~
</code></pre></div></div>

<p>*Edit the final line as appropriate.</p>

<p>Now you need to set the users password and create the directory that will store all our e-mail:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo userdbpw -md5 | sudo userdb &lt;peanut&gt; set systempw
$ sudo mkdir -p /opt/imap-mail/&lt;userid&gt;
$ sudo maildirmake /opt/imap-mail/&lt;userid&gt;/Maildir
$ sudo chown -R &lt;1000&gt;:&lt;1000&gt; /opt/imap-mail/&lt;userid&gt;
</code></pre></div></div>

<p>In the <code class="language-plaintext highlighter-rouge">/etc/courier/authdaemonrc</code> file, make sure you set the following value:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>authmodulelist="authuserdb"
</code></pre></div></div>

<p>Note that you may need to replace the existing authmodulelist value. Now prepare the user DB and restart the entire system:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo makeuserdb
$ sudo /etc/init.d/courier-authdaemon stop
$ sudo /etc/init.d/courier-imap stop
$ sudo /etc/init.d/courier-authdaemon start
$ sudo /etc/init.d/courier-imap start 
</code></pre></div></div>

<p>The IMAP system is now ready.</p>

<h2 id="references">References</h2>

<ul>
  <li>http://www.howtoforge.com/converting_outlook_pst_to_maildir</li>
</ul>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Howto | Install 2x Client</title>
      <link>https://chrisjrob.com/2009/03/21/install-2x-client/</link>
      <pubDate>Sat, 21 Mar 2009 05:59:44 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/03/21/install-2x-client</guid>
      <description>
       <![CDATA[
         
         <h2 id="download-2x-client">Download 2x Client</h2>

<p>At the time of writing there are no Debian-based packages, so download the RPM client from the 2x website:</p>

<ul>
  <li>http://www.2x.com/</li>
</ul>

<h2 id="installing-2x-client">Installing 2x Client</h2>

<!--more-->

<h3 id="alien-installation">Alien Installation</h3>

<p>In order to convert the RPM package into a DEB package, we need to install alien:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># alien --scripts -i 2xApplicationServerClient3.i386.rpm
</code></pre></div></div>

<p>By installing the rpm this way on a Debian based system it can be removed later through your package manager or using apt-get. The package name is applicationserverclient.</p>

<p>If you get an error from the running the scripts you will need to install the .bz2 version instead.</p>

<h3 id="alternative-binary-installation">Alternative Binary Installation</h3>

<p>To do that, download the file into your home directory and run the following commands.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># tar xvjf 2xApplicationServerClient3.tar.bz2
# cd opt/2X/applicationserverclient/scripts
# chmod 755 install.sh
# ./install.sh
</code></pre></div></div>

<p>Assuming you are still in the scripts directory, type the following command to get to the bin directory.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># cd ../bin
</code></pre></div></div>

<h2 id="usage">Usage</h2>

<p>Next you need to start the client and connect to the ApplicationServer. The first line below shows the syntax you need to use and the second is an example. You’ll need to adjust the values to match your system.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># ./appserverclient -s"Server IP" -a"Application Name" -u"User Name" -p"Password"
# ./appserverclient -s192.168.1.5 -a"Internet Explorer" -uAdministrator -ppassword
</code></pre></div></div>

<h2 id="references">References</h2>

<ul>
  <li>http://www.2x.com/applicationserver/downloadlinks.html</li>
  <li>Beta releases:
    <ul>
      <li>http://downloads.2x.com/AppServer-LoadBalancer/betaversion/</li>
    </ul>
  </li>
</ul>

       ]]>
      </description>
    </item>
    
    <item>
      <title>Howto | Download Debian with Jigdo</title>
      <link>https://chrisjrob.com/2009/03/21/download-debian-with-jigdo/</link>
      <pubDate>Sat, 21 Mar 2009 05:59:30 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/03/21/download-debian-with-jigdo</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/debian_logo.png" align="right" alt="Featured Image">
         
         <p>Just do an <code class="language-plaintext highlighter-rouge">sudo apt-get jigdo-file</code> and read the following:</p>

<ul>
  <li><a href="http://tldp.org/HOWTO/Debian-Jigdo/index.html">Debian Jigdo</a></li>
</ul>

<!--more-->

<h2 id="where-to-get-downloads">Where to get downloads</h2>

<p>Download the appropriate .jigdo and .template file into a suitable directory on your system.</p>

<ul>
  <li><a href="http://www.debian.org/CD/jigdo-cd/">Jigdo Releases</a></li>
</ul>

<h2 id="reducing-your-download">Reducing your download</h2>

<p>Pretty much the raison-d’etre of Jigdo is the ability to re-use an existing CD to reduce the number of files to be downloaded.  But if you’re anything like me it’s much easier to use an ISO:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo mkdir /mnt/cdrom
$ sudo mount -o loop debian-LennyBeta2-i386-kde-CD-1.iso /mnt/cdrom
</code></pre></div></div>

<p>Now just enter <code class="language-plaintext highlighter-rouge">/mnt/cdrom</code> as the path to the CD to use</p>

<h2 id="references">References</h2>

<ul>
  <li><a href="http://tldp.org/HOWTO/Debian-Jigdo/index.html">Debian Jigdo</a></li>
  <li><a href="http://www.electrictoolbox.com/how-to-use-jigdo-lite/">How to use Jigdo Lite</a></li>
</ul>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Howto | Debug Debian Sound</title>
      <link>https://chrisjrob.com/2009/03/21/debug-debian-sound/</link>
      <pubDate>Sat, 21 Mar 2009 05:58:43 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/03/21/debug-debian-sound</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/debian_logo.png" align="right" alt="Featured Image">
         
         <p>Sound is one of those things in Linux which either works out-of-the-box, or drives you berserk. The following instructions did not solve my problems, but I leave them here for future reference.</p>

<p>The gospel for sound according to Debian:</p>

<ul>
  <li>http://www.debianhelp.co.uk/sound.htm</li>
</ul>

<!--more-->

<h2 id="step-1-make-sure-you-have-the-sound-system-fully-installed">Step 1: Make sure you have the sound system fully installed</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># apt-get install alsa-base alsa-oss alsa-source alsa-utils
# apt-get install alsamixergui alsaplayer alsaplayer-common alsaplayer-gtk alsaplayer-jack
# apt-get install alsaplayer-oss snd-gtk-alsa vlc-plugin-alsa alsaplayer-jack jack jackd
</code></pre></div></div>

<h2 id="step-2-determine-your-sound-card">Step 2: Determine your sound card</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># lspci -v | grep -A 6 Audio
00:14.2 Audio device: ATI Technologies Inc SB600 Azalia
        Subsystem: Micro-Star International Co., Ltd. Unknown device 7297
        Flags: bus master, slow devsel, latency 64, IRQ 22
        Memory at fe020000 (64-bit, non-prefetchable) [size=16K]
        Capabilities: [50] Power Management version 2
</code></pre></div></div>

<h2 id="step-3-run-module-assistant">Step 3: Run module-assistant</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># apt-get install module-assistant
# module-assistant
</code></pre></div></div>

<p>If this fails stating cannot find <code class="language-plaintext highlighter-rouge">config.h</code>, then:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># cd /usr/src/linux-headers/linux-headers-2.6.21-2-k7/include/linux
# ln -s autoconf.h config.h
</code></pre></div></div>

<p>Next run:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># alsaconf
</code></pre></div></div>

<p>The solution to the problem is often as simple as adding a line at the end of <code class="language-plaintext highlighter-rouge">/etc/modprobe.d/alsa-base</code> along the lines of:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ options snd-hda-intel model=xyz
</code></pre></div></div>

<p>To determine sound chip model:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: SB [HDA ATI SB], device 0: ALC861VD Analog [ALC861VD Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0

# cat /proc/asound/cards
0 [SB             ]: HDA-Intel - HDA ATI SB
                    HDA ATI SB at 0xfe020000 irq 22
</code></pre></div></div>

<p>Then gunzip <code class="language-plaintext highlighter-rouge">/usr/share/doc/alsa-base/driver/ALSA-Configuration.txt.gz</code>. Open with nano and search for your soundcard chip as shown above.</p>

<p><code class="language-plaintext highlighter-rouge">options snd-hda-intel model=3stack</code> works for many motherboard integrated chips with shared surrounds. Sometimes it is also possible to use the more generic <code class="language-plaintext highlighter-rouge">options snd-hda-intel model=ref</code>, which the hda driver uses to load manufacturer specfic presets (SigmaTel, Realtek, etc.). The full list is available in ALSA-Configuration.txt in the driver tarball under alsa-kernel/Documentation/.</p>

<h2 id="restart-sound-system">Restart sound system</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># cd /etc/init.d
# then ./alsasound restart
</code></pre></div></div>

<h2 id="play-test-sound">Play Test Sound</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># locate *.wav
/usr/share/sounds/KDE_Beep_RingRing.wav
/usr/share/sounds/KDE_Beep_ShortBeep.wav

# aplay /usr/share/sounds/KDE_Beep_RingRing.wav
Playing WAVE '/usr/share/sounds/KDE_Beep_RingRing.wav' : Unsigned 8 bit, Rate 22254 Hz, Mono
</code></pre></div></div>

<h2 id="external-references">External references</h2>

<ul>
  <li>http://www.debianhelp.co.uk/sound.htm</li>
  <li>http://ubuntuforums.org/showthread.php?t=205449</li>
  <li>http://bugs.archlinux.org/task/6978</li>
  <li>http://ubuntuforums.org/showthread.php?t=314383</li>
  <li>http://ubuntuforums.org/showthread.php?p=3267595</li>
  <li>https://wiki.ubuntu.com/LaptopTestingTeam/Lenovo3000C200_89224MG</li>
  <li>https://bugs.launchpad.net/ubuntu/+source/linux-source-2.6.20/+bug/107821</li>
  <li>https://help.ubuntu.com/community/HdaIntelSoundHowto</li>
  <li>https://bugs.launchpad.net/ubuntu/+source/linux-source-2.6.17/+bug/85869</li>
</ul>

       ]]>
      </description>
    </item>
    
    <item>
      <title>Howto | Copy Directories &amp; Preserve Permissions</title>
      <link>https://chrisjrob.com/2009/03/21/copy-directories-and-preserve-permissions/</link>
      <pubDate>Sat, 21 Mar 2009 05:58:15 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/03/21/copy-directories-and-preserve-permissions</guid>
      <description>
       <![CDATA[
         
         <h2 id="the-command">The Command</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ cd /
$ tar cf - opt | (cd /archive; tar xf - )
</code></pre></div></div>

<p><strong>You cannot run this command as “sudo”, if you need root access for your copy, then you will need to execute a “sudo su” or log in as root.</strong></p>

<!--more-->

<h2 id="what-the-command-will-do">What the command will do</h2>

<p>With any command that you are given by someone, you should always check what that command will do:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ tar cf - opt | (cd /archive; tar xf - )
c = create
f - = file stdout
opt = source path
| = pipe all above to...
(
cd /archive;
x = extract
f - = file stdin
)
</code></pre></div></div>

<p>So this command will pipe a new archive from opt to stdout, which it will then recreate in /archive.</p>

<p>This  will copy <code class="language-plaintext highlighter-rouge">/opt</code> into <code class="language-plaintext highlighter-rouge">/archive/opt</code>, preserving permissions, file modification times etc.</p>

<p>Read man tar for more details.</p>

       ]]>
      </description>
    </item>
    
    <item>
      <title>Howto | Convert Quicktime MOV to AVI</title>
      <link>https://chrisjrob.com/2009/03/21/convert-quicktime-mov-to-avi/</link>
      <pubDate>Sat, 21 Mar 2009 05:57:44 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/03/21/convert-quicktime-mov-to-avi</guid>
      <description>
       <![CDATA[
         
         <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ ffmpeg -i "source.mov" -sameq -vcodec msmpeg4v2 -acodec pcm_u8 "output.avi"
</code></pre></div></div>

       ]]>
      </description>
    </item>
    
    <item>
      <title>Howto | Connect KAddressBook to ActiveDirectory</title>
      <link>https://chrisjrob.com/2009/03/21/connect-kaddressbook-to-activedirectory/</link>
      <pubDate>Sat, 21 Mar 2009 05:57:18 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/03/21/connect-kaddressbook-to-activedirectory</guid>
      <description>
       <![CDATA[
         
         <p>In Kmail, under Contacts, in the lower half of the screen press button to [Add]. Select LDAP.</p>

<!--more-->

<table>
  <thead>
    <tr>
      <th>Name</th>
      <th>Value</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Name</td>
      <td>Enter the resource name here</td>
    </tr>
    <tr>
      <td>Read only</td>
      <td>[x]</td>
    </tr>
    <tr>
      <td>User</td>
      <td>ADDOMAIN~username~</td>
    </tr>
    <tr>
      <td>Bind DN</td>
      <td>ADDOMAIN</td>
    </tr>
    <tr>
      <td>Realm</td>
      <td> </td>
    </tr>
    <tr>
      <td>Password</td>
      <td>~userpass~</td>
    </tr>
    <tr>
      <td>Host</td>
      <td>hostname.domain.co.uk</td>
    </tr>
    <tr>
      <td>Port</td>
      <td>3268 (this is the port used by ActiveDirectory)</td>
    </tr>
    <tr>
      <td>LDAP</td>
      <td>3</td>
    </tr>
    <tr>
      <td>Size limit</td>
      <td>default</td>
    </tr>
    <tr>
      <td>Time limit</td>
      <td>default</td>
    </tr>
    <tr>
      <td>DN</td>
      <td>OU=Exact ActiveDirectory Name,DC=domain,DC=co,DC=uk</td>
    </tr>
    <tr>
      <td>Security</td>
      <td>NO</td>
    </tr>
    <tr>
      <td>Authentication</td>
      <td>Simple</td>
    </tr>
    <tr>
      <td>Subtree query</td>
      <td>[x]</td>
    </tr>
    <tr>
      <td>Offline use</td>
      <td>Use local copy if no connection</td>
    </tr>
  </tbody>
</table>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Howto | Configure KNetwork Manager</title>
      <link>https://chrisjrob.com/2009/03/21/configure-knetwork-manager/</link>
      <pubDate>Sat, 21 Mar 2009 05:57:01 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/03/21/configure-knetwork-manager</guid>
      <description>
       <![CDATA[
         
         <h2 id="the-issue">The Issue</h2>

<p>KNetworkManager does not like inheriting a pre-existing <code class="language-plaintext highlighter-rouge">/etc/network/interfaces</code> file.</p>

<h2 id="the-solution">The Solution</h2>

<p>Comment out all but the following from your <code class="language-plaintext highlighter-rouge">/etc/network/interfaces</code>:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>auto lo
iface lo inet loopback
</code></pre></div></div>

<!--more-->

<p>Add the user to the <code class="language-plaintext highlighter-rouge">netdev</code> group:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo adduser your_username netdev
</code></pre></div></div>

       ]]>
      </description>
    </item>
    
    <item>
      <title>Howto | Configure Iceweasel to print via Kprinter</title>
      <link>https://chrisjrob.com/2009/03/21/configure-iceweasel-to-print-via-kprinter/</link>
      <pubDate>Sat, 21 Mar 2009 05:56:39 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/03/21/configure-iceweasel-to-print-via-kprinter</guid>
      <description>
       <![CDATA[
         
         <h2 id="introduction">Introduction</h2>

<p>Iceweasel and Firefox do not use the KDE Print system, but instead print directly to CUPs.  This works fine, but can be confusing, as it looks different and doesn’t offer all the same functions, like PDF etc.</p>

<p>Trying to resolve this issue, I came across this posting:</p>

<ul>
  <li><a href="http://ubuntuforums.org/showthread.php?t=205050">How To: Make Firefox / Thunderbird print to kprinter automatically in KDE / Kubuntu</a> by msak007</li>
</ul>

<!--more-->

<h2 id="single-user">Single User</h2>

<h3 id="step-1-print-to-postscript">Step 1 Print to Postscript</h3>

<p>First, if you haven’t done so, you need to print to PostScript in order for the needed entry in <code class="language-plaintext highlighter-rouge">prefs.js</code> to be populated. This will be done automatically the first time you print. Open any web page and go to:</p>

<p>File → Print → choose PostScript/default (it should be the default if you haven’t installed any printers yet) → click “Print”</p>

<p>Once you have done this and it prints, it’ll add the PostScript entry you need to edit.</p>

<h3 id="step-2-change-default-postscript-printer">Step 2 Change default postscript printer</h3>

<p>In the URL bar, open the config by typing:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>about:config
</code></pre></div></div>

<p>In the “Filter” bar, type</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>print.printer_PostScript/default.print_command
</code></pre></div></div>

<p>This should filter everything out but that line.</p>

<p>Right-click on the line, click on “Modify”, and change the entry from:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>lpr ${MOZ_PRINTER_NAME:+-P"$MOZ_PRINTER_NAME"}
</code></pre></div></div>

<p>to:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>kprinter
</code></pre></div></div>

<p>Then click OK. This will make Iceweasek print to kprinter any time you select the “PostScript/default” printer.</p>

<h3 id="step-3-set-it-to-print-automatically">Step 3 Set it to print automatically</h3>

<p>Right-click anywhere in the white space, then click on “New → Boolean” to add a new Boolean entry. Type:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>print.always_print_silent
</code></pre></div></div>

<p>And set its value to “true”. This will force Iceweasel to print to the default printer without prompting you.</p>

<h3 id="step-4-disable-cups">Step 4 Disable CUPs</h3>

<p>If “PostScript/default” is the only printer you have and there are no local / network printers, it works great and you can stop here. But if you installed a printer through CUPS, it complicates things as Iceweasel will want to use that as a default and all your prints will go there without prompting you! So even if you don’t have a local printer, it’s a good idea to add the following line in case you add one later.</p>

<p>Once again, right-click and choose “New → Boolean”. Type:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>print.postscript.cups.enabled
</code></pre></div></div>

<p>And set its value to “false”. That will disable CUPS printing in Iceweasel, and it will default to the “PostScript/default” printer. And since you’ve changed the output of that to kprinter, you’ll see a “processing” dialog for a split second when you print, after which kprinter will open up. There you can choose all your printers, including PDF, PostScript, and any CUPS installed printers.</p>

<h2 id="multi-user">Multi-user</h2>

<p>There is a file that controls global settings, but it’s not <code class="language-plaintext highlighter-rouge">prefs.js</code> - it’s called (ironically) <code class="language-plaintext highlighter-rouge">firefox.js</code>, and is located in:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/usr/share/iceweasel/defaults/pref
</code></pre></div></div>

<p>Make sure you have Firefox closed and edit the file using your favorite editor.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ cd /usr/share/iceweasel/defaults/pref/
$ sudo cp firefox.js firefox.js.backup
$ kdesu kate firefox.js
</code></pre></div></div>

<p>Enter your password, and when Kate opens up add the following to the very end of the file:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>// Print to kprinter by default for all users
pref("print.postscript.print_command", "kprinter");
pref("print.print_command", "kprinter");
pref("print.always_print_silent", true);
pref("print.postscript.cups.enabled", false);
</code></pre></div></div>

<p>Save the file and launch Firefox. This will not overwrite or modify and user set entries (the entries in bold in about:config), so it will only affect new profiles. If you’ve already modified your profile, this will not change any of the settings in it.</p>

       ]]>
      </description>
    </item>
    
    <item>
      <title>Howto | Configure apt-get</title>
      <link>https://chrisjrob.com/2009/03/21/configure-apt-get/</link>
      <pubDate>Sat, 21 Mar 2009 05:55:33 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/03/21/configure-apt-get</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/debian_logo.png" align="right" alt="Featured Image">
         
         <h2 id="remove-cdrom-installation">Remove CDROM installation</h2>

<p>Firstly comment out the CDROM installation from <code class="language-plaintext highlighter-rouge">/etc/apt/sources.list</code>.  This seems to be done automatically from Lenny.</p>

<p>Next change any references to “stable” are replaced with the name of the current stable release, currently “Lenny”.  If we don’t do this, then when the next release “Squeeze” goes “stable”, suddenly your system will be upgraded next time you do an apt-get upgrade.</p>

<!--more-->

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ apt-get update
</code></pre></div></div>

<h2 id="proxy-server">Proxy Server</h2>

<p>If it didn’t work, then you may need to configure apt with your proxy server.</p>

<h3 id="option-1---edit-aptconf">Option 1 - Edit apt.conf</h3>

<p>The usual method is to add the following line to <code class="language-plaintext highlighter-rouge">/etc/apt/apt.conf</code>:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ nano /etc/apt/apt.conf
Apt.conf:
Acquire::http::Proxy "http://admin:password@proxy:port/"
</code></pre></div></div>

<p>Obviously it is not generally a good idea to have a username and password in plain text form in this way.</p>

<h3 id="option-2---environment-variable">Option 2 - Environment Variable</h3>

<p>It is also possible to add the proxy server to the environment variables:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ export http_proxy="http://admin:password@proxy:port/"
$ export ftp_proxy="http://admin:password@proxy:port/"
</code></pre></div></div>

<p>Obviously this will be lost when you close the current console.  Again it is not a good idea to enter usernames and passwords as command line arguments, so you should clear your bash_history.</p>

<h3 id="option-3---update-proxy-server">Option 3 - Update Proxy Server</h3>

<p>Ideally you need to change your proxy server to allow traffic without the need to specify a username and password.</p>

<h2 id="add-backports">Add Backports</h2>

<p>In many cases you will require newer packages than are afforded by stable alone, and for that purpose you need Debian Backports.  To add backports, visit:</p>

<ul>
  <li>http://www.backports.org/dokuwiki/doku.php?id=instructions</li>
</ul>

<p>And follow the instructions on that page to add the repository to your sources, and add the security keyring.</p>

<h2 id="pinning">Pinning</h2>

<p>If you have multiple sources in your sources.list, then in general the latest package will be selected by default.  You can change this behaviour by creating a file <code class="language-plaintext highlighter-rouge">/etc/apt/preferences</code>.  This is called “pinning”.</p>

<p>Save as <code class="language-plaintext highlighter-rouge">/etc/apt/preferences</code>…</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Package: *
Pin: release o=Debian,a=stable
Pin-Priority: 900

Package: *
Pin: origin www.backports.org
Pin-Priority: 600

Package: *
Pin: release o=Debian,a=testing
Pin-Priority: 400

Package: *
Pin: release o=Debian,a=unstable
Pin-Priority: 300

Package: *
Pin: release o=Debian
Pin-Priority: -1
</code></pre></div></div>

<p>For a fuller description of pinning see the following page:</p>

<ul>
  <li>http://wiki.debian.org/AptPinning</li>
</ul>

<h2 id="saving-and-restoring-package-selections">Saving and restoring package selections</h2>

<p>To save your package selections:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ dpkg --get-selections &gt;filename
</code></pre></div></div>

<p><strong>Remember to save your sources.list and preferences.</strong></p>

<p>To restore your package selections:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ dpkg --set-selections &lt; filename
$ apt-get upgrade-dselect
</code></pre></div></div>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Howto | Protect your Windows PC</title>
      <link>https://chrisjrob.com/2009/03/21/protect-your-windows-pc/</link>
      <pubDate>Sat, 21 Mar 2009 05:34:14 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/03/21/protect-your-windows-pc</guid>
      <description>
       <![CDATA[
         
         <p>In my opinion, protecting your Windows PC is much harder than it should be, and for that reason I recommend Linux.</p>

<ul>
  <li><a href="/2009/03/21/why-linux/">Why Linux?</a>.</li>
</ul>

<p>If you are determined to run Windows, then read on!</p>

<!--more-->

<h2 id="secure-your-network">Secure your network</h2>

<p>A <a href="http://www.theregister.co.uk/2008/07/15/unpatched_pc_survival_drops/">recent study</a> found that an unpatched Windows PC connected to the Internet without a firewall, lasted just four minutes.</p>

<h3 id="use-a-hardware-firewall">Use a hardware firewall</h3>

<p>Various studies concluded that so called Personal Firewall software is flawed in concept. Read more about it on Wikipedia, including some of the criticisms:</p>

<ul>
  <li><a href="https://en.wikipedia.org/wiki/Personal_firewall">Personal Firewall</a></li>
</ul>

<p>The good news is that combined modem, router, network switch and Wireless access point can be purchased for less than £50.  Linksys and Draytek have a great reputation, and I personally have had no problems with Netgear.  Just try and get a personal recommendation, and ensure that it does have a built-in firewall.</p>

<h3 id="encrypt-your-wireless">Encrypt your Wireless</h3>

<p>Often people don’t bother encrypting their wireless network.  I believe this is often based on the incorrect assumption that the worst that will happen is that someone will be able to use your broadband for free.  The real reason to encrypt your wireless, is because anyone on your wireless network is inside your network, and can thus browse the file-shares on your computer and potentially exploit your machines.  The fact that they have bypassed your firewall is a big advantage to them.</p>

<p>Avoid WEP encryption, which can be cracked, and instead opt for WPA encryption.</p>

<h2 id="secure-your-pc">Secure your PC</h2>

<h3 id="dont-run-as-administrator">Don’t run as administrator</h3>

<p>Most Windows users run either as “administrator” or with an account that has administrator rights.  This gives any virus that you run full rights to do whatever they want on your PC.  Instead you should run as a limited-user account and only login as administrator when you need to, or use the <a href="http://netsecurity.about.com/od/quicktips/qt/qt_run_as.htm">Run as administrator</a> option.</p>

<p>Read more about this subject:</p>

<ul>
  <li>http://windows.about.com/od/security/a/why_limited.htm</li>
</ul>

<p>If you have teenage children, it is a good idea to create user accounts for them and restrict them to limited-user rights.</p>

<h3 id="keep-your-pc-updated">Keep your PC updated</h3>

<p>You must use the Windows updater to keep your PC updated with critical updates.  If you are running anything older than Windows XP SP2, then consider upgrading, or better still consider changing to Linux.</p>

<ul>
  <li><a href="/2009/03/21/why-linux/">Why Linux?</a></li>
</ul>

<h3 id="install-anti-virus-software">Install anti-virus software</h3>

<p>I would avoid all the free trials that come with a new PC, and I would avoid Norton - which will have devastating effect on your PC.  Instead I would have a look at the following:</p>

<ul>
  <li><a href="http://free.avg.com/">AVG Free Edition</a></li>
  <li><a href="http://www.avast.com/eng/download-avast-home.html">Avast Home Edition</a></li>
  <li><a href="http://www.free-av.com/">AntiVir Personal Edition</a></li>
</ul>

<p><strong>I have only personally tried AVG, but understand that the others are also good.</strong></p>

<h3 id="install-anti-spyware-software">Install anti-spyware software</h3>

<p>Microsoft Defender is now included in Microsoft Vista, and is available for install for Windows XP and this is a logical choice.</p>

<ul>
  <li><a href="http://www.microsoft.com/windows/products/winfamily/defender/default.mspx">Microsoft Defender</a></li>
  <li><a href="http://www.safer-networking.org/">Spybot - Search &amp; Destroy</a></li>
  <li><a href="http://lavasoft.com/">Ad-Aware</a></li>
</ul>

<p><strong>I have personally used all of these programs without issue.</strong></p>

<p>If you have already installed some anti-spyware program, make sure it’s not a rogue:</p>

<ul>
  <li><a href="http://www.spywarewarrior.com/rogue_anti-spyware.htm">Spyware Warrior: Rogue Anti-Spyware</a></li>
</ul>

<h3 id="avoid-internet-explorer">Avoid Internet Explorer</h3>

<p>Use Mozilla Firefox instead of Internet Explorer.  Only use Internet Explorer for those sites that you trust implicitly.</p>

<h2 id="be-cautious">Be cautious</h2>

<ul>
  <li>Do not open email attachments unless you know the sender and are expecting the attachment</li>
  <li>Do not click on hyperlinks in emails (they’re as dangerous as attachments)</li>
  <li>Do not visit dubious websites</li>
  <li>Never follow links in pop-ups</li>
  <li>Delete any chain e-mails or unwanted messages without forwarding</li>
  <li>Don’t reply to junk emails, nor follow links to remove yourself from their database, often all you are doing is confirming that your email address is valid</li>
  <li>When installing software, read every step thoroughly to ensure that you do not install additional software without realising it</li>
</ul>

<h2 id="further-reading">Further Reading</h2>

<ul>
  <li><a href="/2009/03/21/why-linux/">Why Linux?</a></li>
  <li><a href="http://www.sans.org/rr/papers/index.php?id=1298">Windows XP - Surviving the first day</a></li>
</ul>

       ]]>
      </description>
    </item>
    
    <item>
      <title>Alternatives to Windows</title>
      <link>https://chrisjrob.com/2009/03/21/alternatives-to-windows/</link>
      <pubDate>Sat, 21 Mar 2009 05:33:57 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/03/21/alternatives-to-windows</guid>
      <description>
       <![CDATA[
         
         <p>I have been repeatedly astonished by the number of people who have no idea that any alternative to Microsoft Windows actually exists.  Here is a list of just a few with Links to their respective Wikipedia pages:</p>

<!--more-->

<ul>
  <li><a href="https://en.wikipedia.org/wiki/Linux">Linux</a> (open source)</li>
  <li><a href="https://en.wikipedia.org/wiki/OS_X">Apple Mac OS X</a> (proprietary)</li>
  <li><a href="https://en.wikipedia.org/wiki/Berkeley_Software_Distribution">BSD</a> (open source)</li>
  <li>More → <a href="https://en.wikipedia.org/wiki/List_of_operating_systems">List of operating systems</a></li>
</ul>

<p>It is worth mentioning at this point that Apple Mac OS X is a proprietary closed system, whilst the others are open source.</p>

<p>I recommend Linux - <a href="/2009/03/21/why-linux/">Why Linux?</a>.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Howto | Build VirtualBox from Source</title>
      <link>https://chrisjrob.com/2009/03/21/build-virtualbox-from-source/</link>
      <pubDate>Sat, 21 Mar 2009 05:33:10 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/03/21/build-virtualbox-from-source</guid>
      <description>
       <![CDATA[
         
         <h2 id="download">Download</h2>

<p>Download Open Source Edition (OSE) from VirtualBox:</p>

<ul>
  <li>http://www.virtualbox.org/wiki/Downloads</li>
</ul>

<!--more-->

<h2 id="pre-requisites">Pre-requisites</h2>

<p>Install the following pre-requisites:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># apt-get install gcc g++ bcc iasl xsltproc xalan libxalan110-dev uuid-dev zlib1g-dev libidl-dev libsdl1.2-dev libxcursor-dev libqt3-headers libqt3-mt-dev libasound2-dev libstdc++5 libhal-dev
</code></pre></div></div>

<h2 id="compile">Compile</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># sudo su
# ./configure
# . env.sh  &lt;&lt; Note the space between the '.' and 'env'
# kmk all
</code></pre></div></div>

<h2 id="installation">Installation</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># cd out/linux.x86/release/bin/src
# make
# make install
# cd ..
</code></pre></div></div>

<h2 id="references">References</h2>

<p>This document has been copied from the following, which you should read as your primary source.</p>

<ul>
  <li>http://www.virtualbox.org/wiki/Linux%20build%20instructions</li>
</ul>

<p>I also found the following (suitably adapted for Debian) to be most useful:</p>

<ul>
  <li>http://www.howtoforge.com/virtualbox_ubuntu</li>
</ul>

<p>Although I could not get subversion working from behind our proxy server, the source for 1.5.2 was downloadable at the above site.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Howto | VirtualBox</title>
      <link>https://chrisjrob.com/2009/03/21/virtualbox/</link>
      <pubDate>Sat, 21 Mar 2009 05:32:58 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/03/21/virtualbox</guid>
      <description>
       <![CDATA[
         
         <p><strong>The VirtualBox Open Source Edition is now in the Debian and Ubuntu repositories, so these instructions are largely redundant.</strong></p>

<h2 id="licensing">Licensing</h2>

<p>The full product is not open source, only free for personal and evaluation use. They do offer an open source version, but this requires compiling from source and does not include headless VRDP or automated set-up, nor USB support.</p>

<!--more-->

<h2 id="performance">Performance</h2>

<p>The good news is that VirtualBox is very fast indeed, and you can activate the CPU virtual threading to make it even faster.</p>

<h2 id="installing-the-full-product">Installing the Full Product</h2>

<p>So simple, in comparison to the alternatives.</p>

<ol>
  <li>Either download from http://www.virtualbox.org/wiki/Downloads or follow instructions to add to apt sources</li>
  <li>Install in the normal Debian way</li>
</ol>

<h2 id="creating-a-virtual-machine">Creating a virtual machine</h2>

<p>So intuitive, you can work it out for yourself.</p>

<p><strong>VirtualBox requires ISO files. If you have IMG files, they can simply be renamed</strong></p>

<p><strong>Don’t forget to turn on CPU virtual threading, if you have a suitable CPU</strong></p>

<h2 id="simple-networking">Simple networking</h2>

<p>See <a href="/2009/03/21/simple-networking-in-kvm/">Simple networking in KVM</a> for more information on this method.</p>

<p>Simply add the two scripts below to your .VirtualBox folder (or a place of your choosing) and in the VirtualBox GUI interface, edit the settings of your virtual machine and change the networking to host networking, give the interface the name “tap0” and add the scripts below in the relevant fields.</p>

<ul>
  <li>Host IP: 192.168.0.17</li>
  <li>TUN Interface IP: 192.168.0.18</li>
  <li>Guest Interface IP: 192.168.0.19</li>
</ul>

<h3 id="create-interface">Create interface</h3>

<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c">#!/bin/sh</span>
<span class="c"># vbox-ifup.sh</span>

<span class="c"># configure tun0 device (UML and newer versions of Qemu use tap0 here!)</span>
<span class="nb">sudo</span> /sbin/ifconfig tap0 192.168.0.18

<span class="c"># activate ip forwarding</span>
<span class="nb">sudo </span>bash <span class="nt">-c</span> <span class="s1">'echo 1 &gt; /proc/sys/net/ipv4/ip_forward'</span>

<span class="c"># set up routing to the guest IP</span>
<span class="nb">sudo </span>route add <span class="nt">-host</span> 192.168.0.19 dev tap0

<span class="c"># activate ARP proxy to "spoof" arp address</span>
<span class="nb">sudo </span>bash <span class="nt">-c</span> <span class="s1">'echo 1 &gt; /proc/sys/net/ipv4/conf/tap0/proxy_arp'</span>

<span class="c"># set "spoofed" arp address</span>
<span class="nb">sudo </span>arp <span class="nt">-Ds</span> 192.168.0.19 eth0 pub
</code></pre></div></div>

<h3 id="close-interface">Close interface</h3>

<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c">#!/bin/sh</span>
<span class="c"># vbox-ifdown.sh</span>

<span class="c"># delete "spoofed" arp address</span>
<span class="nb">sudo </span>arp <span class="nt">-d</span> 192.168.0.19

<span class="c"># deactivate ARP proxy to "spoof" arp address</span>
<span class="nb">sudo </span>bash <span class="nt">-c</span> <span class="s1">'echo 0 &gt; /proc/sys/net/ipv4/conf/tap0/proxy_arp'</span>

<span class="c"># remove routing to the guest IP</span>
<span class="nb">sudo </span>route del <span class="nt">-host</span> 192.168.0.19 dev tap0

<span class="c"># deactivate ip forwarding</span>
<span class="nb">sudo </span>bash <span class="nt">-c</span> <span class="s1">'echo 0 &gt; /proc/sys/net/ipv4/ip_forward'</span>

<span class="c"># remove tun0 device (UML and newer versions of Qemu use tap0 here!)</span>
<span class="nb">sudo</span> /sbin/ifconfig <span class="nv">$1</span> down
</code></pre></div></div>

<h2 id="references">References</h2>

<ul>
  <li><a href="https://help.ubuntu.com/community/VirtualBox#head-ac88c03223e773c78dbb46b4b13c109de1143a03">Build VirtualBox</a></li>
  <li><a href="http://ubuntuforums.org/archive/index.php/t-346185.html">Complete Host Networking</a></li>
  <li><a href="http://www.cendio.com/seamlessrdp/">Install SeamlessRDP</a></li>
  <li><a href="http://ubuntuforums.org/showthread.php?t=433359">Configure for seamless and headless operation</a></li>
  <li><a href="http://ubuntuforums.org/showthread.php?t=433359&amp;page=11">Fix for multiple windows</a>
    <ul>
      <li>http://ubuntuforums.org/showthread.php?t=224212</li>
      <li>http://www.fontis.com.au/rdesktop</li>
    </ul>
  </li>
  <li><a href="http://www.virtualbox.org/download/UserManual.pdf">VirtualBox Manual</a></li>
  <li><a href="http://sig9.com/articles/concurrent-remote-desktop">Concurrent Users</a>
    <ul>
      <li>http://concurrentremotesessions.netfirms.com/</li>
      <li>http://sala.pri.ee/terminal-server-patch/</li>
    </ul>
  </li>
</ul>

       ]]>
      </description>
    </item>
    
    <item>
      <title>Howto | Simple networking in KVM</title>
      <link>https://chrisjrob.com/2009/03/21/simple-networking-in-kvm/</link>
      <pubDate>Sat, 21 Mar 2009 05:32:36 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/03/21/simple-networking-in-kvm</guid>
      <description>
       <![CDATA[
         
         <p>Most instructions on the web are suggesting setting up bridging and setting the interface to work in promiscuous mode; which I understand has security implications. I came across <a href="http://calamari.reverse-dns.net:980/cgi-bin/moin.cgi/QemuOnLinux">this website</a> which seemed to promise a simple alternative, by which instead of bridging the networks we just advertise the presence of the guest interface. It seems to work well as far as I can tell.</p>

<!--more-->

<h2 id="configuration">Configuration</h2>

<ul>
  <li>Host IP: 192.168.0.17</li>
  <li>TUN Interface IP: 192.168.0.18</li>
  <li>Guest Interface IP: 192.168.0.19</li>
</ul>

<p>I went into windows and provisioned the emulated ethernet interface with an IP address of 192.168.0.19; along with appropriate DNS settings and default gateway settings. I’ve also reserved the address 192.168.0.18 for use by the tunnel device.</p>

<p>My <code class="language-plaintext highlighter-rouge">/etc/qemu-ifup</code> looks like this:</p>

<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c">#!/bin/sh</span>
<span class="c"># configure tun0 device (UML and newer versions of Qemu use tap0 here!)</span>
<span class="nb">sudo</span> /sbin/ifconfig <span class="nv">$1</span> 192.168.0.18

<span class="c"># activate ip forwarding</span>
<span class="nb">sudo </span>bash <span class="nt">-c</span> <span class="s1">'echo 1 &gt; /proc/sys/net/ipv4/ip_forward'</span>

<span class="c"># set up routing to the guest IP</span>
<span class="nb">sudo </span>route add <span class="nt">-host</span> 192.168.0.19 dev tap0

<span class="c"># activate ARP proxy to "spoof" arp address</span>
<span class="nb">sudo </span>bash <span class="nt">-c</span> <span class="s1">'echo 1 &gt; /proc/sys/net/ipv4/conf/tap0/proxy_arp'</span>

<span class="c"># set "spoofed" arp address</span>
<span class="nb">sudo </span>arp <span class="nt">-Ds</span> 192.168.0.19 eth0 pub
</code></pre></div></div>

<p>Thats it… The bridging is done only for a single IP address by installing a proxy ARP.</p>

<h2 id="running">Running</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo kvm -hda w2k3.img -smp 2 -m 512 -no-acpi -k en-gb -net nic,model=rtl8139 -net tap,script=/etc/qemu-ifup -usb -usbdevice tablet -snapshot
</code></pre></div></div>

<ul>
  <li>Note that you must sudo the command, as root priority is required for the qemu-ifup script.</li>
  <li>Note also that for some reason under KVM you need to specify the qemu-ifup script, as it does not default to that. I suspect that it defaults to kvm-ifup, but I have not looked into this further.</li>
  <li>The USB switch is useful in that it enables the mouse to leave the virtual window, and also seems to synchronise the host/guest cursors, which was a problem on our installation.</li>
</ul>

<h2 id="references">References</h2>

<ul>
  <li><a href="http://fabrice.bellard.free.fr/qemu/">QEMU</a></li>
  <li><a href="http://calamari.reverse-dns.net:980/cgi-bin/moin.cgi/QemuOnLinux">QEMU Networking</a>
    <ul>
      <li><a href="http://www.cnpbagwell.com/QEMU/HomePage">QEMU Setup Hints</a></li>
    </ul>
  </li>
</ul>

       ]]>
      </description>
    </item>
    
    <item>
      <title>Howto | Install KVM</title>
      <link>https://chrisjrob.com/2009/03/21/install-kvm/</link>
      <pubDate>Sat, 21 Mar 2009 05:32:12 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/03/21/install-kvm</guid>
      <description>
       <![CDATA[
         
         <h2 id="check-cpu-supports-kvm">Check CPU supports KVM</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># egrep '^flags.*(vmx|svm)' /proc/cpuinfo 
</code></pre></div></div>

<p>If nothing is displayed, then you do not have a CPU that supports KVM. If lines are output that include the text “vmx” then you have an Intel CPU that supports KVM, if “svm” then an AMD CPU that supports KVM.</p>

<!--more-->

<h2 id="check-kernel">Check Kernel</h2>

<p>In order to run KVM you must be running 2.6.20 or higher. You can check this by running the following command:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># uname -r
2.6.26-1-686
</code></pre></div></div>

<h2 id="install-prerequisites">Install Prerequisites</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># aptitude install gcc-3.4 libsdl1.2-dev zlib1g-dev libasound2-dev linux-kernel-headers pkg-config libgnutls-dev
</code></pre></div></div>

<h2 id="install-kvm">Install KVM</h2>

<p><strong>Make sure that you have Backports installed if you are running Etch.</strong></p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># aptitude install kvm qemu
</code></pre></div></div>

<p><strong>You need QEMU in order to create disk images.</strong></p>

<h2 id="add-user-to-kvm">Add User to KVM</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># adduser $USER kvm
</code></pre></div></div>

<h2 id="load-kvm-modules">Load KVM Modules</h2>

<p>Decide whether you have an Intel or AMD CPU (see Step 1).</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># modprobe kvm
# modprobe kvm-intel or kvm-amd (depending on CPU type)
</code></pre></div></div>

<p>If this fails then try</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># dmesg | grep kvm
</code></pre></div></div>

<p>If it states “kvm disabled in BIOS” then you will need to boot into the BIOS and switch on VT support (probably under advanced processor options).</p>

<p>You can check that the modules are enabled by running:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># lsmod | grep kvm
</code></pre></div></div>

<h2 id="set-kvm-modules-to-autoload">Set KVM modules to autoload</h2>

<p>Add the modules to /etc/modules to ensure that they load upon the next reboot.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># echo "kvm" &gt;&gt; /etc/modules
# echo "kvm-intel" &gt;&gt; /etc/modules
</code></pre></div></div>

<h2 id="references">References</h2>

<ul>
  <li><a href="http://kvm.qumranet.com/kvmwiki/HOWTO">KVM Wiki Howto</a></li>
  <li><a href="http://wiki.debian.org/KVM">KVM on Debian Wiki</a></li>
</ul>

       ]]>
      </description>
    </item>
    
    <item>
      <title>Linux | Windows Virtualisation</title>
      <link>https://chrisjrob.com/2009/03/21/windows-virtualisation/</link>
      <pubDate>Sat, 21 Mar 2009 05:31:50 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/03/21/windows-virtualisation</guid>
      <description>
       <![CDATA[
         
         <p>The area of virtualisation is one of rapid development and you should investigate more widely before making any decisions.</p>

<h2 id="options-for-windows-virtualisation">Options for Windows Virtualisation</h2>

<p>There are several options for Windows virtualisation, including:</p>

<ul>
  <li><a href="#qemu">QEMU</a></li>
  <li><a href="#xen">Xen</a></li>
  <li><a href="#virtualbox">VirtualBox</a></li>
  <li><a href="#vmware-server">VMWare Server</a></li>
</ul>

<!--more-->

<h3 id="qemu">QEMU</h3>

<p>A true open source virtualisation product, but one that runs slowly, often too slowly to be of use. Fortunately you can optimise QEMU by the installation of one of the following:</p>

<ul>
  <li>KQEMU</li>
  <li>KVM</li>
</ul>

<p>The former is not entirely open source, but is your main option if you have a Kernel less than 2.6.20.</p>

<h3 id="xen">XEN</h3>

<p>Is not an open source product, but is available free. It is considered to be very quick.</p>

<h3 id="virtualbox">VirtualBox</h3>

<p>InnoTek offer two versions of their VirtualBox product:</p>

<ul>
  <li><em>Full Product</em> - free for Personal and reasonable Evaluation</li>
  <li><em>OSE (Open Source Edition)</em> - free but requires compiling from source and comes without Guest Additions and without Headless VRDP. The latter seems unimportant, given that Windows has an RDP server already, but it is the only way of running VirtualBox headlessly AFAIK.</li>
</ul>

<p>I have tested on Debian with great success and the following are the links I used:</p>

<ul>
  <li><a href="https://help.ubuntu.com/community/VirtualBox#head-ac88c03223e773c78dbb46b4b13c109de1143a03">Build VirtualBox</a></li>
  <li><a href="http://ubuntuforums.org/archive/index.php/t-346185.html">Complete Host Networking</a></li>
  <li><a href="http://www.cendio.com/seamlessrdp/">Install SeamlessRDP</a></li>
  <li><a href="http://ubuntuforums.org/showthread.php?t=433359">Configure for seamless and headless operation</a></li>
  <li><a href="http://ubuntuforums.org/showthread.php?t=433359&amp;page=11">Fix for multiple windows</a>
    <ul>
      <li>http://ubuntuforums.org/showthread.php?t=224212</li>
      <li>https://www.fontis.com.au/rdesktop</li>
    </ul>
  </li>
  <li><a href="http://www.virtualbox.org/download/UserManual.pdf">VirtualBox Manual</a></li>
  <li><a href="http://sig9.com/articles/concurrent-remote-desktop">Concurrent Users</a>
    <ul>
      <li>http://concurrentremotesessions.netfirms.com/</li>
      <li>http://sala.pri.ee/terminal-server-patch/</li>
    </ul>
  </li>
</ul>

<h3 id="vmware-server">VMWare Server</h3>

<p>Free but not open source. Requires compiling from source. Excellent reliability, supported product. The author has not tested this product.</p>

       ]]>
      </description>
    </item>
    
    <item>
      <title>Linux | Windows for Linux</title>
      <link>https://chrisjrob.com/2009/03/21/windows-for-linux/</link>
      <pubDate>Sat, 21 Mar 2009 05:31:36 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/03/21/windows-for-linux</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/linux-tux.jpg" align="right" alt="Featured Image">
         
         <h2 id="introduction">Introduction</h2>

<p>Coping with Windows applications on Linux is probably the biggest problem that you will face.  Your options are:</p>

<ul>
  <li><a href="#install-on-linux">Install on Linux</a></li>
  <li><a href="#use-a-linux-alternative">Use a Linux alternative</a></li>
  <li><a href="#install-under-wine">Install under Wine</a></li>
  <li><a href="#publish-to-linux-desktop">Publish to Linux desktop</a></li>
  <li><a href="#virtualise">Virtualise</a></li>
</ul>

<!--more-->

<h2 id="install-on-linux">Install on Linux</h2>

<p>This may be a waste of time, but it’s at least worth checking whether your favourite applications have a Linux version.</p>

<h2 id="use-a-linux-alternative">Use a Linux alternative</h2>

<p>You definitely should investigate open source alternatives, some of the applications currently available under Linux are simply stunning.</p>

<ul>
  <li>http://www.osalt.com/</li>
  <li>http://linuxappfinder.com/</li>
  <li>http://www.tuxsoftware.com/</li>
</ul>

<p>The following applications are particularly good:</p>

<h2 id="office-suite">Office suite</h2>

<p>Options:</p>

<ul>
  <li>OpenOffice - more like Microsoft Office than Microsoft Office 2007</li>
  <li>KOffice - fast but less compatible with Microsoft Office</li>
</ul>

<p>Benefits:</p>

<ul>
  <li>OpenOffice comes in for a fair amount of criticism for being slow, but on modern hardware this is simply not a problem</li>
  <li>Openoffice is also criticised for trying too hard to emulate Microsoft Office, but for users used to Microsoft, this is a huge advantage</li>
  <li>Includes built-in PDF support with automatic creation of PDF bookmarks (gorgeous)</li>
  <li>Almost 100% compatible with Microsoft Office</li>
  <li>Already compatible with Office 2007 (which you cannot say for Microsoft Office 2002)</li>
  <li>OpenOffice Drawing has no Office equivalent and is simply superb for flow charts</li>
  <li>OpenOffice is free - and versions are available for Windows and Linux</li>
</ul>

<p><strong>Currently using Windows?  Ease the transition by installing OpenOffice on your existing Windows server.  And encourage your users to install it at home!</strong></p>

<h2 id="pimemail">PIM/Email</h2>

<p>Options:</p>

<ul>
  <li>Evolution</li>
  <li>Kontact</li>
  <li>Thunderbird (email only)</li>
</ul>

<p>Benefits:</p>

<ul>
  <li>Both Evolution and Kontact have their proponents and their detractors, but the truth is that both these applications do a superb job of replacing Outlook</li>
  <li>Evolution is probably the only option if you are wedded to Microsoft Exchange Server, and is more unified</li>
  <li>Kontact is really a suite of programs beautifully welded together into a single application, but nevertheless they are separate and this does effect usability</li>
  <li>Thunderbird is available for Windows and Linux</li>
</ul>

<p>Our MD was passionate about Microsoft Outlook, but was swiftly reassured following a demonstration of Evolution and Kontact.  Any small misgivings remaining were dispelled once he realised how much faster Kontact was able to download, sort and filter his messages.</p>

<p><strong>If you don’t require a full PIM, then Mozilla Thunderbird is probably the best mail-only client, and you could install it on your existing Windows server to get your users used to it!</strong></p>

<h2 id="web-browser">Web Browser</h2>

<ul>
  <li>Firefox (called Iceweasel under Debian) is a superb browser and is available for Windows and Linux</li>
  <li>Konqueror is fast, but, currently at least, problematic with certain plug-ins</li>
</ul>

<p>However good Firefox undoubtedly is, you will always have the odd website that simply does not work on anything except Internet Explorer.  If you’re really unlucky, this will effect a website that is mission-critical for you.  You have been warned.  Fortunately Firefox is achieving market penetration levels which is forcing webmasters to take notice, so things can only get better.</p>

<p>One particular issue is any website still using Active-X, which is simply not supported on Linux.  Fortunately the world seems to agree that Active-X is about the worst thing ever to come out of Redmond, so its impact is on the wane.</p>

<p><strong>Install Firefox on your Windows server to familiarise your users before their transition to Linux</strong></p>

<h2 id="desktop-publishing">Desktop Publishing</h2>

<ul>
  <li>Scribus is absolutely brilliant.</li>
  <li>Having used QuarkXPress, I found Scribus easier to use and the built-in PDF support fantastic.</li>
  <li>Scribus is available for Windows and Linux</li>
</ul>

<p><strong>Make sure you install the development branch “scribus-ng” rather than the standard version, as the standard version is almost unusable.</strong></p>

<p><strong>Scribus is free - so why not give it to all your users?</strong></p>

<h2 id="install-under-wine">Install under Wine</h2>

<p><code class="language-plaintext highlighter-rouge">Wine</code> is not an emulator, rather it is a collection of Linux-compatible Windows libraries.  This means that applications installed under Wine are running natively, and in my experience some applications actually run faster than under Windows.</p>

<p>Since the transition to version 1, Wine has become very much more effective a tool and applications that were buggy under Wine have suddenly become much more usable.  That said, my advice to anyone is to try Wine for each application and then give up if it doesn’t work well.  Don’t do what I did, which was spend weeks of my life and still end up with something less than usable.</p>

<p>Depending on the importance of the application, you could also consider <a href="http://www.codeweavers.com/products/cxlinux/">Crossover Linux by Codeweavers</a>.  They offer Microsoft Office for Linux and have worked to get Wine working better for many applications.  As I understand it, they are actually using an older version of Wine than currently available from WineHQ, so sometimes applications will work better under Wine than under Crossover Linux (at least so I have been told).  They are a commercial entity, so if you are a large organisation you may be able to pay Crossover to get a particular application working for you.</p>

<p>Internet Explorer is available from <a href="http://www.tatanka.com.br/">IES4Linux</a>.  This worked superbly well for us, until recently when it started hogging vast amounts of CPU, and we had to remove it from all users.  Reaches the websites that Firefox cannot reach, but probably cannot be relied upon for mission-critical use; so if you simply have to have Internet Explorer this is probably not your best option.</p>

<p><strong>IES4Linux requires a Microsoft Windows licence for each user, which, unless you have lived on the moon for the past decade, you should be able to provide.  There is at least a question-mark over this licensing, so you should make your own enquiries - start at the IES4Linux website.</strong></p>

<h2 id="publish-to-linux-desktop">Publish to Linux desktop</h2>

<p>Applications can be published from a Windows server to the Linux desktop:</p>

<ul>
  <li>Rdesktop</li>
  <li>Citrix</li>
  <li>2x</li>
  <li>SeamlessRDP</li>
</ul>

<h3 id="rdesktop">Rdesktop</h3>

<ul>
  <li>http://www.rdesktop.org/</li>
</ul>

<p>On the positive side, Rdesktop is open source, and is a robust application.  It’s probably already installed on your Linux system, and, if not, is only an apt-get away.  If it is already installed, then simply typing “rdesktop <em>serverip</em>” will give you a login screen, so this is by far the simplest option available.  By itself, Rdesktop is only going to provide you a Windows desktop within your Linux desktop.  I.e. you will end-up with a desktop within a desktop.  This can be confusing for users, particularly those just learning to cope with Linux.  It’s also less secure than providing access to the applications only.</p>

<p><strong>If you are planning an LTSP roll-out and you wish to use this rdesktop-only option, then consider using a screen-script to bypass the Linux desktop and give you a Windows logon instead</strong></p>

<h3 id="citrix">Citrix</h3>

<ul>
  <li>http://www.citrix.com/</li>
</ul>

<p>Installed on a Windows Terminal Server, Citrix does a superb job of publishing applications to a Linux desktop.  We currently have Citrix Metaframe 1.8 (Windows 2000 Server) and it is simply superb when published to a Linux desktop.  Hard to fault, it is nevertheless stupendously expensive - I recently calculated that, for us, it would treble the cost of the Windows Terminal Server and for that reason we are moving away from Citrix.</p>

<ul>
  <li>Install Citrix Presentation Server Client</li>
</ul>

<h3 id="2x">2x</h3>

<ul>
  <li>http://www.2x.com/</li>
</ul>

<p>Similar to Citrix, but very much simpler to install.  I tested this and found it very simple to install and use.  Very much cheaper than Citrix, 2x will only marginally increase your Windows cost.</p>

<p>Unfortunately, at the time of my testing 2x, the features did not include the ability to set a client hostname (which was required to work with a particular Windows application) nor did it support client drive mapping.  In particular the latter meant that it was not easy to map the Windows “My Documents” folder to the users’ Linux home directory.</p>

<p>I would hope that by now these features would be included, but at the time of writing I could not find out this information from their website.  You should make your own enquiries.</p>

<ul>
  <li>Install 2x client</li>
</ul>

<h3 id="seamlessrdp">SeamlessRDP</h3>

<ul>
  <li>http://www.rdesktop.org/
    <ul>
      <li>http://www.cendio.com/seamlessrdp/
        <ul>
          <li>http://www.fontis.com.au/rdesktop</li>
        </ul>
      </li>
    </ul>
  </li>
</ul>

<p>This is the only open-source route to application publishing.  The good aspects are that it is fully featured - supporting client hostnames, client devices, sound, drive mapping and much else besides.  The negatives are that, sadly, there are some issues.  Using patched versions of rdesktop this is rather experimental.</p>

<p>That said it is the route we have currently taken and it is working.  The issues for us are: Microsoft Word cannot be run as the first application, or for some bizarre reason the File Open dialog opens behind the application window; one particular application cannot be restored when minimised with multiple windows open.</p>

<h2 id="virtualise">Virtualise</h2>

<p>If you are going to run a Windows server, then most Linux advocates would advise you to virtualise it.  We have gone one step further in running it in snapshot mode, so that at any time we can kill it and restart it back to the snapshot.  This has proved absolutely bulletproof - so far.</p>

<ul>
  <li>Windows Virtualisation</li>
</ul>

       ]]>
      </description>
    </item>
    
    <item>
      <title>Linux | Why Linux?</title>
      <link>https://chrisjrob.com/2009/03/21/why-linux/</link>
      <pubDate>Sat, 21 Mar 2009 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/03/21/why-linux</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/linux-tux.jpg" align="right" alt="Featured Image">
         
         <h2 id="benefits-of-linux">Benefits of Linux</h2>

<p>In fact there is some shared parentage with these, for example all three are UNIX originated, and Apple Mac OS X has, as I understand it, come from BSD.  This means that all three of these operating systems have the power of a UNIX base, giving them many advantages over Microsoft Windows systems, including in my experience:</p>

<!--more-->

<ul>
  <li>Free</li>
  <li>Open source</li>
  <li>Better performance for the same hardware</li>
  <li>Reduced disk activity (quieter and faster)</li>
  <li>Better stability (I have seen Linux machines work for 360-days without a reboot)</li>
  <li>Better user security</li>
  <li>Much reduced risk of viruses</li>
  <li>More choice</li>
</ul>

<h2 id="disadvantages-of-linux">Disadvantages of Linux</h2>

<p>In general the disadvantages are rapidly eroding, but they do exist, including:</p>

<ul>
  <li>Hardware compatibility: getting that hardware device to sync on your PC</li>
  <li>Software compatibility: getting that software application to run on your PC</li>
</ul>

<h2 id="hardware-compatibility">Hardware compatibility</h2>

<p>When you read through the specifications of that new gadget, take a look at the supported operating systems - it will always say “Microsoft Windows XP/Vista”, occasionally “Apple Mac OS X”, but almost never “Linux”.  One of the reasons for this is that there are many different versions of Linux, and it would be a tall order for a manufacturer to test with them all, so instead they play safe and don’t list it.  Often such devices “just work” when they’re plugged into Linux.  There doesn’t seem to be any standard that a hardware manufacturer can work to, and be able to say, without fear of contradiction “supports Linux”.  That said, there are a great many devices that simply don’t work.</p>

<p>In general, devices which work as USB Mass Storage devices (Memory keys, iPods and MP3 players, Cameras etc) work very well under Linux, as do mouse, keyboards and monitors.  But devices which require proprietary closed source drivers to run (Sony dictation machines is one example I have come across recently) simply do not work.  Similarly, which the iPod works beautifully on Linux, your average iPod user may disagree when they start looking for iTunes, which is not available for Linux.</p>

<h2 id="software-compatibility">Software compatibility</h2>

<p>Your Windows software will not “just work” on Linux.  See my page Windows for Linux for further information.</p>

       ]]>
      </description>
    </item>
    
    <item>
      <title>Howto | Create Thumbnails from Movies</title>
      <link>https://chrisjrob.com/2009/03/15/create-thumbnails-from-movies/</link>
      <pubDate>Sun, 15 Mar 2009 20:08:39 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/03/15/create-thumbnails-from-movies</guid>
      <description>
       <![CDATA[
         
         <h2 id="introduction">Introduction</h2>

<p>Sometimes you want to catalogue your movies with thumbnail images from the movie.</p>

<h2 id="the-solution">The Solution</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ ffmpeg -itsoffset -240  -i themovie.mpg -vcodec mjpeg -vframes 1 -an -f rawvideo -s 320x240 thumbnail.jpg
$ ffmpeg -itsoffset -240  -i themovie.mpg -vcodec png -vframes 1 -an -f rawvideo -s 320x240 thumbnail.png
</code></pre></div></div>

<!--more-->

<h2 id="example-script">Example Script</h2>

<p>The following example script should be saved in <code class="language-plaintext highlighter-rouge">/usr/local/bin</code> or somewhere in your path.  As you can see, this script will run through all the movies in the current directory and create thumbnails in the default mythtv MythVideo directory.</p>

<p>This script was written to perform a particular task, and a more generic script would be better.</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c">#!/bin/bash</span>
<span class="c"># Creates a thumbnail of an mpeg</span>

<span class="k">for </span>a <span class="k">in</span> <span class="k">*</span>.mpg<span class="p">;</span> <span class="k">do
    if</span> <span class="o">[</span> <span class="nt">-f</span> <span class="s2">"</span><span class="nv">$a</span><span class="s2">"</span> <span class="o">]</span><span class="p">;</span> <span class="k">then
        </span><span class="nv">b</span><span class="o">=</span><span class="s2">"</span><span class="k">${</span><span class="nv">a</span><span class="p">%.mpg</span><span class="k">}</span><span class="s2">"</span>
        <span class="k">if</span> <span class="o">[</span> <span class="nt">-f</span> <span class="s2">"/home/mythtv/.mythtv/MythVideo/</span><span class="k">${</span><span class="nv">b</span><span class="k">}</span><span class="s2">.jpg"</span> <span class="o">]</span><span class="p">;</span> <span class="k">then
            </span><span class="nb">echo</span> <span class="s2">"/home/mythtv/.mythtv/MythVideo/</span><span class="k">${</span><span class="nv">b</span><span class="k">}</span><span class="s2">.jpg already exists"</span>
        <span class="k">else
            </span>ffmpeg <span class="nt">-itsoffset</span> <span class="nt">-240</span>  <span class="nt">-i</span> <span class="s2">"</span><span class="nv">$a</span><span class="s2">"</span> <span class="nt">-vcodec</span> mjpeg <span class="nt">-vframes</span> 1 <span class="nt">-an</span> <span class="nt">-f</span> rawvideo <span class="nt">-s</span> 320x240 <span class="s2">"/home/mythtv/.mythtv/MythVideo/</span><span class="k">${</span><span class="nv">b</span><span class="k">}</span><span class="s2">.jpg"</span>
        <span class="k">fi
    fi
done</span>
</code></pre></div></div>

       ]]>
      </description>
    </item>
    
    <item>
      <title>MythWeb</title>
      <link>https://chrisjrob.com/2009/03/14/mythweb/</link>
      <pubDate>Sat, 14 Mar 2009 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/03/14/mythweb</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/mythweb.png" align="right" alt="Featured Image">
         
         <p>If, like me, you have your laptop permanently on whilst you watch TV, then MythWeb is going to be a shock, a delightful shock.  Imagine, from the comfort of your sofa, with your laptop on your lap:</p>

<!--more-->

<ul>
  <li>What’s on TV?  Open your browser and you have a beautifully formatted programme guide - far better than an on-TV guide.</li>
  <li>Want to record something? Simply click on it, choose your options and submit.</li>
  <li>Nothing on TV?  View your Recorded Programmes.</li>
  <li>Want to know what you’ve got set to record?  Upcoming Recordings.</li>
  <li>On holiday and you realise you forgot to record the new series of Doctor Who?  Log-into MythWeb remotely and record.</li>
  <li>At work and you want to show your colleagues the funny bit in Big Bang Theory?  No problem log into MythWeb and download, or play the episode in Flash.</li>
</ul>

<p>And there’s more: weather, ripped video, music, and more.  If you’re anything like me, you’ll wonder how you ever lived without it, and quite simply it has now spoiled me for ANY other PVR system.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>LTSP | LTSP5 Progress</title>
      <link>https://chrisjrob.com/2009/03/12/ltsp5-progress/</link>
      <pubDate>Thu, 12 Mar 2009 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/03/12/ltsp5-progress</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/ltsp_logo.png" align="right" alt="Featured Image">
         
         <p>After a week spent trying to install our Debian Lenny LTSP server, with the clients failing to boot with an error “rpc failed: 2”, and everyone I spoke to baffled as to how this could occur, I decided that enough was enough, and deleted the partitions and started again.  Within 2 hours the server was back up and running without any of the same problems.</p>

<!--more-->

<p>And a lesson learned: don’t invest too much time in an install, without testing that the fundamentals are in place!</p>

<ul>
  <li><a href="/2010/03/30/ltsp5-install/">LTSP5 Install</a></li>
</ul>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Howto | Convert DVR-MS to MPEG</title>
      <link>https://chrisjrob.com/2009/03/10/convert-dvr-ms-to-mpeg/</link>
      <pubDate>Tue, 10 Mar 2009 22:02:23 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/03/10/convert-dvr-ms-to-mpeg</guid>
      <description>
       <![CDATA[
         
         <h2 id="simple-bash-script-to-convert-all-dvr-ms-files-in-a-directory">Simple bash script to convert all dvr-ms files in a directory</h2>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c">#! /bin/bash</span>
<span class="k">for </span>a <span class="k">in</span> <span class="k">*</span>.dvr-ms<span class="p">;</span> <span class="k">do
    if</span> <span class="o">[</span> <span class="nt">-f</span> <span class="s2">"</span><span class="nv">$a</span><span class="s2">"</span> <span class="o">]</span><span class="p">;</span> <span class="k">then
        </span><span class="nv">b</span><span class="o">=</span><span class="s2">"</span><span class="k">${</span><span class="nv">a</span><span class="p">%.dvr-ms</span><span class="k">}</span><span class="s2">"</span>
        ffmpeg <span class="nt">-i</span> <span class="s2">"</span><span class="nv">$a</span><span class="s2">"</span> <span class="nt">-vcodec</span> copy <span class="nt">-acodec</span> copy <span class="s2">"</span><span class="k">${</span><span class="nv">b</span><span class="k">}</span><span class="s2">.mpg"</span>
    <span class="k">fi
done</span>
</code></pre></div></div>

       ]]>
      </description>
    </item>
    
    <item>
      <title>Mythbuntu</title>
      <link>https://chrisjrob.com/2009/03/10/mythbuntu/</link>
      <pubDate>Tue, 10 Mar 2009 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/03/10/mythbuntu</guid>
      <description>
       <![CDATA[
         
         <p>Initial impressions <a href="/2009/03/01/mythbuntu/">weren’t that great</a>, but I have to say that mythtv is winning us over.  The turning point was when we switched on mythweb.  Mythweb does several things, but most notably it provides the program listings in a much more usable format than via mythtv  This makes it must easier to browse and search the listings and record programs.  And with a little extra work, it should be possible to make this accessible over the web.  This feature gained huge spouse approval.</p>

<!--more-->

<p>The other win is the commercial skipping, enabling a one button press to skip adverts.</p>

<p>Please see my <a href="/2009/03/14/mythweb/">later post on MythWeb</a>.</p>

       ]]>
      </description>
    </item>
    
    <item>
      <title>Mythbuntu</title>
      <link>https://chrisjrob.com/2009/03/01/mythbuntu/</link>
      <pubDate>Sun, 01 Mar 2009 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/03/01/mythbuntu</guid>
      <description>
       <![CDATA[
         
         <p>I finally obliterated Microsoft Windows XP Mediocre Centre from our living room.  I know one shouldn’t indulge in Microsoft bashing, but I have earned the right after suffering with that atrocious system for the past five years.  I would go so far as to say that my experience with that machine over the past five years is the number one reason I use Linux on the desktop today.</p>

<!--more-->

<p>Anyway, decided to replace it with <a href="http://www.mythbuntu.org">Mythbuntu</a>, because (1) it’s Debian based, (2) it should provide a quicker install than Debian.</p>

<p>My first impressions are that, if Ubuntu is Linux for human beings, <a href="http://www.mythbuntu.org">Mythbuntu</a> is Linux for human beings who have evolved into a higher form of intelligence.</p>

<p>The problem is that it’s trying to do so much, that the essential options are obscured by the trivial; they really should triage the options into essential (need this to get a working television), important (you need this, but not necessarily immediately), and the rest.</p>

<p>Also, it simply isn’t intuitive enough, for example I now understand that you have to install the capture cards, then the video sources (bizarrely this is the channel/guide information - or at least I think so) and then, after four hours of hair tearing I finally realised that you also have to configure the next option on the list “Input connections” which effectively links the tuners to the channel/guide information.  If they must call the channel/guide information “Video sources”, then they could at least have the decency to call the “Input connections” option something like “Connect Capture Cards to Video Sources”, which I would have immediately understood (at least once I had worked out what the heck Video Sources were).</p>

<p>All very frustrating, and I really have been made to feel like an innocent newbie all over again.  Horrible.</p>

<p>But I can see that, once I’m over this hump, it will do just about everything I could possibly ever want, and a great deal more besides.  And it looks good, which is important in a living room computer.</p>

<p>And most importantly, we are a Microsoft-free house - hurrah!</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>LTSP | LTSP5 Disable Floppy</title>
      <link>https://chrisjrob.com/2009/02/17/ltsp5-disable-floppy/</link>
      <pubDate>Tue, 17 Feb 2009 17:04:58 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/02/17/ltsp5-disable-floppy</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/ltsp_logo.png" align="right" alt="Featured Image">
         
         <p>Local floppy drives do not seem to work well under LTSP, in any case they are obsolete technology.  This page describes how to disable under LTSP5.</p>

<p>Find and edit the following file and comment out the legacy floppy drive command:</p>

<!--more-->

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Extract from /opt/ltsp/i386/etc/udev/ltspfsd.rules:

# legacy floppy drives:
#ACTION=="add", KERNEL=="fd[0-9]", RUN+="ltspfs_entry add %k auto"
^
----------------------------------

# exit
$ sudo ltsp-update-image
</code></pre></div></div>

       ]]>
      </description>
    </item>
    
    <item>
      <title>LTSP | LTSP5 Client Root Password</title>
      <link>https://chrisjrob.com/2009/02/17/ltsp5-client-root-password/</link>
      <pubDate>Tue, 17 Feb 2009 16:26:24 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/02/17/ltsp5-client-root-password</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/ltsp_logo.png" align="right" alt="Featured Image">
         
         <h2 id="introduction">Introduction</h2>

<p>Most GNU/Linux machines have 12 virtual consoles, which you can access by pressing Control-Alt-F1, through Control-Alt-F12. There is a text based getty that is started on screen 1, but you normally can’t log into it, as there are no local users on the thin client.</p>

<!--more-->

<h2 id="setting-the-root-password-for-client">Setting the root password for client</h2>

<p>However, for debugging purposes, you may want to set up root to log in on the thin client. You may need to do this if you’re debugging problems with local devices, for example. Fortunately, it’s easy to do: on the server, just chroot into the LTSP chroot, and set the password with passwd.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo chroot /opt/ltsp/i386
# passwd
# exit
$ sudo ltsp-update-image
</code></pre></div></div>

<h2 id="logging-in">Logging in</h2>

<p>Just enter Ctrl-Alt-F1 on your terminal, and at the text login, login with “root” and the password you have set.</p>

       ]]>
      </description>
    </item>
    
    <item>
      <title>LTSP | LTSP5 Client Sound | Unmute Fix</title>
      <link>https://chrisjrob.com/2009/02/17/ltsp5-sound-client-unmute-fix/</link>
      <pubDate>Tue, 17 Feb 2009 16:22:15 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/02/17/ltsp5-sound-client-unmute-fix</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/mute.png" align="right" alt="Featured Image">
         
         <h2 id="introduction">Introduction</h2>

<p>There is a problem with some sound cards that start up muted.  This installs a script which responds to settings in lts.conf.</p>

<p>To test this, whilst logged onto the client type:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># alsamixer
</code></pre></div></div>

<!--more-->

<p>If the main volume is at nil and there is “MM” (Muted left and Muted right) at the bottom of the slider, then pressing M to unmute, and the cursor keys to increase the volume, will resolve the problem.  You can experiment with the different channels, like PCM, FRONT and MASTER.  Play to your heart’s content, any changes will be lost on reboot.</p>

<p>The only thing is that this fix will be lost next time you boot the client.</p>

<h2 id="step-1-install-script">Step 1: Install Script</h2>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c">#!/bin/bash</span>
<span class="c">#</span>
<span class="c"># Copyright Gideon Romm, Symbio Technologies</span>
<span class="c">#</span>
<span class="c"># Released under GPLv2</span>
<span class="c">#</span>
<span class="c"># This is a script to set up certain things </span>
<span class="c"># that are not already setup in an SBA environment</span>
<span class="c">#</span>
<span class="c"># Specifically:</span>
<span class="c">#   1. restore sound levels</span>
<span class="c">#</span>
<span class="c"># lts.conf:</span>
<span class="c"># VOLUME</span>
<span class="c"># PCM_VOLUME</span>
<span class="c"># MIC_VOLUME</span>
<span class="c"># CD_VOLUME</span>
<span class="c"># FRONT_VOLUME</span>

<span class="nb">echo</span> <span class="s2">"Restoring sound levels"</span> <span class="o">&gt;</span> /tmp/unmute.log

amixer
<span class="k">while</span> <span class="o">[</span> <span class="nv">$?</span> <span class="o">!=</span> 0 <span class="o">]</span><span class="p">;</span> <span class="k">do
</span><span class="nb">sleep </span>1
amixer
<span class="k">done</span>

<span class="c"># Set up local environment</span>
<span class="k">if</span> <span class="o">[</span> <span class="nt">-f</span> /etc/lts.conf <span class="o">]</span><span class="p">;</span> <span class="k">then
    </span><span class="nb">eval</span> <span class="sb">`</span>getltscfg <span class="nt">-a</span><span class="sb">`</span>
<span class="k">fi</span>

<span class="c"># Set up sound</span>
<span class="k">if</span> <span class="o">[</span> <span class="nt">-n</span> <span class="s2">"</span><span class="nv">$VOLUME</span><span class="s2">"</span> <span class="o">]</span><span class="p">;</span> <span class="k">then
</span>amixer sset Master,0 <span class="k">${</span><span class="nv">VOLUME</span><span class="k">}</span>% unmute 2&gt;/dev/null
<span class="nb">echo</span> <span class="s2">"amixer sset Master,0 </span><span class="k">${</span><span class="nv">VOLUME</span><span class="k">}</span><span class="s2">% unmute 2: </span><span class="nv">$?</span><span class="s2">"</span> <span class="o">&gt;&gt;</span> /tmp/unmute.log
amixer sset <span class="s1">'Master Digital'</span>,0 <span class="k">${</span><span class="nv">VOLUME</span><span class="k">}</span>% unmute 2&gt;/dev/null
<span class="nb">echo</span> <span class="s2">"amixer sset 'Master Digital',0 </span><span class="k">${</span><span class="nv">VOLUME</span><span class="k">}</span><span class="s2">% unmute 2: </span><span class="nv">$?</span><span class="s2">"</span> <span class="o">&gt;&gt;</span> /tmp/unmute.log
amixer sset Headphone,0 <span class="k">${</span><span class="nv">HEADPHONE_VOLUME</span><span class="k">:-</span><span class="nv">$VOLUME</span><span class="k">}</span>% unmute 2&gt;/dev/null
<span class="nb">echo</span> <span class="s2">"amixer sset Headphone,0 </span><span class="k">${</span><span class="nv">HEADPHONE_VOLUME</span><span class="k">}</span><span class="s2">% unmute 2: </span><span class="nv">$?</span><span class="s2">"</span> <span class="o">&gt;&gt;</span> /tmp/unmute.log
<span class="k">fi

if</span> <span class="o">[</span> <span class="nt">-n</span> <span class="s2">"</span><span class="nv">$PCM_VOLUME</span><span class="s2">"</span> <span class="o">]</span><span class="p">;</span> <span class="k">then
</span>amixer sset PCM,0 <span class="k">${</span><span class="nv">PCM_VOLUME</span><span class="k">}</span>% unmute 2&gt;/dev/null
<span class="nb">echo</span> <span class="s2">"amixer sset PCM,0 </span><span class="k">${</span><span class="nv">PCM_VOLUME</span><span class="k">}</span><span class="s2">% unmute 2: </span><span class="nv">$?</span><span class="s2">"</span> <span class="o">&gt;&gt;</span> /tmp/unmute.log
<span class="k">fi

if</span> <span class="o">[</span> <span class="nt">-n</span> <span class="s2">"</span><span class="nv">$MIC_VOLUME</span><span class="s2">"</span> <span class="o">]</span><span class="p">;</span> <span class="k">then
</span>amixer sset Mic,0 <span class="k">${</span><span class="nv">MIC_VOLUME</span><span class="k">}</span>% unmute cap 2&gt;/dev/null
<span class="nb">echo</span> <span class="s2">"amixer sset Mic,0 </span><span class="k">${</span><span class="nv">MIC_VOLUME</span><span class="k">}</span><span class="s2">% unmute 2: </span><span class="nv">$?</span><span class="s2">"</span> <span class="o">&gt;&gt;</span> /tmp/unmute.log
<span class="k">fi

if</span> <span class="o">[</span> <span class="nt">-n</span> <span class="s2">"</span><span class="nv">$CD_VOLUME</span><span class="s2">"</span> <span class="o">]</span><span class="p">;</span> <span class="k">then
</span>amixer sset CD,0 <span class="k">${</span><span class="nv">CD_VOLUME</span><span class="k">}</span>% unmute 2&gt;/dev/null
<span class="nb">echo</span> <span class="s2">"amixer sset CD,0 </span><span class="k">${</span><span class="nv">CD_VOLUME</span><span class="k">}</span><span class="s2">% unmute 2: </span><span class="nv">$?</span><span class="s2">"</span> <span class="o">&gt;&gt;</span> /tmp/unmute.log
<span class="k">fi

if</span> <span class="o">[</span> <span class="nt">-n</span> <span class="s2">"</span><span class="nv">$FRONT_VOLUME</span><span class="s2">"</span> <span class="o">]</span><span class="p">;</span> <span class="k">then
</span>amixer sset Front,0 <span class="k">${</span><span class="nv">FRONT_VOLUME</span><span class="k">}</span>% unmute 2&gt;/dev/null
<span class="nb">echo</span> <span class="s2">"amixer sset Front,0 </span><span class="k">${</span><span class="nv">FRONT_VOLUME</span><span class="k">}</span><span class="s2">% unmute 2: </span><span class="nv">$?</span><span class="s2">"</span> <span class="o">&gt;&gt;</span> /tmp/unmute.log
<span class="k">fi

</span><span class="nb">echo</span> <span class="s2">"Sound levels restored"</span> <span class="o">&gt;&gt;</span> /tmp/unmute.log
</code></pre></div></div>

<h2 id="step-2-generate-rcd">Step 2: Generate rc.d</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo chroot /opt/ltsp/i386
# update-rc.d unmute defaults
# exit
$ sudo ltsp-update-image
</code></pre></div></div>

<h2 id="step-3-configure-ltsconf">Step 3: Configure lts.conf</h2>

<p>Use the following settings for the particular client:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>VOLUME            = 100
PCM_VOLUME        = 100
MIC_VOLUME        = 100
CD_VOLUME         = 100
FRONT_VOLUME      = 100
</code></pre></div></div>

<h2 id="step-4-reboot-client">Step 4: Reboot client</h2>

<p>Reboot the client.  You can check that the script has run by looking at <code class="language-plaintext highlighter-rouge">/tmp/unmute.log</code> on the client.  You can get to the client by pressing Ctrl-Alt-F1 and logging in with the root password.</p>

<h2 id="references">References</h2>

<ul>
  <li>http://www.debian-administration.org/articles/28</li>
</ul>

       ]]>
      </description>
    </item>
    
    <item>
      <title>LTSP | LTSP5 Clean Install</title>
      <link>https://chrisjrob.com/2009/01/24/ltsp5-clean-install/</link>
      <pubDate>Sat, 24 Jan 2009 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/01/24/ltsp5-clean-install</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/ltsp_logo.png" align="right" alt="Featured Image">
         
         <p>I have today started a clean install on a new server, and I am documenting the entire process; not just the LTSP install, but everything, from the installation of a virtualised Windows server, to the installation of KDE and end-user apps.</p>

<ul>
  <li><a href="/2010/03/30/ltsp5-install/">LTSP5 Install</a></li>
</ul>

       ]]>
      </description>
    </item>
    
    <item>
      <title>UK Self-Assessment for Linux</title>
      <link>https://chrisjrob.com/2009/01/11/uk-self-assessment-for-linux/</link>
      <pubDate>Sun, 11 Jan 2009 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/01/11/uk-self-assessment-for-linux</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/hmrc.jpg" align="right" alt="Featured Image">
         
         <p>This morning I have been trying to find a way to complete my UK Self-Assessment Tax Return under Linux.  Unfortunately only one application appears to exist for Linux, called FTax, and this application requires Adobe Reader, which is not available for 64-bit Linux.  If you’re comfortable on how to run 32-bit applications under Linux, then this might not be an obstacle for you.  After going all round the houses, I ended up back on Windows XP.</p>

<!--more-->

<h2 id="submit-a-uk-self-assessment-return-under-linux">Submit a UK Self-Assessment Return under Linux</h2>

<h3 id="introduction">Introduction</h3>

<p>I created this page when completing my tax return for 2007/8, and am now updating it for 2008/09 tax year (January 2010).  I currently use TaxCalc running on Linux under my Windows virtual machine (in VirtualBox OSE), I would like to stop relying on Windows; so what are the options for submitting a UK Self-assessment tax return under Linux?</p>

<ul>
  <li><a href="#linux-alternatives">Linux alternatives</a></li>
  <li><a href="#hmrc-on-line-self-assessment">HMRC On-line Self-Assessment</a></li>
  <li><a href="#install-taxcalc-under-wine">Install TaxCalc under Wine</a></li>
  <li><a href="#run-taxcalc-in-virtualbox">Run TaxCalc in VirtualBox</a></li>
</ul>

<h3 id="linux-alternatives">Linux Alternatives</h3>

<p>The following is <a href="http://www.hmrc.gov.uk/efiling/SA_efiling/soft_dev.htm">HMRC’s list of approved software</a> as at January 2010 is as follows:</p>

<ul>
  <li><a href="http://www.taxcalc.com/">Acorah Software Products Ltd (TaxCalc)</a> - Windows only</li>
  <li><a href="http://www.andica.com/">Andica Limited</a> - Windows only</li>
  <li><a href="http://www.btcsoftware.co.uk/">BTC Software Limited</a> - Professional only</li>
  <li><a href="http://www.prosystem.cch.co.uk/">CCH Software</a> - Professional only</li>
  <li><a href="http://www.drummohr.com/">Drummohr Technology Ltd</a> - Professional only</li>
  <li><a href="http://www.tax.co.uk/">Forbes Computer Systems Ltd</a> - Windows only</li>
  <li><a href="http://www.iris.co.uk/">IRIS Software Ltd</a> - Professional only</li>
  <li><a href="http://www.isokon.com/">Isokon Limited</a> - Professional only</li>
  <li><a href="http://www.keytimesystems.co.uk/">Keytime Objective Ltd</a> - Not available for download</li>
  <li><a href="http://www.ftax.co.uk/">Legatio Ltd (Ftax)</a> - Windows, Mac and Linux</li>
  <li><a href="http://www.ptpgroup.co.uk/">PTP Software Ltd</a> - Professional only</li>
  <li><a href="http://www.sa2000.co.uk/">Quality Management Software Ltd</a> - Windows only</li>
  <li><a href="http://www.pinacleaccounts.co.uk/">RFA Limited</a> - Professional only</li>
  <li><a href="http://www.sage.co.uk/accountants/welcome.aspx">Sage (UK) Ltd</a> - Professional only</li>
  <li><a href="http://www.digita.com/">Thomson Reuters</a> - Not seemingly available for download</li>
</ul>

<p>N.B. The comments are my own personal impression at the time of visiting the websites, these opinions may be wrong and you should make your own enquiries before making a decision.</p>

<p>Some of these, like Sage, are clearly not consumer level products, and my impression is that the above list is somewhat misleading, as in practice TaxCalc seems to have the personal market pretty much sewn up.</p>

<h4 id="ftax">FTax</h4>

<p>Of those that are consumer level products only ftax seems to support Linux.  Ftax requires Adobe Acrobat Reader, which is not currently available for 64-bit Linux, also the demonstration shows that it is a smart walk-through of the actuals forms; which does fall short of the wizard mode under TaxCalc.  So to run ftax I am only swapping one set of compatibility issues for another.  If you are running 32-bit Linux, then I would definitely investigate ftax further, perhaps by searching reviews of ftax.</p>

<p>If you are going to try ftax, then you will notice the lack of any help for Linux on their site.  In fact there is help, but it is difficult to find, given their lack of a search facility.  Google to the rescue:</p>

<ul>
  <li><a href="http://www.google.co.uk/search?hl=en&amp;source=hp&amp;q=site:ftax.co.uk+linux">google “site:ftax.co.uk linux”</a></li>
</ul>

<h3 id="hmrc-on-line-self-assessment">HMRC On-line Self-Assessment</h3>

<p>Another option is to use HMRC’s own software, which I believe is web-based.  The only issue with this is that it appears that you need to enrol in the on-line service, even if you have previously used TaxCalc (or other Internet-filing service); see the following page for details:</p>

<ul>
  <li><a href="http://www.hmrc.gov.uk/sa/using-online.htm">HMRC Using Online</a></li>
</ul>

<p>Nevertheless, this is probably a good option, judging from the on-line demo:</p>

<ul>
  <li><a href="http://www.hmrc.gov.uk/demo/individual/self-assessment/">HMRC Self Assessment Demo</a></li>
</ul>

<p>However, the system requirements for this service state:</p>

<p><em>“If you use HMRC’s tax software and; or the Data Provisioning Service, you will also need a minimum browser level, Internet Explorer 5.0 (Windows users) Safari 2.0.4 (Mac users) or Opera 7.0 (Windows or Mac) Your Internet browser must have JavaScript and cookies enabled and be capable of supporting 128-bit SSL. Other operating systems and browsers, such as Mozilla Firefox, may allow you to access the site and use the pages but might not display the site as designed or allow you to access all the functionality.”</em></p>

<p>Okay, so it doesn’t mention Linux, but I wouldn’t be unduly concerned about that.  No the issue seems to be the browser, and, reading between the lines, this would suggest to me that the site is using extensive Javascript, which is largely blocked (quite rightly) by Firefox.  The chances are that there would be issues; although it wouldn’t be massive problem for me to fallback on IE under a Virtual Machine, your mileage may vary.</p>

<h3 id="install-taxcalc-under-wine">Install TaxCalc under Wine</h3>

<p>TaxCalc themselves state:</p>

<p><em>“We do have some customers that run Windows emulation software to enable the use of Taxcalc on other Operating Systems (e.g. MAC OS). Although we have had some positive feedback on this we do not officially support the use of TaxCalc on Non-Windows Operating Systems at this time.”</em></p>

<p>So the next option is to consider installing TaxCalc under Wine, my concern with this is that I would expect that a simple application like TaxCalc would indeed install fine under Wine.  My concern would be that I would complete my tax return and go to upload to the tax office, and that point hit a snag.  Also, I am running on Debian Lenny 64-bit, surely that must effect Wine as well - can 64-bit Wine run 32-bit Windows applications?  The existence of <a href="http://wiki.winehq.org/WineOn64bit">this page</a> would suggest that there may be issues.</p>

<p>Having downloaded TaxCalc, I opened the installation program in Wine.  The installation was successful, and the first run prompted for me to either enter the registration key, or connect to the Internet to find the registration key.  I decided to do the latter, in order to test connectivity, and it worked fine.  Then it crashed and I was unable to get back into TaxCalc again.</p>

<h4 id="update-for-2010">Update for 2010</h4>

<p>A quick search on the <a href="http://appdb.winehq.org">WineHQ AppDB</a> showed that someone has successfully installed TaxCalc under Wine; however he has not tested the online submission, which is crucial for me.  Given that he has used winetricks to install IE6 under Wine, then there is a good chance that it will work.  If you try it, do update the <a href="http://appdb.winehq.org">WineHQ AppDB</a>.</p>

<ul>
  <li><a href="http://appdb.winehq.org/objectManager.php?sClass=version&amp;iId=18299&amp;iTestingId=46244">TaxCalc 2009 under Wine</a></li>
</ul>

<h3 id="run-taxcalc-in-virtualbox">Run TaxCalc in VirtualBox</h3>

<p>It is outside of the scope of this document to describe this in detail, suffice to say it works flawlessly.  The downside is that you are effectively running under Windows, which can hardly be considered a success.</p>

<h3 id="conclusion">Conclusion</h3>

<p>So what have I decided?  Well this year I will again continue with TaxCalc, installed on Windows XP running through VirtualBox.  Yes I could give ftax a go, but I am fairly unimpressed with their website, and lack of any obvious Linux help.  Also Googling for information on ftax and linux leads you back to this page - and, if this page really is the best help available for ftax and linux, then you’re in real trouble.</p>

<p>So the best hope for Linux users is HMRC’s own on-line service.  It is web-based and free, and whilst it does not promise Firefox support, I suspect that may not be an issue.  If you would like to be able to use TaxCalc natively under Linux, then why not let them know: by emailing them at sales@taxcalc.com.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Amazon MP3 Downloads</title>
      <link>https://chrisjrob.com/2009/01/06/amazon-mp3-downloads/</link>
      <pubDate>Tue, 06 Jan 2009 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2009/01/06/amazon-mp3-downloads</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/amazon-music.png" align="right" alt="Featured Image">
         
         <p>Fantastic, Amazon have opened their MP3 download site for the UK.  Better still they support Linux, offering clients for Debian, Ubuntu and Fedora.  Once again we see companies choosing to support Linux from day one.  Unfortunately there is no 64-bit version, as I found out last night.  This really is the problem for companies producing proprietary software for an open platform.  Which distros do they support?  Which architectures?  Which desktop environment?</p>

<!--more-->

<p>The solution is obviously that they should just open source their client applications so that the distros can package them; or just publish their APIs and leave the open source community to develop the client apps.  Naive I know, and yes I should just be grateful that Amazon are even offering a client for Linux.  But then again the existence of the Amazon packaged client is going to be a powerful disincentive for any developer to produce an open source client.  Maybe that wouldn’t be possible anyway.</p>

<p>I guess I can manage without the client app, but I’ll have to make sure that none of my friends and family move to 64-bit.  That would have been the case anyway, as they all use Skype.  So what am I actually complaining about?  God knows.  Oh yes, proprietary software; always worthy of a rant.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Debian Lenny - applying the new KDM theme</title>
      <link>https://chrisjrob.com/2008/12/20/debian-lenny-applying-the-kdm-theme/</link>
      <pubDate>Sat, 20 Dec 2008 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2008/12/20/debian-lenny-applying-the-kdm-theme</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/debian_logo.png" align="right" alt="Featured Image">
         
         <p>If you install kde from a Debian base install, then it is likely that you do not have the attractive new Debian theming for the boot loader and KDM login.  The key to this is the installation of desktop-base, but you do need a few other packages, which don’t currently get treated as dependencies.</p>

<!--more-->

<h2 id="install-packages">Install packages</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo aptitude install desktop-base ksplash-engine-moodin kdmtheme splashy splashy-themes
</code></pre></div></div>

<h2 id="add-splashy-to-grub">Add splashy to grub</h2>

<p>Look for the kopt line in <code class="language-plaintext highlighter-rouge">/boot/grub/menu.lst</code> and add <code class="language-plaintext highlighter-rouge">quiet splash vga=791</code>:</p>

<p>N.B.  <code class="language-plaintext highlighter-rouge">vga=791</code> is suitable for 1024x768, if your monitor resolution is below this, then you should change this number by reference to the table below.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/boot/grub/menu.lst:
# kopt=root=/dev/sda1 ro quiet splash vga=791
</code></pre></div></div>

<p>N.B. Do not uncomment this line, this line is not used itself, but is used by update-grub to automatically populate the actual kernel lines further down</p>

<p>Then update-grub to apply this change to your kernels:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo update-grub
</code></pre></div></div>

<h2 id="splashy-vga-settings-table">Splashy VGA settings table</h2>

<table>
  <thead>
    <tr>
      <th>colour</th>
      <th>depth</th>
      <th>640x480</th>
      <th>800x600</th>
      <th>1024x768</th>
      <th>1280x1024</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>256</td>
      <td>8bit</td>
      <td>769</td>
      <td>771</td>
      <td>773</td>
      <td>775</td>
    </tr>
    <tr>
      <td>32000</td>
      <td>15bit</td>
      <td>784</td>
      <td>787</td>
      <td>790</td>
      <td>793</td>
    </tr>
    <tr>
      <td>65000</td>
      <td>16bit</td>
      <td>785</td>
      <td>788</td>
      <td>791</td>
      <td>794</td>
    </tr>
    <tr>
      <td>16.7m</td>
      <td>24bit</td>
      <td>786</td>
      <td>789</td>
      <td>792</td>
      <td>795</td>
    </tr>
  </tbody>
</table>

<p>The 65000 colour line is the one recommended for this purpose, so you’ll probably want 785 or 788 if you have a low resolution netbook.  I don’t believe there is any point in increasing to 794, as I believe the new Debian themes have been designed for 1024x768 (I have not checked that fact).</p>

<h2 id="configure-kdm-themes">Configure KDM themes</h2>

<p>Under KDE Control Panel, System Administration, KDM Theme Manager, enter Administrator Mode and enable KDM Themes and select “More Blue Orbit”.  It will warn you that your changes will be overwritten by /etc/default/kdm.d/, but this step still seems to be required.</p>

<h2 id="remove-login-manager-background">Remove Login Manager Background</h2>

<p>Under KDE Control Panel, System Administration, Login Manager, select the Background tab and disable the background.  This background displays after your new KDM Theme and before your actual desktop, which is definitely one background too many!</p>

       ]]>
      </description>
    </item>
    
    <item>
      <title>Debian Lenny - Some simple performance improvements</title>
      <link>https://chrisjrob.com/2008/12/19/debian-lenny-some-simple-performance-improvements/</link>
      <pubDate>Fri, 19 Dec 2008 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2008/12/19/debian-lenny-some-simple-performance-improvements</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/debian_logo.png" align="right" alt="Featured Image">
         
         <p>After setting up my Eee PC on Debian and following the tips (see <a href="/2008/12/08/lenny-on-speed/">Lenny on Speed</a> to maximise performance, I have found the same tips quite effective on other Debian systems.  The key changes are as follows:</p>

<!--more-->

<h2 id="add-a-ramdisk-file-system-for-tmp">Add a ramdisk file system for /tmp</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/etc/fstab:
tmpfs      /tmp     tmpfs      defaults     0    0
</code></pre></div></div>

<h2 id="add-a-ramdisk-file-system-for-varrun-and-varlock">Add a ramdisk file system for /var/run and /var/lock</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/etc/default/rcS:
RAMRUN=yes
RAMLOCK=yes
</code></pre></div></div>

<h2 id="add-relatime-option-to-hard-disk-file-systems">Add relatime option to hard disk file systems</h2>

<p>Lastly, in <code class="language-plaintext highlighter-rouge">/etc/fstab</code>, add the following option to each hard disk based filesystem “relatime”.  This is really important, as this stops the system from recording when a file was last read; without this option set, every time a file is read on your system, it is written to with the date last read - effectively changing a read into a read/write and thus slowing down the system.  Adding the relatime option cuts this nonsense out and makes a surprising performance improvement.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># /etc/fstab: static file system information.
#
# &lt;file system&gt; &lt;mount point&gt;   &lt;type&gt;  &lt;options&gt;                   &lt;dump&gt;  &lt;pass&gt;
proc            /proc           proc    defaults                      0       0
/dev/sda1       /               ext3    errors=remount-ro,relatime    0       1
/dev/sda6       /home           ext3    defaults,relatime             0       2
/dev/sda5       none            swap    sw                            0       0
/dev/scd0       /media/cdrom0   udf,iso9660 user,noauto               0       0
/dev/fd0        /media/floppy0  auto    rw,user,noauto                0       0
tmpfs           /tmp            tmpfs   defaults                      0       0
</code></pre></div></div>

<h2 id="using-a-faster-system-shell">Using a faster system shell</h2>

<p>By default, the standard system shell <code class="language-plaintext highlighter-rouge">/bin/sh</code> is provided by bash. Bash is very slow at start-up, because it does quite a lot of things before it starts to process shell statements. During boot-up, a lot of shell scripts are executed, and switching to a quicker shell has a noticeable impact. To switch <code class="language-plaintext highlighter-rouge">/bin/sh</code> to point at dash, install the package and use <code class="language-plaintext highlighter-rouge">dpkg-reconfigure</code> to enable it as the default system shell.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ aptitude install dash
$ dpkg-reconfigure dash
</code></pre></div></div>

<p>Thanks to <a href="http://wiki.debian.org/">Debian Wiki</a> for these tips.</p>

       ]]>
      </description>
    </item>
    
    <item>
      <title>Command line XML validator</title>
      <link>https://chrisjrob.com/2008/12/18/command-line-xml-validator/</link>
      <pubDate>Thu, 18 Dec 2008 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2008/12/18/command-line-xml-validator</guid>
      <description>
       <![CDATA[
         
         <p>I have always used the <a href="http://www.w3schools.com/XML/xml_validator.asp">W3Schools On-line XML validator</a>, but have always found it unreliable and I’ve never got it to validate against an XML schema file.</p>

<p>Thanks to Google I came across the following command (part of <code class="language-plaintext highlighter-rouge">libxml2-utils</code>):</p>

<!--more-->

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ xmllint --noout --schema schema.xsd file.xml
</code></pre></div></div>

<p>I find it amazing that all this time I had the perfect command pre-installed on my Linux desktop and I never knew.</p>

       ]]>
      </description>
    </item>
    
    <item>
      <title>Command line PDF tool pdftk</title>
      <link>https://chrisjrob.com/2008/12/09/command-line-pdf-tool-pdftk/</link>
      <pubDate>Tue, 09 Dec 2008 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2008/12/09/command-line-pdf-tool-pdftk</guid>
      <description>
       <![CDATA[
         
         <p>I had a 25-page OpenOffice writer document that needed to be sent to as a pdf.  Obviously creating a pdf from OpenOffice is simple enough, but I wanted to insert within the final pdf additional pages from other documents (i.e. not just simply appended on the end).</p>

<!--more-->

<p>We often use pdftk for command line pdf, but I hadn’t delved deeply into the features.  But using pdftk all I had to do was:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ pdftk A=main.pdf B=2nd.pdf C=3rd.pdf cat A1-24 B A25 C output final.pdf
</code></pre></div></div>

<p>In other words the final document (final.pdf) is pages 1-24 of document A (main.pdf), the whole of document B (2nd.pdf), page 25 of document A (main.pdf) and the whole of document C (3rd.pdf).</p>

<p>For a command line program, I think that is stunningly intuitive.  And best of all it was instantaneous and there was no loss of quality.</p>

<p>pdftk can seemingly do just about anything with pdfs, including encrypt, decrypt, repair, burst and rotate.</p>

<p>pdftk is installable from the Debian repos and typing <code class="language-plaintext highlighter-rouge">pdftk --help</code> gives you a handy set of usage examples, so that you don’t have to re-learn it every time you use it.</p>

       ]]>
      </description>
    </item>
    
    <item>
      <title>Think Python</title>
      <link>https://chrisjrob.com/2008/12/08/think-python/</link>
      <pubDate>Mon, 08 Dec 2008 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2008/12/08/think-python</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/think_python.png" align="right" alt="Featured Image">
         
         <p>I’ve been wanting to learn Python for a while, to supplement my Perl skills.  Chad on Linux Basement podcast suggested <a href="http://www.greenteapress.com/thinkpython/">Think Python</a> which seems an excellent book and currently available for download free.</p>

<!--more-->

<ul>
  <li><a href="http://www.greenteapress.com/thinkpython/">Think Python</a></li>
  <li><a href="http://linuxbasement.com/content/lb-episode-32-python-extravaganza-linux-basement">Python Extravaganza Linux Basement</a></li>
</ul>

       ]]>
      </description>
    </item>
    
    <item>
      <title>Lenny on Speed</title>
      <link>https://chrisjrob.com/2008/12/08/lenny-on-speed/</link>
      <pubDate>Mon, 08 Dec 2008 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2008/12/08/lenny-on-speed</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/debian_logo.png" align="right" alt="Featured Image">
         
         <p>Okay, to be quite honest my Debian Lenny 64-bit Toshiba Satellite Pro A300 laptop is really fast.  Certainly the fastest machine that I’ve ever used, problem is that makes you hungry for more speed.  So far I have followed several of the suggestions included in this <a href="http://wiki.debian.org/DebianEeePC/TipsAndTricks">Debian EeePC page</a>, for example adding the <code class="language-plaintext highlighter-rouge">relatime</code> option to the disks.</p>

<!--more-->

<p>I’ve also switched on boot concurrency and installed <code class="language-plaintext highlighter-rouge">preload</code>, as discussed in <a href="http://forums.debian.net/viewtopic.php?t=31275">this forum thread</a>.  Early days, but it does feel very snappy indeed.  The bootup doesn’t seem much faster, although apparently preload can slow things up a tad, but it is still around one minute, including about 5 seconds for the bios and another 15 seconds for typing in the kdm and kwalletmanager passwords.</p>

<p>I’ve also moved the <code class="language-plaintext highlighter-rouge">unmountnfs.sh</code> from the shutdown scripts to position 14, to enable this to be completed before closing the network services.  This has dramatically improved the shutdown performance.</p>

<p>Follow these links for more information:</p>

<ul>
  <li><a href="http://wiki.debian.org/DebianEeePC/TipsAndTricks">Debian EeePC Tips &amp; Tricks</a></li>
  <li><a href="http://forums.debian.net/viewtopic.php?t=31275">Debian Forum Topic</a></li>
</ul>

<p>Lastly, exim4 is installed by default, but you really don’t need this if, like me, you send/receive mail through a dedicated server, this shaves a second or two from the boot process.</p>

       ]]>
      </description>
    </item>
    
    <item>
      <title>Toshiba Satellite Pro A300 and Compiz</title>
      <link>https://chrisjrob.com/2008/12/07/toshiba-satellite-pro-a300-and-compiz/</link>
      <pubDate>Sun, 07 Dec 2008 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2008/12/07/toshiba-satellite-pro-a300-and-compiz</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/toshiba-satellite-pro-a300.jpg" align="right" alt="Featured Image">
         
         <p>Temptation got the better of me (as usual) and I installed kde-compiz.  Unsurprisingly the very basic graphic card, on this business-focused laptop, gave a pretty poor compiz performance.  If you’re after 3D acceleration for gaming and desktop effects, then you’re probably looking for a different laptop!</p>

<!--more-->

<p>For me, it’s just about perfect.</p>

       ]]>
      </description>
    </item>
    
    <item>
      <title>EeePC - Hello Lenny</title>
      <link>https://chrisjrob.com/2008/12/04/eeepc-hello-lenny/</link>
      <pubDate>Thu, 04 Dec 2008 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2008/12/04/eeepc-hello-lenny</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/eee-pc-701.jpg" align="right" alt="Featured Image">
         
         <p>I guess the logical replacement distro to install on an eepc, is the <a href="http://www.ubuntu-eee.com/">Ubuntu EeePC</a> remix.  To be quite honest I think you have to have a pretty compelling reason to go anywhere else.  My compelling reasons were that I just wanted a standard distro, that I know well and can look after without having to learn new skills; as a KDE user I ideally wanted access to KDE apps.  It really was always going to be <a href="http://wiki.debian.org/DebianEeePC">Debian Lenny EeePC</a>.</p>

<!--more-->

<p>The <a href="http://wiki.debian.org/DebianEeePC/HowTo/Install">installation instructions</a> were an absolute doddle, which really don’t require any help from me.  I installed KDE, expecting it to be a bit sluggish, but the great surprise is that it is really fast.</p>

<p>All in all a really good experience and it really is lovely to be typing this on my Debian Lenny EeePC.</p>

<p>Thank you Debian.</p>

       ]]>
      </description>
    </item>
    
    <item>
      <title>EeePC - Goodbye Xandros</title>
      <link>https://chrisjrob.com/2008/12/03/eeepc-goodbye-xandros/</link>
      <pubDate>Wed, 03 Dec 2008 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2008/12/03/eeepc-goodbye-xandros</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/eee-pc-701.jpg" align="right" alt="Featured Image">
         
         <p>When my old Dell laptop died, I naturally fell back to using my EeePC.  Now I’ve been using my EeePC for about six months now, and a very happy user I have been.  When I first bought it, I visited <a href="http://wiki.eeeuser.com/howto:beginners_guide">eeeuser.com</a> to enable me to add icons to the easy mode interface, so that I could add openvpn and NoMachine NX for connecting to our LTSP server.  Once done I had an ideal machine for taking notes and doing occasional server admin from the shell, and even connect to our LTSP server via VPN.</p>

<!--more-->

<p>So now my old Dell laptop has died, and without warning my eeepc has been promoted to primary laptop.  So of course I wanted to bring it all up-to-date, I went into the upgrade option and saw that there were several upgrades waiting, which I duly installed.  This whole process felt scarily reminiscent of Windows Update… Sure enough my custom icons had all disappeared, but fortunately I had anticipated this and had taken a backup of the <code class="language-plaintext highlighter-rouge">simpleui.rc</code>.  But the problem went deeper than that, I found that Xandros had changed the whole file structure, and even when I found the new locations for the <code class="language-plaintext highlighter-rouge">simpleue.rc</code> file, my custom icons were simply ignored.</p>

<p>Some Googling “<a href="https://www.google.co.uk/search?q=eeepc%20lost%20icons">eeepc lost icons</a>” found that I was not alone, but there was seemingly no fix for the problem (I think solutions have since been discovered).  In any case, I was by now feeling pretty fed up with such a non-standard system, so decided to leave Xandros and go to a standard Debian distro… more on this in due course.</p>

       ]]>
      </description>
    </item>
    
    <item>
      <title>Toshiba Satellite Pro A300 / Debian Lenny 64-bit</title>
      <link>https://chrisjrob.com/2008/11/20/toshiba-satellite-pro-a300-debian-lenny-64-bit/</link>
      <pubDate>Thu, 20 Nov 2008 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2008/11/20/toshiba-satellite-pro-a300-debian-lenny-64-bit</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/toshiba-satellite-pro-a300.jpg" align="right" alt="Featured Image">
         
         <p>The battery on my ageing Dell Inspiron 8200 had to be replaced recently, then the charger, and then (perhaps damage from cheap charger/battery?) the laptop died completely with amperage warnings about a month later.</p>

<!--more-->

<p>So I researched a replacement laptop, and ordered a Toshiba Satellite Pro A300, with 3gb RAM and 250gb hard drive.  I ordered with downgrade media to XP Pro.  Yes, anyone who has read my previous postings will appreciate just how appallingly hypocritical that is; but given that I will need XP to run under VirtualBox, and given that you don’t seem to save any money by not having it, it made sense (even if it irks to be constantly adding to MS profits).</p>

<p>Tempted though I was to install Kubuntu 8.10 (my old laptop ran 8.04), I decided that the sensible thing to do (given KDE version) was to install Debian Lenny.  Obviously I had chosen a laptop which should be readily Linux compatible, so I did expect an easy time, and so it proved.  I decided to install the 64-bit version.</p>

<p>The installer picked up our DHCP server without a fuss, and prompted me to insert the non-free driver for the Intel wireless into a USB stick, which I did and it picked up without a fuss.  I asked the guided partitioner to give me a separate home, but apart from those two interactions, I just accepted the default for everything else.</p>

<p>I booted into Debian, and noticed that they have prettied kdm in the past few weeks, and even given kwin a new default wallpaper.  OpenOffice 2.4 and Iceweasel were already installed, so there really wasn’t much else to do.</p>

<p>The good news is that, thus far at least, all the packages that I have wanted have been available (remember this is 64-bit).  As far as I know (I’m new to 64-bit) I have a pure 64-bit system.  It all seems very snappy, apart from OpenOffice, which takes a second or two to load.</p>

<p>The astonishing thing, and something that I have never seen mentioned in any Linux vs Windows review, is how quick it is to go from zero to actually having a fully productive machine.  Probably close to one hour.</p>

<p>There is one negative, which is that for some reason Debian Lenny 32-bit and 64-bit have a mismatch in versions between virtualbox-ose and virtualbox-ose-modules.  Such problems are only to be expected (Lenny hasn’t been officially released yet) and I have checked that <a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=502346">there is a bug report logged</a>.  To fix the problem in the meantime:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo aptitude remove virtualbox-ose-modules-2.6.26-1-amd64
$ sudo rmmod vboxdrv
$ sudo aptitude install build-essential module-assistant
$ sudo aptitude install virtualbox-ose-source
$ sudo module-assistant auto-install virtualbox-ose
$ sudo dpkg -l virtualbox*  (check all are at same version)
$ sudo modprobe vboxdrv
</code></pre></div></div>


       ]]>
      </description>
    </item>
    
    <item>
      <title>RSS feeds</title>
      <link>https://chrisjrob.com/2008/11/20/rss-feeds/</link>
      <pubDate>Thu, 20 Nov 2008 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2008/11/20/rss-feeds</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/rss.png" align="right" alt="Featured Image">
         
         <p>Yes, you’re right, my RSS feed is rubbish.  The RSS feed is generated by my own script, which was rather hastily cobbled together.  I am currently playing with Drupal and am loving it.  Rather than sort out my RSS feed, what I would like to do is migrate over to Drupal at some point in the future, and let that handle the feeds.</p>

<p>Watch this space!</p>

       ]]>
      </description>
    </item>
    
    <item>
      <title>GTK Style in KDE</title>
      <link>https://chrisjrob.com/2008/11/20/gtk-style-in-kde/</link>
      <pubDate>Thu, 20 Nov 2008 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2008/11/20/gtk-style-in-kde</guid>
      <description>
       <![CDATA[
         
         <p>GTK applications in KDE always look horrible.  In Kubuntu this is taken care of for you, but in Debian it is only a quick install away:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo aptitude install gtk-qt-engine
</code></pre></div></div>

<!--more-->

<p>There are other ways of achieving this, e.g. qtcurve, but for me this seems perfectly satisfactory.  Having installed, you visit your control panel and you will find a new option under “Appearance &amp; Themes” called “GTK Styles and Fonts” change this to use your KDE style for your GTK applications, and restart KDE.</p>

       ]]>
      </description>
    </item>
    
    <item>
      <title>64-bit Flash and Java Plugins</title>
      <link>https://chrisjrob.com/2008/11/20/64-bit-flash-and-java-plugins/</link>
      <pubDate>Thu, 20 Nov 2008 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2008/11/20/64-bit-flash-and-java-plugins</guid>
      <description>
       <![CDATA[
         
         <p>Following on from <a href="/2008/11/20/toshiba-satellite-pro-a300-debian-lenny-64-bit/">my recent installation of 64-bit Debian Lenny on my new Toshiba laptop</a>, I was horrified to learn that neither Flash nor Java exist for 64-bit Linux.  But after some digging it transpired that all was not lost.  Whilst Java is not available, the IcedTea project has reinvented the Sun Java Plugin.</p>

<!--more-->

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo aptitude install icedtea-gcjwebplugin
</code></pre></div></div>

<p>And it transpires that Adobe has launched an Alpha or pre-release version of Flash, and <a href="http://blogs.computerworld.com/64_bit_linux_adobe_flash_player_surprisingly_good">supposedly it works well</a>. To install simply visit:</p>

<ul>
  <li><a href="http://labs.adobe.com/technologies/flashplayer10/">Adobe Labs: FlashPlayer 10 for 64-bit Linux</a></li>
</ul>

<p>And download and extract the tar.gz file, then simply copy the <code class="language-plaintext highlighter-rouge">libflashplayer.so</code> file into <code class="language-plaintext highlighter-rouge">.mozilla/plugins</code> in your home directory (I had to create that directory).</p>

<p>YouTube (which I always consider to be a good test of both Java and Flash) worked perfectly.</p>

<p>So far 64-bit Linux has been remarkably painfree.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Unison File Synchronisation</title>
      <link>https://chrisjrob.com/2008/10/27/unison-file-synchronisation/</link>
      <pubDate>Mon, 27 Oct 2008 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2008/10/27/unison-file-synchronisation</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/unison_logo.png" align="right" alt="Featured Image">
         
         <p>One of the few things that we miss from the old Microsoft days is the “briefcase”.  In particular our MD used it every day and loved it.  On Linux the best open source alternative is probably Unison File Synchroniser.</p>

<p>I got this working a few weeks ago and it was incredibly simple to get working and a joy to use.  I personally didn’t really have a need for this software, but now that it’s installed it just so convenient that I am finding myself using it regularly.</p>

<!--more-->

<p>My first set-up was with my home laptop (<a href="http://www.kubuntu.org/">Kubuntu</a>) and our work server (<a href="http://www.debian.org/">Debian</a> Etch).  I simply did an <code class="language-plaintext highlighter-rouge">apt-get install unison</code> on the server and <code class="language-plaintext highlighter-rouge">apt-get install unison unison-gtk</code> on the laptop.  The gtk gui is of course optional, Unison is perfectly happy working from the command line, and it does have the benefit then of being able to automate the process to some extent.</p>

<p>On the laptop, I created a directory “unison” under my home to use as my local store and ditto on the server, so that I had <code class="language-plaintext highlighter-rouge">/home/chris/unison</code> on both home and server (they don’t have to be the same username or path).</p>

<p>I then ran Unison from the Utilities menu, which prompted me for the local dir - which I entered as <code class="language-plaintext highlighter-rouge">/home/chris/unison</code>.  It then prompted me for the remote dir, which protocol I wanted to use (I selected ssh), the hostname and user account of the server.</p>

<p>It then prompted me for my user account’s password and then warned me that the directories were both empty and that it was assuming that this was the first time I had done a synchronisation.</p>

<p>I then tested by putting a file in the local directory and running unison again, and sure enough it synced up to the server.</p>

<p>Job done.</p>

<p>Unfortunately our MD had bought himself a MacBook.  Grrr.  Fortunately <a href="http://www.cs.haifa.ac.il/%7Eshuly/unison/">Unison is available for the MacBook</a>, and it has a gorgeous GUI.  A quick install and, disaster, “fatal error” on synchronisation and an helpful warning that the client/server versions might be incompatible, but a quick <code class="language-plaintext highlighter-rouge">apt-get -t etch-backports install unison</code> resolved that problem in a trice, all now working beautifully.</p>

<p>I think there’s a Windows version as well, but no-one really runs Windows these days, so that’s probably of no interest ;-).</p>

<ul>
  <li><a href="http://www.cis.upenn.edu/~bcpierce/unison/">Unison File Synchroniser</a></li>
  <li><a href="http://www.cs.haifa.ac.il/%7Eshuly/unison/">Mac Version</a></li>
</ul>

<p>One thing that our MD likes is to have a single directory on his desktop that has links to all the files around the system that he likes to monitor daily.  The problem is that Unison will only synchronise the link, not the file itself, and of course the link won’t work remotely.</p>

<p>The solution is to edit the <code class="language-plaintext highlighter-rouge">~/.unison/default.prf</code> file and add the following line (client end only):</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>follow = Regex .*
</code></pre></div></div>

<p>Unison will now follow the symbolic links (not .desktop files - only actual symbolic links) and sync the file to which they point.  (On a MacBook this <code class="language-plaintext highlighter-rouge">.prf</code> file is under <code class="language-plaintext highlighter-rouge">~/Library/Application Support/Unison</code>, or somewhere close to that anyway!)</p>

<p>Update: I have written these instructions into a simple howto:</p>

<ul>
  <li>
    <table>
      <tbody>
        <tr>
          <td>[Howto</td>
          <td>Synchronise files with Unison](/2009/03/21/synchronise-files-with-unison/)</td>
        </tr>
      </tbody>
    </table>
  </li>
</ul>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Debian Lenny</title>
      <link>https://chrisjrob.com/2008/10/13/debian-lenny/</link>
      <pubDate>Mon, 13 Oct 2008 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2008/10/13/debian-lenny</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/debian_logo.png" align="right" alt="Featured Image">
         
         <p>Some weeks ago the hard drive on my work PC failed, with a temperature error on the hard drive.  I swapped the drive out but then had to decide which distro to install.  I had started my Linux life with <a href="http://www.kubuntu.org/">Kubuntu</a>, experimented with <a href="https://www.debian.org/releases/sid/">Debian Sid</a> + <a href="https://wiki.debian.org/DebianExperimental">Experimental</a>, before returning to Kubuntu.  Given <a href="https://www.debian.org/releases/lenny/">Debian Lenny</a>’s imminent release, the logical progression was to try that.</p>

<!--more-->

<p>I downloaded the ISO using Jigdo (see <a href="/2009/03/21/download-debian-with-jigdo/">How to Download Debian with Jigdo</a>) and ran the installer.  It really was simplicity itself and, except for the lack of a live CD, the installation was at least as simple and maybe simpler than Kubuntu.  In particular I love the fact that the partitioner gives you intelligent options, rather than the Kubuntu installer’s all-or-nothing approach.</p>

<p>Having installed Debian Lenny, I was struck by just how like Kubuntu it is, hardly surprising given the Debian parentage of Kubuntu.  What was surprising though, was just how easy everything was - I simply added non-free and contrib to the repositories, installed Java, Flash, the Win32 Codecs, and the MS Fonts.  To improve its looks I simply did:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo apt-get install kwin-style-crystal kde-icons-nuvola
</code></pre></div></div>

<p>And then I activated Crystal style and the Nuvola icons in the KDE Control Panel.  The Crystal style takes a little bit of tweaking to make it look like Kubuntu (if that’s what you like).  To complete the effect I also installed Compiz, and Openbox, so that I have a choice of three Windows Managers - Slow, Medium and Fast!</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Solved PXE Booting the Viglen MPC-L</title>
      <link>https://chrisjrob.com/2008/08/28/solved-pxe-booting-the-viglen-mpc-l/</link>
      <pubDate>Thu, 28 Aug 2008 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2008/08/28/solved-pxe-booting-the-viglen-mpc-l</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/viglen-mpc-l.jpg" align="right" alt="Featured Image">
         
         <p>I have solved the <a href="/2008/08/28/pxe-booting-the-viglen-mpc-l/">issue with PXE booting on the Viglen MPC-L</a>!</p>

<p>To get past the kernel panic, it was necessary to switch of acpi in the kernel.  In LTSP that means copying the following file:</p>

<!--more-->

<p>N.B. Replace 00-00-00-00-00-00 with the MAC address of the Viglen but note it has to have the leading 01 at the beginning</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># cp /var/lib/tftpboot/ltsp/i386/pxelinux.cfg/default /var/lib/tftpboot/ltsp/i386/pxelinux.cfg/01-00-00-00-00-00-00
</code></pre></div></div>

<p>Then edit the file and add <code class="language-plaintext highlighter-rouge">acpi=off</code> to the end of the line (I also added <code class="language-plaintext highlighter-rouge">pnpbios=off</code> to reduce the boot-up error messages):</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>DEFAULT vmlinuz ro initrd=initrd.img quiet root=/dev/nfs ip=dhcp boot=nfs acpi=off pnpbios=off
</code></pre></div></div>

<p>And it now boots up fine.</p>

       ]]>
      </description>
    </item>
    
    <item>
      <title>PXE Booting the Viglen MPC-L</title>
      <link>https://chrisjrob.com/2008/08/28/pxe-booting-the-viglen-mpc-l/</link>
      <pubDate>Thu, 28 Aug 2008 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2008/08/28/pxe-booting-the-viglen-mpc-l</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/viglen-mpc-l.jpg" align="right" alt="Featured Image">
         
         <p>Persistence paid off, in that F1 will work, but it is a race between the detection of the USB keyboard and the completion of the boot loader.  I found that if I moved the cursor on the grub screen it paused, enabling me to Ctrl-Alt-Del, which seemed to enable to USB detection to complete quicker.  Or perhaps I was just lucky.  But in fact it’s immaterial as the PXE boot settings are not there, but are instead under Shift-F10, which seems to work fine.</p>

<!--more-->

<p>Unfortunately the PXE boot to LTSP ends in a kernel panic - but at least I am one step closer!</p>

       ]]>
      </description>
    </item>
    
    <item>
      <title>Viglen MPC-L</title>
      <link>https://chrisjrob.com/2008/08/27/viglen-mpc-l/</link>
      <pubDate>Wed, 27 Aug 2008 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2008/08/27/viglen-mpc-l</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/viglen-mpc-l.jpg" align="right" alt="Featured Image">
         
         <p>The Viglen MPC-L is a very small thin-client device, running Xubuntu with the XFCE desktop.  At £99 including VAT, this is a very inexpensive PC.  I recently listened to a review of the device on the <a href="http://podcast.ubuntu-uk.org/">Ubuntu UK Podcast</a>.  They described the device as slow, but explained that the Viglen MPC-L is really intended as a thin client device anyway.  I decided to order a test unit for evaluation, in the hope that it would work as a thin client for our LTSP server.</p>

<!--more-->

<p>My test unit has arrived, and I have added a review to my site, and include below for your interest…</p>

<p>First impressions are that the device is even smaller than I was expecting, it really is small enough to go on the back of a LCD panel; however the device is functional rather than attractive.  Sleek it is not.  Secondly I noticed that in common with many thin client devices there are no legacy keyboard and mouse ports, just USB (2 front and 2 back).  The device comes with a Viglen USB keyboard and Microsoft USB optical mouse, which are both fairly cheap and cheerful devices.</p>

<p>Next I connected it up and booted.  It was slow to boot - 2 minutes and 30 seconds.  On the flipside, once it is up power consumption is just 9 watts, increasing to 11 watts under load, so this is a device that can be left on.  Logging in only took another 10 seconds.</p>

<p>Once into Xubuntu, I noticed a desktop icon for “888M Volume” which apparently the standard user cannot mount, a minor point perhaps, but I would question why it is on the user’s desktop.</p>

<p>One disappointment is that the device only has a 40GB hard drive, as stated in the Ubuntu UK Podcast, but in contrast with the 80GB promised by Viglen Sales.  A further disappointment was the screen clarity which was a long way from being pin-sharp.  A quick <code class="language-plaintext highlighter-rouge">sudo dpkg-reconfigure xserver-xorg</code> increased the screen resolution from 1024x768 to 1280x1024, but as yet I have not managed to achieve a pin-sharp display on my AG Neovo S-19 LCD Panel.  Possibly that’s a limitation of the on-board graphics, but if so, health and safety would prevent its use in a corporate environment.  I will take this up with their support team.</p>

<p>I opened Firefox (another 20 seconds gone).  Flash isn’t installed, and given the sluggish browsing performance, I don’t think I’d be tempted to install it; but that does reduce the number of websites that can be accessed via this device.  Next I visited Googlemail; Googlemail took 30 seconds to load, but it was very sluggish to use.  Interestingly Viglen have also installed Opera, which was slightly quicker, probably the reason Viglen installed it.  I wonder whether they wouldn’t have been better installing Seamonkey?</p>

<p>The Viglen MPC-L comes with Abiword, Gnumeric and Gimp, which I believe are the default XFCE applications and probably a wise choice for a device this slow.</p>

<p>Interestingly Viglen state in their literature:</p>

<p><em>“Viglen have tuned and tweaked this distribution for optimal performance on the MPC through the use of  various  techniques  and  tricks.  Load  times  and  startup  times  have  been  greatly  reduced  through adaptive  analysis  techniques  and  removing  unnecessary  startup  scripts.”</em></p>

<p>Hmmm.</p>

<p>So as a standalone PC, it has few merits beyond size and price, but we must remember, that this is a £100 PC, and Viglen have been clear about the fact that this device is really designed to be a thin client.</p>

<p>So, with my corporate hat on, I looked for Citrix Presentation Server Client, the preferred method of connecting to a Citrix server.  Not installed.  Oh well, I guess most people will be connecting to an ordinary Microsoft Terminal Server via RDP.  Looked for an RDP application (krdc on KDE - anyone know for XFCE?), but couldn’t find one.  Okay, so any sysadmin is going to set up a desktop shortcut for rdesktop, but rdesktop is also not installed.  Only an apt-get away perhaps, but the minimum I would have thought for a device purporting to be a thin client device.  Next I looked for NoMachine’s NX client, again not installed.  VNC?  2X?  No.</p>

<p>If Viglen really want this device to be considered a thin client device, then those applications really ought to be there, and it would cost them nothing so to do, as all the software is free.  I installed rdesktop and was quickly able to connect to our virtualised W2K3 server, no problems there then.</p>

<p>I then decided to test the device as a thin client for LTSP.  So rebooted and tried to get into the BIOS.  The boot splash states F1 for Setup, but when you press it nothing happens, instead there is a message stating “VSA USB Enumeration” and the boot process continues regardless.  So configuring PXE booting is going to be a little difficult, perhaps impossible.  The inability to reach the BIOS screen must surely be a fault - and something that I will investigate further.</p>

<p>The problem with the Viglen MPC-L is that it is neither fish nor fowl - it is too slow to be seen as a viable PC, but it has not been properly set up to use as a thin client.  This means that the cost of these devices needs to include some not insignificant time for a sysadmin to install and configure the requisite software to access their server.</p>

<p>Criticisms aside, this is tremendously good value at £99 and an environmentally friendly device.  At the current promotional price of £80 it really is tremendous value for money, and if you deduct VAT and then a further £8 for the keyboard and mouse, then this device will cost a company just £60, an astonishing price.  For me, though, unless I can resolve the PXE issue, the device is going to be of little use.</p>

<p>Cheap, but not entirely cheerful.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Konica Minolta C250 Printing Problems</title>
      <link>https://chrisjrob.com/2008/08/23/konica-minolta-c250-printing-problems/</link>
      <pubDate>Sat, 23 Aug 2008 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2008/08/23/konica-minolta-c250-printing-problems</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/c250.png" align="right" alt="Featured Image">
         
         <p>A month ago I wrote about <a href="/2008/07/23/konica-minolta-c250-printing-problems/">our problems printing to our colour photocopier</a>.  Well this problem is still hurting us.  I have tried setting up cups to work by lpr, ipp, http, socket and jetdirect.  Amazingly I was able to print CUPS test pages from most of these, but without it making any difference to the problem.  I have tried switching off CUPS in Iceweasel, so that it prints via kprinter (see Configure Iceweasel to print via kprinter), but amazingly the problem continues.</p>

<!--more-->

<p>Looking through the CUPS error.log, I noted an error on locale, so I reconfigured:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo dpkg-reconfigure locales
</code></pre></div></div>

<p>And I added the three en_GB locales, and set the UTF-8 as the default.  I also change the test web-page to use en_GB.  This eradicated the error messages, but did not induce the photocopier to print.</p>

<p>I have tried using four different PPDs from Konica Minolta and from <a href="http://openprinting.org">OpenPrinting.org</a>, but without any difference.</p>

<p>This is without doubt the most intractable problem that I have as yet encountered in Linux.</p>

<p>Interestingly, I <em>was</em> able to print the same webpage from Iceweasel3 <a href="/2008/08/20/kubuntu-to-debian-sid/">from my new Debian Sid PC</a>.  When setting up the printer the PPD was already available from within CUPS, which I will need to investigate further, although my suspicion is that the key change is the browser.  Maybe I need to upgrade to Iceweasel 3, although this is only available in Experimental at present, which would not be sensible for our LTSP server.</p>

<p>I do feel that I am between a rock and a hard place.</p>

       ]]>
      </description>
    </item>
    
    <item>
      <title>Kubuntu to Debian Sid</title>
      <link>https://chrisjrob.com/2008/08/20/kubuntu-to-debian-sid/</link>
      <pubDate>Wed, 20 Aug 2008 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2008/08/20/kubuntu-to-debian-sid</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/debian_logo.png" align="right" alt="Featured Image">
         
         <p>It’s been bothering me for some time that I am using Kubuntu instead of Debian on my work desktop PC.  Yesterday I had a drive failure necessitating a reinstall; what better excuse could there be?  Having decided to change to Debian, I decided to install Sid, and then I decided that, as KDE 4.1 is now out, why not go the whole hog.</p>

<p>The experience was pretty positive, really the only problem was that I needed to tweak the <code class="language-plaintext highlighter-rouge">xorg.conf</code> in order to get my keyboard and mouse working, other than that it was a pretty straightforward install.</p>

<!--more-->

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Section "ServerLayout"
    Identifier   "Default Layout"
    Screen       "Default Screen"
    Inputdevice  "Generic Keyboard"
    Inputdevice  "Configured Mouse"
EndSection
</code></pre></div></div>

<p>Installing VirtualBox was not such fun, but the following link sorted me out:</p>

<ul>
  <li><a href="http://chirale.wordpress.com/2007/12/23/virtualbox-ose-debian-install-howto/">Virtualbox OSE Debian Install</a></li>
</ul>

<p>So far I have installed Iceweasel3, OpenOffice3, NoMachine NX Client and VirtualBox, and it’s running really nicely.  I have activated the KDE4 compositing effects, which seem very slow, so hopefully some room for improvement there in subsequent releases.</p>

<p>So would I recommend Debian Sid KDE4.1 over Kubuntu?  Well I think that’s an unfair comparison, as I’ve installed a bleeding edge solution, but all-in-all it really wasn’t a scary installation at all.</p>

<p>Well done to the Debian team.</p>

       ]]>
      </description>
    </item>
    
    <item>
      <title>A Flash Packbox</title>
      <link>https://chrisjrob.com/2008/08/01/a-flash-packbox/</link>
      <pubDate>Fri, 01 Aug 2008 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2008/08/01/a-flash-packbox</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/pack_box_350.jpg" align="right" alt="Featured Image">
         
         <p>Some time ago I bought the following kit:</p>

<ul>
  <li><a href="http://linitx.com/viewproduct.php?prodid=11791">Pack-box</a> £ 38.26</li>
  <li><a href="http://linitx.com/viewproduct.php?prodid=11111">Jetway J7F2 1.2Ghz Eden CN700 Mainboard - Fanless</a>  £ 87.55</li>
  <li><a href="http://linitx.com/viewproduct.php?prodid=11142">6-26V 60W picoPSU-60-WI</a> £ 27.55</li>
  <li><a href="http://linitx.com/viewproduct.php?prodid=10346">12V 60W AC Adapter</a> £ 19.06</li>
</ul>

<p>With the intention of attaching them to the underside of showroom desks as an LTSP Client.  Unfortunately they don’t provide anywhere for an optical drive, which our MD felt was essential.  So what to do with it?  Well, I decided to try and set it up as a low-wattage PC for potential use in a car, caravan, boat, or simple a green PC for home use.  To that end I purchased the following additional items:</p>

<!--more-->

<ul>
  <li><a href="http://linitx.com/viewproduct.php?prodid=10448">Compact Flash IDE Adapter on PCI Mounting Bracket</a> £ 15.34</li>
  <li><a href="http://www.dabs4work.com/productview.aspx?QuickLinx=4S39">Kingston 8GB Ultimate Compact Flash 266x</a> £ 63.47</li>
</ul>

<p>So the total cost of the system was £ 251.23 + VAT = £ 295.19.  Not a cheap system, but the amazing thing about it is the huge range of power input from 6V through to 26V, which means you don’t need a voltage regulator for this PC to work in a car, boat or caravan.</p>

<p>A word about Compact Flash - there are two important things to discover before purchasing Compact Flash:</p>

<ol>
  <li><em>Speed:</em> Speed is expensive, but to have a system that compares favourably with a traditional hard-drive you need speed - 266x is recommended</li>
  <li><em>Life expectancy:</em> Flash drives have a finite number of write cycles, and therefore you need a drive that has “wear levelling”.</li>
</ol>

<p>Whilst Kingston advertise that their drives include wear levelling, I probably would have been safer to purchase a Industrial Flash Drive available from LinITX.  At the time of writing LinITX did not offer any 8GB drives, and their 4GB drives were comparable in cost to the 8GB drive from Dabs.  Only time will tell whether this was a mistake.</p>

<p>My next problem was how to install without an optical drive.  In the end I followed <a href="https://help.ubuntu.com/community/Installation/FromUSBStick">these instructions</a> and chose UNetBootin method, although I found that I did have to follow the additional steps required.</p>

<p>From that point on the installation was no more difficult than a traditional live CD install; however I did configure tmpfs file systems in <code class="language-plaintext highlighter-rouge">/etc/fstab</code> in order to reduce disk-writes.</p>

<p>Now I just need to find a use for it!</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Mission Control - We have a Problem</title>
      <link>https://chrisjrob.com/2008/07/29/mission-control-we-have-a-problem/</link>
      <pubDate>Tue, 29 Jul 2008 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2008/07/29/mission-control-we-have-a-problem</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/ipcop_logo.png" align="right" alt="Featured Image">
         
         <p>Our ADSL connection went down yesterday morning, taking with it our websites, email and browsing.  It is amazing how cut-off you feel without Internet access.  We have a fully-managed service, so Clara.net sent out a replacement router, only to find that the problem was elsewhere and that they had to log the fault with BT.</p>

<!--more-->

<p>Thinking that our Internet access could be out for days, I decided to try and utilise my laptop’s Vodafone 3G modem.  After a little research on my Eee PC I discovered that IPCop firewall can only handle a single WAN interface, so I decided to build a temporary IPCop firewall for the purpose:</p>

<ul>
  <li><a href="/2009/10/12/install-ipcop-firewall/">Install IPCop Firewall</a></li>
</ul>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Konica Minolta C250 Printing Problems</title>
      <link>https://chrisjrob.com/2008/07/23/konica-minolta-c250-printing-problems/</link>
      <pubDate>Wed, 23 Jul 2008 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2008/07/23/konica-minolta-c250-printing-problems</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/c250.png" align="right" alt="Featured Image">
         
         <p>Since making the transition to Linux we have been unable to print reliably to our Konica Minolta C250 colour photocopier.  Basically only simple print jobs will print, more complicated print jobs never come through, the data light flashes indefinitely and the photocopier needs to be rebooted.  In particular we have problems printing PDFs and wep-pages in Iceweasel. Web-pages in Konqueror seem okay, which makes you think that the problem is with the non-KDE applications, but the PDFs that won’t print from Acrobat Reader, also won’t print from KPDF.</p>

<!--more-->

<p>We have tried various drivers from Konica Minolta, including C250, C252 and C253, but with no improvement.</p>

<p>In particular we have problems printing PDFs and wep-pages in Iceweasel.  Web-pages in Konqueror seem okay, which makes you think that the problem is with the non-KDE applications, but the PDFs that won’t print from Acrobat Reader, also won’t print from KPDF.</p>

<p>I am fortunate in having some help from <a href="http://www.thamesgroup.com/">Transcribe Thames</a>.  Simon has set-up an Ubuntu desktop and has proved that he can print fine to a C250.  Simon felt that the only difference between our two set-ups was the fact that we still had windows active directory LDAP authentication on it.  I have today removed, but printing is not improved.</p>

<p>The ability to print in colour is important to us, and the fact that as I roll-out Linux, each user loses the ability to print in colour, is not good.  Hopefully I will have more success tomorrow.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>The Green Icons are breeding</title>
      <link>https://chrisjrob.com/2008/07/15/the-green-icons-are-breeding/</link>
      <pubDate>Tue, 15 Jul 2008 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2008/07/15/the-green-icons-are-breeding</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/italc_icon.png" align="right" alt="Featured Image">
         
         <p>Following the <a href="/2009/04/24/ltsp-install-italc-on-debian-etch/">installation of Italc on our LTSP Server</a>, users reported that they had several green icons in their system tray.  This transpired to be the KDE session manager, which automatically restores all applications running at time of logging-off.  I have updated my Install Italc instructions to include excluding ica from KDE session manager.</p>

<!--more-->

<p>In trying to kill off the multiple ica processes, I found that <code class="language-plaintext highlighter-rouge">ps</code> can do more than just <code class="language-plaintext highlighter-rouge">ps aux</code>.  I found that <code class="language-plaintext highlighter-rouge">ps -fHu username</code> would provide a tree-view of the specified user, which is much neater than piping ps through grep.</p>

<p>And then our <code class="language-plaintext highlighter-rouge">/tmp</code> filesystem filled up, and I just simply could not work out why.  Until, at least, I managed to trash our virtualised Windows Server 2003 (running under Qemu), by inadvertently disabling its network card and thus triggering the server monitoring - which automatically killed and restarted it; 600mb freed up in a second.</p>

       ]]>
      </description>
    </item>
    
    <item>
      <title>LTSP | The Continuing Saga of LTSP Screen Shadowing</title>
      <link>https://chrisjrob.com/2008/07/14/the-continuing-saga-of-ltsp-screen-shadowing/</link>
      <pubDate>Mon, 14 Jul 2008 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2008/07/14/the-continuing-saga-of-ltsp-screen-shadowing</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/italc.jpg" align="right" alt="Featured Image">
         
         <p>This turned out to be a complete nightmare, and took several days to resolve.  I never did manage to get x11vnc working on the client, nor did I manage to get italc (which I think also uses x11vnc) working on the client.  In the end I settled for installing italc-client on the server, so that the client runs when users log onto the server, allocating each user a unique port, and putting a little green italc icon in their system tray.</p>

<!--more-->

<p>This required upgrading qt4 from lenny (hardly ideal) and still works like a pig.  Well viewing is fine, but the remote control is unusably slow.</p>

<p>I found it impossible to manage the list of users in italc; which changes according to the whims of DHCP.  I ended up writing a script to use the output of “who” to populate the <code class="language-plaintext highlighter-rouge">globalconfig.xml</code> file in <code class="language-plaintext highlighter-rouge">/home/username/.italc</code>; if I have time I will add the script to my install italc instructions.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>LTSP | Wireless Access to LTSP</title>
      <link>https://chrisjrob.com/2008/07/11/ltsp-wireless-access/</link>
      <pubDate>Fri, 11 Jul 2008 07:38:51 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2008/07/11/ltsp-wireless-access</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/lucent-ethernet-converter.jpg" align="right" alt="Featured Image">
         
         <h2 id="the-issue">The Issue</h2>

<p>Currently the only method of accessing LTSP from a wireless device (e.g. laptop) is by running the local operating system and installing NoMachine on the client.  It would be extremely useful to boot laptops directly into LTSP.</p>

<!--more-->

<h2 id="the-options">The Options</h2>

<p>The following two pages would seem to outline the possibilities:</p>

<ul>
  <li>http://www.ltsp.org/twiki/bin/view/Ltsp/WirelessLtsp
    <ul>
      <li>http://www.ltsp.org/twiki/bin/view/Ltsp/WirelessLTSPClientsUsingAnEthernetBridge</li>
    </ul>
  </li>
</ul>

<p>I cannot help but conclude that, time being an important factor, the Ethernet Bridge option is the sensible course to take.</p>

<h2 id="proof-of-concept">Proof of Concept</h2>

<p>As it happened, I had an old Lucent Wireless Ethernet Converter, sadly only a 10-base-T model.  I configured it with a static IP address, and attached it to my laptop’s network port.  Rebooted my laptop and, joy of joys, it immediately PXE booted.  Unfortunately it was painfully slow, so a better device is clearly required.</p>

<h2 id="possible-wireless-bridges">Possible Wireless Bridges</h2>

<ul>
  <li><a href="http://www.expansys.com/d.aspx?i=156998">ASUS WL330GE Wireless Access Point</a></li>
  <li><a href="http://www.dabs4work.com/productview.aspx?Quicklinx=30HT">Linksys model number WET54G</a></li>
  <li><a href="http://www.dabs4work.com/productview.aspx?quicklinx=3XB9">Belkin Wireless G Ethernet Adapter F5D7330uk</a></li>
  <li><a href="https://www.dabs4work.com/productview.aspx?QuickLinx=3XB9">Buffalo Wireless Ethernet Controller WLI-TX4-G54HP-1</a></li>
</ul>

<p>After initially opting for the Belkin, I ended up opting for the Buffalo, largely off the back of some decent reviews.</p>

<h2 id="buffalo-wireless-ethernet-controller">Buffalo Wireless Ethernet Controller</h2>

<p>My <a href="https://www.dabs4work.com/productview.aspx?QuickLinx=3XB9">Buffalo Wireless Ethernet Controller WLI-TX4-G54HP-1</a> arrived today, so I eagerly installed it at home.  As usual there is no configurator for Linux, so you have to use the web-admin page, this requires you to connect via a wired port configured for the same network 1.1.1.0/24.  Once done it was very simple to configure - I gave it a static IP (not sure whether that was really required) and rebooted into Edubuntu.</p>

<p>Very straightforward, but the performance, whilst infinitely better than my old Lucent Ethernet Converter described in my <a href="#proof-of-concept">Proof of Concept</a>, was less than stunning.  Launching Gcompris, struggled with the music, but once the music was switched off the moving images and sound seemed fine.  Gnome seems a little sluggish at times, but probably quicker than my ageing Dell Inspiron 8200 is normally!</p>

<p>I guess I would describe performance of Edubuntu via Wireless as satisfactory - but if you require sound/video I think you’ll struggle.  That said it is a useful additional method of accessing LTSP and will no doubt have its place at work, e.g. adhoc workstations.</p>

<h2 id="references">References</h2>

<ul>
  <li>http://www.ltsp.org/twiki/bin/view/Ltsp/WirelessLtsp
    <ul>
      <li>http://www.ltsp.org/twiki/bin/view/Ltsp/WirelessLTSPClientsUsingAnEthernetBridge</li>
    </ul>
  </li>
  <li>http://www.lug-kr.de/wiki/ThinClientLokalBooten
    <ul>
      <li>http://translate.google.co.uk/translate?u=http%3A%2F%2Fwww.lug-kr.de%2Fwiki%2FThinClientLokalBooten&amp;sl=de&amp;tl=en&amp;hl=en&amp;ie=UTF-8</li>
    </ul>
  </li>
</ul>

       ]]>
      </description>
    </item>
    
    <item>
      <title>LTSP | Screen Shadowing</title>
      <link>https://chrisjrob.com/2008/07/10/screen-shadowing/</link>
      <pubDate>Thu, 10 Jul 2008 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2008/07/10/screen-shadowing</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/ltsp_logo.png" align="right" alt="Featured Image">
         
         <p>Something that we have become used to having under Citrix is the ability to shadow users, and I have been missing this since our forays into LTSP.  I know it is possible, and I have been attempting to use the KDE built-in Krfb Desktop Sharing module.  The problem with this has been that, all users being on the same hardware, it’s difficult to know to which screen number to connect.  I guess there probably is a way, but when I used trial and error to find the right display, the performance was less than impressive.</p>

<!--more-->

<p>So I decided to follow the masses and install x11vnc on the client, but suffice don’t have it working yet!</p>

<p>You may recall my recent installation of Edubuntu at home.  Well I was surprised to find that the Thin Client Manager, AKA the Student Control Panel, missing.  I Googled without joy, and ended up finding that thin-client-manager-gnome needed to be installed via Synaptic.  I reported this at #edubuntu and ogra informed that they have replaced this with <a href="http://italc.sourceforge.net/">iTalc</a>.  I therefore removed thin-client-manager-gnome, but again I could not find any reference to iTalc in the menus.  Again I Googled fruitlessly and again the solution was as simple as installing italc-master (the client was already installed).  And it worked, straight off including screen shadowing.</p>

<p>Now all I need to do is to work out <a href="/2009/04/24/ltsp-install-italc-on-debian-etch/">how to install iTalc on Etch</a>!  Perhaps not.  At least not just yet.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>iTunes blah</title>
      <link>https://chrisjrob.com/2008/07/09/itunes-blah/</link>
      <pubDate>Wed, 09 Jul 2008 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2008/07/09/itunes-blah</guid>
      <description>
       <![CDATA[
         
         <p>I finally persuaded one of my brothers to move to Linux.  I explained that he would be able to continue using Firefox, Thunderbird, CD/DVD burning.  I waxed lyrical about the benefits in terms of reliability, virus-protection, ease of updating etc.  I showed him all the software, and in particular the Gcompris and KDE Education suites.</p>

<p>I warned him that there were issues connecting third party hardware (GPS, Phones etc), but he could see the benefits and felt able to cope with them.</p>

<!--more-->

<p>Then:</p>

<ul>
  <li>Q. <em>“Will it work with my iPod?”</em></li>
  <li>A. “Yes, really well - I have mine working in Amarok - no problem at all.”</li>
  <li>Q. <em>“Will I still be able to use iTunes?”</em></li>
  <li>A. “No, but there are some great music players on Linux.” (slight feeling of trepidation)</li>
  <li>Q. <em>“Do they link up to the iTunes website?”</em></li>
  <li>A. “Eh, no” (I can see where this is going)</li>
  <li>Q. <em>“Is there an alternative comparable download site?”</em></li>
  <li>A. “Yes I think Napster is similar” (hoping I wouldn’t be proved wrong)</li>
  <li>Q. <em>“Presumably I can transfer all my iTunes purchased music over to Linux?”</em></li>
  <li>A. Silence (except for the thumping as my head hit my desk repeatedly)</li>
</ul>

<p>Yours somewhat depressed.</p>

       ]]>
      </description>
    </item>
    
    <item>
      <title>Edubuntu LTSP via Wireless Laptop Again</title>
      <link>https://chrisjrob.com/2008/07/09/edubuntu-ltsp-via-wireless-laptop-again/</link>
      <pubDate>Wed, 09 Jul 2008 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2008/07/09/edubuntu-ltsp-via-wireless-laptop-again</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/buffalo-wireless-controller.jpg" align="right" alt="Featured Image">
         
         <p>My <a href="https://www.dabs4work.com/productview.aspx?QuickLinx=3XB9">Buffalo Wireless Ethernet Controller WLI-TX4-G54HP-1</a> arrived today, so I eagerly installed it at home.  As usual there is no configurator for Linux, so you have to use the web-admin page, this requires you to connect via a wired port configured for the same network 1.1.1.0/24.  Once done it was very simple to configure - I gave it a static IP (not sure whether that was really required) and rebooted into Edubuntu.</p>

<!--more-->

<p>Very straightforward, but the performance, whilst infinitely better than my old Lucent Ethernet Converter, was less than stunning.  Launching Gcompris, struggled with the music, but once the music was switched off the moving images and sound seemed fine.  Gnome seems a little sluggish at times, but probably quicker than my ageing Dell Inspiron 8200 is normally!</p>

<p>I guess I would describe performance of Edubuntu via Wireless as satisfactory - but if you require sound/video I think you’ll struggle.  That said it is a useful additional method of accessing LTSP and will no doubt have its place at work, e.g. ad-hoc workstations.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>A frustrating day</title>
      <link>https://chrisjrob.com/2008/07/08/a-frustrating-day/</link>
      <pubDate>Tue, 08 Jul 2008 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2008/07/08/a-frustrating-day</guid>
      <description>
       <![CDATA[
         
         <p>Just when I thought I’d got our LTSP server running sweetly, I received a number of complaints from users complaining about poor performance on the Windows applications, in particular Internet Explorer.  It seemed that almost everyone had three or more IE windows open, all for sites that can only be accessed via IE.  Many of the users weren’t at their desks, but despite this IE still managed to consume massive amounts of CPU.  The Windows server was topping out and performance was suffering as a result.  I managed to log off a couple of disconnected users, which helped.  Needless to say, blaming Microsoft didn’t cut much mustard.</p>

<!--more-->

<p>Then one user, running a simple shell application using kdialog, started seeing kdialog sessions spiralling wildly out of control, in the end we had hundreds, possibly thousands, of kdialogs running.  It transpired that the application was supposed to talk to the user’s scanner, but couldn’t and therefore kept forking another error message ad infinitum.</p>

<p>So the day ended with two additional items for my to-do list:</p>

<ol>
  <li>Fix scanning</li>
  <li>Sort out Windows load</li>
</ol>

<p>On the plus side I did manage to get somewhere with a long-standing issue of <a href="/2009/03/21/open-multipage-tiffs-in-kde/">open multipage tiffs in kde</a>.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>LTSP | Edubuntu via Wireless Laptop</title>
      <link>https://chrisjrob.com/2008/07/07/edubuntu-via-wireless-laptop/</link>
      <pubDate>Mon, 07 Jul 2008 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2008/07/07/edubuntu-via-wireless-laptop</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/lucent-ethernet-converter.jpg" align="right" alt="Featured Image">
         
         <p>Tonight I installed edubuntu-desktop from the <a href="https://www.edubuntu.org">Edubuntu</a> add-ons CD - didn’t take very long and very pretty it was too, once I rebooted.</p>

<p>Next I wanted to see if I could get my laptop working wirelessly.  I had an old Lucent Wireless Ethernet Converter, sadly only a 10-base-T model.  Configured it with a static IP address, and attached it to my laptop’s network port.  Rebooted and, joy of joys, it immediately PXE booted off the Edubuntu server.</p>

<!--more-->

<p>Unfortunately it was painfully slow, but nevertheless a great proof of concept for Wireless access to LTSP.</p>

<p>Now I just need to order a decent modern Wireless bridge and hopefully we’ll have decent wireless LTSP!</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Ubuntu LTSP - how the other half live?</title>
      <link>https://chrisjrob.com/2008/07/06/ubuntu-ltsp-how-the-other-half-live/</link>
      <pubDate>Sun, 06 Jul 2008 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2008/07/06/ubuntu-ltsp-how-the-other-half-live</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/edubuntu_8.04.png" align="right" alt="Featured Image">
         
         <p>Having a brand new HP ML115 Server which I bought new for £107, I decided to have a play with <a href="http://www.ubuntu.com/">Ubuntu</a> LTSP at home.  Actually I decided on <a href="https://www.edubuntu.org/">Edubuntu</a>, as I wanted to investigate the thin client management which I believe are included.</p>

<p>I downloaded the <a href="http://www.ubuntu.com/download/alternative-downloads">Ubuntu Alternate CD</a> and burned it to disk.  I booted the server onto the CD, missed the fact that I needed to hit F4 Modes and select LTSP before selecting install, whereon I wasted an hour installing Ubuntu-ordinaire.</p>

<!--more-->

<p>Second attempt was pretty straightforward, but, only having a single network card, it warned me to edit <code class="language-plaintext highlighter-rouge">/etc/ltsp/dhcpd.conf</code>.  Booted into Ubuntu without a problem and opened my router’s web interface and cribbed the DHCP settings and DNS settings into <code class="language-plaintext highlighter-rouge">/etc/ltsp/dhcpd.conf</code>.  Switched off the DHCP on my router.  Set-up the server static IP address via the Gnome network manager.  Restarted DHCP with <code class="language-plaintext highlighter-rouge">/etc/init.d/dhcp3-server restart</code>.</p>

<p>Tested a client and got the “workstation not authorized”.</p>

<p>Ran <code class="language-plaintext highlighter-rouge">sudo ltsp-update-sshkeys</code> and <code class="language-plaintext highlighter-rouge">sudo ltsp-update-image</code>, rebooted the client and it worked beautifully, by which I mean that the laptop’s full 1600x1200 resolution was detected, and sound kicked in immediately.</p>

<p>So, even with the false starts, I managed to install a working Ubuntu LTSP server with all the bells and whistles in two and a half hours.  And I could have done it at least an hour quicker than that.  I know Ubuntu come in for some criticism, but that really is impressive usability.  To be fair, I was helped by having knowledge of LTSP, DHCP, and Debian, but supposedly a second network card would have enabled the whole kit-and-kaboodle to work out of the box.</p>

<p>Tomorrow I will have a crack at installing the Edubuntu-Desktop!</p>

<p>Good night.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>LTSP | LTSP 4.2 or LTSP 5</title>
      <link>https://chrisjrob.com/2008/07/05/ltsp42-or-ltsp5/</link>
      <pubDate>Sat, 05 Jul 2008 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2008/07/05/ltsp42-or-ltsp5</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/ltsp_logo.png" align="right" alt="Featured Image">
         
         <p>Having agonised about the correct version of LTSP to install, chosen the wrong one, and upgraded, I thought it would be worthwhile to type up my thoughts on the subject. There are two versions of LTSP currently available:</p>

<ul>
  <li>LTSP4.2</li>
  <li>LTSP5</li>
</ul>

<p>If you visit the LTSP website, then you can’t help but notice that <em>all</em> the information is on LTSP4.2.  If you do some Googling about LTSP5, you will quickly determine that LTSP5 is full of problems, at an early stage of development and best avoided.</p>

<p>Wrong, wrong, wrong.  You are just about to make a mistake.</p>

<!--more-->

<p>In fact LTSP5 is the current version and has been since 2006.  Indeed, if you try and seek any help in respect of version 4.2, and you will invariably get the response - <em>“LTSP4.2 is obsolete, unmaintained and you are an idiot to have installed it”</em>.</p>

<p>Okay I exaggerate, but not by much!  If you <em>do</em> install 4.2, at some point you are going to want to update the client.  Well that requires LBE (read the Wiki for details) - then you will hit the problem that LBE is broken and will not install.  You’ll ask for help and the response you will receive is pretty much as above.</p>

<p>Good luck sorting <em>that</em> little problem out, for myself I upgraded to LTSP5 (see <a href="/2010/06/25/ltsp5-upgrade/">LTSP5 Upgrade</a>) and I have never looked back.  The client is up-to-date and configurable, the local devices work, sound works, and little fluffy bunny rabbits nibble the grass while the sun shines.</p>

<p>In short all his just fine and dandy in the world of LTSP5.  Always assuming it’s been packaged for your distro, it has for Debian and Ubuntu, for the rest you’ll need to make your own enquiries.</p>

<h2 id="what-you-can-expect-from-ltsp42">What you can expect from LTSP4.2</h2>

<h3 id="positives">Positives</h3>

<p>A working reliable system.  Sound (see <a href="/2009/03/21/ltsp4.2-sound/">LTSP4.2 Sound</a>).  Local Devices that appear on the desktop when you plug them in.  Works particularly well for older clients (Pentium II with 32mb RAM).</p>

<h3 id="negatives">Negatives</h3>

<p>Expect to fight any PC built in the last two or three years.  Expect to have battles getting sound working on your clients (usually solvable, usually you have wounds to lick afterwards).  I am told that USB keys don’t work quite as well, although I never found any problem in this area.  Indeed I managed to get USB keys working better under LTSP4.2 than I have subsequently managed to do in LTSP5.</p>

<h2 id="what-you-can-expect-from-ltsp5">What you can expect from LTSP5</h2>

<p>A system that pretty much works as you expect.  Sound was simple to configure and works well.  Scanning took a little bit of working out - see <a href="/2009/11/18/ltsp5-scanning/">LTSP Scanning</a>.
Local devices work just fine (with the exception of some incorrectly partitioned devices).  The client system works very well, although I am still learning exactly how it all hangs together.  Newer PCs work perfectly, and all but the oldest PCs seem fine.  The ones I did have to get rid of were no great loss; but if you feel differently then I understand it is technically possible to install LTSP4.2 and LTSP5 on the same server, and get the benefits of each.  You’ll need to search the LTSP Mailing List to find out how.</p>

<p>I understand that it is even conceivable to deliver a full-blown desktop client system - although you need LDAP on your network to enable client logon.  Again, search the LTSP Mailing List for details.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Konica Minolta C250 Printing Problems</title>
      <link>https://chrisjrob.com/2008/07/05/konica-minolta-c250-printing-problems/</link>
      <pubDate>Sat, 05 Jul 2008 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2008/07/05/konica-minolta-c250-printing-problems</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/c250.png" align="right" alt="Featured Image">
         
         <h2 id="the-issue">The Issue</h2>

<p>From Linux, only simple print jobs will print, more complicated print jobs never come through, the data light flashes indefinitely and the photocopier needs to be rebooted.</p>

<p>We have tried various drivers from Konica Minolta, including C250, C252 and C253, but with no improvement.</p>

<!--more-->

<p>In particular we have problems printing PDFs and wep-pages in Iceweasel.  Web-pages in Konqueror seem okay, which makes you think that the problem is with the non-KDE applications, but the PDFs that won’t print from Acrobat Reader, also won’t print from KPDF.</p>

<h2 id="progress">Progress</h2>

<p>I am fortunate in having some help from <a href="http://www.thamesgroup.com/">Transcribe Thames</a>.  Simon has set-up an Ubuntu desktop and has proved that he can print fine to a C250.  Simon felt that the only difference between our two set-ups was the fact that we still had windows active directory LDAP authentication on it.  I have today removed, but printing is not improved.</p>

<h2 id="next-step">Next Step</h2>

<p>Simon has asked me to try again on a fresh Ubuntu desktop.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Changes to the website</title>
      <link>https://chrisjrob.com/2008/07/05/changes-to-the-website/</link>
      <pubDate>Sat, 05 Jul 2008 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2008/07/05/changes-to-the-website</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/ltsp_logo.png" align="right" alt="Featured Image">
         
         <p>I can’t believe a week has passed, with no blog entry.  Apologies.</p>

<p>This week I have added my About Linux and About Windows pages, including Why Linux and Protecting your Windows PC.  I hope that these pages will help users to recognise the issues running Windows systems and consider using Linux instead.  I have also moved my Windows for Linux page under the About Linux.  Still don’t think I have the site layout quite right yet, so don’t be surprised if they all move around again!</p>

<!--more-->

<p>This week has seen a big push to get our last Windows users over to LTSP.  It’s gone pretty well, although we still have problems printing to our <a href="/2008/07/05/konica-minolta-c250-printing-problems/">Konica Minolta C250 photocopier</a>.  I have three users remaining, all three of which will prove the greatest challenge, but also the greatest opportunity - in some ways they have the most to gain from Linux.  They just don’t know it yet!</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Using Amarok as your Podcasting Client</title>
      <link>https://chrisjrob.com/2008/06/30/using-amarok-as-your-podcasting-client/</link>
      <pubDate>Mon, 30 Jun 2008 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2008/06/30/using-amarok-as-your-podcasting-client</guid>
      <description>
       <![CDATA[
         
         <p>Until I stumbled across <a href="http://www.newlinuxuser.com/howto-use-amarok-to-listen-to-podcasts/">this page</a> I was using <a href="http://www.kesiev.com/kittyguide/home/">Kitty</a> to download Podcasts and <a href="http://amarok.kde.org/">Amarok</a> to manage them thereafter.  Unfortunately I could not get on with Kitty and it is no longer being developed.  In any case, you really only want one application.</p>

<p>So I went hunting for an alternative to Amarok that would handle Podcasts, only to discover that Amarok itself supports Podcasts.  Basically all you need to do is under Playlists → Podcasts right-click and Add Podcast, but <a href="http://www.newlinuxuser.com/howto-use-amarok-to-listen-to-podcasts/">this link</a> explains in more detail.</p>

<!--more-->

<p>In every other respect Amarok was perfect, so I could not be more delighted.  Well done <a href="http://amarok.kde.org/">Amarok</a>!</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>LTSP | Scanning</title>
      <link>https://chrisjrob.com/2008/06/24/ltsp-scanning/</link>
      <pubDate>Tue, 24 Jun 2008 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2008/06/24/ltsp-scanning</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/ltsp_logo.png" align="right" alt="Featured Image">
         
         <p>Since upgrading to LTSP5, our scanning has ceased to work.  I have created a Work in Progress page called <a href="/2009/11/18/ltsp5-scanning/">LTSP5 Scanning</a>.  Having worked through the instructions contained on that page, scanning is still not working.  The logs show that the request <code class="language-plaintext highlighter-rouge">scanimage -L</code> is being detected by the client and the client is confirming that the LTSP server has permission, but it is then failing with:</p>

<!--more-->

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Jun 24 12:16:55 juno scanimage: unable to open /var/run/hplip/hpssd.port: No such file or directory: prnt/hpijs/hplip_api.c 94
Jun 24 12:16:55 juno scanimage: unable to connect hpssd socket 50002: Connection refused: prnt/hpijs/hplip_api.c 719
</code></pre></div></div>

<p>Not realising that HP had any involvement in scanning on Linux, I assumed that this was a port conflict with some utilities installed on our HP server, but reading into the matter further I believe that this is because the client has detected that the scanner is an HP model and has attempted to run an HP scan utility that is not installed on the client.  Just guesses, if you have any ideas, please contact me.  Any useful messages will be posted here!</p>

       ]]>
      </description>
    </item>
    
    <item>
      <title>LTSP | About LTSP</title>
      <link>https://chrisjrob.com/2008/06/24/about-ltsp/</link>
      <pubDate>Tue, 24 Jun 2008 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2008/06/24/about-ltsp</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/ltsp_logo.png" align="right" alt="Featured Image">
         
         <h2 id="what-is-the-linux-terminal-server-project-ltsp">What is the Linux Terminal Server Project (LTSP)</h2>

<p>If you come from a Windows background, you may be familiar with Windows Terminal Services and/or Citrix.  Windows Terminal Services basically enables users from different clients to connect to servers and work concurrently on them using the RDP (Remote Desktop) protocol.  Perhaps you’ve connected to your work PC using Remote Desktop - it’s the same thing, just Terminal Services just allows multiple users to connect concurrently.  Citrix is just the same, but uses the ICA protocol.</p>

<!--more-->

<p>Big Deal.  All Linux machines are inherently multi-user machines and all Linux machines can accept concurrent connections, either using X directly, or using <code class="language-plaintext highlighter-rouge">ssh -XC ~serverip~</code> (the -X switch enables the X-forwarding so that you have a GUI and the -C switch compresses the data stream which generally improves performance, particularly over low-bandwidth connections).</p>

<p>LTSP goes a massive step further, in that it actually serves a complete operating system to the client.  This means that the client hardware does not require a host operating system, or even a hard drive; instead the client PXE boots over the network, downloading the operating system, installs it, configures it, boots it, and finally runs a login manager to provide a secure login to the server.</p>

<p>In contrast, a Windows thin client usually includes a flash disk with a local operating system.  LTSP does not need this, all LTSP requires is a PXE compatible network card and a pretty minimal amount of RAM and CPU (a Pentium II with 64mb is probably the minimum required).</p>

<h2 id="benefits-of-ltsp">Benefits of LTSP</h2>

<ul>
  <li>Performance
    <ul>
      <li>LTSP requires around half the processing power - for same performance as Windows Server
        <ul>
          <li>See Server Sizing for more information</li>
        </ul>
      </li>
      <li>LTSP requires around half the memory - for same load as Windows Server
        <ul>
          <li>See Server Sizing for more information</li>
        </ul>
      </li>
      <li>LTSP doesn’t require on-access virus scanning - because Linux is inherently secure</li>
      <li>LTSP runs fast on Pentium II hardware (say Pentium III for LTSP5)</li>
      <li>LTSP clients boot fast</li>
    </ul>
  </li>
  <li>Reliability
    <ul>
      <li>LTSP will run for longer between reboots - months not weeks</li>
      <li>PC hard disks can be removed to enable silent running</li>
    </ul>
  </li>
  <li>Simplicity
    <ul>
      <li>No host operating system - boots Linux directly over the network</li>
    </ul>
  </li>
  <li>Functional
    <ul>
      <li>Attractive modern desktop</li>
      <li>Copes with sound and video (depending on client hardware)</li>
      <li>Copes with local CDROM and flash memory (depending on client hardware)</li>
    </ul>
  </li>
  <li>Cost
    <ul>
      <li>No need for wholesale PC replacement</li>
      <li>Hardware-only cost</li>
      <li>Can afford to over-spec the servers for phenomenal performance</li>
    </ul>
  </li>
</ul>

<h2 id="problems-with-ltsp">Problems with LTSP</h2>

<ul>
  <li>Requires a fast-Ethernet or Gigabit network - Install FreeNX for serving desktops to remote locations</li>
  <li>Incompatible with Windows applications - see Windows for Linux for guidance</li>
</ul>


       ]]>
      </description>
    </item>
    
    <item>
      <title>The Importance of Microsoft</title>
      <link>https://chrisjrob.com/2008/06/23/the-importance-of-microsoft/</link>
      <pubDate>Mon, 23 Jun 2008 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2008/06/23/the-importance-of-microsoft</guid>
      <description>
       <![CDATA[
         
         <p>The Linux world hates Microsoft.  This is not where I argue that Microsoft is
wonderful, but I would like to point out the self-interest that the Linux
community has in accepting the world as it is - with Microsoft as the dominant
player.  In particular, I am concerned about the bile that is reserved for any
Linux project that dares to implement Microsoft technology on Linux.</p>

<p>I include in this the Wine Project, Reactos and more recently Mono, even
OpenOffice’s attempts to mimic MS Office have come in for criticism.  Speaking
as someone who has put the Linux desktop into a company, I can tell you that
the biggest problem for me was in dealing with mission-critical applications
that are Windows-only.  The solution for us was virtualising a Windows 2003 server</p>
<ul>
  <li>Microsoft wins again.</li>
</ul>

<!--more-->

<p>I know, it’s our fault for choosing Windows software, well, here’s a newsflash,
most software is written for Windows, and there aren’t always Linux
alternatives.  You show me Linux-compatible motor-trade software or
Linux-compatible filling-station software.  You can’t - they doesn’t exist.
But - and here’s the crunch - I can show you .net applications in both those
markets, and I can show you software that works, to a fashion, under Wine.  If
these technologies can be properly implemented on Linux, then you make it a
whole lot easier for businesses to adopt Linux on the desktop.</p>

<p>And business is critical for Linux, because people are most familiar with the
operating system that they use at work; if that happens to be Linux, then they
are infinitely more likely to adopt Linux at home.  Once Linux is in the home,
then the whole family and, most importantly their children, are likely to adopt
Linux.  Thus the Linux snowball starts gaining momentum at last.  Once there
are a significant proportion of Linux users on the desktop, then developers
will start to worry about cross-platform, making it even easier to adopt Linux.</p>

       ]]>
      </description>
    </item>
    
    <item>
      <title>MD5 Checker</title>
      <link>https://chrisjrob.com/2008/06/23/md5-checker/</link>
      <pubDate>Mon, 23 Jun 2008 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2008/06/23/md5-checker</guid>
      <description>
       <![CDATA[
         
         <p>Linux includes “md5sum” utility for checking MD5 values of downloaded applications.  I find it a nuisance having to drop into a command shell and execute…</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ md5sum download.iso
</code></pre></div></div>

<p>And then manually compare with the author’s.  I have therefore written a simple KDE ServiceMenu to add MD5 checking.</p>

<!--more-->

<p>Simply <a href="https://github.com/chrisjrob/chrisjrob.github.io/blob/master/downloads/md5chk.tar.gz">download</a> and extract to <code class="language-plaintext highlighter-rouge">/home/*USERNAME*/.kde/share/apps/konqueror/servicemenus</code>.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>8a2965e228219d61c296029f0abe2eed  md5chk.tar.gz
</code></pre></div></div>


       ]]>
      </description>
    </item>
    
    <item>
      <title>LTSP | LDM password expiry problem</title>
      <link>https://chrisjrob.com/2008/06/23/ldm-password-expiry-problem/</link>
      <pubDate>Mon, 23 Jun 2008 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2008/06/23/ldm-password-expiry-problem</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/ltsp_logo.png" align="right" alt="Featured Image">
         
         <p>I have had my first user’s password expire since our <a href="/2010/06/25/ltsp5-upgrade/">LTSP5 Upgrade</a>.</p>

<ol>
  <li>User enters username and hits enter</li>
  <li>User enters password and hits enter</li>
  <li>LDM tells user password has expired enter new password</li>
  <li>User enters new password and hits enter</li>
  <li>LDM tells user to verify password</li>
  <li>User enters new password again and hits enter</li>
</ol>

<!--more-->

<p>And then it enters a crazy loop where it just continually prompts for the password.  If you reboot the client you start from the beginning again, so clearly the password change has not been accepted.  I confidently told user that he had obviously entered his password incorrectly - I then rebooted the client and did exactly the same myself.  I believe this could be a bug, and I suspect it may be related to the following thread:</p>

<ul>
  <li><a href="http://marc.info/?t=121069447400001&amp;r=1&amp;w=2">ldm problems with debian etch</a></li>
</ul>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Mobile Phones</title>
      <link>https://chrisjrob.com/2008/06/21/mobile-phones/</link>
      <pubDate>Sat, 21 Jun 2008 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2008/06/21/mobile-phones</guid>
      <description>
       <![CDATA[
         
         <p>Our MD has once again brought up the thorny subject of which mobile phone to buy, in order to be certain of being able to synchronise with KDE Kontact.  Oh, if only life under Linux was that simple.  I believe the best solution is to replace our mail server with an Cyrus IMAP server and implement <a href="http://www.funambol.com/solutions/devices.php">Funambol</a>, and aim to synchronise the mobile phones with that.  To that end I referred him to <a href="http://www.funambol.com/solutions/devices.php">this page</a>.</p>

<!--more-->

<p>His preferred solution would be an Apple iPhone or possibly a Blackberry, both of which would appear to be supported under Funambol.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>LTSP | Sound on Compaq ENSFF PCs</title>
      <link>https://chrisjrob.com/2008/06/21/ltsp-sound-on-compaq-ensff-pcs/</link>
      <pubDate>Sat, 21 Jun 2008 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2008/06/21/ltsp-sound-on-compaq-ensff-pcs</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/ltsp_logo.png" align="right" alt="Featured Image">
         
         <p>We have a number of Compaq Deskpro ENSFF P450s for which sound stopped working since our <a href="/2010/06/25/ltsp5-upgrade/">LTSP5 Upgrade</a>.  I spent some time this morning solving this problem and have detailed <a href="#configure-compaq-deskpro-ensff-for-ltsp5-sound">my solution below</a>.</p>

<p>The bulk of the fix was simply changing <code class="language-plaintext highlighter-rouge">SMODULE_01</code> to <code class="language-plaintext highlighter-rouge">MODULE_01</code> in LTS.conf, although this particular PC was a little more involved.</p>

<!--more-->

<h2 id="configure-compaq-deskpro-ensff-for-ltsp5-sound">Configure Compaq Deskpro ENSFF for LTSP5 Sound</h2>

<h3 id="introduction">Introduction</h3>

<p>We have a number of Compaq Deskpro EN-SFF P450 PCs.  These are small-form-factor Pentium IIIs with Compaq quality.  I believe these have the ESS1869 soundcard.</p>

<p><strong>The BIOS settings on our PCs are io=0x220 irq=5 dma=1 dma16=5; your settings may be different!</strong></p>

<h2 id="ltsp42">LTSP4.2</h2>

<p>They worked flawlessly under LTSP4.2 with the following LTS.conf configuration:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SMODULE_01         = "snd-es18xx irq=5"
</code></pre></div></div>

<p>Since upgrading to LTSP5, sound has ceased to function.</p>

<h2 id="testing">Testing</h2>

<p>I booted the client and typed [Ctrl]+[Alt]+[F1] to bring up the client console and typed:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># lsmod | grep snd
</code></pre></div></div>

<p>Which returned nothing, showing that sound was definitely not loaded (no surprise there!).</p>

<p>Next I tried typing:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># modprobe snd-es18xx
ESS AudioDrive ES18xx soundcard not found or device busy
FATAL: Error inserting snd_es18xx (/lib/modules/2.6.18-6-486/kernel/sound/isa/snd-es18xx.ko): No such device
</code></pre></div></div>

<h2 id="research">Research</h2>

<table>
  <tbody>
    <tr>
      <td>Next I Googled “(ltsp5</td>
      <td>edubuntu) snd-es18xx” which produced the following thread:</td>
    </tr>
  </tbody>
</table>

<ul>
  <li>http://ubuntuforums.org/showthread.php?t=148077</li>
</ul>

<p>This was not specific to LTSP5, nevertheless it gave a useful configuration:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>/etc/modprobe.d/alsa-base

alias char-major-116 snd
alias snd-card-0 snd-es18xx
options snd-es18xx index=0 enable=1 isapnp=0 port=0x220 mpu_port=0x388 fm_port=0x330 irq=5 dma1=1 dma2=0

alias char-major-14 soundcore
alias sound-slot-0 snd-card-0

alias sound-service-0-0 snd-mixer-oss
alias sound-service-0-1 snd-seq-oss
alias sound-service-0-3 snd-pcm-oss
alias sound-service-0-8 snd-seq-oss
alias sound-service-0-12 snd-pcm-oss
</code></pre></div></div>

<p>In particular the following line looked useful:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>options snd-es18xx index=0 enable=1 isapnp=0 port=0x220 mpu_port=0x388 fm_port=0x330 irq=5 dma1=1 dma2=0
</code></pre></div></div>

<p>Still in the client console I typed:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># modprobe snd-es18xx index=0 enable=1 isapnp=0 port=0x220 mpu_port=0x388 fm_port=0x330 irq=5 dma1=1 dma2=0
</code></pre></div></div>

<p>And the sound module loaded fine.  I then ran:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># speaker-test
speaker-test 1.0.13
Playback device is default
Stream parameters are 48000Hz, S16_LE, 1 channels
Using 16 octaves of pink noise
...
</code></pre></div></div>

<p>And sound was working fine.</p>

<h2 id="ltsconf">LTS.conf</h2>

<p>So obviously all we need to do is to set in LTS.conf and we should be sorted:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SMODULE_01         = "snd-es18xx index=0 enable=1 isapnp=0 port=0x220 mpu_port=0x388 fm_port=0x330 irq=5 dma1=1 dma2=0"
</code></pre></div></div>

<p>But no joy!  Thinking that the issue was with an incompatibility with one of the above switches and LTSP, I experimented with removing all the switches and just adding some back; the aim being to end up with a minimal set of switches that worked.  On a hunch I tried:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># modprobe snd-es18xx isapnp=0
</code></pre></div></div>

<p>And the speaker-test worked.  Adding this to LTS.conf</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SMODULE_01         = "snd-es18xx isapnp=0"
</code></pre></div></div>

<p>And it <em>still</em> didn’t work.  For some reason, that I cannot find documented, SMODULE is no longer working, and needs replacing with MODULE - thus:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>MODULE_01         = "snd-es18xx isapnp=0"
</code></pre></div></div>

<p>All now working.</p>

       ]]>
      </description>
    </item>
    
    <item>
      <title>Big Buck Bunny</title>
      <link>https://chrisjrob.com/2008/06/19/big-buck-bunny/</link>
      <pubDate>Thu, 19 Jun 2008 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2008/06/19/big-buck-bunny</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/big-buck-bunny.jpg" align="right" alt="Featured Image">
         
         <p>Finally managed to find the time to watch Big Buck Bunny.   Big Buck Bunny tells the story of a giant rabbit with a big heart. When one sunny day three rodents rudely harass him, something snaps, and…</p>

<!--more-->

<ul>
  <li><a href="http://www.bigbuckbunny.org">Visit Big Buck Bunny</a></li>
  <li><a href="http://youtu.be/YE7VzlLtp-4">Watch on YouTube</a></li>
</ul>

<p>It’s not <em>quite</em> Pixar, but it’s definitely impressive for a volunteer project using free open-source software.  Superb.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>LTSP | Sound problem fixed</title>
      <link>https://chrisjrob.com/2008/06/18/sound-problem-fixed/</link>
      <pubDate>Wed, 18 Jun 2008 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2008/06/18/sound-problem-fixed</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/ltsp_logo.png" align="right" alt="Featured Image">
         
         <p>Further to <a href="/2008/06/17/ltsp-sound-in-rdesktop-sessions/">my recent post</a>, it transpired that rdesktop uses <code class="language-plaintext highlighter-rouge">/dev/dsp</code> which is incompatible with alsa.  Specifying “oss” as the sound driver, instead of the default, worked fine.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ padsp rdesktop -r sound:local:oss 192.168.0.1
</code></pre></div></div>

<!--more-->

<p>This is apparently because rdesktop version 1.5 does not support alsa, but still uses <code class="language-plaintext highlighter-rouge">/dev/dsp</code> as the sound device.  A new version 1.6 of rdesktop is now available (albeit not in the debian etch or etch-backports repositories), which should address this issue.  Unfortunately we are using a patched version of rdesktop, provided by fontis, and I know they were struggling to integrate their patches into the latest versions.  I should probably attempt to contact them at some point.</p>

<p>This also represented my first attempt at using IRC #ltsp - which proved invaluable.  Installed Konversation, as I could not get on with Kirc.</p>

       ]]>
      </description>
    </item>
    
    <item>
      <title>LTSP | Sound in rdesktop sessions</title>
      <link>https://chrisjrob.com/2008/06/17/ltsp-sound-in-rdesktop-sessions/</link>
      <pubDate>Tue, 17 Jun 2008 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com ()</author>
      <guid>https://chrisjrob.com/2008/06/17/ltsp-sound-in-rdesktop-sessions</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/ltsp_logo.png" align="right" alt="Featured Image">
         
         <p>Today I discovered that since our upgrade to LTSP5, sound has stopped working in rdesktop sessions.  Worse, it bombs users out of their Windows session with the error:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>rdesktop: pcm_params.c:2351: sndrv_pcm_hw_params: Assertion `err &gt;= 0' failed.
Aborted
</code></pre></div></div>

<!--more-->

<p>Under 4.2 it was working beautifully simply by prefixing rdesktop with esddsp, 
e.g.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ esddsp rdesktop -r sound:local 192.168.0.1
</code></pre></div></div>

<p>But removing esddsp or replacing with padsp causes exactly the same error 
message.  I suspect with alsa the esddsp/padsp fix is no longer required, but 
why does it not work?</p>

<p>I have even tried pointing padsp at the client pulseaudio device…</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ padsp -d -s 192.168.0.41:4713 -n rdesktop rdesktop -r sound:local 192.168.0.1
</code></pre></div></div>

<p>I have posted this as <a href="http://sourceforge.net/p/ltsp/mailman/message/19679055/">a question on the LTSP Mailing List</a> and am hopeful of a solution!</p>


       ]]>
      </description>
    </item>
    

  </channel> 
</rss>
