Wednesday, November 17, 2010

LALliveCD2isosplits Strategy

Please refer to my Low Altitude Linux post http://lowaltitudelinux.blogspot.com/2010/11/laldistros4livecds2isosplits.html

Goals
- To create several different and highly useful multiboot ISO CDs by using Linux.
- To have the ability to transfer multiboot functionality to USB.
- To use as few pre-made-by-others' scripts as possible, but yet describe how to carry this out in current and future LALliveCD2isosplits blog posts.


Materials Strategy
- Obtain PCs (desktops+laptops) with enough diskspace and memory resources to carry out and test these goals
- Each PC for carrying out the isolinux overlaying should have at least a CD-RW drive and at least one USB port
- Obtain sufficient 1-2 GB USB pendrives for testing, more than sufficient CD-R disks for burning+testing, and sufficient 4 GB USB pendrives for storage-portability


Overall Steps
- In the main drivespace storagespace mountpoint, make at least a 'livecd' directory, an 'isosplits' directory, a 'remasters' directory, a 'CD_root' directory, a 'newlivecd' directory, a syslinux directory
So at something like /mnt/hdaX or /media/hdaX , mkdir -p
./livecd
./isosplits
./remasters
./CD_root
./newlivecd
./syslinux

- Make ./livecd subdirectories using the names of the preferred liveCD distros. Download the preferred liveCD distro .iso files and their md5sums into their appropriate ./livecd subdirectories. Check each downloaded .iso with its md5 checksum to ensure integrity....this webpage can help along with how2do this; http://linux.byexamples.com/archives/198/md5-checksum-how-to/

- Make ./isosplits subdirectories using the names of the preferred liveCD distros. Copy each liveCD .iso into their appropriate ./isosplits subdirectories. Split each .iso into its de-mastered components.
I do this splitting my making a /mnt/loop0 directory, performing a 'mount -t iso9660 -o loop /mnt/loop0' command, copying the de-mastered files back into the appropriate ./isosplits subdirectory, and then umounting /mnt/loop0 .

- The next steps of taking each de-mastered liveCD and putting it back together into a multi-boot distro is fairly complex. I use the ./remasters directory as a factory assembly directory for reassembling the ./isosplit distro files back into new multi-boot liveCDs. You must have either a ./isosplit//isolinux
or a ./isosplit//boot/isolinux directory!
Other than that within my Low Altitude Linux post http://lowaltitudelinux.blogspot.com/2010/11/laldistros4livecds2isosplits.html another webpage helpful in regards to all the reassembling efforts is http://ultilex.linux-bg.org/the_dao_of_ultilex.html
I found the ISOLINUX page http://syslinux.zytor.com/wiki/index.php/ISOLINUX to be fairly helpful here as well.
Serious consideration should be made here to the following principles:
  • An effectively-organized directory structure (e.g., see the 2nd principle of http://www.c2.com/cgi/wiki?SevenPrinciplesOfSoftwareDevelopment )
  • A correctly-edited isolinux.cfg file that is unique and is very clear
  • A nicely-designed initial-menu system
  • Sufficient space to effectively cram the re-mastered multi-boot system in (I use as an upper-limit the std CD-R 700MB)
- Download the latest complete Syslinux package from http://www.kernel.org/pub/linux/utils/boot/syslinux/ into ./syslinux and then decompress into this directory the appropriate .tar.gz, .zip -or- .bz2 syslinux file (depending upon the preferred decompression method)
Then,
* Copy ./syslinux/core/isolinux.bin into whichever ./isosplits//isolinux or ./isosplits//boot/isolinux directory you are using.
* Copy ./syslinux/core/isolinux.bin into the appropriate isolinux subdirectory you are using.
* Copy ./syslinux/com32/menu/menu.c32 into the appropriate isolinux subdirectory you are using.
* Copy ./syslinux/com32/menu/vesamenu.c32 into the appropriate isolinux subdirectory you are using.
* Copy ./syslinux/com32/modules/chain.c32 into the appropriate isolinux subdirectory you are using.

- Once each remastered assemblage of multi-boot distros in ./remasters is "ready", then this assemblage is copied to the ./CD_root directory. Using the Linux terminal's commandline interface, aka, the CLI, navigate into /mnt/hdaX/CD_root for the actual remastering and CD-burning command steps.

- Insert a blank CD-R disk into the CD-RW device and decide upon the volume name of this CD (e.g., a CD volume name of "MyMultiBootCD4). Also decide upon an extremely short name of the remastered ISO filename that gets stored (e.g., mymbtcd4.iso)
The set of CLI commands to use here depends upon if the current Linux distro uses 'mkisofs' and 'cdrecord' oralternatively, 'genisoimage' and 'wodim'
In the former case:
  1. mkisofs -l -r -J -v -V "MyMultiBootCD4" -no-emul-boot -boot-load-size 4 -boot-info-table -b isolinux/isolinux.bin -c isolinux/boot.cat -hide-rr-moved -o /mnt/hdaX/newlivecd/mymbtcd4.iso ./
  2. cdrecord -scanbus to get the necessary numbers of the actual CD-RW device (e.g., 0,1,0)
  3. cdrecord -v -eject speed=16 dev=0,1,0 /mnt/hdaX/newlivecd/mymbtcd4.iso (this actual burning process may take awhile depending upon the speed of the CD-RW device)

In the latter case (basically just directly substituting in 'genisoimage' and 'wodim' for 'mkisofs' and 'cdrecord'):
  1. gensoimage -l -r -J -v -V "MyMultiBootCD4" -no-emul-boot -boot-load-size 4 -boot-info-table -b isolinux/isolinux.bin -c isolinux/boot.cat -hide-rr-moved -o /mnt/hdaX/newlivecd/mymbtcd4.iso ./

  2. wodim -scanbus to get the necessary numbers of the actual CD-RW device (e.g., 0,1,0)
  3. wodim -v -eject speed=16 dev=0,1,0 /mnt/hdaX/newlivecd/mymbtcd4.iso (this actual burning process may take awhile depending upon the speed of the CD-RW device)
- Once the newly-burnt CD ejects, it will need to be boot-tested for all the included multiboot liveCDs within it, and the above remastery process will most likely need repeating!

No comments:

Post a Comment