Hello all I have some ideas for improving Anaconda for "not physical hardware" installations. As an example of this, consider the Kadischi project. The project aims to make official Fedora Live CDs. More info at: http://fedoraproject.org/wiki/Kadischi https://www.redhat.com/mailman/listinfo/fedora-livecd-list Kadischi is currently being built as a shell script that calls Anaconda from the command line. However, there are already some patches in Kadischi's CVS to add a command line parameter to Anaconda to enable Kadischi to skip certain installation steps. After Anaconda is done, Kadischi runs its own post install scripts in a chroot on the directory created by Anaconda. This does things like removing unnecessary files and setting up /etc/fstab. While this is a reasonable method for making Live CDs, I think that a more general way of doing things can benefit various other efforts, such as an installer for Xen guests. I took apart Anaconda 10.2.1.5's /usr/sbin/anaconda to see what it would entail to build something like Kadischi on top of the Anaconda code. I was left with a script containing about 350 lines of code that could install the Fedora Core 4 RPMS into a directory using Anaconda's command line, text and graphical modes with or without a kickstart configuration. This goes a long way towards handling installation for Live CDs, Xen guests and "normal" chroots. For example, I used this script to "install" Fedora Core 4 to a directory. I copied this directory to a Rocks Cluster 3.3.0 (based on RHEL 3) system, chrooted, started sshd, set up yum and added a user. I was able to ssh to this chrooted system and develop code with GCC 4.0.1 without changing the existing system (and this on a 2.4.21 kernel!). However, the various installations mentioned above all have slightly different requirements at various stages before and after the packages are extracted. Some changes to Anaconda will make all these scenarios easier to implement. So far I've identified the following: - There needs to be a flag other than setupFilesystems to tell Anaconda to run things like authconfig and lokkit inside the chroot. - There needs to be a way to add new installation steps. As far as I can tell, the list is currently hardcoded in BaseInstallClass. - Anything else? This will allow much greater customization of Anaconda. Kadischi can add a step telling the user the approximate size of the final CD. A USB flash disk installer can ask whether locales should be excluded to save some space. A Xen guest installer can prompt for an image filename to install the files to. All of this should be possible without changing Anaconda itself by creating new modules that add install steps. Is anybody working on this already? If not, is anyone interested in working on this? Anybody working on Xen guest installs with Anaconda? Any other comments? Regards Albert P.S. My script is attached. You can run it as follows: /opt/kadischi-20050914/usr/sbin/kadischi \ --noselinux \ --rootpath=/tmp/sysimage \ -m nfs://foo/bar/fedora/4/i386/os \ --logfile=/tmp/kadischi.log \ --cmdline \ --kickstart /opt/kadischi-20050914/ks.cfg
Attachment:
kadischi-20050914.tar.gz
Description: GNU Zip compressed data