Ubuntu 12.04 pxe install server
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; }