Difference between revisions of "Creating a Live GIS DISC from scratch"

From OSGeo
Jump to navigation Jump to search
m
(+ live demo category, continuous code)
Line 25: Line 25:
 
  export FORMAT=squashfs
 
  export FORMAT=squashfs
 
  export FS_DIR=casper
 
  export FS_DIR=casper
 
+
 
  sudo mkdir -p ${CD}/${FS_DIR} ${CD}/boot/grub ${WORK}/rootfs
 
  sudo mkdir -p ${CD}/${FS_DIR} ${CD}/boot/grub ${WORK}/rootfs
 
  sudo apt-get update
 
  sudo apt-get update
Line 31: Line 31:
 
  sudo apt-get install linux-ubuntu-modules-$(uname -r)
 
  sudo apt-get install linux-ubuntu-modules-$(uname -r)
 
  sudo apt-get clean
 
  sudo apt-get clean
 
+
  sudo rsync -av --one-file-system --exclude=/proc/* --exclude=/dev/*\
+
  sudo rsync -av --one-file-system --exclude=/proc/* --exclude=/dev/* \
--exclude=/sys/* --exclude=/tmp/* --exclude=/home/*\
+
  --exclude=/sys/* --exclude=/tmp/* --exclude=/home/* \
--exclude=/lost+found --exclude=/mnt/* --exclude=/var/www/tmp/*\
+
  --exclude=/lost+found --exclude=/mnt/* --exclude=/var/www/tmp/* \
 
  / ${WORK}/rootfs
 
  / ${WORK}/rootfs
 
+
 
  sudo cp -av /boot/* ${WORK}/rootfs/boot
 
  sudo cp -av /boot/* ${WORK}/rootfs/boot
 
+
 
  CONFIG='.config .bashrc'
 
  CONFIG='.config .bashrc'
 
+
 
  cd $HOME && for i in $CONFIG
 
  cd $HOME && for i in $CONFIG
 
  do
 
  do
sudo cp -rpv --parents $i ${WORK}/rootfs/etc/skel
+
    sudo cp -rpv --parents $i ${WORK}/rootfs/etc/skel
 
  done
 
  done
 
+
 
  sudo cp $HOME/scripts/inchroot.sh $WORK//rootfs/tmp/
 
  sudo cp $HOME/scripts/inchroot.sh $WORK//rootfs/tmp/
 
+
 
  sudo mount -o bind /dev/ ${WORK}/rootfs/dev
 
  sudo mount -o bind /dev/ ${WORK}/rootfs/dev
 
  sudo mount -t proc proc ${WORK}/rootfs/proc
 
  sudo mount -t proc proc ${WORK}/rootfs/proc
Line 62: Line 62:
 
  depmod -a $(uname -r)
 
  depmod -a $(uname -r)
 
  update-initramfs -u -k $(uname -r)
 
  update-initramfs -u -k $(uname -r)
  for i in "/etc/hosts /etc/hostname /etc/resolv.conf /etc/timezone /etc/fstab /etc/mtab /etc/shadow /etc/shadow- /etc/gshadow  /etc/gshadow- /etc/gdm/gdm-cdd.conf /etc/gdm/gdm.conf-custom /etc/X11/xorg.conf /boot/grub/menu.lst /boot/grub/device.map"
+
 +
  for i in /etc/hosts /etc/hostname /etc/resolv.conf /etc/timezone /etc/fstab /etc/mtab /etc/shadow /etc/shadow- /etc/gshadow  /etc/gshadow- /etc/gdm/gdm-cdd.conf /etc/gdm/gdm.conf-custom /etc/X11/xorg.conf /boot/grub/menu.lst /boot/grub/device.map
 
  do
 
  do
rm $i
+
    rm $i
 
  done 2>/dev/null
 
  done 2>/dev/null
 +
 
  apt-get clean
 
  apt-get clean
 
  rm -r /tmp/* /root/* 2>/dev/null
 
  rm -r /tmp/* /root/* 2>/dev/null
 
  rm  /boot/*.bak 2>/dev/null
 
  rm  /boot/*.bak 2>/dev/null
 
+
 
  for i in `cat /etc/passwd | awk -F":" '{print $1}'`
 
  for i in `cat /etc/passwd | awk -F":" '{print $1}'`
 
  do
 
  do
uid=`cat /etc/passwd | grep "^${i}:" | awk -F":" '{print $3}'`
+
    uid=`cat /etc/passwd | grep "^${i}:" | awk -F":" '{print $3}'`
[ "$uid" -gt "999" -a  "$uid" -ne "65534"  ] && userdel --force ${i} 2>/dev/null
+
    [ "$uid" -gt "999" -a  "$uid" -ne "65534"  ] && userdel --force ${i} 2>/dev/null
 
  done
 
  done
 
+
  find /var/run /var/log /var/mail /var/spool /var/lock /var/backups /var/tmp -type f -exec rm {} \;
+
  find /var/run /var/log /var/mail /var/spool /var/lock \
 
+
    /var/backups /var/tmp -type f -exec rm {} \;
  [ -f "/etc/gdm/factory-gdm.conf" ] && cp -f /etc/gdm/factory-gdm.conf /etc/gdm/gdm.conf 2>/dev/null
+
 
+
  [ -f "/etc/gdm/factory-gdm.conf" ] && \
 +
    cp -f /etc/gdm/factory-gdm.conf /etc/gdm/gdm.conf 2>/dev/null
 +
 
  for i in dpkg.log lastlog mail.log syslog auth.log daemon.log faillog lpr.log mail.warn user.log boot debug mail.err messages wtmp bootstrap.log dmesg kern.log mail.info
 
  for i in dpkg.log lastlog mail.log syslog auth.log daemon.log faillog lpr.log mail.warn user.log boot debug mail.err messages wtmp bootstrap.log dmesg kern.log mail.info
 
  do
 
  do
touch /var/log/${i}
+
    touch /var/log/${i}
 
  done
 
  done
  
Line 95: Line 99:
 
  export FS_DIR=casper
 
  export FS_DIR=casper
 
  export IMAGE_VERSION=1.0Beta1
 
  export IMAGE_VERSION=1.0Beta1
 
+
 
  sudo cp -vp ${WORK}/rootfs/boot/vmlinuz-$(uname -r) ${CD}/casper/vmlinuz
 
  sudo cp -vp ${WORK}/rootfs/boot/vmlinuz-$(uname -r) ${CD}/casper/vmlinuz
 
  sudo cp -vp ${WORK}/rootfs/boot/initrd.img-$(uname -r) ${CD}/casper/initrd.gz
 
  sudo cp -vp ${WORK}/rootfs/boot/initrd.img-$(uname -r) ${CD}/casper/initrd.gz
 
+
 
  # The following steps are only required, if ubiquity will be installed.
 
  # The following steps are only required, if ubiquity will be installed.
 
  #sudo chroot ${WORK}/rootfs dpkg-query -W --showformat='${Package} ${Version}\n' | sudo tee ${CD}/${FS_DIR}/filesystem.manifest
 
  #sudo chroot ${WORK}/rootfs dpkg-query -W --showformat='${Package} ${Version}\n' | sudo tee ${CD}/${FS_DIR}/filesystem.manifest
Line 107: Line 111:
 
  # sudo sed -i "/${i}/d" ${CD}/${FS_DIR}/filesystem.manifest-desktop
 
  # sudo sed -i "/${i}/d" ${CD}/${FS_DIR}/filesystem.manifest-desktop
 
  #done
 
  #done
 
+
 
  sudo umount ${WORK}/rootfs/proc
 
  sudo umount ${WORK}/rootfs/proc
 
  sudo umount ${WORK}/rootfs/sys
 
  sudo umount ${WORK}/rootfs/sys
 
  sudo umount ${WORK}/rootfs/dev
 
  sudo umount ${WORK}/rootfs/dev
 
+
 
  sudo mksquashfs ${WORK}/rootfs ${CD}/${FS_DIR}/filesystem.${FORMAT} -noappend -no-duplicates
 
  sudo mksquashfs ${WORK}/rootfs ${CD}/${FS_DIR}/filesystem.${FORMAT} -noappend -no-duplicates
 
+
 
  sudo cp -rf /mnt/ralph/save/add2cd/* ${CD}/
 
  sudo cp -rf /mnt/ralph/save/add2cd/* ${CD}/
 
  sudo rm -rf ${CD}/boot
 
  sudo rm -rf ${CD}/boot
 
+
 
  cd $CD && find . -type f -print0 | xargs -0 sudo md5sum | sudo tee ${CD}/md5sum.txt
 
  cd $CD && find . -type f -print0 | xargs -0 sudo md5sum | sudo tee ${CD}/md5sum.txt
 
  sudo mkisofs -r -V "Arramagong_v$IMAGE_VERSION" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o $HOME/Arramagong_v$IMAGE_VERSION.iso .
 
  sudo mkisofs -r -V "Arramagong_v$IMAGE_VERSION" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o $HOME/Arramagong_v$IMAGE_VERSION.iso .
Line 128: Line 132:
 
  export FS_DIR=casper
 
  export FS_DIR=casper
 
  export IMAGE_VERSION=1.0Beta1
 
  export IMAGE_VERSION=1.0Beta1
 
+
 
  sudo mkdir /tmp/livecd
 
  sudo mkdir /tmp/livecd
 
  sudo mount -o loop ~/Arramagong_v$IMAGE_VERSION.iso /tmp/livecd
 
  sudo mount -o loop ~/Arramagong_v$IMAGE_VERSION.iso /tmp/livecd
Line 142: Line 146:
 
  export FS_DIR=casper
 
  export FS_DIR=casper
 
  export IMAGE_VERSION=1.0Beta1
 
  export IMAGE_VERSION=1.0Beta1
 
+
 
  sudo rm cd/md5sum.txt
 
  sudo rm cd/md5sum.txt
 
  cd $CD && find . -type f -print0 | xargs -0 sudo md5sum | sudo tee ${CD}/md5sum.txt
 
  cd $CD && find . -type f -print0 | xargs -0 sudo md5sum | sudo tee ${CD}/md5sum.txt
 
  sudo mkisofs -r -V "Arramagong_v$IMAGE_VERSION" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o $HOME/Arramagong_v$IMAGE_VERSION.iso .
 
  sudo mkisofs -r -V "Arramagong_v$IMAGE_VERSION" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o $HOME/Arramagong_v$IMAGE_VERSION.iso .
 +
 +
 +
[[Category: Live-demo]]

Revision as of 23:41, 16 April 2009

How to make a Live GIS Disc from scratch

This document describes step by step how to generate an iso-image from an existing Ubuntu/Xubuntu installation.

Instead of entering each single step by hand, you can also download scripts here, that execute the commands. Please note, that you probably have to adjust the scripts a bit to get them to work on your system.

This document and the scripts are based on:


Steps to create the Live DVD

1. Install the current version of the Live DVD on your system or virtual machine or, in case you want to start from scratch, install a clean Ubuntu/Xubuntu.

2. Remove any applications your don't want to have on your Live DVD.

3. Install and configure all applications, data, examples, documentation you want to have on your Live DVD

4. Configure the system as you wish. (Please note, that exisiting user won't be used on the Live DVD. However, you can copy later everything you want in the Live DVD's user's home-directory from your current user's home.)

5. Adjust script iso.sh to your needs and execute it in your home-directory. Especially, add everthing to the CONFIG variable, you want to have in the standard user's home-directory. Or run the following commands:

export WORK=$HOME/work
export CD=$HOME/cd
export FORMAT=squashfs
export FS_DIR=casper

sudo mkdir -p ${CD}/${FS_DIR} ${CD}/boot/grub ${WORK}/rootfs
sudo apt-get update
sudo apt-get install mkisofs grub squashfs-tools
sudo apt-get install linux-ubuntu-modules-$(uname -r)
sudo apt-get clean

sudo rsync -av --one-file-system --exclude=/proc/* --exclude=/dev/* \
  --exclude=/sys/* --exclude=/tmp/* --exclude=/home/* \
  --exclude=/lost+found --exclude=/mnt/* --exclude=/var/www/tmp/* \
/ ${WORK}/rootfs

sudo cp -av /boot/* ${WORK}/rootfs/boot

CONFIG='.config .bashrc'

cd $HOME && for i in $CONFIG
do
   sudo cp -rpv --parents $i ${WORK}/rootfs/etc/skel
done

sudo cp $HOME/scripts/inchroot.sh $WORK//rootfs/tmp/

sudo mount -o bind /dev/ ${WORK}/rootfs/dev
sudo mount -t proc proc ${WORK}/rootfs/proc
sudo chroot ${WORK}/rootfs /bin/bash

You should be now in a chroot-environment.

6. Adjust and execute now the sript 'inchroot.sh', which should be located in '/tmp' of the chroot environment. Or execute the following commands:

LANG=
apt-get update
apt-get install casper xresprobe 
#apt-get ubiquity #optinal. Installs ubiquity
depmod -a $(uname -r)
update-initramfs -u -k $(uname -r)

for i in /etc/hosts /etc/hostname /etc/resolv.conf /etc/timezone /etc/fstab /etc/mtab /etc/shadow /etc/shadow- /etc/gshadow  /etc/gshadow- /etc/gdm/gdm-cdd.conf /etc/gdm/gdm.conf-custom /etc/X11/xorg.conf /boot/grub/menu.lst /boot/grub/device.map
do
   rm $i
done 2>/dev/null

apt-get clean
rm -r /tmp/* /root/* 2>/dev/null
rm  /boot/*.bak 2>/dev/null

for i in `cat /etc/passwd | awk -F":" '{print $1}'`
do
   uid=`cat /etc/passwd | grep "^${i}:" | awk -F":" '{print $3}'`
   [ "$uid" -gt "999" -a  "$uid" -ne "65534"  ] && userdel --force ${i} 2>/dev/null
done

find /var/run /var/log /var/mail /var/spool /var/lock \
   /var/backups /var/tmp -type f -exec rm {} \;

[ -f "/etc/gdm/factory-gdm.conf" ] && \
   cp -f /etc/gdm/factory-gdm.conf /etc/gdm/gdm.conf 2>/dev/null

for i in dpkg.log lastlog mail.log syslog auth.log daemon.log faillog lpr.log mail.warn user.log boot debug mail.err messages wtmp bootstrap.log dmesg kern.log mail.info
do
   touch /var/log/${i}
done

7. Exit the chroot environemnt by entering 'exit'.

8. Adjust and execute the script 'iso2.sh'. Or enter the following commands:

cd $HOME
export WORK=$HOME/work
export CD=$HOME/cd
export FORMAT=squashfs
export FS_DIR=casper
export IMAGE_VERSION=1.0Beta1

sudo cp -vp ${WORK}/rootfs/boot/vmlinuz-$(uname -r) ${CD}/casper/vmlinuz
sudo cp -vp ${WORK}/rootfs/boot/initrd.img-$(uname -r) ${CD}/casper/initrd.gz

# The following steps are only required, if ubiquity will be installed.
#sudo chroot ${WORK}/rootfs dpkg-query -W --showformat='${Package} ${Version}\n' | sudo tee ${CD}/${FS_DIR}/filesystem.manifest
#sudo cp -v ${CD}/${FS_DIR}/filesystem.manifest ${CD}/${FS_DIR}/filesystem.manifest-desktop
#REMOVE='ubiquity casper user-setup discover1 xresprobe os-prober libdebian-installer4'
#for i in $REMOVE 
#do
#	sudo sed -i "/${i}/d" ${CD}/${FS_DIR}/filesystem.manifest-desktop
#done

sudo umount ${WORK}/rootfs/proc
sudo umount ${WORK}/rootfs/sys
sudo umount ${WORK}/rootfs/dev

sudo mksquashfs ${WORK}/rootfs ${CD}/${FS_DIR}/filesystem.${FORMAT} -noappend -no-duplicates

sudo cp -rf /mnt/ralph/save/add2cd/* ${CD}/
sudo rm -rf ${CD}/boot

cd $CD && find . -type f -print0 | xargs -0 sudo md5sum | sudo tee ${CD}/md5sum.txt
sudo mkisofs -r -V "Arramagong_v$IMAGE_VERSION" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o 	$HOME/Arramagong_v$IMAGE_VERSION.iso .

9. Run the script "test.sh", or enter the following commands:

cd $HOME
export WORK=$HOME/work
export CD=$HOME/cd
export FORMAT=squashfs
export FS_DIR=casper
export IMAGE_VERSION=1.0Beta1

sudo mkdir /tmp/livecd
sudo mount -o loop ~/Arramagong_v$IMAGE_VERSION.iso /tmp/livecd
cd /tmp/livecd
sudo md5sum -c md5sum.txt

If the sript finds any errors, adjust and run the script 'repair.sh' or the following commands:

cd $HOME
export WORK=$HOME/work
export CD=$HOME/cd
export FORMAT=squashfs
export FS_DIR=casper
export IMAGE_VERSION=1.0Beta1

sudo rm cd/md5sum.txt
cd $CD && find . -type f -print0 | xargs -0 sudo md5sum | sudo tee ${CD}/md5sum.txt
sudo mkisofs -r -V "Arramagong_v$IMAGE_VERSION" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o $HOME/Arramagong_v$IMAGE_VERSION.iso .