Articles in the Linux category

  1. Automated Install of Debian Linux Based on PXE Net Booting

    Sat 25 April 2009

    Every honest and good system administrator is continue bussy with automating his work. For two reasons:

    1. Repeating the same task over and over again is friggin boring. A system administrator has better things to do, such as drinking coffee.
    2. Humans make mistakes, especially if boring. Computers do not.

    If a computer can do a certain job, it wil do it always faster and better than a human. Automating system installation is both more time efficient and allows you to deliver a constant quality.

    Netbooting or PXE booting

    Regarding the installation of hosts, the holy grail of automated installation is netbooting or PXE booting. Almost every system today contains a network interface card that supports booting over the network. A system obtains instructions from the local DHCP server where to obtain an operating system kernel. This kernel is obtained using TFTP and then loaded. From then on, the operating system takes over and the installation continues, for example based on Debian preseeding and/or FAI.

    How to prepare for netbooting

    The following requirements must be met:

    1. a DHCP server must be available
    2. a TFTP server must be avaialble
    3. the correct files for netbooting must be in place

    Configuring the DHCP server

    The following two lines must be added to the 'subnet' section of your DHCP server configuration.

    filename "pxelinux.0";
    next-server 10.0.0.1;
    

    The 'next-server' section specifies the IP-address of the system that is running the TFTP server, so change it based on your configuration, this is just an example.

    Don't forget to restart the DHCP server daemon.

    Configuring the TFTP server

    First, make sure you install "tftpd-hpa" since the standard "tftpd" server does not seem to support the "tsize" option. Then, edit /etc/defaults/tftpd- hpa like this:

    RUN_DAEMON="yes"
    OPTIONS="-l -a -R 30000:30100 -s /var/lib/tftpboot"
    

    Do not run the TFTP server from inetd because the above lines provide more control over how the server behaves, especially in regard to firewalls.

    The -R option specifies the port-range used for data transfers. This port range should also be configured within your firewall configuration. Watch out! Do not allow TFTP access from the Internet. TFTP requires NO authentication and is very insecure.

    Start the TFTPD server with:

    /etc/init.d/tftpd-hpa start
    

    Install the files required for netbooting

    The fun thing is that Debian provides a complete package for netbooting. So cd to /var/lib/tftpboot and enter:

    wget http://ftp.debian.org/debian/dists/lenny/main/installer-i386/current
         /imag es/netboot/netboot.tar.gz
    

    Then extract the contents of netboot.tar.tz like:

    tar xzf netboot.tar.gz
    

    That is all there is to it. If you start a host and make it boot using PXE, it will show you the regular installation menu that is also shown when a system is booted from a regular Debian installation CD-ROM.

    However, if you want automated installation and not use this boot menu, first cd to:

    /var/lib/tftpboot/debian-installer/i386/boot-screens
    

    Then edit syslinux.cfg and comment this rule out:

    default debian-installer/i386/boot-screens/vesamenu.c32
    

    If you want to use preseeding, first edit adtxt.cfg and goto label auto. Edit label auto like this:

    label auto
    menu label ^Automated install
    kernel debian-installer/i386/linux
    append auto=true priority=critical vga=normal 
        initrd=debian-installer/i386/initrd.gz url=http://(IP-address)/preseed/preseed.cfg -- quiet
    

    The IP-address section should point towards the preseed server that is hosting the preseed configuration file.

    Last, edit txt.cfg. Change 'default install' to:

    default auto
    

    I always though that PXE booting was a pain to setup. However, I got it working within 60 minutes using this howto.

    Tagged as : Uncategorized
  2. How to Escape File Names in Bash Shell Scripts

    Sun 29 March 2009

    After fighting with Bash for quite some time, I found out that the following code provides a nice basis for escaping special characters. Ofcource it is not complete, but the most important characters are filtered.

    If anybody has a better solution, please let me know. It works and it is readable but not pretty.

    FILE_ESCAPED=`echo "$FILE" | \

    sed s/\ /\\\\\\\ /g | \

    sed s/\'/\\\\\\\'/g | \

    sed s/\&/\\\\\\\&/g | \

    sed s/\;/\\\\\\\;/g | \

    sed s/(/\\\\\(/g | \

    sed s/)/\\\\\)/g `

    Tagged as : Uncategorized
  3. 'Linux: Unattended Installation With Debian Preseeding'

    Sun 22 February 2009

    Debian Linux provides a mechanism to install the operating system without user intervention. This mechanism is called 'preseeding' and is similar to Red Hat Kick Start and Sun Solaris Jump Start.

    The basic idea is that the installer is fed a recipe, according to which the system is installed. This recipe can be fed by a floppy, usb stick, cdrom, or through a web server over the network. To use such a recipe, just boot from a Debian CD-rom and issue the following command:

    Floppy based: (you really shouldn't be using those anymore) 

    Boot: auto file=/floppy/preseed.cfg

    USB stick based:

    Boot: auto file=/hd-media/preseed.cfg

    Network based: 

    Boot: auto url=http://internal.web.server.com/preseed.cfg

    The only work you have to do is to create a preseed configuration file. This is really simple, since preseeding is well-documented and preseed configuration files are easy to understand.

    d-i debian-installer/country string US 

    d-i debian-installer/locale string en_US.UTF-8 

    d-i mirror/country string manual 

    d-i mirror/http/hostname string ftp.uk.debian.org 

    d-i mirror/http/directory string /debian 

    base-config apt-setup/hostname string ftp.uk.debian.org 

    base-config apt-setup/directory string /debian

    As you can see, it is just a text-based file that configures some variables that are used during installation. It is basically an answer file. Questions that are asked by the installer during installation are answered with the preseed file.

    For a full example, take a look here. 

    Very extensive documentation can be found here.

    A  minimal debian installation without support for X can be installed within 2.5 minutes, assuming a network-based installation (tested in VMware Workstation). 

    Please note that if your company uses Debian Linux not only for servers but also for desktops / laptops, preseeding is an ideal solution to provide your users with a new and fresh installation whenever they want. Users or sysadmins shouldn't be bussy manually installing these systems. 

    I have implemented Debian Preseeding to create a fully unattended and automated installation of laptops, based on LUKS full disk encryption, which is supported by the Debian installer (!), with all required software installed. All additional software is installed with a custom installation framework based on shell-scripts. The installation framework makes sure that if anything goes wrong during installation, it is noticed. 

    Unattended installation allows system administrators to quickly deploy new installations and guarantee that such installations are 100% correct. They rule out the human factor, which tends to introduce random errors. So take a look at Debian Preseeding and decide for yourself how useful it is.

    Tagged as : Uncategorized

Page 3 / 5