SDB:KIWI-LTSP Icecream
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
- Guide to Icecream by MMeeks
- Icecream on openSUSE
- KIWI Linux Terminal Server Project(LTSP) on openSUSE
Note: This setup assumes that there is no other DHCP server in the network.