Anaconda the Fedora, CentOS and Red Hat Enterprise Linux installer has the
capability to incorporate
updates at runtime.
These updates are generally distributed as an updates.img
file. Here is how
to easily build one from a working installation tree.
Instead of using the git sources to build an updates.img I prefer using the SRPM
from the tree which I am installing. This way the resulting updates image will be
more consistent with the anaconda version already available in the tree. And in theory
everything you need to build it should already be available as well.
UPDATE 2014-02-08: You can also build the updates.img
from the git source tree
which is shown at the bottom of this article.
The following steps work for me on a Fedora 20 system.
-
Download the source RPM for anaconda from the tree and extract the sources to a working directory. Then;
cd anaconda-20.25.16-1 git init git add . git commit -m "initial import" git tag anaconda-20.25.16-1
-
The above steps will create a local git repository and tag the initial contents before modification. The tag is required later by the script which creates the updates image;
-
After making your changes commit them and from the top anaconda directory execute:
./scripts/makeupdates -t anaconda-20.25.16-1
You can also add RPM contents to the updates.img but you need to download the packages first:
yumdownloader python-coverage python-setuptools
./scripts/makeupdates -t anaconda-20.25.16-1 -a ~/python-coverage-3.7-1.fc20.x86_64.rpm -a ~/python-setuptools-1.4.2-1.fc20.noarch.rpm
BUILDDIR /home/atodorov/anaconda-20.25.16-1
Including anaconda
2 RPMs added manually:
python-setuptools-1.4.2-1.fc20.noarch.rpm
python-coverage-3.7-1.fc20.x86_64.rpm
cd /home/atodorov/anaconda-20.25.16-1/updates && rpm2cpio /home/atodorov/python-setuptools-1.4.2-1.fc20.noarch.rpm | cpio -dium
3534 blocks
cd /home/atodorov/anaconda-20.25.16-1/updates && rpm2cpio /home/atodorov/python-coverage-3.7-1.fc20.x86_64.rpm | cpio -dium
1214 blocks
<stdin> to <stdout> 4831 blocks
updates.img ready
In the above example I have only modified the top level anaconda file (/usr/sbin/anaconda
inside the installation environment) experimenting with
python-coverage integration.
You are done! Make the updates.img
available to Anaconda and start using it!
UPDATE 2014-02-08: If you prefer working with the anaconda source tree here's how to do it:
git clone git://git.fedorahosted.org/git/anaconda.git
cd anaconda/
git checkout anaconda-20.25.16-1 -b my_feature-branch
... make changes ...
git commit -a -m "Fixed something"
./scripts/makeupdates -t anaconda-20.25.16-1
Comments !