SDB:KIWI-LTSP Icecream

Jump to: navigation, search

Introduction

Ever felt the need to have your own build farm? a supercomputer to do your builds? Here is how it is possible. Using Icecream and KIWI-LTSP you can convert your colleagues PC or your spare laptop instantly into a build cluster node. All you have to do is PXE boot the PC you want added to your build farm.

Forgot to mention that when they come back from lunch, they can do normal booting to get their system back "untouched".

Installing required softwares

Step 1: Install KIWI-LTSP

Follow the instructions on LTSP Quickstart to get LTSP server installed.

Step 2: Install Icecream

Run the following commands as root in shell:

 zypper in -y icecream icecream-monitor 

Configuration

Step 1: Icecream configuration

As root run the following in shell on the server:

 sed -i 's/ICECREAM_RUN_SCHEDULER="no"/ICECREAM_RUN_SCHEDULER="yes"/' /etc/sysconfig/icecream #enable scheduler
 insserv icecream #auto start service on next boot
 rcicecream start #start icecream service
 echo "PATH="/opt/icecream/bin:$PATH"" > /etc/profile.local

Step 2: KIWI-LTSP Image configuration

Add icecream and icecream-monitor inside the LTSP image. In /etc/sysconfig/kiwi-ltsp

 LTSP_LOCALAPPS="icecream icecream-monitor"

To configure icecream in the KIWI-LTSP image, edit /usr/share/kiwi/image/ltsp/suse-11.4/config.sh with your favorite editor and add "insserv icecream" under "Setup ltsp client" section.

Run the following as root in shell to set PATH:

 echo "PATH="/opt/icecream/bin:$PATH"" >> /usr/share/kiwi/image/ltsp/suse-12.1/root/etc/profile.local

Note: replace 12.1 with the openSUSE version you are using.

Build Image and configure LTSP server

Provided your network is configured, firewall disabled on the interface facing the internal network, after going through the LTSP quick start guide, run the following command to build the images and configure all the services:

 kiwi-ltsp-setup -s  #This builds PXE boot image

Scheduling jobs

PXE boot as many PC/Laptops needed for your build farm and run parallel make, just compile with make -j <num>, where <num> is the amount of jobs you want to compile in parallel. As a start, take the number of logical processors multiplied with 2. But note that numbers >15 normally cause trouble. Here is an example:

make CC=icecc -j6

To build rpm packages:

rpmbuild --eval '%define jobs 8' -ba SPECS/foo.spec

that -usually- (if the spec file is setup right) will do a parallel make 8 ways then just poke icemon I guess..(--MMeeks)

See Also

Note: This setup assumes that there is no other DHCP server in the network.