Livedvd-makingoff

From VNUML-WIKI
Jump to: navigation, search

VNUML Live DVD 2.0 making-off

Procedure

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-2.6.16.27-bs2-xt-1m
    examples/                  root_fs_tutorial-0.4.1
    examples2/                 ssh_host_rsa_key.pub
    init-vnuml                 
    
  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

#!/bin/bash

# VARIABLES
ROOTFS='root_fs_tutorial-0.4.1'
KERNEL='linux-2.6.18.1-bb2-xt-1m'

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 http://jungla.dit.upm.es/~vnuml/debian binary/"   >> /etc/apt/sources.list
echo "deb http://archive.ubuntu.com/ubuntu dapper universe" >> /etc/apt/sources.list
echo "deb-src http://archive.ubuntu.com/ubuntu dapper universe" >> /etc/apt/sources.list

prepare_install

# 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/vnumlparser.pl /tmp
cat /tmp/vnumlparser.pl | sed -e 's/my $boot_timeout = 30;/my $boot_timeout = 120;/' | sed -e 's/getpwnam("vnuml")/getpwnam("ubuntu")/' | sed -e '/Ferm/d'  > /usr/bin/vnumlparser.pl
rm -f /tmp/vnumlparser.pl

# 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 ssh_host_rsa_key.pub temporarily to /tmp file
mkdir -p /usr/share/vnuml/aux
cp /tmp/customize-dir/vnuml/ssh_host_rsa_key.pub /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

#!/bin/bash
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=$?"

popd

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

init-vnuml script


#!/bin/sh

# Create ssh keys for root and ubuntu users
if [ ! -f /root/.ssh/identity.pub ]
  then
    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 ""
  else
    echo "ssh keys for user root exists"
fi

if [ ! -f /home/ubuntu/.ssh/identity.pub ]
  then
    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 ""
  else
    echo "ssh keys for user ubuntu exists"
fi

# 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


References