FAI multi-distribution: Difference between revisions
mNo edit summary |
mNo edit summary |
||
Line 1: | Line 1: | ||
== Status == | == Status == | ||
FAI can install different Linux distributions like Redhat (especially RHEL5), Fedora, CentOS, | FAI can install different Linux distributions like Redhat (especially | ||
SuSE | RHEL5), Fedora, CentOS, openSUSE, SuSE, Ubuntu and of course Debian. | ||
Since FAI 3.1.8 already has the most important things integrated: | Since FAI 3.1.8 already has the most important things integrated: | ||
Line 15: | Line 15: | ||
A Quick overview: | A Quick overview: | ||
* build a minimal base image (see basefiles/Makefile) and put it into MY-DISTRIBUTION-NAME.tar.gz in the configspace/basefiles | * build a minimal base image (see basefiles/Makefile which uses rinse) and put it into MY-DISTRIBUTION-NAME.tar.gz in the configspace/basefiles | ||
* add the install host to the class MY-DISTRIBUTION-NAME | * add the install host to the class MY-DISTRIBUTION-NAME | ||
* write a hook prepareapt.MY-DISTRIBUTION-NAME to replace the stuff specific for the distribtuion of the fai server with something suitable to get your specific distribution ready to install packages. The actual prepareapt task must be skipped | * write a hook prepareapt.MY-DISTRIBUTION-NAME to replace the stuff specific for the distribtuion of the fai server with something suitable to get your specific distribution ready to install packages. The actual prepareapt task must be skipped | ||
Line 28: | Line 28: | ||
==== CentOS ==== | ==== CentOS ==== | ||
Currently (2/2011) Michael Goetze works on this. Will be included into trunk soon. | Currently (2/2011) Michael Goetze works on this. Will be included into trunk soon. | ||
Works with CentOS 5 and rinse 1.7. | |||
==== RHEL5 ==== | ==== RHEL5 ==== |
Revision as of 22:33, 11 February 2011
Status
FAI can install different Linux distributions like Redhat (especially RHEL5), Fedora, CentOS, openSUSE, SuSE, Ubuntu and of course Debian.
Since FAI 3.1.8 already has the most important things integrated:
- unpacking a base.tgz named CLASS.tar.gz from the configspace directory "basefiles"
- Alternative to this, via hook: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=494386
- using other package managers (see install_packages or it's doc)
Installing other distributions
A Quick overview:
- build a minimal base image (see basefiles/Makefile which uses rinse) and put it into MY-DISTRIBUTION-NAME.tar.gz in the configspace/basefiles
- add the install host to the class MY-DISTRIBUTION-NAME
- write a hook prepareapt.MY-DISTRIBUTION-NAME to replace the stuff specific for the distribtuion of the fai server with something suitable to get your specific distribution ready to install packages. The actual prepareapt task must be skipped
- check that the package lists of the classes of that host are compatible for your distribution. See install-packages -H
- install as usual
Distribution specific stuff
SuSE
A more verbose description on how to do this with SLES9 is available here
CentOS
Currently (2/2011) Michael Goetze works on this. Will be included into trunk soon. Works with CentOS 5 and rinse 1.7.
RHEL5
Redhat Enterprise Linux 5
Should work with more recent versions, too. Your need a redhat specific basefile - see below.
And you need a config space with some specific stuff for the redhat systems.
Check out http://svn.debian.org/wsvn/fai/people/lazyboy/rhel-install-fixes_3.1.8/examples/rhel-install-demo and add ths stuff you need to your current config space.
It should be no problem to mix this into your existing Debian configspace.
And there is a RHEL5 example configspace here: http://svn.debian.org/wsvn/fai/people/lazyboy/rhel-install-fixes_3.1.8/
Bootstrapping the base images for other distributions
Have a look at examples/simple/basefiles/Makefile. Works for Ubuntu, CentOS.
For example, to bootstrap rhel5, after having created a local mirror, I create such a yum.conf file:
[main] cachedir=/var/cache/yum debuglevel=2 logfile=/var/log/yum.log exclude=*-debuginfo gpgcheck=0 obsoletes=1 reposdir=/dev/null plugins=1 [base] protect=0 name=Red Hat Enterprise Linux 5 #baseurl=file:///nfs/rhel5/Server #baseurl=http://localhost/mirrors/rhel/5/Server/ baseurl=file:///var/www/mirrors/rhel/5/Server/ enabled=1
Then I call this script:
#! /bin/sh tmp=`mktemp -d` yum -c yum.conf --installroot=$tmp -y install yum dhclient cp rhel5.repo $tmp/etc/yum.repos.d/ mount -o bind /proc $tmp/proc chroot $tmp yum groupinstall -y Core chroot $tmp yum clean packages echo "chroot created in tmp=$tmp" oldpwd=$PWD cd $tmp umount ./proc tar cvfz $oldpwd/DIST-RHEL_5.tar.gz . cd - echo "chroot created in tmp=$tmp"
And I'm done. This leads to a working install when using my example configspace mentioned above.
There are some issues left, so this currently works for dirinstall, only, out of the box. I had to install some additional packages (will add the list later) manually in the nfsroot, and then netinstall via pxe worked, too.
To know what you have to install manually in the nfsroot, check the output of make-fai-nfsroot -v - at one point, quite some packages are dropped with the message that they aren't available, but they can be installed just normal, and are perfectly there. Without this, make-fai-nfsroot finishes with "success", but is unable to install a machine nicely via network install.