Saturday, December 3, 2011

Create a custom distro: Create your first ISO image

Preparation

When the login screen comes around you may enter in your system with the root user, “toor” is the default password with SLAX unless you change it, /etc/issue is exposure a lot of helpful information for newbies as well (root/toor, xconf, startx, …)
Now in less than 5 minutes you’ll be able to make your new virtual machine, let’s make a simple environment:
root@slax:~# mkdir target target/image target/iso
root@slax:~# cd target/image/
Now it’s time to copy the contents of your build machine into your target host space:
root@slax:~/target/image# cp /mnt/sda1/boot . -R
root@slax:~/target/image# cp /mnt/sda1/slax . -R
root@slax:~/target/image# ls -la
total 16
drwxr-xr-x 4 root root 4096 May 30 17:35 ./
drwxr-xr-x 3 root root 4096 May 30 17:33 ../
dr-xr-xr-x 6 root root 4096 May 30 17:35 boot/
dr-xr-xr-x 7 root root 4096 May 30 17:35 slax/
Everywhere /mnt/sda1/ is my root partition, if you’ve followed my previous article you may have the same device name, expecially if you’ve installed it in a virtual host (I’m using VMWare), if you’re not under /mnt/sda1 you may learn your root partition name, it ain’t that hard:
root@slax:~/target/image# df
Filesystem           1K-blocks      Used Available Use% Mounted on
aufs                   7115576    631668   6122448  10% /
tmpfs                   255440         0    255440   0% /dev/shm
/dev/sda1              7115576    631668   6122448  10% /mnt/sda1
Now in your target directory you’ve the essential organize of your new target device
root@slax:~/target/image# ls -la
total 16
drwxr-xr-x 4 root root 4096 May 30 17:35 ./
drwxr-xr-x 3 root root 4096 May 30 17:33 ../
dr-xr-xr-x 6 root root 4096 May 30 17:35 boot/
dr-xr-xr-x 7 root root 4096 May 30 17:35 slax/
This is just what you need to make your new target system

Making a target ISO

to make a target ISO with an exact copy of your system you only need to use a equipped made script file located under target/image/slax directory, invocation is straightforward:
root@slax:~/target# ./image/slax/make_iso.sh iso/mycoolimage.iso
2.01.01a53 (i686-pc-linux-gnu)
Scanning ../.
Scanning .././boot
Scanning .././boot/dos
Scanning .././boot/isolinux
Excluded by match: .././boot/isolinux/isolinux.boot
Scanning .././boot/pxelinux.cfg
Scanning .././boot/pxelinux.cfg/web
Scanning .././boot/pxelinux.cfg/web/conf
Scanning .././boot/syslinux
Scanning .././slax
Scanning .././slax/base
Scanning .././slax/modules
Scanning .././slax/optional
Scanning .././slax/rootcopy
Scanning .././slax/tools
Scanning .././slax/tools/WIN
Writing:   Initial Padblock                        Start Block 0
Done with: Initial Padblock                        Block(s)    16
Writing:   Fundamental Volume Descriptor               Start Block 16
Done with: Fundamental Volume Descriptor               Block(s)    1
Writing:   Eltorito Volume Descriptor              Start Block 17
Size of boot image is 4 sectors -> No emulation
Done with: Eltorito Volume Descriptor              Block(s)    1
Writing:   Joliet Volume Descriptor                Start Block 18
Done with: Joliet Volume Descriptor                Block(s)    1
Writing:   End Volume Descriptor                   Start Block 19
Done with: End Volume Descriptor                   Block(s)    1
Writing:   Version block                           Start Block 20
Done with: Version block                           Block(s)    1
Writing:   Path table                              Start Block 21
Done with: Path table                              Block(s)    4
Writing:   Joliet path table                       Start Block 25
Done with: Joliet path table                       Block(s)    4
Writing:   Directory tree                          Start Block 29
Done with: Directory tree                          Block(s)    17
Writing:   Joliet directory tree                   Start Block 46
Done with: Joliet directory tree                   Block(s)    15
Writing:   Directory tree cleanup                  Start Block 61
Done with: Directory tree cleanup                  Block(s)    0
Writing:   Extension record                        Start Block 61
Done with: Extension record                        Block(s)    1
Writing:   The File(s)                             Start Block 62
  4.89% done, estimate end Mon May 30 17:44:43 2011
  9.77% done, estimate end Mon May 30 17:44:43 2011
 14.65% done, estimate end Mon May 30 17:44:43 2011
 19.53% done, estimate end Mon May 30 17:44:43 2011
 24.42% done, estimate end Mon May 30 17:44:43 2011
 29.29% done, estimate end Mon May 30 17:44:43 2011
 34.18% done, estimate end Mon May 30 17:44:45 2011
 39.05% done, estimate end Mon May 30 17:44:45 2011
 43.94% done, estimate end Mon May 30 17:44:45 2011
 48.82% done, estimate end Mon May 30 17:44:45 2011
 53.71% done, estimate end Mon May 30 17:44:44 2011
 58.58% done, estimate end Mon May 30 17:44:44 2011
 63.47% done, estimate end Mon May 30 17:44:44 2011
 68.34% done, estimate end Mon May 30 17:44:44 2011
 73.22% done, estimate end Mon May 30 17:44:44 2011
 78.11% done, estimate end Mon May 30 17:44:44 2011
 82.99% done, estimate end Mon May 30 17:44:44 2011
 87.86% done, estimate end Mon May 30 17:44:44 2011
 92.75% done, estimate end Mon May 30 17:44:44 2011
 97.64% done, estimate end Mon May 30 17:44:45 2011
Total translation table size: 2048
Total rockridge attributes bytes: 9444
Total directory bytes: 32768
Path table size(bytes): 208
Done with: The File(s)                             Block(s)    102222
Writing:   Ending Padblock                         Start Block 102284
Done with: Ending Padblock                         Block(s)    150
Max brk space used 21000
102434 extents written (200 MB)
And that’s it, you now have a file called mycoolimage.iso under the iso directory
root@slax:~/target# ls -la iso/
total 205084
drwxr-xr-x 2 root root      4096 May 30 17:44 ./
drwxr-xr-x 4 root root      4096 May 30 17:36 ../
-rw-r--r-- 1 root root 209784832 May 30 17:44 mycoolimage.iso
you may make a small script if you want to automate the whole process:
#!/bin/bash
# This script builds an ISO file from the image made
BASEPATH=/mnt/sda1/target
REMOTEHOST=192.168.84.1

mkdir -p $BASEPATH/iso
$BASEPATH/image/slax/make_iso.sh $BASEPATH/iso/image.iso
scp $BASEPATH/iso/image.iso ben@$REMOTEHOST:/iso/image.iso
p { margin-bottom: 0.08in; }
To make my own tests I’ve two virtual machines, one it’s called “Slax Build Machine”, one it’s called “Slax Test Machine”. “Slax Build Machine” is the machine we’re now using and the same machine we’ve built in the previous chapter. “Slax Test Machine” it’s an unfilled VMWare virtual machine, no hard drives, just a virtual cdrom device pointing to an ISO file located on the real host (in the directory /tmp/image.iso). When I’d like to make some tests I just need to make an ISO file (in the build machine with the previous script). The script copies the .ISO image in the physical host with the creation, then I start the Test Machine when needed, I don’t need to waste CDs or reinstall/configure the virtual machine each time, it’s really simple
In this chapter we’ve just made an like peas in a pod copy of our build machine, in the next chapter we’ll make to order the test machine, we’ll start with a bare bone system and we’ll add modules/functionalities later on
I guess this phase is really simple but it’s vital to be with you it well, from the next phase you’ll be with you why customizing and building a slax machine is really simple and powerful

0 comments:

Post a Comment