Save space used by an Ubuntu VM by using the live CD, the slightly easier way
Yesterday I worked out how to use the Ubuntu live CD to save space on Ubuntu VMs. It turns out you don't need to change initrd.lz.
Instead, all of the options in casper.conf except root_persistence can be specified on the kernel command line - simply add them (without the quotes) to extlinux.conf.
-
Create a virtual machine with a hard disk of your choosing. Boot the Ubuntu live CD in it.
-
Create a partition on the virtual hard disk for persistence, and make it bootable.
-
Format it, give it a label:
$ sudo bash # mkfs.ext2 /dev/sda1 -L overlay
# mount /dev/sda1 /mnt
# mkdir /mnt/boot
# cp -p /cdrom/casper/vmlinuz.efi /mnt/boot
-
We need to edit
/etc/casper.confinside the initrd:# cd /tmp # mkdir i # cd i # lzcat /cdrom/casper/initrd.lz | cpio -inow put in /tmp/i/etc/casper.conf (I found out the variables by looking through
/usr/share/initramfs-tools/scripts/casper, which is run by the kernel command line'sbootparameter.):# This file should go in /etc/casper.conf # Supported variables are: # USERNAME, USERFULLNAME, HOST, BUILD_SYSTEM, FLAVOUR export USERNAME="user" export USERFULLNAME="Live session user" export HOST="vm" export BUILD_SYSTEM="Ubuntu" # USERNAME and HOSTNAME as specified above won't be honoured and will be set to # flavour string acquired at boot time, unless you set FLAVOUR to any # non-empty string. export FLAVOUR="Ubuntu" export PERSISTENT="Yes" export root_persistence="overlay"You can customize your username and host name in this file too. Note
root_persistenceis the label we specified in step 3. Now compress the initramfs:# cd /tmp/i # find . | cpio --quiet --dereference -o -H newc | lzma -7 > /mnt/boot/initrd.lz -
Now for a bootloader which uses the above stuff. Install the extlinux package. I grabbed the .deb from the package search.
-
Install extlinux:
# mkdir /mnt/boot/extlinux # extlinux -i /mnt/boot/extlinuxPut this in
/mnt/boot/extlinux/extlinux.conf:DEFAULT linux LABEL linux KERNEL /boot/vmlinuz.efi APPEND boot=casper initrd=/boot/initrd.lz noprompt -
The hard disk is probably missing a master boot record.
# dd if=/usr/lib/syslinux/mbr.bin of=/dev/sda -
Unmount
/mntand reboot.