Minggu, 24 April 2011
SliTaz Handbook (en) Hacking SliTaz LiveCD
Hacking SliTaz LiveCD
- Introduction.
- Organisation and preparation.
- Add files to the ISO.
- Modify the isolinux configuration.
- Install and use Memtest86.
- Manipulate the Live root system.
- Generate a bootable ISO image with isolinux.
Introduction
Hacking SliTaz LiveCD or how to have fun with the LiveCD ISO image. Note that you can also create a custom flavor with Tazlito. Creating your own bootable ISO image is easily achievable and the steps are carefully described here. The manipulation of a personal ISO image can add new files or modify existing ones found on the Slitaz Live CD. The Slitaz ISO image is less than 30 MB and a CD-R or CD-RW provides around 700 MB, so there's plenty of scope for expansion. For example, you could store your images and even provide a live slideshow using GQview. The hacking of the ISO image allows you to modify boot loader configuration files (boot loader), splash images and GRUB itself. You could also add the Memtest86 utility (tool used to test system RAM). Using the same techniques it's even possible to modify the filesystem - this does however require some extra manipulation and a bit more time.Organisation and preparation
To begin, first we must define where we are going to work by creating a directory and several sub directories to accomodate all the different files. The hacking of the ISO can be done from within a SliTaz system or any other GNU/Linux distribution such as Debian, Fedora, PCLinuxOS etc. If you use SliTaz LiveCD mode (where you can remove the CD once SliTaz has launched in RAM and burn your new ISO), It's advisible to use USB media to carry on working, otherwise your work will be lost on shutdown. To begin you need to create a hacking directory that you can use inside/home/slitaz
within the root of your user space. The use of a /home/slitaz
directory enables you to store an original ISO image and gives you the option to create a src/
directory to download possible source packages. All the various stages of hacking can be done on the command line via a X terminal (Xterm) or in console mode on a Linux terminal. It's advisable to run all commands as root to avoid any permission problems. To become the (root) adminsistrator, create a /home/slitaz/hacked
directory and proceed inside: $ su # mkdir -p /home/slitaz/hacked (# mkdir -p /home/slitaz/src) # cd /home/slitaz/hacked
Getting the contents of the ISO
Now that you are in the working directory, we must create the root of the amended CD-ROM and retrieve the files contained on the original Slitaz ISO - namely, the Linux Kernel (bzImage
), the compressed filesystem (rootfs.gz
) and the isolinux bootloader files. To recover these files you have two options, either take them from a burnt CD or from an ISO image stored locally. To create the root of your CD (rootcd
) and copy files from the cdrom device /dev/cdrom
mounted on /media/cdrom
: # mount -t iso9660 /dev/cdrom /media/cdrom # mkdir rootcd # cp -a /media/cdrom/* rootcdTo mount an ISO image using loop in the temporary directory
/tmp/loop
(with the ISO image slitaz-cooking.iso
), create the root of the CD (rootcd
), copy all the files and dismount the ISO image: # mkdir /tmp/loop # mount -o loop slitaz-cooking.iso /tmp/loop # mkdir rootcd # cp -a /tmp/loop/* rootcd # umount /tmp/loopVoilĂ , all the necessary files should now be present in the
rootcd/
directory. To be sure, you can list all of the files recursively with the ls
command: # ls -R rootcd
Adding the files to the ISO
The addition of various files and directories to the ISO image simply consists of copying data to the root of the cdrom (rootcd/
) and generating a new image. The data may be classified in one or two directories created in the root of the CD. Once the ISO image is burnt to a CD-R/CD-RW you can use SliTaz as before, mounted on /media/cdrom
and navigate through your data using emelFM2, Clex or the command line. You data will also be legible from all GNU/Linux systems, BSD or even ... Windows. Create directories and copy data
To create and copy files, you can start by using the command line and then continue on graphically as a simple user. We will create aimages/
directory as root and change the permissions so that all users can have write access: # mkdir rootcd/images # chmod 777 rootcd/imagesNow that a directory exists that anybody can write to, you can start to fill it. Once you've finished you can then generate a bootable ISO image.
Modify the isolinux configuration
The modification of isolinux allows you to create custom entries with pre-boot parameters, for example you can add alabel
launching SliTaz with the lang=en
and kmap=en
options. At the design level you can easily change the splash image displayed at startup. The isolinux
application manages the starting of the boot loader of the LiveCD and is provided by the Syslinux package. The source file of Syslinux provides various applications whose role it is to start a GNU/Linux system. The binary isolinux.bin
controls the actual boot loading. The boot loader is simple, fast and easily configured either graphically or using a text editor. The syntax of the configuration file isolinux.cfg
is easy to understand - to add new entries just copy and paste using the original file. To edit the file graphically using Leafpad: # leafpad rootcd/boot/isolinux/isolinux.cfg &
Configuration file isolinux.cfg
Theisolinux.cfg
file found on the standard LiveCD of SliTaz, begins with the value display
, this will either display a text file or a (isolinux.msg
) file using 24 ASCII characters and a splash image. The default
value defines the name of the label
started by default after the (timeout
) waiting time. Timeout is the number of seconds to wait before booting the system, you can make it 0 to start booting immediately or choose a waiting time as long as 80s. Finally the prompt
can be deactivated using the value 0
, F1, F2, F3 display help files and F4 displays a text file: display isolinux.msg default slitaz label slitaz kernel /boot/bzImage append initrd=/boot/rootfs.gz rw root=/dev/null vga=788 implicit 0 prompt 1 timeout 80 F1 help.txt F2 options.txt F3 isolinux.msg F4 display.txtExample of a label
slitazen
which you can add to the original to directly configure the language of the system as English and use the UK keyboard:label slitazen kernel /boot/bzImage append initrd=/boot/rootfs.gz rw root=/dev/null lang=en kmap=enOnce you've finished modifying the configuration file, don't forget to save your changes and generate a bootable ISO image with isolinux.
Install and use Memtest86
The application memtest86 (92 kB) is a tool for testing your system memory (RAM). Memtest86 performs in depth tests, that if failed, point heavily towards a hardware fault. The tool resides in theboot/
directory and can be launched directly by typing memtest
at the isolinux boot prompt. Navigate to /home/slitaz/src
(if the directory dosen't exist: mkdir -p /home/slitaz/src
), download the source and unpack:# cd /home/slitaz/src # wget http://www.memtest86.com/memtest86-3.3.tar.gz # tar xzf memtest86-3.3.tar.gzOn unpacking the source of the memtest86 package you'll find a
README
providing information about the tool. Now you can install into the root CD of your ISO hacked. Based on the premise that you'll be working with a /home/slitaz/hacked
directory, we will copy the binary you precompiled into the boot/
directory of the root of the CD: # cp memtest86-3.3/precomp.bin \ /home/slitaz/hacked/rootcd/boot/memtestNow that the binary is installed in the root CD, we can just add an entry for memtest86 to the isolinux configuration file and generate a bootable ISO image. Navigate to
/home/slitaz/hacked
and edit isolinux.cfg
using Leafpad: # cd /home/slitaz/hacked # leafpad rootcd/boot/isolinux/isolinux.cfg &
label memtest kernel /boot/memtestOfficial website of Memtest86
Manipulate the Live root system
Changes to the Live root system allow you for example, to add a new user and password, customize graphics or execute commands automatically at boot time. The necessary operations for changing the root file system are: extract the compressed file systemrootfs.gz
, modify, rebuild the image and generate the ISO. Based on the assumption that you've prepared a working directory, we begin by creating a directory to contain the files on the changed system. Since the compressed root file system is named rootfs.gz
, we suggest you use rootfs/
to extract to. Navigate to the hacked/
directory, create the root directory and copy the compressed file system from rootcd/boot/
(the root of the cdrom): # cd /home/slitaz/hacked # mkdir rootfs # cp rootcd/boot/rootfs.gz rootfsNow that you have the compressed copy of the system, just unpack with
cpio
. Technically rootfs.gz
is a cpio file compressed with lzma or gzip. It's recognized like an initramfs
image by the Linux Kernel. At the start up of the machine, the Kernel is loaded into memory, which then decompresses the system image and carries out the initialization scripts. To extract the file system into
rootfs/
and delete the unarchived copy (remember you can copy & paste): # cd rootfs # (zcat rootfs.gz 2>/dev/null || lzma d rootfs.gz -so) | cpio -id # rm rootfs rootfs.gzThe system is now ready to be hacked, you can list all files at the root of your system by using the
ls
command. Modify a file
To keep things simple and to help you understand the principle, we are going to change a script file in order to execute some commands to be carried out automatically when the CD starts up. The target isetc/init.d/local.sh
, just open with your favorite text editor such as Geany: # geany etc/init.d/local.sh &We'll add a command displaying a message and letting the system sleep for 4 seconds. Example using local script:
echo "* Hacked SliTaz version booting..." sleep 4
Rebuilding the image of the compressed system
Once the changes are completed, you can rebuild a compressed image of your system by usingfind
to find the files, cpio
for archiving, lzma
and gzip
for compression and the pipe |
to connect everything together. This command must be launched from the root system (rootfs/
) and creates a compressed file rootfs.gz
in the preceding directory: # find . -print | cpio -o -H newc | lzma e -si -so > ../rootfs.gz Or with gzip: # find . -print | cpio -o -H newc | gzip -9 > ../rootfs.gzFinally copy the compressed file system into the
boot/
directory at the root of the CD and generate a bootable ISO image with isolinux. To copy the newly compressed rootfs into the working directory: # cd ../ # cp -a rootfs.gz rootcd/boot
Generate a bootable ISO image
The following commands create an image with the boot loaderisolinux
, using the genisoimage
application and a few options. The name of the ISO is specified at the beginning, after the -o
option and the root directory (rootcd/
) at the end, after the -boot-info-table
option: # genisoimage -R -o slitaz-hacked.iso -b boot/isolinux/isolinux.bin \ -c boot/isolinux/boot.cat -no-emul-boot -boot-load-size 4 \ -V "SliTaz-Hacked" -input-charset iso8859-1 -boot-info-table rootcdIf you want to check the contents of the ISO before burning, just mount the image in
loop
and list the files. On SliTaz and most GNU/Linux systems, you can burn images in ISO format with the wodim
utility. Generate a new ISO via a script
If you wish to test out a lot of new possibilities and generate a lot of ISO images, you may want to semi-automate the process via a simple SHell script. This tiny script can be created on the command line or edited graphically, but don't forget to make it executable. You can create the script withcat
, note that EOF
signifies End Of File. To create the script gen_hacked_iso.sh
using two variables to change the name of the ISO image and the path to the root directory of the cdrom: # cat > gen_hacked_iso.sh << "EOF"
#!/bin/sh # Gen a new hacked ISO image. # ISO_NAME="slitaz-hacked.iso" ROOTCD="rootcd" genisoimage -R -o $ISO_NAME -b boot/isolinux/isolinux.bin \ -c boot/isolinux/boot.cat -no-emul-boot -boot-load-size 4 \ -V "SliTaz-Hacked" -input-charset iso8859-1 -boot-info-table $ROOTCD EOFTo use the script, just make it executable and execute:
# chmod +x gen_hacked_iso.sh # ./gen_hacked_iso.sh
source : http://www.slitaz.org/en/doc/handbook/hacking-livecd.html
Langganan:
Posting Komentar (Atom)
Tidak ada komentar:
Posting Komentar