October 21, 2010 by  

[HowTo] Create Ubuntu Live CD

Ubuntu 10.10 code name Maverick Meerkat has been released on October 10th 2010 you can download it from ubuntu.com for free. But when you are an Ubuntu advance user, you need to add more package or remove some package that you won’t use. Then you can live boot your custom Ubuntu live CD. And it’s not limited to live CD, you can make it as live USB too.

There are some reasons you want to customize Ubuntu live CD:
1. Make your own Linux / Ubuntu distribution, something like rebranding but based on Ubuntu
2. Show off a particular application
3. Localise to a certain language
4. Remove software packages
5. Add software packages
6. Update software packages
7. Change system defaults (theme, icons, desktop background, panels, browser homepage, etc)

To make custom Ubuntu live CD:
1. Open your terminal and install squashfs-tools and genisoimage:

sudo apt-get install squashfs-tools genisoimage

2. Download Ubuntu Desktop CD:

wget http://releases.ubuntu.com/maverick/ubuntu-10.10-desktop-i386.iso

3. Move it to working directory, call it livecdtemp:

mkdir ~/livecdtmp
mv ubuntu-10.10-desktop-i386.iso ~/livecdtmp
cd ~/livecdtmp

4. Extract the CD .iso contents

mkdir mnt
sudo mount -o loop ubuntu-10.10-desktop-i386.iso mnt

5. Extract .iso contents into dir ‘extract-cd’

mkdir extract-cd
rsync --exclude=/casper/filesystem.squashfs -a mnt/ extract-cd

6. Extract the SquashFS filesystem to edit folder

sudo unsquashfs mnt/casper/filesystem.squashfs
sudo mv squashfs-root edit

7. Give network connection within chroot

sudo cp /etc/resolv.conf edit/etc/
sudo cp /etc/hosts edit/etc/
sudo mount --bind /dev/ edit/dev
sudo chroot edit
mount -t proc none /proc
mount -t sysfs none /sys
mount -t devpts none /dev/pts
export HOME=/root
export LC_ALL=C

8. Customization time!
To enable apt-get within chroot:

dbus-uuidgen > /var/lib/dbus/machine-id
dpkg-divert --local --rename --add /sbin/initctl
ln -s /bin/true /sbin/initctl

Update your sources.list if necessary:

vim /etc/apt/sources.list

Update your repository:

apt-get update

To install new package:

apt-get install [package-name]

To remove unwanted package:

aptitude purge package-name

To customize Gnome:
a. Customize background:
* add wallpaper file to /usr/share/backgrounds
* edit /usr/share/gnome-background-properties/ubuntu-wallpapers.xml to point to your wallpaper file
b. Change font, panels, etc:
To make any change on the gconf attributes you must add the value that you want in the file /etc/gconf/gconf.xml.defaults/%gconf-tree.xml. Adding a value in that file will change the default values of Gnome or other applications, so you can change fonts, backgrounds, themes, cursors etc. You can use gconftool-2, under the chroot environment to adjust the gconf file:

gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.defaults --type string --set yourkey "yourvalue"

I haven’t do this much, since the livecd i create is for disaster recovery, so default desktop it’s fine with me. But it’s worth to try.

Change the default timezone used by the live cd:

dpkg-reconfigure tzdata

Change local setting:

locale-gen new_locale
update-locale LANG=new_locale LANGUAGE=new_locale LC_ALL=new_locale


9. Clean up

aptitude clean
rm -rf /tmp/* ~/.bash_history
rm /etc/resolv.conf
rm /var/lib/dbus/machine-id
rm /sbin/initctl
dpkg-divert --rename --remove /sbin/initctl

10. Regenerate manifest:

chmod +w extract-cd/casper/filesystem.manifest
sudo chroot edit dpkg-query -W --showformat='${Package} ${Version}\n' > extract-cd/casper/filesystem.manifest
sudo cp extract-cd/casper/filesystem.manifest extract-cd/casper/filesystem.manifest-desktop
sudo sed -i '/ubiquity/d' extract-cd/casper/filesystem.manifest-desktop
sudo sed -i '/casper/d' extract-cd/casper/filesystem.manifest-desktop

11. Compress filesystem:

sudo rm extract-cd/casper/filesystem.squashfs
sudo mksquashfs edit extract-cd/casper/filesystem.squashfs -nolzma

12. Remove old md5sum.txt and calculate new md5 sums

cd extract-cd
sudo rm md5sum.txt
find -type f -print0 | sudo xargs -0 md5sum | grep -v isolinux/boot.cat | sudo tee md5sum.txt

13. Create the ISO image:

sudo mkisofs -D -r -V "$IMAGE_NAME" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o ../ubuntu-10.10-desktop-i386-custom.iso .

14. Testing the CD image:

qemu -cdrom ubuntu-10.10-desktop-i386-custom.iso -boot d -m 512

15. Burn the CD:
You can use any tools you like, for example Gnomebaker. Or:

cdrecord dev=/dev/cdrom ubuntu-10.10-desktop-i386-custom.iso

You can make the USB live with Unetbootin.

That’s it. You can create your custom Ubuntu live cd or even rebranded it. Long live Ubuntu!

There is online tools to create custom Ubuntu and Debian live CD it is called Reconstructor. You can see the tutorial from How-To Geek article.


Credits:
LiveCDCustomization Documentation

What people search:

Post comment as twitter logo facebook logo
Sort: Newest | Oldest

thanks buat tutorialnya.
cm masih penasaran, gmn cara create ubuntu yang alternate version dengan packages yang ter-up2date seperti LTS release ex: 10.04.2

maaf mas mau tanya
aku sudah ngikuti step by step
sampai ke step 11
ketika kuketik perintah
sudo mksquashfs edit extract-cd/casper/filesystem.squashfs -nolzma

kok muncul error
mksquashfs: invalid option

SYNTAX:mksquashfs source1 source2 ... dest [options] [-e list of exclude
dirs/files]

yang salah option sebelah mana?

Coba periksa kembali ke step 6 saat folder edit di create.

I don't speak Bahasa, so I am relying on the translation. I am getting the same error message as Liko, and referring to step 6 when the edit folder was created is not enlightening me.
For compression options with the latest version of mksquashfs, I can only find -noI, -noD and -noF listed in the man page.

"mksquashfs: invalid option" when -nolzma is on the right, and when it is on the left, of course it just breaks syntax completely and gives a general error.

I will assume lzma compression is removed.

what
is
the
difference
between
this
and
REMASTERSYS
--------------------
incomplete - missleading