Ubuntu 12.04 pxe install server
Jump to navigation
Jump to search
1 Install Packages
apt-get install tftpd-hpa syslinux apt-mirror apache2 lftp curl makepasswd screen dstat lsof dpkg-dev nano-
2 Configure Server
2.1 APT Mirror
- vi /etc/apt/mirror.list
set base_path /srv/apt-mirror set nthreads 20 set _tilde 0 set defaultarch i386 deb http://archive.ubuntu.com/ubuntu precise main restricted universe multiverse deb http://archive.ubuntu.com/ubuntu/ precise-backports main restricted universe multiverse deb http://archive.ubuntu.com/ubuntu precise-security main restricted universe multiverse deb http://archive.ubuntu.com/ubuntu precise-updates main restricted universe multiverse deb http://archive.ubuntu.com/ubuntu precise main/debian-installer restricted/debian-installer universe/debian-installer multiverse/debian-installer clean http://archive.ubuntu.com/ubuntu
- create initial apt-mirror dirs
mkdir -p /srv/apt-mirror/skel /srv/apt-mirror/mirror /srv/apt-mirror/var
- create soft link for pxe clients, clients will use this as install source
ln -s /srv/apt-mirror/mirror/archive.ubuntu.com/ubuntu /var/www/ubuntu
- this is a post mirroring script called by default variable from apt-mirror config
- vi /srv/apt-mirror/var/postmirror.sh
#!/bin/bash DATE=$(date '+%Y%m%d%H%M') cd /srv/apt-mirror/mirror/ echo Starting clean.sh ... /bin/bash /srv/apt-mirror/var/clean.sh test -d backup || mkdir backup ls -1d * | egrep -v '^backup$' | while read MIRROR do cp -al $MIRROR backup/$MIRROR.$DATE done
chmod 755 /srv/apt-mirror/var/postmirror.sh
- if you want apt-mirror to run daily, you can use this config, otherwise call it manually
- vi /etc/cron.d/apt-mirror
apt-mirror
2.2 Kickstart
- this is needed to pull the kickstart files during client setup
mkdir -p /srv/inst/ks rm -f /var/www/index.html ln -s /srv/inst /var/www/inst
- this is just an example, not all vars from RedHat Kickstart are working, google for "Ubuntu Kickstart 12.04"
- vi /srv/inst/ks/u1204-i386-workstation.ks
lang de_CH
langsupport de_CH
keyboard ch
mouse
timezone Europe/Zurich
# makepasswd --clearfrom=- --crypt-md5 |awk '{ print $2 }'
rootpw --iscrypted $1$GzZX7/W7$5wOo5UOEmBXdFk6DCfsHn.
user --disabled
# reboot
text
install
url --url http://wonder/ubuntu
bootloader --location=mbr
zerombr yes
clearpart --all --initlabel
part / --fstype ext4 --size 1 --grow --asprimary
part swap --size 2048
network --bootproto=dhcp --device=eth0
xconfig --startxonboot
%packages
openssh-server
acl
bash-completion
dstat
debconf-utils
heirloom-mailx
iftop
postfix
strace
screen
sudo
vim
xdm
vlc
xfce4-panel
xfce4-volumed
xfce4-xkb-plugin
xfdesktop4
xfce4-session
xfce4-screenshooter
xfce4-power-manager
xfce4-notifyd
xfce4-notes
xfce4-indicator-plugin
xfce4-datetime-plugin
xfce4-settings
xubuntu-wallpapers
xubuntu-artwork
xubuntu-default-settings
xubuntu-icon-theme
xubuntu-docs
plymouth-theme-xubuntu-logo
plymouth-theme-xubuntu-text
xfburn
thunar
ristretto
evince
gimp
simple-scan
file-roller
gmusicbrowser
pavucontrol
thunderbird-locale-de
thunderbird
mozilla-plugin-vlc
openjdk-7-jre
icedtea-7-plugin
flashplugin-installer
libreoffice
hyphen-de
libreoffice-help-de
libreoffice-l10n-de
mythes-de-ch
myspell-de-ch
pulseaudio
vlc-plugin-pulse
pulseaudio-module-x11
gstreamer0.10-pulseaudio
%post
#---------- CONFIGURE SYSTEM ----------
#--- some resticted stuff ---
echo 'ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula boolean true' | debconf-set-selections
apt-get -y install ubuntu-restricted-addons
bash /usr/share/doc/libdvdread4/install-css.sh
#--- configure cups ---
touch /etc/cups/printers.conf
chown root:lp /etc/cups/printers.conf
chmod 600 /etc/cups/printers.conf
sed -i 's/Browsing Off/Browsing On/g' /etc/cups/cupsd.conf
#--- configure apt ---
sed -i 's/^deb-src/# deb-src/g;s/security.ubuntu.com/wonder/g' /etc/apt/sources.list
#--- configure ntp ---
cat << EOF > /etc/cron.hourly/ntpdate.sh
#!/bin/bash
/usr/sbin/ntpdate pool.ntp.org >/dev/null 2>&1
EOF
chmod 755 /etc/cron.hourly/ntpdate.sh
ln -s /etc/cron.hourly/ntpdate.sh /etc/rc2.d/S99ntpdate.sh
#--- firewall ---
ufw enable
ufw allow 22/tcp
#--- user for testing ---
useradd -m -p '$1$GzZX7/W7$5wOo5UOEmBXdFk6DCfsHn.' chris
2.3 TFTPd
mv /var/lib/tftpboot /srv/ ln -s /srv/tftpboot /var/lib/tftpboot /etc/init.d/tftpd-hpa restart
mkdir /srv/netboot-ubuntu-1204 cd /srv/netboot-ubuntu-1204 wget http://archive.ubuntu.com/ubuntu/dists/precise/main/installer-i386/current/images/netboot/netboot.tar.gz -O u1204.i386.netboot.tar.gz tar vxfz u1204.i386.netboot.tar.gz cp /srv/netboot-ubuntu-1204/ubuntu-installer/i386/linux /srv/tftpboot/u1204.i386.linux cp /srv/netboot-ubuntu-1204/ubuntu-installer/i386/initrd.gz /srv/tftpboot/u1204.i386.initrd.gz cp /usr/lib/syslinux/reboot.c32 /srv/tftpboot/ cp /usr/lib/syslinux/pxelinux.0 /srv/tftpboot/ cp /usr/lib/syslinux/menu.c32 /srv/tftpboot/ cp /usr/lib/syslinux/chain.c32 /srv/tftpboot/
mkdir /srv/tftpboot/pxelinux.cfg/
- vi /srv/tftpboot/pxelinux.cfg/default
default menu.c32
TIMEOUT 3000
ONTIMEOUT reboot
PROMPT 0
NOESCAPE 1
MENU TITLE Install Server
LABEL reboot
menu label Reboot System (Cold)
COM32 reboot.c32
MENU SEPARATOR
label workstation
menu label Xubuntu 12.04 Desktop i386
kernel u1204.i386.linux
append ks=http://wonder/inst/ks/u1204-i386-workstation.ks initrd=u1204.i386.initrd.gz -- quiet
2.4 DHCPd
On dhcp server, you need to declare the pxe location and its boot file (next-server, filename):
subnet 192.168.123.0 netmask 255.255.255.0 {
range 192.168.123.30 192.168.123.40;
option domain-name "gallien.bitbull.ch";
option domain-name-servers 192.168.123.50, 195.186.1.110;
option broadcast-address 192.168.123.255;
option subnet-mask 255.255.255.0;
option routers 192.168.123.254;
default-lease-time 86400;
max-lease-time 86400;
next-server 192.168.123.64;
filename "pxelinux.0";
# --- KVM VMs on master --------------------------------------------------------
host name { # DNS + DHCP
hardware ethernet 52:54:00:5e:c1:15;
fixed-address 192.168.123.50;
}