Jump to: navigation, search

VNUML Live DVD 2.0 making-off


VNUML Live DVD 2.0 was created using Ubuntu Customization Kit (UCK) v1.3, a tool that helps you customizing official Ubuntu Live CDs.

  1. Download UCK v1.3 from here and install it:
  2.  dpkg -i uck_1.3_all.deb
  3. Create a directory to hold all the vnumllive stuff and download Ubuntu 6.06 iso file:
  4.  mkdir vnumllive
     cd vnumllive
     wget ... ubuntu-6.06.1-desktop-i386.iso
     mkdir live
     cd live
  5. Create a directory named vnuml and copy the kernel and rootfilesystem:
  6.  mkdir vnuml
     cd vnuml
     wget ...root_fs_tutorial...
     wget ...linux-...
  7. Copy also the directories with the examples and other information needed to be copied to the live dvd:
    # ls vnuml
    bookmarks.html             known_hosts
    doc/                       linux-
    examples/                  root_fs_tutorial-0.4.1
  8. Get a local copy of vnuml web server following the procedure described here and copy it to vnumllive/live/vnuml/doc/vnuml directory.
  9. Create a file vnumllive/live/customize with the content shown below.
  10. Create a file vnumllive/live/customize_iso with the content shown below.
  11. Give both scripts execution permissions:
  12. chmod +x customize customize_iso
  13. Create a file vnumllive/live/iso_description with the following content:
  14. VNUML Live DVD v2
  15. Create a file vnumllive/live/vnuml/init-vnuml with the content listed below and give it execution permissions:
  16. chmod +x init-vnuml
  17. Execute the following command:
  18.  remaster-live-cd ubuntu-6.06.1-desktop-i386.iso live
  19. If everything goes well, the dvd iso file and its md5 are stored in /root/tmp/remaster-new-files. Just rename and copy them:
  20. mv /root/tmp/remaster-new-files/livecd.iso vnuml-live-2.0.iso
    mv /root/tmp/remaster-new-files/livecd.iso.md5 vnuml-live-2.0.iso.md5

customize script



function prepare_install()
        apt-get update
        apt-get -y upgrade

function install_packages()
        apt-get install --assume-yes --force-yes "$@"

function remove_packages()
        apt-get --purge remove --assume-yes --force-yes "$@"

# update apt sources.list
echo "deb binary/"   >> /etc/apt/sources.list
echo "deb dapper universe" >> /etc/apt/sources.list
echo "deb-src dapper universe" >> /etc/apt/sources.list


# Create groups
/usr/sbin/addgroup admin
/usr/sbin/addgroup ubuntu

# Create user ubuntu
/usr/sbin/useradd --home /home/ubuntu -m -g adm -G dialout,cdrom,floppy,audio,dip,video,plugdev,lpadmin,scanner,admin,ubuntu -p `perl -le "print crypt ('ubuntu','(A..z)[rand 25].(A..z)[rand ');"` -s /bin/bash ubuntu

# Add privileges to admin group
echo "# Members of the admin group may gain root privileges" >> /etc/sudoers
echo "%admin ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers

# Install vnuml
install_packages vnuml bridge-utils libpcap0.8

# Change VNUML timeout to 120 secs
cp /usr/bin/ /tmp
cat /tmp/ | sed -e 's/my $boot_timeout = 30;/my $boot_timeout = 120;/' | sed -e 's/getpwnam("vnuml")/getpwnam("ubuntu")/' | sed -e '/Ferm/d'  > /usr/bin/
rm -f /tmp/

# Copy root_fs and kernel
cp /tmp/customize-dir/vnuml/$ROOTFS /usr/share/vnuml/filesystems
cp /tmp/customize-dir/vnuml/$KERNEL /usr/share/vnuml/kernels
ln -s /usr/share/vnuml/filesystems/$ROOTFS /usr/share/vnuml/filesystems/root_fs_tutorial
ln -s /usr/share/vnuml/kernels/$KERNEL /usr/share/vnuml/kernels/linux

# Add vnuml-init script to startup
cp /tmp/customize-dir/vnuml/init-vnuml /etc/init.d
update-rc.d init-vnuml defaults 12    # 12 is to start it before gdm...

# Copy aditional examples and docs
cp -r /tmp/customize-dir/vnuml/examples/* /usr/share/vnuml/examples
cp -r /tmp/customize-dir/vnuml/doc /usr/share/vnuml

# Copy temporarily to /tmp file
mkdir -p /usr/share/vnuml/aux
cp /tmp/customize-dir/vnuml/ /usr/share/vnuml/aux
cp /tmp/customize-dir/vnuml/known_hosts /usr/share/vnuml/aux

# Copy firefox bookmarks file
cp /tmp/customize-dir/vnuml/bookmarks.html /etc/firefox/profile

customize_iso script

BUILD_DIR=`mktemp -d`

function failure()
        echo "$@"
        exit 1

pushd "$BUILD_DIR" || failure "Cannot change directory to $BUILD_DIR, error=$?"
apt-get source gfxboot-theme-ubuntu || failure "Failed to fetch gfxboot-theme-ubuntu source, check if you have deb-src line enabled for repository main in /etc/apt/sources.list, error=$?"

cd gfxboot-theme-ubuntu*/

make DEFAULT_LANG=en || failure "Failed to build gfxboot theme, error=$?"

cp -af boot/* "$ISO_REMASTER_DIR/isolinux/" || failure "Error while copying boot files ( " boot/* " ) to $ISO_REMASTER_DIR/isolinux/, error=$?"


if [ "$BUILD_DIR" = "/" ] ; then
        failure "Trying to remove root dir"
        rm -rf "$BUILD_DIR"

init-vnuml script


# Create ssh keys for root and ubuntu users
if [ ! -f /root/.ssh/ ]
    echo "ssh keys for user root does not exists"
    mkdir -p /root/.ssh
    chown root.root /root/.ssh
    sudo ssh-keygen -t rsa1 -f /root/.ssh/identity -N ""
    echo "ssh keys for user root exists"

if [ ! -f /home/ubuntu/.ssh/ ]
    echo "ssh keys for user ubuntu does not exists"
    mkdir -p /home/ubuntu/.ssh
    chown ubuntu.adm /home/ubuntu/.ssh
    sudo ssh-keygen -t rsa1 -f /home/ubuntu/.ssh/identity -N ""
    echo "ssh keys for user ubuntu exists"

# Copy vnuml examples to /home/ubuntu/vnuml/examples, 
# to allow the user to modify them (/usr/share/vnuml directory
# is read only)
mkdir -p /home/ubuntu/vnuml
cp -r /usr/share/vnuml/examples /home/ubuntu/vnuml
cp -r /usr/share/vnuml/doc /home/ubuntu/vnuml
chown -R ubuntu.adm /home/ubuntu/*

# To autostart firefox with home page
mkdir -p /home/ubuntu/.config/autostart/
cp /usr/share/vnuml/doc/firefox.desktop /home/ubuntu/.config/autostart
cp /usr/share/vnuml/doc/xhost.desktop /home/ubuntu/.config/autostart
chown -R ubuntu.adm /home/ubuntu/.*

# Create /var/run/vnuml directory
mkdir -p /var/run/vnuml
chown vnuml.vnuml /var/run/vnuml
chmod 755 /var/run/vnuml

# Copy known_hosts file
cp /usr/share/vnuml/aux/known_hosts /home/ubuntu/.ssh
chown ubuntu.adm /home/ubuntu/.ssh/known_hosts
cp /usr/share/vnuml/aux/known_hosts /root/.ssh
chown root.root /root/.ssh/known_hosts
rm -rf /usr/share/vnuml/aux