You have an Ubuntu alternate ISO and you want to customize it, to do things with ease you choose to do that with Ubuntu Customization Kit which will handle most of the tasks for you.
Preamble
This guide is written with the SVN version of Ubuntu Customization Kit, thus somethings (actually only minor things such as log messages) could be different from the ones you’ll get with your copy of UCK.
Prerequisites
To remaster an Ubuntu alternate ISO you need to:
- be running an Ubuntu based distro on your host system in order to install and run UCK successfully
- have UCK installed in your Ubuntu box. In order to install it go to the UCK’s website, click download and select the debian package. After downloading the package install it with the usual tools (dpkg or gdebi or whatever).
- have an Ubuntu alternate ISO downloaded somewhere in your hard disks.
First step: extract the ISO
An ISO image is a single file, you can’t modify it in any way keeping it “as is”, thus you’ll use UCK to extract its contents to a directory with this command:
fabrizio@fabrizio-laptop:~$ sudo uck-remaster-unpack-iso ubuntu-7.10-server-i386.iso
Mounting ISO image…
Unpacking ISO image…
Unmounting ISO image…
Ok all went perfectly, now you’ll find the contents of your ISO in the “~/tmp/remaster-iso” directory
Second step: prepare the remastering environment
This step creates a new package repository inside your remastering directory (~/tmp/remaster-iso/pool/extras), in that repository you can now put all the packages you want to be added to the new ISO.
fabrizio@fabrizio-laptop:~$ sudo uck-remaster-prepare-alternate
now you can copy your packages in /home/fabrizio/tmp/remaster-iso/pool/extras, customize preseed files or do other customizations
Third step: adding new software
Alternate ISO system only manages deb packages thus you need to have deb packages for all the software you need to add to your new ISO.
There’s only one thing you have to do, copy the deb packages to the ~/tmp/remaster-iso/pool/extras directory, that’s all.
IMPORTANT: Added packages are not automatically installed by the Ubuntu installer on my target system
If you add software to the extras pool you can have two reasons:
- you want those packages to be automatically installed into your target system
- you want those packages to be available on cd/dvd to be optionally installed into your target system after a choice of the user (Ubuntu text installer handle this within “tasksel”)
If your option is the first then adding the deb packages to the extras directory won’t be enough, you’ll have to modify the preesed file, what is a preseed file? It’s a file which tells the Ubuntu installer what to do, it’s a way to script it.
Preseed files have their own syntax but for the purpose of this small guide I suggest you to take a deep read of the “modify installer behaviour using a preseed file” guide.
The “install cd customization” guide is really big but you don’t need to study it all, you can read only the “modify installer behaviour using a preseed file” section just because UCK covers all other sections for you.
Forth step: modify software that already was in the original ISO
Sometimes you could want to modify default configurations of software which is bundled with the default ISO, in order to do that you’ve to:
- locate the original deb package within the remaster-iso/pool tree
- delete it
- create a new deb package for the software, with all your customizations inside it
- copy your new deb package to the position where the original one was (eg: ~/tmp/remaster-iso/pool/main/a/apache2)
You need to delete the original package to avoid possible conflicts.
Fifth step: finalize the remastering environment
Ubuntu alternate ISO system works with signed Ubuntu repository thus you’ll have to regenerate all the metadata files for your updated/new repositories and than sign it with GPG. If one of these conditions are not met the installer will hang telling that your ISO is corrupted.
When I was writing alternate support for UCK this was one of the most difficult part to code and this would be difficult for you too if you were not using UCK :)
If you don’t have it, create a personal GPG key before going ahead. Remember also to write down the ID of GPG key, it should be printed by the key generation process or you can read it with the gpg --list-keys command.
Now simply let UCK do the work for you with:
fabrizio@fabrizio-laptop:~$ sudo uck-remaster-finalize-alternate 691D19E1
UCK will then do a lot of things, download files from the Internet and do all the tasks we were talking before, the operation could last a few minutes and you’ll see a lot of log lines. You’ll be asked to type the password for your GPG key, this should happed 3 times.
When the process will be finished you’ll be ready to repack your ISO.
Sixth step: pack your new ISO
fabrizio@fabrizio-laptop:~$ sudo uck-remaster-pack-iso
A lot of log lines will be printed in this phase too, don’t worry about those if you don’t see any strange error message.
Ok that’s all, finally you did it, where’s your new ISO file? Here:
fabrizio@fabrizio-laptop:~$ ls -lah ~/tmp/remaster-new-files/
totale 501M
drwxr-xr-x 2 root root 4,0K 2007-11-27 11:49 .
drwxr-xr-x 5 root root 4,0K 2007-11-27 11:49 ..
-rw-r–r– 1 root root 500M 2007-11-27 11:49 livecd.iso
Now you’re free to burn it, test it with qemu/virtualbox/vmware or whatever ;-)
Closing notes
This guide should be pretty exhaustive, if you encounter errors, misspellings or have any suggestion, please feel free to drop a comment!
And… remember to DIGG this guide using the button here below :-)