<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>en.credativ blog: Category Debian</title>
    <link rel="alternate" type="text/html" href="http://blog.credativ.com/en/" />
    <link rel="self" type="application/atom+xml" href="http://blog.credativ.com/en/atom.xml" />
    <id>tag:blog.credativ.com,2010-03-05:/en//2</id>
    <updated>2011-02-13T03:01:14Z</updated>
    <subtitle>All about Linux and Open Source</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type 4.34-en</generator>

<entry>
    <title>Changing Windows Internet Shortcut (*.url) files into GNOME desktop files</title>
    <link rel="alternate" type="text/html" href="http://blog.credativ.com/en/2011/02/changing-windows-internet-shortcut-url-files-into-gnome-desktop-files.html" />
    <id>tag:blog.credativ.com,2011:/en//2.197</id>

    <published>2011-02-13T02:12:12Z</published>
    <updated>2011-02-13T03:01:14Z</updated>

    <summary> Recursively finding Windows Internet Shortcut (*.url) files and changing them into GNOME desktop files Over the past few days I have finally converted my wife&apos;s computer from WinXP to Linux (Ubuntu 10.10). One of the many fine points of...</summary>
    <author>
        <name>Joe Conway</name>
        <uri>http://www.credativ.us</uri>
    </author>
    
        <category term="Debian" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Linux" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Open Source" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Tip" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="bashlinuxubuntudebianshelldesktop" label="bash linux ubuntu debian shell desktop" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://blog.credativ.com/en/">
        <![CDATA[<p><img alt="tux.jpg" src="http://blog.credativ.com/en/static/tux.jpg" width="86" height="102" class="mt-image-right" style="float: right; margin: 0 0 20px 20px;" /><br />
<em>Recursively finding Windows Internet Shortcut (*.url) files and changing them into GNOME desktop files</em></p>

<p>Over the past few days I have finally converted my wife's computer from WinXP to Linux (Ubuntu 10.10). One of the many fine points of the negotiation leading to this was that I needed to preserve her <em>many</em> Internet Shortcut files. Since she has literally thousands of them, and they are sprinkled about in many a nested folder, I needed a script that could find them, and create the equivalent GNOME desktop files. The following is my solution. Perhaps not the most elegant way to achieve these ends, but it worked great for me. However I cannot promise this script will not eat your files, so please test and use at your own risk ;-)</p>

<p>Create the following script (e.g. using vi)</p>
<pre class='brush: text'>
vi /usr/local/bin/fix_url.sh
</pre><p></p>

<p>Put the following in fix_url.sh (press "i", and then type or paste):</p>
<pre class='brush: text'>
#!/bin/bash

(
    IFS=$'\n'
    files=$(find . -name *.url)
    for fl in $files; do
        NEWFILE=${fl}.desktop
        cp &quot;${fl}&quot; &quot;${NEWFILE}&quot;
        sed -i 's/InternetShortcut/Desktop\ Entry/g' &quot;${NEWFILE}&quot;
        sed -i '/^\[DEFAULT\]/d' &quot;${NEWFILE}&quot;
        sed -i '/^BASEURL/d' &quot;${NEWFILE}&quot;
        sed -i '/^IconFile/d' &quot;${NEWFILE}&quot;
        sed -i '/^IconIndex/d' &quot;${NEWFILE}&quot;
        sed -i 's/\r$//' &quot;${NEWFILE}&quot;
        echo &quot;Type=Link&quot; &gt;&gt; &quot;${NEWFILE}&quot;
    done
)
</pre><p><br />
Save the file by typing ":x" if you used vi.</p>

<p>Make it executable:</p>
<pre class='brush: text'>
chmod +x /usr/local/bin/fix_url.sh
</pre><p></p>

<p>Test/run the new script. Do this first on an isolated test location, e.g. copy some Windows Internet Shortcut files to /tmp/windows_urls:</p>
<pre class='brush: text'>
cd /tmp
/usr/local/bin/fix_url.sh
</pre><p></p>

<p>Check out the resulting *.desktop files. Verify they look correct, and that they actually work when clicked from Nautilus, etc.</p>

<p>If completely satisfied, change to the root of the real directory tree and re-run the script.</p>

<p>When you are all finished, the original *.url files are still hanging around. If you want to get rid of them (again <em>test first</em>):</p>
<pre class='brush: text'>
cd /tmp
find . -name *.url -delete
</pre><p></p>

<p>Hope this helps someone else!<br />
</p>]]>
        
    </content>
</entry>

<entry>
    <title>[Howto] Debian preseed with Netboot</title>
    <link rel="alternate" type="text/html" href="http://blog.credativ.com/en/2010/07/howto-debian-preseed-with-netboot.html" />
    <id>tag:blog.credativ.com,2010:/en//2.172</id>

    <published>2010-07-23T11:00:00Z</published>
    <updated>2010-07-23T11:09:59Z</updated>

    <summary>The vast majority of Debian installations are simplified with the use of Preseeding and Netboot. Friedrich Weber, a school student on a work experience placement with us at our German office has observed the process and captured it in a...</summary>
    <author>
        <name>Irenie White</name>
        <uri>http://www.credativ.co.uk</uri>
    </author>
    
        <category term="Debian" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Howto" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Linux" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="credativ" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="credativ" label="credativ" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="debian" label="Debian" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="howto" label="howto" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="linux" label="Linux" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="preseed" label="preseed" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://blog.credativ.com/en/">
        <![CDATA[<p><img alt="debianlogo.png" src="http://blog.credativ.com/de/static/debianlogo.png" width="60" height="73" class="mt-image-right" style="float: right; margin: 0 0 20px 20px;" /><em>The vast majority of Debian installations are simplified with the use of Preseeding and Netboot. Friedrich Weber, a school student on a work experience placement with us at our German office has observed the process and captured it in a Howto here:</em></p>

<p>Imagine the following situation: you find yourself with ten to twenty brand new Notebooks and the opportunity to install them with Debian and customise to your own taste. In any case it would be great fun to manually perform the Debian installation and configuration on each Notebook. This is where <a href="http://d-i.alioth.debian.org/manual/en.i386/apb.html">Debian Preseed</a> comes into play.</p>

<p>The concept is simple and self-explanatory; usually, whoever is doing the installation will be faced with a number of issues during the process (e.g. language, partitioning, packages, Bootloader, etc.) In terms of Preseed, all of these issues can now be resolved. Only those which are not already accounted for in Preseed remain for the Debian installer.  In the ideal situation these would become apparent at the outset of the installation, where the solution would differ depending on the target system and which the administrator must deal with manually - only when these have been dealt with can the installation be left to run unattended. </p>

<p>Preseed functions on some simple inbuilt configuration data: <tt>preseed.cfg</tt>. It includes, as detailed above, the questions which must be answered during installation, and in <a href="http://en.wikipedia.org/wiki/Debconf_(software_package)">debconf</a>-format. Data such as this consists of several rows, each row of which defines a debconf configuration option - a response to a question - for example:<br />
 </p>
<pre class='brush: text'>
    d-i debian-installer/local	string de_DE.UTF-8
</pre><p></p>

<p>The first element of these lines is the name of the package, which is configured (d-i is here an abbreviation of debian installer), the second element is the name of the option, which is set, as the third element of the type of option (a string) and the rest is the value of the option. In this example, we set the language to German using UTF-8-coding.</p>

<p>You can put lines like this together yourself, even simpler with the tool <tt>debconf-get-selections</tt>: these commands provide straight forward and simple options, which can be set locally.  From the selection you can choose your desired settings, adjusted if necessary and copied into <tt>preseed.cfg</tt>.</p>

<p>Here is an example of <tt>preseed.cfg</tt>:<br />
</p>
<pre class='brush: text'>
    d-i debian-installer/locale string de_DE.UTF-8
    d-i debian-installer/keymap select de-latin1
    d-i console-keymaps-at/keymap select de
    d-i languagechooser/language-name-fb select German
    d-i countrychooser/country-name select Germany
    d-i console-setup/layoutcode string de_DE

    d-i clock-setup/utc boolean true
    d-i time/zone string Europe/Berlin
    d-i clock-setup/ntp boolean true
    d-i clock-setup/ntp-server string ntp1

    tasksel tasksel/first multiselect standard, desktop, gnome-desktop, laptop
    d-i pkgsel/include string openssh-client vim less rsync
</pre><p></p>

<p>In addition to language and timezone settings, selected tasks and packages are also set with these options.  If left competely unattended, the installation will not complete, but will make a good start.</p>

<p>Now onto the question of where Preseed pulls its data from. It is in fact possible to use Preseed with CD and DVD images or USB sticks, but generally more comfortable to use a Debian Netboot Image, essentially an installer, which is started across the network and which can cover its Preseed configuration. This boot across the network is implemented with <a href="http://wikipedia.org/wiki/Preboot_Execution_Environment">PXE</a> and requires a system that can boot from a network card.</p>

<p>Next,  the system depends on booting from the network card. It travels from a DHCO server to an IP address per broadcast. This DHCP server transmits not only a suitable IP, but also to the IP of a so-called Bootserver. A Bootserver is a <a href="http://wikipedia.org/wiki/Trivial_File_Transfer_Protocol">TFTP-Server</a>, which provides a Bootloader to assist the Administrator with the desired Debian Installer. At the same time the Debian Installer can be shared with the Boot options that Preseed should use and where he can find the Preseed configuration. Here is a snippet of the PXELINUX configuration data <tt>pxelinux.cfg/default</tt>:<br />
</p>
<pre class='brush: text'>
    label i386
        kernel debian-installer/i386/linux
        append vga=normal initrd=debian-installer/i386/initrd.gz netcfg/choose_interface=eth0 domain=example.com locale=de_DE debian-installer/country=DE debian-installer/language=de debian-installer/keymap=de-latin1-nodeadkeys console-keymaps-at/keymap=de-latin1-nodeadkeys auto-install/enable=false preseed/url=http://$server/preseed.cfg DEBCONF_DEBUG=5 -- quiet 
</pre><p></p>

<p>When the user types <tt>i386</tt>, the tt>debian-installer/i386/linux</tt> kernel (found on the TFTP server) is downloaded and run. This is in addition to a whole load of bootoptions given along the way. The debian installer allows the provision of debconf options as boot parameters. It is good practice for the installer to somehow communicate where to find the Preseed communication on the network (<tt>preseed/url</tt>). In order to download this Preseed configuration, it must also be somehow built into the network.  </p>

<p>The options for that will be handed over (the options for the hostnames would be deliberately omitted here, as every target system has its own Hostname). <tt>auto-install/enable</tt> would delay the language set up so that it is only enabled after the network configuration, in order that these installations are read through <tt>preseed.cfg</tt>. It is not necessary as the language set up will also be handed over to the kernel options to ensure that the network configuration is German.</p>

<p>The examples and configuration excerpts mentioned here are obviously summarised and shortened. Even so, this blog post should have given you a glimpse into the concept of Preseed in connection with netboot. Finally, here is a complete version of <tt>preseed.cfg</tt>:<br />
</p>
<pre class='brush: text'>
    d-i debian-installer/locale string de_DE.UTF-8
    d-i debian-installer/keymap select de-latin1
    d-i console-keymaps-at/keymap select de
    d-i languagechooser/language-name-fb select German
    d-i countrychooser/country-name select Germany
    d-i console-setup/layoutcode string de_DE

    # Network
    d-i netcfg/choose_interface select auto
    d-i netcfg/get_hostname string debian
    d-i netcfg/get_domain string example.com

    # Package mirror
    d-i mirror/protocol string http
    d-i mirror/country string manual
    d-i mirror/http/hostname string debian.example.com
    d-i mirror/http/directory string /debian
    d-i mirror/http/proxy string
    d-i mirror/suite string lenny

    # Timezone
    d-i clock-setup/utc boolean true
    d-i time/zone string Europe/Berlin
    d-i clock-setup/ntp boolean true
    d-i clock-setup/ntp-server string ntp.example.com

    # Root-Account
    d-i passwd/make-user boolean false
    d-i passwd/root-password password secretpassword
    d-i passwd/root-password-again password secretpassword

    # Further APT-Options
    d-i apt-setup/non-free boolean false
    d-i apt-setup/contrib boolean false
    d-i apt-setup/security-updates boolean true

    d-i apt-setup/local0/source boolean false
    d-i apt-setup/local1/source boolean false
    d-i apt-setup/local2/source boolean false

    # Tasks
    tasksel tasksel/first multiselect standard, desktop
    d-i pkgsel/include string openssh-client vim less rsync
    d-i pkgsel/upgrade select safe-upgrade

    # Popularity-Contest
    popularity-contest popularity-contest/participate boolean true

    # Command to be followed after the installation. `in-target` means that 
         the following
    # Command is followed in the installed environment, rather than in 
        the installation environment.
    # Here http://$server/skript.sh nach /tmp is downloaded, enabled and 
        implemented.
    d-i preseed/late_command string in-target wget -P /tmp/ http://$server/skript.sh; 
  in-target chmod +x /tmp/skript.sh; in-target /tmp/skript.sh
</pre><p></p>

<p>All Howtos of this blog are grouped together in the <a href="/en/howto/">Howto category</a> - and if you happen to be looking for <a href="http://www.credativ.co.uk/services/support/projects/linux-distributions/debian-gnulinux/">Support and Services for Debian</a> you've come to the right place at credativ.</p>]]>
        
    </content>
</entry>

<entry>
    <title>[Howto] RHCS: install on Debian</title>
    <link rel="alternate" type="text/html" href="http://blog.credativ.com/en/2010/05/howto-rhcs-install-on-debian.html" />
    <id>tag:blog.credativ.com,2010:/en//2.148</id>

    <published>2010-05-20T10:40:00Z</published>
    <updated>2010-05-25T10:10:26Z</updated>

    <summary>Following our earlier introduction to RHCS we now present a real world example: the installation of RHCS with Debian to provide certain virtual machines as services. Our RHCS overview already explained the basics of RHCS. This time we will take...</summary>
    <author>
        <name>Roland Wolters</name>
        <uri>http://www.credativ.de</uri>
    </author>
    
        <category term="Debian" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Howto" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Linux" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Open Source" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="RHEL/CentOS" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="credativ" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://blog.credativ.com/en/">
        <![CDATA[<p><img alt="tux.jpg" src="/de/static/tux.jpg" width="86" height="102" class="mt-image-right" style="float: right; margin: 0 0 20px 20px;" /><em>Following our earlier introduction to RHCS we now present a real world example: the installation of RHCS with Debian to provide certain virtual machines as services.</em></p>

<p>Our <a href="/en/2010/03/rhcs-an-introduction.html">RHCS overview</a> already explained the basics of RHCS. This time we will take two hosts with shared storage and provide KVM guests as services.</p>

<h3>Installation of the nodes</h3>
In this setup the nodes are the machines which are running KVM. Each running KVM guest is a service managed by RHCS. While installing the KVM hosts you should make sure you comply with the following suggestions:
<ul><li><tt>/tmp/</tt> and <tt>/var/</tt> should be running on different partitions, this improves performance.</li>
<li>Activate Debian backports, especially for the Kernel.</li>
<li>Make sure all IP addresses can be resolved in both directions - <tt>/etc/hosts</tt> helps here in worst case.</li>
<li>The host name must not resolve to <tt>127.0.0.1</tt>! You would only get problems with the Cluster Management System CMAN.</li>
<li><tt>/etc/hosts/</tt> and <tt>/etc/resolv.conf</tt> should be the same on all nodes.</li>
<li>Create password free ssh keys for all nodes and distribute them.</li>
<li>For ultimate performance it is best to install the latest Debian Linux kernel. In our example we used <tt>linux-image-2.6.32-bpo.2-amd64</tt>, which crashes the guest kernels >= 2.6.30. However, a patch is available, see <a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=573071">bug #573071</a>.</li>
<li>The network devices should be named in a way that makes sense, for example: <tt>rhcs-backbone</tt> and <tt>external</tt> instead of <tt>eth0</tt> and <tt>eth1</tt>.</li></ul>

<h3>Configuring the shared storage</h3>
As with almost any HA solution, a key element of RHCS is the shared storage which is accessed by all the nodes. In this example we take a "private" machine and install an iSCSI target on it:
<pre class='brush: plain'>
apt-get install iscsitarget iscsitarget-source 
echo 'ISCSITARGET_ENABLE=true' &gt; /etc/default/iscsitarget
m-a a-i iscsitarget
</pre><p><br />
Keep in mind that the iSCSI target must build properly, see <a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=566740">bug #566740</a>. The configuration of the shared storage is done via <tt>/etc/ietd.conf</tt>:</p>
<pre class='brush: plain'>
IncomingUser discovery_in YourSecurePwd1
OutgoingUser discovery_out YourSecurePwd2
Target YOURMACHINE:clvm1
       IncomingUser node_in YourSecurePwd1
       OutgoingUser node_out YourSecurePwd2
       Lun 0 Path=/dev/sdx1,Type=blockio
</pre><p><br />
On the nodes the same target must be accessed, so make sure <tt>/etc/iscsi/iscsid.conf</tt> is correct:</p>
<pre class='brush: plain'>
discovery.sendtargets.auth.authmethod = CHAP
discovery.sendtargets.auth.username = discovery_in
discovery.sendtargets.auth.password = YourSecurePwd1
discovery.sendtargets.auth.username_in = discovery_out
discovery.sendtargets.auth.password_in = YourSecurePwd2
node.startup = automatic
node.session.auth.authmethod = CHAP
node.session.auth.username = node_in
node.session.auth.password = YourSecurePwd1
node.session.auth.username_in = node_out
node.session.auth.password_in = YourSecurePwd2
</pre><p><br />
The service is started with <tt>/etc/init.d/open-iscsi start</tt>. Existing targets can be searched, deleted or added by the following commands:</p>
<pre class='brush: plain'>
# discovering the targets
iscsiadm -m discovery -t st -p YOURMACHINE -P 1
# deleting target on wrong interface
iscsiadm -m node -p 192.168.0.100:3260,1 -o delete
# opening the portal
iscsiadm -m node --targetname &quot;iqn.2010-03.YOURMACHINE:clvm1&quot; --portal &quot;YOURMACHINE:3260&quot; --</pre><p></p>

<h3>VM setup</h3>
The virtual machines are provided by KVM. Thus the apropriate KVM software must be installed first:
<pre class='brush: plain'>
apt-get install linux-image-2.6.32-bpo.2-amd64 kvm libvirt-bin virtinst -t lenny-backports
</pre><p><br />
When configuring the bridge, make sure that the bridge name is the same on all nodes. Also the libvirt configuration must be the same on all hosts, so it makes sense to use <a href="/en/2010/03/howto-introduction-to-puppet.html">puppet</a> or similar techniques.<br />
Afterwards, bring up the guests with:</p>
<pre class='brush: plain'>
virt-install -n &lt;NAME&gt; -r 256 --vcpus=1 --disk path=/dev/vg_cluster#/&lt;LV&gt; \
  -c /root/debian-&lt;VERSION&gt;-amd64-netinst.iso --vnc --noautoconsole --os-type linux \
  --os-variant debianLenny --accelerate --network=bridge:bridge0 --hvm -k de
</pre><p><br />
To monitor the process use <tt>virt-viewer -c qemu+ssh://<node>:<port>/system <NAME></tt>.</p>

<h3>RHCS setup</h3>
The next step is the setup of RHCS itself. Again, first things first, the software: <tt>apt-get install redhat-cluster-suite</tt>. This pulls quite a number of services which are not needed in our example:
<pre class='brush: plain'>
invoke-rc.d nfs-kernel-server stop
invoke-rc.d nfs-common stop
invoke-rc.d portmap stop
update-rc.d -f nfs-kernel-server remove
update-rc.d -f nfs-common remove
update-rc.d -f portmap remove
</pre><p><br />
Btw., <tt>system-config-cluster</tt> is not available for Lenny, but our Philipp Hübner has created a backport:</p>
<pre class='brush: plain'>
wget --no-check-certificate https://www.credativ.com/~phu/lenny-backports/system-config-cluster/system-config-cluster_1.0.53-1_all.deb
dpkg -i system-config-cluster_1.0.53-1_all.deb
apt-get -f install
apt-get install xauth
</pre><p><br />
In order to have locking on the LVM cluster, you now need to modify <tt>/etc/lvm/lvm.conf</tt>: check for the <tt>global</tt> part.</p>
<pre class='brush: plain'>
 locking_type = 3
</pre><p><br />
With the newer kernels the module <tt>lock_dlm</tt> also vanished, so CMAN init script must be modified: comment out the line <tt>modprobe lock_dlm 2>&1 || return 1</tt>. Additionally, RHCS 2 only supports XEN, so for libvirt you need to load the resource handler  <tt>vm.sh</tt>.</p>
<pre class='brush: plain'>
wget --no-check-certificate https:///www.credativ.com/~phu/vm.sh -O /usr/share/cluster/vm.sh
chmod +x /usr/share/cluster/vm.sh
</pre><p></p>

<p>RHCS itself is called via</p>
<pre class='brush: plain'>
/etc/init.d/cman start
/etc/init.d/clvm start
/etc/init.d/rgmanager start
</pre><p></p>

<h3>Fencing</h3>
Fencing describes the automagical neutralization of nodes which cease to function properly. In our example we use a power plug which can be controlled via network, NETIO-230A. Currently there is no real fence agent available for the device, but the python library <a href="http://github.com/pklaus/netio230a">Python-Bibliothek</a> offers the necessary background to quickly write one.

<h3>Closing words</h3>
This howto has shown the setup of RHCS on Debian in easy steps - but of course, the correct steps depend very much on the targeted services, so this is just an example. If you need help just ask - <a href="http://www.credativ.co.uk/services/support/projects/high-availability-clustering/">Open Source HA solutions</a> are our speciality, and <a href="http://www.credativ.co.uk/services/support/projects/virtualisation/kvm/">we offer services and support  for KVM virtualization</a> as part of our day to day business.]]>
        
    </content>
</entry>

<entry>
    <title>credativ leads the market with a pre-paid, international Open Source support solution</title>
    <link rel="alternate" type="text/html" href="http://blog.credativ.com/en/2010/03/credativ-leads-the-market-with-a-pre-paid-international-open-source-support-solution.html" />
    <id>tag:blog.credativ.com,2010:/en//2.152</id>

    <published>2010-03-24T15:30:40Z</published>
    <updated>2010-03-24T15:28:18Z</updated>

    <summary>This week, credativ launches its Open Source Support Card. With this card Open Source Support can be bought at a fixed price - without a binding contract. After a long preparation phase we are now offering our trusted services in...</summary>
    <author>
        <name>Roland Wolters</name>
        <uri>http://www.credativ.de</uri>
    </author>
    
        <category term="Debian" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Linux" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="News" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Open Source" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="RHEL/CentOS" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Support" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="credativ" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://blog.credativ.com/en/">
        <![CDATA[<p><em>This week, credativ launches its Open Source Support Card. With this card Open Source Support can be bought at a fixed price - without a binding contract.</em></p>

<p>After a long preparation phase we are now offering our trusted services in a new, simple format; with the <a href="http://www.credativ.co.uk/home/services/open-source-support-card/">Open Source Support Card</a> you get a fixed contingent of project-specific, pre-paid services.</p>

<p><a href=""><img alt="Sup_Card_front.png" src="http://blog.credativ.com/en/2010/03/24/static/front_rounded_shadow_small.png" width="350" height="210" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></p>

<p>Customers using the Open Source Support Card have the unique advantage of full cost control; the card can be purchased as a product, without any obligation to sign an agreement for a specific length of time. This may be of particular benefit to larger companies, where new contracts have to be reviewed and cross-reviewed before they can be authorised. A summary of the advantages of the new pre-paid support format include:</p>

<ul><li>Open Source Support for a specific project</li><li>Support not restricted to a specific number of desktops and servers within a company</li><li>A tempting price model, starting at just £480</li><li>Full control of costs</li><li>Support available via telephone, e-mail and remote access</li><li>Bilingual support - help given in English or even German, if required! ;-)</li><li>Cost of support NOT determined by the number of CPUs or users</li><li>NO binding contract - easy way to purchase</li><li>NO call centre - direct access to the experts</li><li>Support units can be used for the following services:</li><ul><li>administration</li><li>installation (remote)</li><li>consultancy</li></ul></ul>

<p>All support is provided to the usual credativ standard. Just as you would expect from our usual contracts, the cost of the service is not determined by the number of CPUs, users, or DB entries. Support units purchased through the Support Card can be used for all related problems within a company - no matter which workstation or server they come up on. The support itself is provided by our <a href="http://www.credativ.co.uk/home/services/support/">Open Source Support Centre</a>: you won't have to deal with non-technical staff or battle through FAQ scripts - our Linux experts and Open Source specialists are on hand to take calls directly. Many of us are actively involved in contributing to a number of Open Source projects - as regular readers will already be aware. ;-)</p>

<p>The new Open Source Support Card is also an exciting development for the wider Open Source community. By offering yet another attractive support option for free distributions, we hope to prove that there is now no reason not to consider Debian and CentOS as viable alternatives to commercial distributions.<br />
 <br />
The Open Source Support Card is designed and marketed in such a way that resellers can also get on board, making access to support that bit easier for consumers: imagine purchasing your server online and while you're at it being able to drop a Support Card into the shopping basket as well - Open Source Support with just one click!</p>

<p>Currently the <a href="http://www.credativ.co.uk/home/services/open-source-support-card/">Support Card</a> is just available for Debian and CentOS in the UK and in Germany, although we will soon be offering it in the US and Canada too. If you have any questions or comments we'd be pleased to hear from you - we've put a lot of effort into this new product, and are looking forward to the response from our customers and the wider community.</p>]]>
        
    </content>
</entry>

<entry>
    <title>[Tip] Auto rotate images</title>
    <link rel="alternate" type="text/html" href="http://blog.credativ.com/en/2010/03/tip-auto-rotate-images.html" />
    <id>tag:blog.credativ.com,2010:/en//2.141</id>

    <published>2010-03-19T13:55:47Z</published>
    <updated>2010-03-19T13:52:15Z</updated>

    <summary>Many digital cameras today do not just save an image, but also save various meta data in the Exif standard. This data includes information about the position of the camera when the image was taken (such as vertical or horizontal)....</summary>
    <author>
        <name>Roland Wolters</name>
        <uri>http://www.credativ.de</uri>
    </author>
    
        <category term="Debian" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Linux" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Open Source" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Tip" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="camera" label="camera" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="digital" label="digital" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="exif" label="exif" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="exiftran" label="exiftran" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="fbida" label="fbida" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="image" label="image" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="rotate" label="rotate" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://blog.credativ.com/en/">
        <![CDATA[<p><img alt="bash.png" src="/de/static/bash.png" width="90" height="72" class="mt-image-right" style="float: right; margin: 0 0 20px 20px;" />Many digital cameras today do not just save an image, but also save various meta data in the <a href="http://en.wikipedia.org/wiki/Exchangeable_Image_File_Format">Exif</a> standard.  This data includes information about the position of the camera when the image was taken (such as vertical or horizontal). However, some image programs use this data to rotate the image when displaying it while others don't, leaving the user to face inconsistent behaviour.</p>

<p>This can be fixed with the tool <a href="http://linux.bytesex.org/fbida/">exiftran</a>; it automatically rotates all images according to the Exif data, which it discards afterwards. It is also very easy to use for mass conversion:<br />
</p>
<pre class='brush: plain'>
# apt-get install exiftran
$ find -print0 | xargs -0 exifautotran
</pre><p></p>

<p>This tool might be shipped by other distributions under a different name. Fedora, for example, calls it <tt>fbida</tt>.</p>]]>
        
    </content>
</entry>

<entry>
    <title>RHCS: an Introduction</title>
    <link rel="alternate" type="text/html" href="http://blog.credativ.com/en/2010/03/rhcs-an-introduction.html" />
    <id>tag:platon.credativ.com,2010:/en//2.127</id>

    <published>2010-03-03T13:55:40Z</published>
    <updated>2010-03-05T11:08:37Z</updated>

    <summary>The Red Hat Cluster Suite is a framework to bind two or more machines together to jointly handle one task. The following article gives an introduction to RHCS in terms of service failover. Linux is used daily in mission-critical environments...</summary>
    <author>
        <name>Roland Wolters</name>
        <uri>http://www.credativ.de</uri>
    </author>
    
        <category term="Debian" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Open Source" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="RHEL/CentOS" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Support" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="credativ" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://blog.credativ.com/en/">
        <![CDATA[<p><img alt="tux.jpg" src="/en/static/tux.jpg" width="86" height="102" class="mt-image-right" style="float: right; margin: 0 0 20px 20px;" /><em>The Red Hat Cluster Suite is a framework to bind two or more machines together to jointly handle one task. The following article gives an introduction to RHCS in terms of service failover.</em></p>

<p>Linux is used daily in mission-critical environments all over the world. It follows that Linux can be required to fulfil a range of needs with relation to availability and stability.  The <a href="http://www.redhat.com/cluster_suite/">Red Hat Cluster Suite</a> (RHCS) is designed with these needs in mind; it enables the admin to set up a cluster of machines which all handle the same task or provide the same service. If the machine providing the service goes down, another machine then steps in and takes over.</p>

<h3>Core elements of RHCS</h3>
RHCS consists of four core components:
<ul>	<li>cluster infrastructure</li>
	<li>high availability service management</li>
	<li>tools for the cluster administration</li>
	<li>Linux virtual server routing</li></ul>
The <a href="http://www.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/5.4/html/Cluster_Suite_Overview/s1-hasci-overview-CSO.html">cluster infrastructure</a> includes all the core components necessary for the set up and running of a cluster of several nodes. These components manage the integration of nodes, shutting them down where problems occur (fencing), replicating the configuration and so on.

<p>After the cluster has been set up the next step is to define the <a href="http://www.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/5.4/html/Cluster_Suite_Overview/s1-service-management-overview-CSO.html">high availability service management</a>. This is a service running on one node with other nodes configured for failover. The HA service management includes defining the service, start/stop scripts, ports, storage places and other resources as well as the priority of the different failover nodes.</p>

<p>The next core component is not so much a necessary key element but more a set of helpful tools:  the <a href="http://www.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/5.4/html/Cluster_Suite_Overview/s1-clumgmttools-overview-CSO.html">cluster administration tools</a>. In theory they are not critical to the running of the RHCS, although in practise it would be stupid to run the RHCS without them. They incorporate GUI tools, web pages for accessing cluster data and tools for status queries, among other things.</p>

<p>The situation is similar for the <a href="http://www.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/5.4/html/Cluster_Suite_Overview/s1-lvs-overview-CSO.html">Linux virtual server routing</a>; although RHCS documentation lists Linux virtual server routing as a core component, this functionality is not always needed as it "only" provides load balancing functions on IP level and re-routes the traffic when a node brakes down.Besides these official core components of RHCS the system can incorporate other services when they are available: GFS  (Global File System) and Cluster Logical Volume Manager. They help with mounting network block devices, making storage management much easier.</p>

<h3>Structure of a RHCS Cluster</h3>

<p>To create an initial RHCS cluster a substantial set of machines is needed:<br />
<ol><li>Shared storage like iSCSI or Fibre Channel.</li><li>For each node a method to detach it from the cluster (fencing), either by network or by a controllable power switch.</li><li>At least two nodes with a network connection.</li><li>A switch.</li></ol><br />
It is important that the shared storage is not running on one of the nodes itself - that would render the idea of fencing useless. Also keep in mind that the machines listed here only describe the minimum hardware configuration - a larger cluster would of course require many more nodes.</p>

<h3>Closing words</h3>

<p>RHCS offers a well thought out framework for managing a cluster, especially when it comes to service failover. Using RHCS makes securing your mission-critical systems easy, and makes them highly available with standard hardware.</p>

<p>The R in RHCS implies that this method only runs on RHEL machines - but this is not the case, as we will demonstrate in one of our upcoming articles.</p>]]>
        
    </content>
</entry>

<entry>
    <title>[Howto] Introduction to Puppet</title>
    <link rel="alternate" type="text/html" href="http://blog.credativ.com/en/2010/03/howto-introduction-to-puppet.html" />
    <id>tag:platon.credativ.com,2010:/en//2.126</id>

    <published>2010-03-02T11:29:47Z</published>
    <updated>2010-05-28T12:44:31Z</updated>

    <summary>The administration of a large number of servers can be quite tiresome without a central configuration management. This article gives a first introduction into the configuration management tool, Puppet. Introduction In our daily work at the Open Source Support Center...</summary>
    <author>
        <name>Roland Wolters</name>
        <uri>http://www.credativ.de</uri>
    </author>
    
        <category term="Debian" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Howto" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Linux" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Open Source" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Support" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="credativ" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://blog.credativ.com/en/">
        <![CDATA[<img alt="tux.jpg" src="/en/static/tux.jpg" width="86" height="102" class="mt-image-right" style="float: right; margin: 0 0 20px 20px;" /><em>The administration of a large number of servers can be quite tiresome without a central configuration management. This article gives a first introduction into the configuration management tool, <strong>Puppet</strong>.</em>
<br />
<br />

<h3>Introduction</h3>

In our daily work at the <a href="http://www.credativ.co.uk/services/support/">Open Source Support Center</a> we maintain a large number of servers. Managing larger clusters or setups means maintaining dozens of machines with an almost identical configuration and only slight variations, if any. Without central configuration management, making small changes to the configuration would mean repeating the same step on all machines. This is where <a href="http://reductivelabs.com/trac/puppet/">Puppet</a> comes into play.
<br />
<br />
As with all configuration management tools, Puppet uses a central server which manages the configuration. The clients query the server on a regular basis for new configuration via an encrypted connection. If a new configuration is found, it is imported as the server instructs: the client imports new files, modifies rights, starts services and executes commands, whatever the server says. The advantages are obvious:
<ul>
	<li>Each configuration change is done only once, regardless of the actual number of maintained servers. Unnecessary - and pretty boring - repetition is avoided, lucky us!</li>
	<li>The configuration is streamlined for all machines, which makes it much easier to maintain.</li>
	<li>A central infrastructure makes it easier to quickly get an overview about the setup - "running around" is not necessary anymore.</li>
	<li>Last but not least, a central configuration tree enables you to incorporate a simple version control of your configuration: for example, playing back the configuration "PRE-UPDATE" on all machines of an entire setup only takes a couple of commands!</li>
</ul>

<h3>Technical workflow</h3>

Puppet consists of a central server, called "Puppet Master", and the clients, called "Nodes". The nodes query the master for the current configuration. The master responds with a list of configuration and management items: files, services which have to be running, commands which need to be executed, and so on - the possibilities are practically endless:

<ul>
	<li>The master can hand over files which the node copies to a defined place - if it does not already exist.</li>
	<li>The node is asked to check certain file and directory permissions and to correct them if necessary.</li>
	<li>Depending upon the operating system, the node checks the state of services and starts or stops them. It can also check for installed packages and if they are up to date.</li>
	<li>The master can force the node to execute arbitrary commands</li>
</ul>

Of course, in general all tasks can be fulfilled by handing over files from the master to the client. However, in more complex setups this kind of behaviour is not easily arranged, nor does it simplify the setup. Puppet's strength is that it facilitates abstract system tasks (restart services, ensure installed packages, add users, etc.), regardless of the actual changed files in the background. You can even use the same statement in Puppet to configure different versions of Linux or Unix.

<h3>Installation</h3>

First, you need the master, the center of all the configuration you want to manage:
<code>apt-get install puppetmaster</code>
Puppet expects that all machines in the network have FQDNs - but that should be the case anyway in a well maintained network.
<br />
<br />
Other machines become a node by installing the Puppet client:
<code>apt-get install puppet</code>

<h3>Puppet, main configuration</h3>

The Puppet nodes do not need to be configured - they will check for a machine called "Puppet" in the local network. As long as that name points to the master you do not have to do anything else.
<br />
<br />
Since the master provides files to the nodes, the internal file server must be configured accordingly. There are different solutions for the internal file server, depending on the needs of your setup. For example, it might be better for your setup to store all files you provide to the nodes on one place, and the actual configuration you provide to the nodes somewhere else. However, in our example we keep the files and the configuration for the nodes close, as it is outlined in Puppet's <a href="http://reductivelabs.com/trac/puppet/wiki/PuppetBestPractice">Best Practice Guide</a> and in the <a href="http://reductivelabs.com/trac/puppet/wiki/ModuleOrganisation">Module Configuration</a> part of the Puppet documentation.Thus, it is enough to change the file <tt>/etc/puppet/fileserver.conf</tt> to:
<pre class='brush: plain'>[modules]
allow 192.168.0.1/24
allow *.credativ.de
</pre>

<h3>Configuration of the configuration - Modules</h3>
Puppet's way of managing configuration is to use sets of tasks grouped by topic. For example, all tasks related to SSH should go into the module "ssh", while all tasks related to apache should be placed in the module "apache" and so on. These sets of tasks are called <strong>"Modules"</strong> and are the core of Puppet - in a perfect Puppet setup everything is defined in modules! We will explain the structure of a SSH module  to highlight the basics and ideas behind Puppet's modules. We will also try to stay close to the Best Practise Guide to make it easier to check back against the Puppet documentation.
<br />
<br />
Please note, however, that this example is an example: in a real world setup the SSH configuration would be a bit more dynamic, but we focused on simple and easy-to-understand methods.

<h3>The SSH module</h3>

We have the following requirements:
<ol>
	<li>The package open-ssh must be installed and be the newest version.</li>
	<li>Each node's sshd_config file has to be the same as the one saved on the master.</li>
	<li>In the event that the sshd_config is changed on any node, the sshd service should be restarted.</li>
	<li>The user <tt>credativ</tt> needs to have certain files in his/her directory <tt>$HOME/.ssh</tt>.</li>
</ol>
To comply with these requirements we start by creating some necessary paths:
<pre class='brush: plain'>mkdir -p /etc/puppet/modules/ssh/manifests
mkdir -p /etc/puppet/modules/ssh/files
</pre>

The directory "<strong>manifests</strong>" contains the actual configuration instructions of the module and the directory "<strong>files</strong>" provides the files we hand over to the clients.
<br />
<br />
The instructions themselves are written down in <strong>init.pp</strong> in the "<strong>manifests</strong>" directory. The set of instructions to fulfil aims 1 - 4 are grouped in a so called "class". For each task a "class" has one subsection, a <a href="http://docs.reductivelabs.com/references/stable/type.html">type</a>. So in our case we have four types, one for each aim:
<pre class='brush: plain'>
class ssh{
        package { &quot;openssh-server&quot;:
                 ensure =&gt; latest,
        }
        file { &quot;/etc/ssh/sshd_config&quot;:
                owner   =&gt; root,
                group   =&gt; root,
                mode    =&gt; 644,
                source  =&gt; &quot;puppet:///ssh/sshd_config&quot;,
        }
        service { ssh:
                ensure          =&gt; running,
                hasrestart      =&gt; true,
                subscribe       =&gt; File[&quot;/etc/ssh/sshd_config&quot;],
        }
        file { &quot;/home/credativ/.ssh&quot;:
                path    =&gt; &quot;/home/credativ/.ssh&quot;,
                owner   =&gt; &quot;credativ&quot;,
                group   =&gt; &quot;credativ&quot;,
                mode    =&gt; 600,
                recurse =&gt; true,
                source  =&gt; &quot;puppet:///ssh/ssh&quot;,
                ensure  =&gt; [directory, present],
        }
}
</pre>
Each type is another task and calls another action on the node:
<dl>
 <dd>package</dd> <dt>Here we make sure that the package <em>openssh-server</em> is installed in the newest version.</dt>
 <dd>file</dd> <dt>A file on the node is compared with the version on the server and overwritten if necessary. Also, the rights are adjusted.</dt>
 <dd>service</dd> <dt>Well, as the name says, this deals with services: in our case the service <em>sshd</em> must be running on the node. Also, in case the file <em>/etc/ssh/sshd_config</em> is modified, the service is restarted automatically.</dt>
 <dd>file</dd> <dt>Here we have again the file type, but this time we do not compare a file, but an entire directory.</dt>
 </dl>

As mentioned above, the files and directories you configured so that the server provides them to the nodes must be available in the directory <tt>/etc/puppet/modules/ssh/files/</tt>.

<h3>Nodes and modules</h3>

We now have three parts: the master, the nodes and the modules. The next step is to tell the master which nodes are related to which modules. First, you must tell the master that this module exists in <tt>/etc/puppet/manifests/modules.pp</tt>:
<pre class='brush: plain'>
import &quot;ssh&quot;
</pre>
Next, you need to modify <tt>/etc/puppet/manifests/nodes.pp</tt>. This specifies which module is loaded for which node, and which modules should be loaded as default in the event that a node does not have a special entry. The entries for the nodes support inheritance.
<br />
<br />
So, for example, to have the module "rsyslog" ready for all nodes but the module "ssh" only ready for the node "external" you need the following entry:
<pre class='brush: plain'>
node default {
    include rsyslog
}
node 'external' inherits default {
    include ssh
}
</pre>
Puppet is now configured!

<h3>Certificates - secured communication between nodes and master</h3>

As mentioned above, the communication between master and node is encrypted. But that implies you have to verify the partners at least once. This can be done after a node queries the master for the first time. Whenever the master is queried by an unknown node it does not provide the default configuration but instead puts the node on a waiting list. You can check the waiting list with the command:

<code># puppetca --list</code>
<br />
<br />
To verify a node and incorporate it into the Puppet system you need to verify it:
<code># puppetca --sign external.example.com</code>

The entire process is explained in more detail in the <a href="http://reductivelabs.com/trac/puppet/wiki/CertificatesAndSecurity">puppet documentation</a>.

<h3>Closing words</h3>

The example introduced in this article is very simple - as I noted, a real world example would be more complex and dynamic. However, it is a good way to start with Puppet, and the documentation linked throughout this article will help the willing reader to dive deeper into the components of Puppet.
<br />
<br />
We, here at credativ's Open Source Support Center have gained considerable experience with Puppet in recent years and really like the framework. Also, in our day to day support and consulting work we see the market growing as more and more customers are interested in the framework. Right now, Puppet is in the fast lane and it will be interesting to see how more established solutions like <a href="http://www.cfengine.org/">cfengine</a> will react to this competition.]]>
        
    </content>
</entry>

<entry>
    <title>[Talk] Single Sign On with Kerberos</title>
    <link rel="alternate" type="text/html" href="http://blog.credativ.com/en/2010/02/talk-single-sign-on-with-kerberos.html" />
    <id>tag:platon.credativ.com,2010:/en//2.122</id>

    <published>2010-02-26T13:14:47Z</published>
    <updated>2010-03-05T11:06:37Z</updated>

    <summary>credativ employee, Alexander Wirt, is due to give a presentation at the German Chemnitz Linux Days about Single Sign On with Kerberos. Besides an introduction into configuration of Kerberos, the talk will also focus on the configuration of its various...</summary>
    <author>
        <name>Roland Wolters</name>
        <uri>http://www.credativ.de</uri>
    </author>
    
        <category term="Debian" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Linux" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="News" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Open Source" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Security" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="credativ" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://blog.credativ.com/en/">
        <![CDATA[<p><img alt="keyhole-heimdal.png" src="/en/static/keyhole-heimdal.png" width="121" height="100" class="mt-image-right" style="float: right; margin: 0 0 20px 20px;" /><em>credativ employee, Alexander Wirt, is due to give a presentation at the German Chemnitz Linux Days about Single Sign On with Kerberos. Besides an introduction into configuration of Kerberos, the talk will also focus on the configuration of its various services.</em></p>

<p><a href="http://de.wikipedia.org/wiki/Kerberos_(Informatik)">Kerberos</a> is an authentication protocol which enables an admin to incorporate services and an operating system transparently into an existing setup. This makes Single Sign On possible: the user only has to enter his/her credentials once and thereafter can access any secured services and websites which support Kerberos without having to enter them again.</p>

<p>The Kerberos Single Sign On approach will be described by Alexander Wirt, credativ's expert on this topic, during a talk at the <a href="http://chemnitzer.linux-tage.de/2010/">Chemnitz Linux Days</a> due to take place in March. Besides the basic introduction to Kerberos based on <a href="http://www.h5l.org/">Heimdal</a>, he will also explain how to configure services such as SSH, Apache and IMAP. The topic of this talk will be very close to real-world usage, thus it should enable members of the audience to try it out easily themselves on their own networks.The talk will take place in German on March 13th 2010 at 15:00 in Room V4.</p>]]>
        
    </content>
</entry>

<entry>
    <title>PostgreSQL Optimizer Bits: Semi and Anti Joins</title>
    <link rel="alternate" type="text/html" href="http://blog.credativ.com/en/2010/02/postgresql-optimizer-bits-semi-and-anti-joins.html" />
    <id>tag:platon.credativ.com,2010:/en//2.119</id>

    <published>2010-02-25T11:57:10Z</published>
    <updated>2010-06-23T10:42:54Z</updated>

    <summary>The series &quot;PostgreSQL Optimiser Bits&quot; will introduce the strategies and highlights of the PostgreSQL optimiser. We start today with a new feature of PostgreSQL 8.4: Semi and Anti Joins. Since version 8.4, PostgreSQL has been offering a new optimisation strategy...</summary>
    <author>
        <name>Bernd Helmle</name>
        
    </author>
    
        <category term="Debian" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Open Source" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="PostgreSQL" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://blog.credativ.com/en/">
        <![CDATA[<img alt="postgreslogo.png" src="/en/static/postgreslogo.png" width="97" height="100" class="mt-image-right" style="float: right; margin: 0 0 20px 20px;" /><em>The series "PostgreSQL Optimiser Bits" will introduce the strategies and highlights of the PostgreSQL optimiser.  We start today with a new feature of PostgreSQL 8.4: Semi and Anti Joins.</em>
<br />
<br />
Since version 8.4, PostgreSQL has been offering a new optimisation strategy for the optimisation of certain queries: Semi and Anti Joins.
<br />
<br />
A <strong>Semi Join</strong> is a specific form of a join, which only takes the keys of relation <tt>a</tt> into account if these are also present in the associated table <tt>b</tt>. An <strong>Anti Join</strong> is the negative form of a Semi Join: that is, a key picked in table <tt>a</tt> will be taken into account if it is not present in table <tt>b</tt>.
<br />
<br />
To summarize, Semi and Anti Joins are specific forms of a join which only take certain keys on the left side into account - where queries want to make sure certain keys exist, but are not concerned with the content of the key itself. This behaviour is already widely known in Object Relation Mappers (ORM) which formulate such queries using EXIST() or NOT EXIST().
<br />
<br />
Compared to PostgreSQL 8.3 the same query is possible with a much simpler and more efficient query plan. The following simple example shows this improvement: take two tables, <tt>a, b</tt> and an EXIST() query. A certain set of data from <tt>a</tt> is to be found which has its equivalent <tt>a.id2 = b.id</tt> in <tt>b</tt>. Of course, this aim can also be accomplished by one single join, however, this example shows the improvements of the optimizer solving this query.
<pre class='brush: sql'>
EXPLAIN SELECT id FROM a WHERE a.id = 200 AND EXISTS(SELECT id FROM b WHERE a.id2 = b.id);
</pre>

The optimiser in PostgreSQL in 8.3 determines the following plan for this example. Keep in mind that both tables <tt>a</tt> and <tt>b</tt> each have an index on the column <tt>id</tt> and <tt>id2</tt>.
<pre class='brush: sql'>
                                QUERY PLAN
--------------------------------------------------------------------------
 Index Scan using a_id_idx on a  (cost=0.00..8355.27 rows=503 width=4)
   Index Cond: (id = 200)
   Filter: (subplan)
   SubPlan
     -&gt;  Index Scan using b_id_idx on b  (cost=0.00..8.27 rows=1 width=4)
           Index Cond: ($0 = id)
</pre>
In contrast, in PostgreSQL 8.4 the optimizer can use a hash Semi Join:
<pre class='brush: sql'>
                                QUERY PLAN
---------------------------------------------------------------------------
 Hash Semi Join  (cost=27.52..78.16 rows=969 width=4)
   Hash Cond: (a.id2 = b.id)
   -&gt;  Index Scan using a_id_idx on a  (cost=0.00..37.32 rows=969 width=8)
         Index Cond: (id = 200)
   -&gt;  Hash  (cost=15.01..15.01 rows=1001 width=4)
         -&gt;  Seq Scan on b  (cost=0.00..15.01 rows=1001 width=4)
</pre>
The reduced costs of this query plan are more than obvious - and lower costs mean fewer I/O accesses. So, in future a more detailed analysis of such queries is worth a look.]]>
        
    </content>
</entry>

<entry>
    <title>Debian moved over to DNSSEC</title>
    <link rel="alternate" type="text/html" href="http://blog.credativ.com/en/2010/02/debian-moved-over-to-dnssec.html" />
    <id>tag:platon.credativ.com,2010:/en//2.118</id>

    <published>2010-02-25T11:18:08Z</published>
    <updated>2010-03-05T11:05:39Z</updated>

    <summary>The Debian project has announced that its internal DNS infrastructure is gradually moving over to DNSSEC. Thus from now on, all DNS answers for debian.com, amongst others, will be digitally signed to verify their authenticity. The Domain Name System (DNS)...</summary>
    <author>
        <name>Roland Wolters</name>
        <uri>http://www.credativ.de</uri>
    </author>
    
        <category term="Debian" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Linux" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="News" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Security" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="credativ" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://blog.credativ.com/en/">
        <![CDATA[<p><img alt="debianlogo.png" src="/en/static/debianlogo.png" width="60" height="73" class="mt-image-right" style="float: right; margin: 0 0 20px 20px;" /><em>The Debian project has announced that its internal DNS infrastructure is gradually moving over to DNSSEC. Thus from now on, all DNS answers for debian.com, amongst others, will be digitally signed to verify their authenticity.</em></p>

<p>The <a href="http://en.wikipedia.org/wiki/Domain_Name_System">Domain Name System</a> (DNS) is one of the core components of the Internet. However, the initial design of DNS is vulnerable against some quite serious attacks, among them <a href="http://en.wikipedia.org/wiki/DNS_cache_poisoning">cache poisoning</a> which means faking of DNS answers. To avoid this problem, DNSSEC was introduced (<a href="http://en.wikipedia.org/wiki/DNSSEC">DNSSEC in Wikipedia</a>, see also <a href="http://www.dnssec.net/">dnssec.net</a>). DNSSEC is an enhancement of the default DNS protocol which makes it possible to sign and thus verify DNS answers. The introduction of DNSSEC into the existing worldwide Internet infrastructure is proving to be slow, due to the complexity and amount of work involved; there are so far only a few top level domains (TLDs) and domains of large projects and companies providing signed answers.</p>

<p>The Debian project has now <a href="http://dsa.debian.org/dsablog/2010/02/Securing_the_Debian_zones/">decided</a> to introduce DNSSEC step by step, so that all project domains will provide verified DNS answers. Firstly, all <strong>debian.net</strong> and <strong>debian.com</strong> domains will be signed, and thereafter the collected experience will be used to sign the other domains and sub-domains.</p>

<p>One of the problems the Debian project is facing in the use of DNSSEC is that as yet they do not have the signatures by the TLDs that Debian uses, without which there is no third party to verify the Debian keys. To get around this, Debian will publish the DNSSEC keys via the <a href="https://dlv.isc.org/about/background">DNSSEC Look-aside Validation Registry</a> of <a href="https://www.isc.org/">ISC</a>. This will mean Debian keys can be verified even for TLDs which have not yet introduced a DNSSEC infrastructure.</p>

<p>Moving the Debian project to DNSSEC improves the security of the Debian part of the internet. Additionally, the experience acquired in the changing over of such a large, worldwide and multi-domain project should help other projects of a similar size - and hopefully encourage them to follow suit.</p>]]>
        
    </content>
</entry>

<entry>
    <title>[Tip] .htaccess example</title>
    <link rel="alternate" type="text/html" href="http://blog.credativ.com/en/2010/02/tip-htaccess-example.html" />
    <id>tag:platon.credativ.com,2010:/en//2.115</id>

    <published>2010-02-24T16:09:03Z</published>
    <updated>2010-06-08T10:35:38Z</updated>

    <summary>One of the fastest ways to restrict the access to a web server path is to use .htaccess files. These are placed in the to-be-restricted path and contain the information how to restrict the access. A simple example is given...</summary>
    <author>
        <name>Roland Wolters</name>
        <uri>http://www.credativ.de</uri>
    </author>
    
        <category term="Debian" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Open Source" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Tip" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="credativ" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://blog.credativ.com/en/">
        <![CDATA[<img alt="bash.png" src="https://platon.credativ.com:2564/en/static/bash.png" width="90" height="72" class="mt-image-right" style="float: right; margin: 0 0 20px 20px;" />One of the fastest ways to restrict the access to a web server path is to use <tt>.htaccess</tt> files. These are placed in the to-be-restricted path and contain the information how to restrict the access. A simple example is given below:
<pre class='brush: plain'>
AuthType Digest
AuthName &quot;SecretDir&quot;
AuthUserFile /etc/apache2/passwords/secretdir.htpasswd
Require valid-user
</pre>
The <tt>.htpasswd</tt> file contains the user login data for accessing the path and thus must not be placed in a path which is exported by the web server! It is created using its own command line tool:
<code>htdigest -c /etc/apache2/passwords/secretdir.htpasswd SecretDir $USERNAME</code>
Note, however, that the <tt>Directory</tt> part of the web site configuration (for example in <emtt/etc/apache2/sites-enabled</tt>) must contain the option <tt>AllowOverride AuthConfig</tt>. Also, since this examples uses the AuthType Digest, make sure the module <tt>mod_auth_digest</tt> is loaded.
<br />
<br />
Further information and a more detailed configuration explanation is given in the article <a href="http://httpd.apache.org/docs/2.2/howto/auth.html">Authentication, Authorization and Access Control</a> in Apache's documentation.]]>
        
    </content>
</entry>

<entry>
    <title>Skolelinux 5.0 released</title>
    <link rel="alternate" type="text/html" href="http://blog.credativ.com/en/2010/02/skolelinux-50-released.html" />
    <id>tag:platon.credativ.com,2010:/en//2.108</id>

    <published>2010-02-15T14:05:01Z</published>
    <updated>2010-03-05T11:04:23Z</updated>

    <summary>The Skolelinux team has released version 5.0 of its popular school server, which is now based on Debian Lenny. The distribution Skolelinux, also known as Debian-Edu, is a Debian version adapted for running school networks with Linux.  It enables even...</summary>
    <author>
        <name>Roland Wolters</name>
        <uri>http://www.credativ.de</uri>
    </author>
    
        <category term="Debian" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="KDE" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Linux" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="News" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Open Source" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="credativ" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://blog.credativ.com/en/">
        <![CDATA[<p><img alt="skole_tux_small.png" src="/en/static/skole_tux_small.png" width="86" height="102" class="mt-image-right" style="float: right; margin: 0 0 20px 20px;" /><em>The Skolelinux team has released version 5.0 of its popular school server, which is now based on Debian Lenny.</em></p>

<p>The distribution <a href="http://www.slx.no/">Skolelinux</a>, also known as <a href="http://wiki.debian.org/DebianEdu">Debian-Edu</a>, is a Debian version adapted for running school networks with Linux.  It enables even non-geek users to quickly set up a central school server with a terminal server, thin clients, workstations and laptops as desktop computers.</p>

<p>With the <a href="http://wiki.debian.org/DebianEdu/PressReleases/PressPackage_5.0/English">release of version 5.0</a>, Skolelinux was lifted to the current Debian software base. Besides providing enhanced hardware support, it now updates the software to recent versions, making the new release more appealing to pupils and schools. Some other technical highlights of this version include:<br />
<ul>	<li>GNOME is now supported alongside KDE;</li><br />
	<li>The pupils' destkop has been enhanced with links to school software like GCompris, Kalzium, KGeography, KMplot, KStars, Stopmotion and the OpenOffice Suite;</li><br />
	<li>Improved LTSP server configuration:<ul>	<li>Besides the traditional thin clients, diskless workstations are now supported out of the box; manual tweaking is no longer necessary;</li><br />
	<li>The new PXE start menu allows diskless workstations to boot via network or via local media;</li><br />
	<li>Software running locally on diskless workstations comes straight from the server, where it can be more easily maintained.</li></ul></li><br />
	<li>Improved documentation, now translated into German, Italian and Norwegian;</li><br />
	<li>Improved and simplified user- and machine-administration tool LWAT (LDAP Web-based Administration Tool);</li><br />
	<li>Improved browser support with free software products like Gnash, Java and other plugins;</li><br />
	<li>Improved monitoring, now reporting on the status of all machines which are automatically connected to the network;</li><br />
	<li>Improved audio and multimedia experience in PulseAudio, next to Alsa and OSS.</li></ul></p>

<p>Philipp Hübner, voluntary worker of the Skolelinux project and employee here at credativ underlines the modern approach of the new version:<br />
<blockquote>"Skolelinux made a huge leap forward with the new release: the seamless, out of the box integration of the Diskless Workstation makes Skolelinux perfect for the challenges of today, as it evolves to keep up with the constantly growing performance of computers. This way, the performance of modern workstations is perfectly combined with the low maintainance work of thin clients."</blockquote></p>

<p>Skolelinux is now used by milions of pupils across various countries, including Spain, Norway and Germany. In 2009, credativ Germany supervised the <a href="/2009/10/skolelinux-project-for-german-schools-continues-after-the-pilot-phase/">successful completion</a> of a Skolelinux evaluation project, a solution which is increasingly adopted in schools today. As a certified support partner, credativ is able to offer professional support services in the education sector.We congratulate Skolelinux for this release: well done, we wish you all the best for the future!</p>]]>
        
    </content>
</entry>

<entry>
    <title>BSP2010 a great success - 200 bugs eliminated!</title>
    <link rel="alternate" type="text/html" href="http://blog.credativ.com/en/2010/02/bsp2010-a-great-success-200-bugs-eliminated.html" />
    <id>tag:platon.credativ.com,2010:/en//2.103</id>

    <published>2010-02-10T11:31:52Z</published>
    <updated>2010-03-05T11:05:19Z</updated>

    <summary>The 2010 Debian Bug Squashing Party turned out to be a great success: around 200 bugs were fixed, ready for the forthcoming version of Debian. The weekend of 22-24 January saw this year&apos;s Bug Squashing Party hosted yet again by...</summary>
    <author>
        <name>Roland Wolters</name>
        <uri>http://www.credativ.de</uri>
    </author>
    
        <category term="Debian" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Linux" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="News" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Open Source" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="credativ" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://blog.credativ.com/en/">
        <![CDATA[<p><img alt="debianlogo.png" src="/en/static/debianlogo.png" width="60" height="73" class="mt-image-right" style="float: right; margin: 0 0 20px 20px;" /><em>The 2010 Debian Bug Squashing Party turned out to be a great success: around 200 bugs were fixed, ready for the forthcoming version of Debian.</em></p>

<p>The weekend of 22-24 January saw this year's Bug Squashing Party hosted yet again by credativ.  The aim of the weekend was to find and fix bugs in the next Debian release.  The results were as follows:<table style="border:solid 1px #AAAAAA;font-size:95%;empty-cells:show;" border="2" cellspacing="1" cellpadding="4" width="95%" rules="all"><tbody><tr bgcolor="#e2e2e2"><th align="center">Work on Debian</th><th align="center">Results</th></tr><tr><td>Installed Patches</td><td align="center">5</td></tr><tr><td>Fixed Bugs</td><td align="center">44</td></tr><tr><td>Non-critical Bugs</td><td align="center">28</td></tr><tr><td>Completely removed Packages</td><td align="center">87</td></tr><br />
<tr><td>Packages removed from Testing</td><td align="center">29</td></tr></tbody></table><br />
Altogether that gives a grand total of 200 bugs.  In addition, information was gathered on a further 100 bugs, which will help when they come to be fixed.  A lot of time was also spent on quality assurance, an under appreciated but very important job.More gossip: it is rumoured that <a href="http://www.backports.org">backports.org</a> is not far off becoming an official Debian project... and in the meantime it will be launching a brand new website running on ikiwiki.</p>

<p>Our "guests" from far and wide were more than happy with the BSP party: <strong>Steve McIntyre:</strong> (Debian project leader)<br />
<blockquote>Thanks to the folks at credativ for hosting and participating in the BSP - we got a huge amount of work done towards the next release and had a great time doing it!</blockquote><br />
<strong>Stefano Zacchiroli:</strong><br />
<blockquote>My 1st Mönchengladbach BSP, won't be the last! Lots of cool people and hacking, and I've enjoyed my 1st "traditional" Formorer's chilli too :).</blockquote><br />
credativ would like to thank all those who came and got involved - now you can lean back, relax and enjoy the <a href="http://gallery.youam.net/?galerie=2010-01-22--BSP2010mg">photos of the event</a>.</p>]]>
        
    </content>
</entry>

<entry>
    <title>News flash: OpenLogic and credativ announce Partnership</title>
    <link rel="alternate" type="text/html" href="http://blog.credativ.com/en/2010/01/news-flash-openlogic-and-credativ-announce-partnership.html" />
    <id>tag:platon.credativ.com,2010:/en//2.95</id>

    <published>2010-01-27T13:55:23Z</published>
    <updated>2010-03-05T11:01:04Z</updated>

    <summary>credativ and OpenLogic today announced a partnership, broadening enterprise-grade Open Source support in Europe and North America. The news is spreading across the net fast: OpenLogic and credativ have teamed up so that credativ can offer support to OpenLogic&apos;s enterprise...</summary>
    <author>
        <name>Roland Wolters</name>
        <uri>http://www.credativ.de</uri>
    </author>
    
        <category term="Debian" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Linux" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="News" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Open Source" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="RHEL/CentOS" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Support" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="credativ" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://blog.credativ.com/en/">
        <![CDATA[<p><img alt="openlogic-logo.png" src="/en/static/openlogic-logo.png" width="175" height="61" class="mt-image-right" style="float: right; margin: 0 0 20px 20px;" /><em>credativ and OpenLogic today announced a partnership, broadening enterprise-grade Open Source support in Europe and North America.</em></p>

<p>The news is spreading across the net fast: OpenLogic and credativ have teamed up so that credativ can offer support to OpenLogic's enterprise customers across North America and Europe. This will combine credativ's extended experience and knowledge in supporting Open Source software with OpenLogic's enterprise-ready and certified Open Source software solutions.</p>

<p>With this partnership, OpenLogic's customers will get in-depth 3rd level support by credativ as *THE* global, independent provider of expertise in a variety of open source technologies. Besides the 3rd level support by the <a href="http://www.credativ.us/services/support/">Open Source Support Center</a>, key points of the partnership also include backstop support for CentOS - OpenLogic announced full enterprise support of CentOS in December 2009 - as well as global backstop support for OpenLogic's 500+ <a href="http://www.openlogic.com/products/certified-library.php">certified Open Source enterprise packages</a>.</p>

<p>In the words of Steve Gandchamp, CEO of OpenLogic:<br />
<blockquote>OpenLogic already serves a number of Fortune 500 global clients. This partnership with credativ significantly strengthens our ability to serve these customers in Europe."</blockquote></p>

<p>Joe Conway, president of credativ US, added:<br />
<blockquote>credativ is uniquely positioned as a global, independent provider of technical expertise across a wide spectrum of open source technologies. Our partnership with OpenLogic will allow us to assist organizations already benefiting from OpenLogic's enterprise offerings to expand their successful use of open source software.</blockquote></p>

<p>The press releases can be read on all big news sites, for example <a href="http://www.marketwire.com/press-release/OpenLogic-Announces-credativ-Partnership-Broadens-European-Footprint-Open-Source-Support-1107747.htm">here (OpenLogic)</a> or <a href="http://www.prweb.com/releases/2010/01/prweb3526234.htm">here (credativ US)</a>.</p>]]>
        
    </content>
</entry>

<entry>
    <title>SkoleLinux project for German schools continues after the pilot phase</title>
    <link rel="alternate" type="text/html" href="http://blog.credativ.com/en/2009/10/skolelinux-project-for-german-schools-continues-after-the-pilot-phase.html" />
    <id>tag:platon.credativ.com,2009:/en//2.91</id>

    <published>2009-10-15T13:34:16Z</published>
    <updated>2010-03-05T10:58:07Z</updated>

    <summary>Using Linux in schools gives children the ability to experience technologies aside of main stream operating systems, thus learning about technical diversity and enhancing their skills in different information technologies. credativ is about to finish a pilot phase using an...</summary>
    <author>
        <name>Roland Wolters</name>
        <uri>http://www.credativ.de</uri>
    </author>
    
        <category term="Debian" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Linux" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="News" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Support" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="credativ" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en" xml:base="http://blog.credativ.com/en/">
        <![CDATA[<p><img alt="skole_tux_small.png" src="/en/static/skole_tux_small.png" width="86" height="102" class="mt-image-right" style="float: right; margin: 0 0 20px 20px;" /><em>Using Linux in schools gives children the ability to experience technologies aside of main stream operating systems, thus learning about technical diversity and enhancing their skills in different information technologies. credativ is about to finish a pilot phase using an adapted version of SkoleLinux with about ten schools over a year, and another two dozen schools are preparing to join the project.</em></p>

<p>Beginning this year, credativ and a local government authority formed a alliance to explore the possiblities of Linux usage in schools. For this reason the local government decided to pick about ten test schools and provided them with an adapted version of <a href="http://www.slx.no/">SkoleLinux</a> which includes <a href="http://wiki.debian.org/CipUX">Cipux</a> for a comprehensive pupil data management.</p>

<p>The hardware setup is notable since it was especially designed with the needs of the schools in mind: besides the usual main server (called 'Tjener' in SkoleLinux), all schools were provided with so-called laptop trolleys. A trolley contains 12-16 laptops, two wireless access points, a switch and a lan cable. When the trolley is brought into a class room, the lan cable is connected to the main network via a plug in the class room. The laptops, which are taken out of the trolley by the pupils, use the wireless lan to access the trolley and thus have a connection to the server. Additionally, schools, if they had the hardware, were able to use a terminal server.</p>

<p>credativ's job was to install and set up the systems, whilst providing the schools with 2nd and 3rd level support. Since at that time only a virtual image for the server was available, credativ had to develop the installation mechanism for the terminal server as well as for the clients. The installation was based on preseeding to enable schools to re-install the systems via network on the fly if for some reason a system failed. This method was also used to bring up the terminal servers - so even when an entire terminal server crashed it could be re-installed immediately by the school in just two clicks.</p>

<p>Looking back now, the project was highly interesting and provided valuable experience. A good number of bugs were discovered and solved, and we were also able to give the developers lots of feedback about workflow and tools required in a school environment. In addition, we gained an insight into the needs of teachers concerning what tools, software and associated training would be required to enable them to use the system; we were then able to pass this information and our ideas on to local government.</p>

<p>From our perspective it was interesting to see what software was requested by the schools and which setups worked best. For example, not all schools were equipped with terminal servers, but those that did were highly satisfied with the setups. Also, many school admins were used to clone windows images and play them back as soon as they had problems, which is not that common in the Linux world, and wasn't possible in the pilot phase.Out of these experiences and the success of the pilot phase a new round has now been set up, which will include many more schools and a certification program for SkoleLinux business partners. Starting next year, even more schools will have the ability to run Linux based systems - giving pupils freedom of choice and diversity in an otherwise single vendor environment.</p>]]>
        
    </content>
</entry>

</feed>

