Saturday, May 08, 2010

TFTP Bootserver for netinstalls using Ubuntu Server

Enable network booting from BIOS and move it above the rest.

Install Ubuntu Server 8.04 LTS or better on a VMWare machine.

sudo apt-get update && apt-get dist-upgrade
sudo apt-get install tftpd-hpa dhcp3-server openbsd-inetd tftp-hpa

Backup and replace /etc/dhcpd3/dhcpd.conf with the attached file.
Backup and replace /etc/inetd.conf with the attached file.

Download the correct netboot package:
http://archive.ubuntu.com/ubuntu/dists/intrepid/main/installer-i386/current/images/netboot/netboot.tar.gz
http://archive.ubuntu.com/ubuntu/dists/hardy-updates/main/installer-i386/current/images/netboot/netboot.tar.gz

etc.

Lucid doesn't have an updated one yet:

http://archive.ubuntu.com/ubuntu/dists/lucid/main/installer-amd64/current/images/netboot/netboot.tar.gz

or

http://archive.ubuntu.com/ubuntu/dists/lucid/main/installer-i386/current/images/netboot/netboot.tar.gz
   

mkdir -p /tftpboot/32bit
cd /tftpboot/32bit ; tar -zxf ~/netboot.tar.gz

Depending on if you want to install 8.10 or 8.04... 8.10 advised at the mo.

Boot the Eee once over the network. It won't. Note down the IP address.

Edit /etc/dhcpd3/dhcpd.conf and change the following for your env:
 hardware ethernet 00:1E:8C:5C:7D:42;
 fixed-address 192.168.1.100;
 next-server 192.168.1.64;
 filename "32bit/pxelinux.0";
 option routers 192.168.1.254;
 option domain-name-servers 192.168.1.254;

replacing the hardware ethernet with the Eee's MAC.

Restart the dhcpd daemon. Make sure inetd is running, if not invoke the daemon.

This step is very critical: PLUG THE FRIGGIN' CABLE TO THE EEE...

Reboot. Enjoy.
Then it's a matter of spending a couple of hours while it downloads everything over the net and installs.

Once the installation is done, add the following to /etc/apt.d/sources.list:

deb http://www.array.org/ubuntu intrepid eeepc


save, exit.

wget http://www.array.org/ubuntu/array-apt-key.asc
sudo apt-key add array-apt-key.asc
sudo apt-get update
sudo apt-get install linux-eeepc

(more stuff here http://array.org/ubuntu/setup-intrepid.html)

Get the kernel. Reboot.

Download the latest Skype from skype.com and install as usual.


Do the following: (stolen from www.ubuntu-eee.com/wiki). The rest are copy-pasted from the wiki. I did most of them, esp. removed the tmp to ramdisk and did the powernowd installation and configuration.

----8-------------------------
--------------------------


Move /tmp, /var/tmp, /var/log and /var/log/apt into RAM

Using the fstab file we can move temporary data and log files into RAM. This process mounts each location as a temporary file system.

sudo gedit /etc/fstab

Add the following lines to the bottom of your fstab file.

Wicd 1.5 users: Do not add the last 2 lines otherwise the Wicd daemon will fail to start. This is a known Wicd bug.

tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0
tmpfs /var/tmp tmpfs defaults,noatime,mode=1777 0 0
tmpfs /var/log tmpfs defaults,noatime,mode=0755 0 0
tmpfs /var/log/apt tmpfs defaults,noatime 0 0

Note: Your log files will vanish after each reboot. But other than that, there are no harmful side effects from this operation.

You might add also unionfs for /var/cache at the end fstab:

none /var/cache unionfs dirs=/tmp:/var/cache=ro 0 0

[edit] Tweak Primary File Systems

The following options can be added to your remaining partitions to help lower disk writes:

   * Use the "noatime,nodiratime" options for any of your reiserfs partitions in /etc/fstab. This also gives slightly faster filesystem performance.
   * Use the noatime option for any of your ext3 partitions in /etc/fstab. See Geek Sheet's blog for more details.
   * Use a the non-journalling filesystem ext2 at the cost of data reliability.

[edit] blkid.tab and mtab

The following commands can be executed to further reduce disk writes. If you wish to mount anything through fuse the second set of instructions will likely cause problems, if you go ahead and later need to mount something, instructions for removal of this link can be found on the talk page for this article.

sudo rm -f /etc/blkid.tab*
sudo ln -s /dev/null /etc/blkid.tab

sudo rm -f /etc/mtab
sudo ln -s /proc/mounts /etc/mtab

See Debian Administration for more details.

CPU Frequency scaling

(Note that this seems not to be necessary when using ubuntu-eee 8.04)

   * Edit /etc/modules

 sudo gedit /etc/modules

   * Add the line

p4_clockmod

   * Make sure powernowd is installed (I think it's by default) otherwise install it using

 sudo apt-get install powernowd

[edit] Laptop-mode

Alternatively enable laptop-mode

   * Enable laptop mode by editing /etc/default/acpi-support

 ENABLE_LAPTOP_MODE=true

   * Edit /etc/laptop-mode/laptop-mode.conf

 ENABLE_LAPTOP_MODE_ON_BATTERY=1

   * Disable all HD features as eeepc uses a SSD

 CONTROL_HD_XXX=0

   * Tune the cpu scaling options, too aggressive settings will make performance too slow. This setting works ok:

 BATT_CPU_GOVERNOR=performance

You can check the current cpu frequency with

 cat /proc/acpi/processor/CPU1/throttling

Whit these settings, the cpu stays mostly at 50%, and increases imediatly by demand, like when opening webpages in firefox.

----8---------------------------------------------------

#
# Sample configuration file for ISC dhcpd for Debian
#
# Attention: If /etc/ltsp/dhcpd.conf exists, that will be used as
# configuration file instead of this file.
#
# $Id: dhcpd.conf,v 1.1.1.1 2002/05/21 00:07:44 peloy Exp $
#

# The ddns-updates-style parameter controls whether or not the server will
# attempt to do a DNS update when a lease is confirmed. We default to the
# behavior of the version 2 packages ('none', since DHCP v2 didn't
# have support for DDNS.)
ddns-update-style none;

# option definitions common to all supported networks...
#option domain-name "example.org";
#option domain-name-servers ns1.example.org, ns2.example.org;

default-lease-time 600;
max-lease-time 7200;

# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
#authoritative;

# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;

# No service will be given on this subnet, but declaring it helps the
# DHCP server to understand the network topology.

#subnet 10.152.187.0 netmask 255.255.255.0 {
#}

# This is a very basic subnet declaration.

#subnet 10.254.239.0 netmask 255.255.255.224 {
#  range 10.254.239.10 10.254.239.20;
#  option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;
#}

# This declaration allows BOOTP clients to get dynamic addresses,
# which we don't really recommend.

#subnet 10.254.239.32 netmask 255.255.255.224 {
#  range dynamic-bootp 10.254.239.40 10.254.239.60;
#  option broadcast-address 10.254.239.31;
#  option routers rtr-239-32-1.example.org;
#}

# A slightly different configuration for an internal subnet.
#subnet 10.5.5.0 netmask 255.255.255.224 {
#  range 10.5.5.26 10.5.5.30;
#  option domain-name-servers ns1.internal.example.org;
#  option domain-name "internal.example.org";
#  option routers 10.5.5.1;
#  option broadcast-address 10.5.5.31;
#  default-lease-time 600;
#  max-lease-time 7200;
#}

# Hosts which require special configuration options can be listed in
# host statements.   If no address is specified, the address will be
# allocated dynamically (if possible), but the host-specific information
# will still come from the host declaration.

#host passacaglia {
#  hardware ethernet 0:0:c0:5d:bd:95;
#  filename "vmunix.passacaglia";
#  server-name "toccata.fugue.com";
#}

# Fixed IP addresses can also be specified for hosts.   These addresses
# should not also be listed as being available for dynamic assignment.
# Hosts for which fixed IP addresses have been specified can boot using
# BOOTP or DHCP.   Hosts for which no fixed address is specified can only
# be booted with DHCP, unless there is an address range on the subnet
# to which a BOOTP client is connected which has the dynamic-bootp flag
# set.
#host fantasia {
#  hardware ethernet 08:00:07:26:c0:a5;
#  fixed-address fantasia.fugue.com;
#}

# You can declare a class of clients and then do address allocation
# based on that.   The example below shows a case where all clients
# in a certain class get addresses on the 10.17.224/24 subnet, and all
# other clients get addresses on the 10.0.29/24 subnet.

#class "foo" {
#  match if substring (option vendor-class-identifier, 0, 4) = "SUNW";
#}

#shared-network 224-29 {
#  subnet 10.17.224.0 netmask 255.255.255.0 {
#    option routers rtr-224.example.org;
#  }
#  subnet 10.0.29.0 netmask 255.255.255.0 {
#    option routers rtr-29.example.org;
#  }
#  pool {
#    allow members of "foo";
#    range 10.17.224.10 10.17.224.250;
#  }
#  pool {
#    deny members of "foo";
#    range 10.0.29.10 10.0.29.230;
#  }
#}

authoritative;
subnet 192.168.1.0 netmask 255.255.255.0 {
       host terotestaa {
               # 'ping target_host', 'arp' shows MAC address
               # only give DHCP information to this computer:
               hardware ethernet 00:0D:56:73:F0:0D;
               # Basic DHCP info (see 'ifconfig', 'route', 'cat /etc/resolv.conf')
               fixed-address 172.28.1.7;
               option subnet-mask 255.255.0.0;
               option routers 172.28.1.254;
               option domain-name-servers 172.28.1.67, 172.28.1.69;
               # Non-essential DHCP options
               option domain-name "tielab.helia.fi";
       }
host pxeinstall {
 hardware ethernet 00:1E:8C:5C:7D:42;
 fixed-address 192.168.1.100;
 next-server 192.168.1.64;
 filename "32bit/pxelinux.0";
 option routers 192.168.1.254;
 option domain-name-servers 192.168.1.254;
}

host foo  {
 hardware ethernet 00:0C:29:61:01:A2;
 fixed-address 192.168.1.101;
 next-server 192.168.1.64;
 filename "64bit/pxelinux.0";
 option routers 192.168.1.254;
 option domain-name-servers 192.168.1.254;
}

}



tftp           dgram   udp     wait    root  /usr/sbin/in.tftpd /usr/sbin/in.tftpd -s /tftpboot