Sunday, November 08, 2009  
Google
Web pcquest.com

CIOL Network sites

Search by Issue | Sitemap | Advanced Search

• For most updated version of DQ TOP 20 issue, visit dqindia.com • Ad : Play and Plug ERP by IBM
 Home > Software > Open Source Software

Multiboot Live DVDs

Enhance your portability by creating your own Multiboot Live DVD based on different Fedora based Live CDs.

Anindya Roy

Wednesday, April 01, 2009

Print Comment Email DiggDigg DeliciousDel.icio.us RedittReddit TwitterTwitter

A couple of months back we covered how to build your own Fedora-based Live CDs using Revisor. And some of you must have tried and built quite a few different live distros based on Fedora. So this month we thought of telling you how to combine and preserve all your Fedora based live distros in one single dual or single layer multiboot DVD. Way back in 2004 we did an article on building a multiboot DVD, which was a pioneering piece on this subject. Such was the complexity of the process that it took us 4 pages to explain. This time it's going to be easy. No, we are not going to use any graphical tool for this, because no such tool is available yet. But it would still be easy as all distros are going to be based on Fedora and as all the distros share a similar directory structure and booting process, it's going to be easier than building a multiboot DVD with live CDs based on different distros. Let's see how to do it.

Direct Hit!

Applies To: IT managers
USP: Use the power of Live OSes to enhance portability
Primary Link: None
Google Keywords: Live OSes

Pre-requisites
In this case the pre-requisites are very minimal. All you need are live distros built on Fedora versions (8 and later) and a Linux machine; just make sure that their total size doesn't exceed 8.0 GB if you are using a dual layer DVD or 4.0 GB if you are using a single layer DVD. A Fedora 10 machine will be preferred as the build machine as we ran our tests on it! But technically it should work with any standard Linux distro. The machine could be based on any hardware platform but should have atleast 20GB hard disk space.

Getting started
To begin with first create a folder called Buildroot by running the following command:

This his how your Buildroot/LiveOS folder will look like once you have run commands given under 'Creating the Build Tree' section.

#mkdir Buildroot

Now create one folder for each live CD you have. And name them as dist1, Dist2,.. etc. If you have ISO images of the live distros then mount them one by one on the newly created folders or if you have CDs of the live distros then copy all the files to the folders. For mounting the ISOs, the command will be similar to this:

#mount –o loop /'path-of –iso/isofile.img' /dist1

And if you have CDs of the distros, then mount the CDs and run the following command to copy them.

#cp –rf /media/cdrom /dist1

Creating the Build Tree
Now you have to create a folder structure inside the Buildroot folder. For this copy the isolinux folder from any of the distros to the buildroot folder and create a folder called LiveOS. You can do so by running the following commands:

To configure the Boot Loader, open the isolinux.cfg file from /Buildroot/isolinux folder and modify the code as given in the 'Configuring Boot Loader' section.

#cp –rf /dist1/isolinux /Buildroot
#mkdir /Buildroot/LiveOS

Now go to the first distro by running cd dist1 and cd to the LiveOS folder. Here you will see two files: osmin.img and squashfs.img. These two files contain the file system of the Live OS for the distro 1. Now copy these two files to Buildroot/LiveOS but make sure you have to give it a different name because in all distros you will find files with the same name. You have to copy all of them to the Buildroot/LiveOS folder. While renaming it, make sure you don't change the number of characters in the file name. We will call the osmin.img of distro one as min01.img and squashfs.img as squash01.img. and similarly for distro 2 it will be min02.img and squash02.img and so on. The command you will run to do so will be similar to this:

#cd /distro1/LiveOS
#cp osmin /Buildroot/LiveOS/min01.img
#cp squashfs.img /Buildroot/LiveOS/squash01.img

Modifying the Initrd
Now as your Folder structure is ready, modify and create an initrd for each distro which will be called by the bootloader and then which will call the correct Squash FS. To do so, first create a new folder call /initbuild. Now copy the initrd image file from /Buildroot/isolinux folder to this newly created folder. You can do so by running the following command:

After your Folder structure is ready, you need to modify and create an initrd for each distro which will be called by the bootloader.

#cp /Buildroot/isolinux/initrd0.img /initbuild/

Now extract the initrd file by running the following command. It's actually a gziped file so first you have to rename it and then unzip.

#mv initrd0.img initrd0.gz
#gunzip initrd0.gz

Now this will generate a cpio zipped file. Extract it by running the following command:

#cpio -iv < initrd0

Open the file called sbin/real-init by using your text editor. Once the file is open search for a string 'if [ -e /sysroot/LiveOS/squashfs.img'. now replace squashfs.img with squash01.img and just next to this line there will be another line similar to 'SQUASHED="/sysroot/ LiveOS/squashfs.img.”' Here change squashfs.img squash01.img.

Now search for a line 'if [ -e /sysroot/LiveOS/osmin.img' and change osmin.img to min01.img. Again similar to the last step, just below this line you will find one more instance of osmin.img. Change it as well to min01.img. Once this is done save and exit from this file. Now come to the initbuild folder and recreate the initrd file. But this time give it a new name. Something like initrd1.img, so that it represents the distr01, squash01 and min01. To recreate this file you have to first create the cpio file of this directory structure and then zip it with gzip. Following is a single command which will do the needful:

#find . -print | cpio -o |gzip > initrd1.gz

But before running this command don't forget to remove the existing initrd0 file else your new initrd file will unnecessary become bigger in size.

Once this is done move this initrd1.gz file to /Buildroot/isolinux folder.

Now, repeat this process for each distro and create one initrd file for each distro. So you have four distros in your multiboot with squashfs image names: squash01.img, squash02.img, squash03.img and squash04.img, then you have to create four initrd files similar to initrd1.img, initrd2.img, initrd3.img and initrd4.img; one for each distro with the correct names of the squashfs and osmin images in the real-init file. Once you are done with all initrds, copy all of them to /Buildroot/isolinux folder.

Configuring Boot Loader
Now configure the boot loader so that it can show you the list of all the Linux distros you have in your multiboot DVD and when you select one, the system should boot from it. To do so open the isolinux.cfg file from /Buildroot/isolinux folder.

In the window, copy the following lines as many number of times as the distros you have. So let's say you have four distros, then copy all four lines, four times in the same file.

Page(s)   1  

I am interested in more information about this product
I am interested in buying this product
Print Comment Email DiggDigg DeliciousDel.icio.us RedittReddit TwitterTwitter


Untitled Document



ZTE:Leading CDMA Technology


Extraordinary Networks:Freedom of Choice


   
 

 
 

Magazine Subscription | RQS | Contact Us | Team PCQuest | Advertising - Print | jobs@cybermedia