Cheap VPS & Xen Server

Residential Proxy Network - Hourly & Monthly Packages

Minimal Ubuntu 8.04 Server Install

I find myself removing packages that I don’t need, especially if the packages belong to processes that are using processor resources. There is a way to start from the ground up, you can have a minimal system and just add what you need. This has the added benefit of extra security, your system doesn’t have services running that you don’t use. You won’t use a Ubuntu Server CD, but the Desktop Live CD.

1 Partition and Format drives

The tutorial is targeted for Sysadmins and more experienced users, so you probably know how you want to configure your storage. You could create a software RAID, my RAID 10 tutorial can guide you how to set up a RAID array in a Live CD environment.

Create your partitions, this example has a 50MB boot partition, a xfs formated root partition, and a 2GB swap partition.

sudo su
cfdisk /dev/sda
mkfs.ext3 /dev/sda1
mkfs.xfs /dev/sda2
mkswap /dev/sda3


2 Use debootstrap to create a minimal system

Mount file system and install debootstrap:

mkdir /min
mount /dev/sda2 /min
mkdir /min/boot
mount /dev/sda1 /min/boot

apt-get install debootstrap

By default debootstrap will download about 100 MB from Change the url on the third line to the best mirror you have access to.

nano /usr/share/debootstrap/scripts/hardy

case $ARCH in

Use debootstrap to create the minimal install:

debootstrap hardy /min


3 Configure your install

A few settings not configured in the install can just be copied from the Live CD environment:

cp /etc/hosts /min/etc/
cp /etc/network/interfaces /min/etc/network/
cp /etc/bash_completion /min/etc/
cp /etc/bash.bashrc /min/etc/

Set up mount folders for your optical drive:

mkdir -p /min/media/cdrom0
ln -s cdrom0 /min/media/cdrom

Configure your file system table:

nano /min/etc/fstab

proc            /proc           proc    defaults                   0       0
/dev/sda2	/               xfs    relatime                   0       1
/dev/sda1	/boot           ext3    relatime                   0       1
/dev/sda3	none            swap    sw                         0       0
/dev/cdrom      /media/cdrom0   udf,iso9660 user,noauto,exec,utf8  0       0


4 Chroot into your minimum install to prepare it for booting.

Set up and enter your chroot enviroment:

mount –bind /dev /min/dev
mount -t proc proc /min/proc
mount -t sysfs sysfs /min/sys
chroot /min

Install tools for your file system, unless you’re only using ext2 or ext3.
Say yes at the verification prompts:

apt-get install xfsprogs

Set your timezone, match the zoneinfo directory to your location:

cp /usr/share/zoneinfo/America/Denver /etc/localtime

Install your favorite config editor.

apt-get install nano

Update your sources.list to have all the packages and updates from your favorite mirror.

nano /etc/apt/sources.list

deb hardy main restricted universe multiverse
deb hardy-updates main restricted universe multiverse
deb hardy-security main restricted universe multiverse

Update your system.
You can ignore the locale warning.

apt-get update
apt-get dist-upgrade

Set root password and set up a user:

adduser maxbash

Set up sudo for your user:

addgroup admin
adduser maxbash admin
echo “%admin ALL=(ALL) ALL” >> /etc/sudoers


4 Make the minimal system bootable

Install the kernel and boot loader:

apt-get install linux-image-server grub
mkdir /boot/grub

Make sure all of the needed kernel modules are installed in the inital ramdisk.

update-initramfs -u

Exit your chroot:


Install grub to the MBR:

grub-install –root-directory=/min –no-floppy –recheck /dev/sda

Reboot into your new system.