Everybody likes to use, test and hack with mini distros, but no one likes to burn a separate CD for each since a distro only takes up a small fraction of the CD space. This results in low resource utilisation and increases junk. What if we could keep all the distros on one single CD or even all the distros on one USB drive, and boot the distros directly from there through an interactive menu system? Yes, that’s what we are going to do! We are going to pack seven mini distros into one CD/DVD or USB drive that’s ready-to-boot, so that we can carry them around and boot any distro anywhere, anytime, and at any place.
This guide is written with primarily a CD/DVD as the target medium, but we will also show you how this can be done with a Flash drive. We will pack PuppyLinux, GeexBox, Slitaz, Goblinx (mini), Austrumi, CDlinux (standard) and DSL into a CD and USB drive.
The whole process is divided into seven phases. Each phase is further sub-divided into numbered sections. Follow Phase I through to Phase IV; then to make a live CD, follow Phase V. Alternately, to create a live USB drive, follow Phase VI, then continue serially.
At all times keep two terminals open—one as the normal user, and another with super-user privileges. In both the terminals, always remain fixed inside a working directory, the work_dir/. We will either point directories/files relative to word_dir/ or in an absolute path. If some source packages are required to be compiled, launch a new terminal in the source directory, carry on the compilation and terminate it.
When you see the ‘#’ symbol beside a command, switch to the root console and execute; and when you see ‘$’, run it in normal user terminal.
If there are not enough permissions when trying to modify/remove some file, then chmod it with the appropriate permissions first.
When describing the USB booting, we will call the USB partition ‘/dev/sdXy’, where ‘X’ is the disk alphabet (number) and ‘y’ is the partition number. Replace X and y as per your drive’s values. In my case it was ‘/dev/sdb1’ (X=b, y=1)
Warning: Always be extra careful when executing commands in super-user mode. Double check which device you are operating on when setting boot flags, bootloaders, etc, or you may render your system unbootable.
Phase I: Preparation
Create the work_dir/ directory into which we will dump all the resources. Create mbcd/ and boot/ directories in chains inside work_dir/. We’ll use mbcd/ to hold the compiled image files, while boot/ will hold the boot files for the image. Then change directory to word_dir/ and be sure to remain fixed in this location.
$ mkdir -p work_dir/mbcd/boot $ cd work_dir
Download the distros and then copy them into work_dir/. Create temporary directories in /mnt/, which we will use as mount points of the ISO images. (You can mount one image and then unmount it to reuse it, but for easy reference we will mount all the ISOs at once.) Make seven directories, tmp1/ to tmp7/ in /mnt/.
# mkdir /mnt/tmp{1,2,3,4,5,6,7}
We will now mount the ISO images in the mount point directories. Remember to keep track of which OS is mounted in which directory. You can name the directories accordingly, such that you can identify each from its name. But for simplicity, we will refer to them as tmpX.
Austrumi, Puppy Linux, Slitaz, CDlinux, DSL, GeeXboX, and GoblinX (Micro) will be mounted into tmp1/, tmp2/, tmp3/, tmp4/, tmp5/, tmp6/ and tmp7/, respectively. We will set the owner and group of the mounted images to your normal user account and its group, by specifying the UID (user ID) and GID (group ID) options.
As a normal user, run id -u and id -g to find out the user and group IDs, respectively, and note them down. Replace <id> and <group> in the following commands with your UID and the GID, respectively.
# mount austrumi*.iso /mnt/tmp1 -o loop,uid=<id>,gid=<group> # mount puppy*.iso /mnt/tmp2 -o loop,uid=<id>,gid=<group> # mount slitaz*.iso /mnt/tmp3 -o loop,uid=<id>,gid=<group> # mount CDlinux*.iso /mnt/tmp4 -o loop,uid=<id>,gid=<group> # mount dsl*.iso /mnt/tmp5 -o loop,uid=<id>,gid=<group> # mount geexbox*.iso /mnt/tmp6 -o loop,uid=<id>,gid=<group> # mount goblinx*.iso /mnt/tmp7 -o loop,uid=<id>,gid=<group>
Change the distro ISO file names as per the downloaded file.
In this guide the OS versions are: Austrumi 1.7.2, PuppyLinux 4.0, Slitaz 1.0, CDlinux 0.9.1, DSL 4.2.2, GeexBox 1.2.2, and GoblinX Micro 2.7.
Note: If you decide to mount the images as the root user (without UID, GID options) then do the copy operations as the root. After you have done all the copying, chown the copied files to the normal user.
Shortcut: You can skip Steps 3 and 4 of this phase, if you plan to use isomaster or file-roller and extract the required files in the subsequent phases.



(3 votes, average: 3.67 out of 5)






























4 Comments
It s very interesting to know ,thanks
Thanks man, just what I was looking for. Worked like a charm Thanks so much…
thank you very much!
Thanks man, just what I was looking for. Thanks so much…
2 Trackbacks
[...] SYSLINUX man pages First Publish Information : This article was first published on Linux For You (LFY), August 2009 Issue, under Creative Commons Licence. Link: http://www.linuxforu.com/how-to/create-multiboot-discs/ [...]
[...] 31.01.2010 : GRUB installation on USB from GRUB shell added. Please feedback First Publish Information : This article was first published on Linux For You (LFY), August 2009 Issue, under Creative Commons Licence. Link: http://www.linuxforu.com/how-to/create-multiboot-discs/ [...]