Skip to content

Instantly share code, notes, and snippets.

@wagung
Created December 19, 2011 11:02
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 4 You must be signed in to fork a gist
  • Save wagung/1496656 to your computer and use it in GitHub Desktop.
Save wagung/1496656 to your computer and use it in GitHub Desktop.
remastersys customize
#!/bin/bash
# remastersys script to make an installable livecd/dvd from an (XK)Ubuntu installed
# and customized system
#
#
# Created by Tony "Fragadelic" Brijeski
#
# Copyright 2007,2008 Under the GNU GPL2 License
#
# Originally Created February 12th, 2007
#
#
#
# This version is only for grub2 based Ubuntu's and variants like Karmic 9.10 and up
#
#
# checking to make sure script is running with root privileges
. /etc/remastersys/remastersys.version
testroot="`whoami`"
if [ "$testroot" != "root" ]; then
echo "Usage of remastersys $REMASTERSYSVERSION is as follows:"
echo " "
echo " sudo remastersys backup|clean|dist [cdfs|iso] [filename.iso]"
echo " "
echo " "
echo "Examples:"
echo " "
echo " sudo remastersys backup (to make a livecd/dvd backup of your system)"
echo " "
echo " sudo remastersys backup custom.iso"
echo " (to make a livecd/dvd backup and call the iso custom.iso)"
echo " "
echo " sudo remastersys clean (to clean up temporary files of remastersys)"
echo " "
echo " sudo remastersys dist (to make a distributable livecd/dvd of your system)"
echo " "
echo " sudo remastersys dist cdfs"
echo " (to make a distributable livecd/dvd filesystem only)"
echo " "
echo " sudo remastersys dist iso custom.iso"
echo " (to make a distributable iso named custom.iso but only"
echo " if the cdfs is already present)"
echo " "
echo " cdfs and iso options should only be used if you wish to modify something on the"
echo " cd before the iso is created. An example of this would be to modify the isolinux"
echo " portion of the livecd/dvd"
echo " "
exit 1
fi
# load the remastersys.conf file
. /etc/remastersys.conf
# if the remastersys.conf file is incorrect or missing, make sure to set defaults
if [ "$LIVEUSER" = "" ]; then
#Somebody must have removed the username from the configuration file
echo
#this is a custom live user
LIVEUSER="custom"
fi
#make sure live user is all lowercase
LIVEUSER="`echo $LIVEUSER | awk '{print tolower ($0)}'`"
if [ "$WORKDIR" = "" ]; then
WORKDIR="/home/remastersys/remastersys"
else
WORKDIR="$WORKDIR/remastersys"
fi
if [ "$LIVECDLABEL" = "" ]; then
LIVECDLABEL="Custom Live CD"
fi
#if [ "$CDBOOTTYPE" != "GRUB" ]; then
CDBOOTTYPE="ISOLINUX"
#fi
if [ "$LIVECDURL" = "" ]; then
LIVECDURL="http://www.geekconnection.org/remastersys"
fi
if [ "$2" = "cdfs" ]; then
echo "Creating the cd filesystem only"
elif [ "$2" = "iso" ]; then
echo "Creating the iso file only"
elif [ "$2" = "" ]; then
echo " "
else
CUSTOMISO="$2"
fi
if [ "$3" != "" ]; then
CUSTOMISO="$3"
fi
if [ "$CUSTOMISO" = "" ]; then
CUSTOMISO="custom$1.iso"
fi
case $1 in
backup)
echo "System Backup Mode Selected"
;;
clean)
echo "Removing the build directory now..."
rm -rf $WORKDIR
echo "Done...Exiting"
exit 0
;;
dist)
echo "Distribution Mode Selected"
;;
*)
echo "Usage of remastersys $REMASTERSYSVERSION is as follows:"
echo " "
echo " sudo remastersys backup|clean|dist [cdfs|iso] [filename.iso]"
echo " "
echo " "
echo "Examples:"
echo " "
echo " sudo remastersys backup (to make a livecd/dvd backup of your system)"
echo " "
echo " sudo remastersys backup custom.iso"
echo " (to make a livecd/dvd backup and call the iso custom.iso)"
echo " "
echo " sudo remastersys clean (to clean up temporary files of remastersys)"
echo " "
echo " sudo remastersys dist (to make a distributable livecd/dvd of your system)"
echo " "
echo " sudo remastersys dist cdfs"
echo " (to make a distributable livecd/dvd filesystem only)"
echo " "
echo " sudo remastersys dist iso custom.iso"
echo " (to make a distributable iso named custom.iso but only"
echo " if the cdfs is already present)"
echo " "
echo " cdfs and iso options should only be used if you wish to modify something on the"
echo " cd before the iso is created. An example of this would be to modify the isolinux"
echo " portion of the livecd/dvd"
echo " "
exit 1
;;
esac
cdfs (){
#removing popularity-contest as it causes a problem when installing with ubiquity
apt-get -y -q remove popularity-contest
# check whether system is gnome or kde based to load the correct ubiquity frontend
if [ "`cat /etc/X11/default-display-manager`" = "/usr/bin/kdm" ]; then
apt-get -y -q install ubiquity-frontend-kde
apt-get -y -q remove ubiquity-frontend-gtk
else
apt-get -y -q install ubiquity-frontend-gtk
apt-get -y -q remove ubiquity-frontend-kde
apt-get -y -q install metacity
fi
# prevent the installer from changing the apt sources.list
if [ ! -f "/usr/share/ubiquity/apt-setup.saved" ]; then
cp /usr/share/ubiquity/apt-setup /usr/share/ubiquity/apt-setup.saved
fi
sleep 1
# Step 3 - Create the CD tree in $WORKDIR/ISOTMP
echo "Checking if the $WORKDIR folder has been created"
if [ -d "$WORKDIR" ]; then
rm -rf $WORKDIR/dummysys/var/*
rm -rf $WORKDIR/dummysys/etc/*
rm -rf $WORKDIR/ISOTMP/isolinux
rm -rf $WORKDIR/ISOTMP/grub
rm -rf $WORKDIR/ISOTMP/.disk
else
mkdir -p $WORKDIR/ISOTMP/casper
mkdir -p $WORKDIR/ISOTMP/preseed
mkdir -p $WORKDIR/dummysys/dev
mkdir -p $WORKDIR/dummysys/etc
mkdir -p $WORKDIR/dummysys/proc
mkdir -p $WORKDIR/dummysys/tmp
mkdir -p $WORKDIR/dummysys/sys
mkdir -p $WORKDIR/dummysys/mnt
mkdir -p $WORKDIR/dummysys/media/cdrom
mkdir -p $WORKDIR/dummysys/var
chmod ug+rwx,o+rwt $WORKDIR/dummysys/tmp
fi
mkdir -p $WORKDIR/ISOTMP/isolinux
mkdir -p $WORKDIR/ISOTMP/.disk
echo "Copying /var and /etc to temp area and excluding extra files"
if [ "$EXCLUDES" != "" ]; then
for addvar in $EXCLUDES ; do
VAREXCLUDES="$VAREXCLUDES --exclude='$addvar' "
done
fi
rsync --exclude='*.log.*' --exclude='*.pid' --exclude='*.bak' --exclude='*.[0-9].gz' --exclude='*.deb' $VAREXCLUDES-a /var/. $WORKDIR/dummysys/var/.
rsync $VAREXCLUDES-a /etc/. $WORKDIR/dummysys/etc/.
rm -rf $WORKDIR/dummysys/etc/X11/xorg.conf*
rm -rf $WORKDIR/dummysys/etc/resolv.conf
rm -rf $WORKDIR/dummysys/etc/hosts
rm -rf $WORKDIR/dummysys/etc/hostname
rm -rf $WORKDIR/dummysys/etc/timezone
rm -rf $WORKDIR/dummysys/etc/mtab
rm -rf $WORKDIR/dummysys/etc/fstab
rm -rf $WORKDIR/dummysys/etc/udev/rules.d/70-persistent*
rm -rf $WORKDIR/dummysys/etc/cups/ssl/server.crt
rm -rf $WORKDIR/dummysys/etc/cups/ssl/server.key
rm -rf $WORKDIR/dummysys/etc/ssh/ssh_host_rsa_key
rm -rf $WORKDIR/dummysys/etc/ssh/ssh_host_dsa_key.pub
rm -rf $WORKDIR/dummysys/etc/ssh/ssh_host_dsa_key
rm -rf $WORKDIR/dummysys/etc/ssh/ssh_host_rsa_key.pub
rm -rf $WORKDIR/dummysys/etc/gdm/gdm.conf-custom
rm -rf $WORKDIR/dummysys/etc/gdm/custom.conf
rm -rf $WORKDIR/dummysys/etc/skel/.config/user-dirs.dirs
rm -rf $WORKDIR/dummysys/etc/skel/.config/users-dirs.locale
ls $WORKDIR/dummysys/var/lib/apt/lists | grep -v ".gpg" | grep -v "lock" | grep -v "partial" | xargs -i rm $WORKDIR/dummysys/var/lib/apt/lists/{} ;
if [ "$1" = "dist" ]; then
echo " " > $WORKDIR/dummysys/etc/gdm/gdm.conf-custom
rm -rf $WORKDIR/dummysys/etc/group
rm -rf $WORKDIR/dummysys/etc/passwd
rm -rf $WORKDIR/dummysys/etc/shadow
rm -rf $WORKDIR/dummysys/etc/shadow-
rm -rf $WORKDIR/dummysys/etc/gshadow
rm -rf $WORKDIR/dummysys/etc/gshadow-
rm -rf $WORKDIR/dummysys/etc/wicd/wired-settings.conf
rm -rf $WORKDIR/dummysys/etc/wicd/wireless-settings.conf
ls $WORKDIR/dummysys/etc/NetworkManager/system-connections | xargs -i rm $WORKDIR/dummysys/etc/NetworkManager/system-connections/{} ;
rm -rf $WORKDIR/dummysys/etc/printcap
rm -rf $WORKDIR/dummysys/etc/cups/printers.conf
touch $WORKDIR/dummysys/etc/printcap
touch $WORKDIR/dummysys/etc/cups/printers.conf
find $WORKDIR/dummysys/var/run $WORKDIR/dummysys/var/log $WORKDIR/dummysys/var/mail $WORKDIR/dummysys/var/spool $WORKDIR/dummysys/var/lock $WORKDIR/dummysys/var/backups $WORKDIR/dummysys/var/tmp $WORKDIR/dummysys/var/crash $WORKDIR/dummysys/var/lib/ubiquity -type f -exec rm {} \;
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 $WORKDIR/dummysys/var/log/${i}
done
# remove the non system users on the passwd and group files and copy them to dummysys
# see if any temp users left over from previous versions of remastersys as the process has now changed
grep '^[^:]*:[^:]*:[5-9][0-9][0-9]:' /etc/passwd | awk -F ":" '{print "/usr/sbin/userdel -f",$1}'> $WORKDIR/cleantmpusers
. $WORKDIR/cleantmpusers
grep '^[^:]*:[^:]*:[0-9]:' /etc/passwd >> $WORKDIR/dummysys/etc/passwd
grep '^[^:]*:[^:]*:[0-9][0-9]:' /etc/passwd >> $WORKDIR/dummysys/etc/passwd
grep '^[^:]*:[^:]*:[0-9][0-9][0-9]:' /etc/passwd >> $WORKDIR/dummysys/etc/passwd
grep '^[^:]*:[^:]*:[3-9][0-9][0-9][0-9][0-9]:' /etc/passwd >> $WORKDIR/dummysys/etc/passwd
grep '^[^:]*:[^:]*:[0-9]:' /etc/group >> $WORKDIR/dummysys/etc/group
grep '^[^:]*:[^:]*:[0-9][0-9]:' /etc/group >> $WORKDIR/dummysys/etc/group
grep '^[^:]*:[^:]*:[0-9][0-9][0-9]:' /etc/group >> $WORKDIR/dummysys/etc/group
grep '^[^:]*:[^:]*:[3-9][0-9][0-9][0-9][0-9]:' /etc/group >> $WORKDIR/dummysys/etc/group
grep '^[^:]*:[^:]*:[5-9][0-9][0-9]:' /etc/passwd | awk -F ":" '{print $1}'> $WORKDIR/tmpusers1
grep '^[^:]*:[^:]*:[1-9][0-9][0-9][0-9]:' /etc/passwd | awk -F ":" '{print $1}'> $WORKDIR/tmpusers2
grep '^[^:]*:[^:]*:[1-2][0-9][0-9][0-9][0-9]:' /etc/passwd | awk -F ":" '{print $1}'> $WORKDIR/tmpusers3
cat $WORKDIR/tmpusers1 $WORKDIR/tmpusers2 $WORKDIR/tmpusers3 > $WORKDIR/tmpusers
cat $WORKDIR/tmpusers | while read LINE ;do
echo $LINE | xargs -i sed -e 's/,{}//g' $WORKDIR/dummysys/etc/group > $WORKDIR/dummysys/etc/group.new1
echo $LINE | xargs -i sed -e 's/{},//g' $WORKDIR/dummysys/etc/group.new1 > $WORKDIR/dummysys/etc/group.new2
echo $LINE | xargs -i sed -e 's/{}//g' $WORKDIR/dummysys/etc/group.new2 > $WORKDIR/dummysys/etc/group
rm -rf $WORKDIR/dummysys/etc/group.new1 $WORKDIR/dummysys/etc/group.new2
done
fi
# make sure the adduser and autologin functions of casper as set according to the mode
[ "$1" = "dist" ] && [ ! -d $WORKDIR/dummysys/home ] && mkdir $WORKDIR/dummysys/home
[ "$1" = "dist" ] && chmod 755 /usr/share/initramfs-tools/scripts/casper-bottom/*adduser /usr/share/initramfs-tools/scripts/casper-bottom/*autologin
[ "$1" = "backup" ] && [ -d $WORKDIR/dummysys/home ] && rm -rf $WORKDIR/dummysys/home
[ "$1" = "backup" ] && chmod 644 /usr/share/initramfs-tools/scripts/casper-bottom/*adduser /usr/share/initramfs-tools/scripts/casper-bottom/*autologin
# copy over some of the necessary stuff for the livecd
#copy any preseed files
cp /etc/remastersys/preseed/* $WORKDIR/ISOTMP/preseed/
#BOOT Type is isolinux
cp /boot/memtest86+.bin $WORKDIR/ISOTMP/isolinux/memtest
# check and see if they have a custom isolinux already setup. eg. they copied over the isolinux folder from their original livecd or made a custom one for their distro
if [ ! -f /etc/remastersys/customisolinux/isolinux.cfg ]; then
find /usr -name 'isolinux.bin' -exec cp {} $WORKDIR/ISOTMP/isolinux/ \;
find /usr -name 'vesamenu.c32' -exec cp {} $WORKDIR/ISOTMP/isolinux/ \;
# setup isolinux for the livecd
VERSION=`lsb_release -r | awk '{print $2}' | awk -F "." '{print $1}'`
sed -e 's/__LIVECDLABEL__/'"$LIVECDLABEL"'/g' /etc/remastersys/isolinux/isolinux.cfg.vesamenu > $WORKDIR/ISOTMP/isolinux/isolinux.cfg
cp /etc/remastersys/isolinux/splash.png $WORKDIR/ISOTMP/isolinux/splash.png
else
cp /etc/remastersys/customisolinux/* $WORKDIR/ISOTMP/isolinux/
fi
ARCH=`archdetect | awk -F "/" '{print $1}'`
cat > $WORKDIR/ISOTMP/README.diskdefines <<FOO
#define DISKNAME $LIVECDLABEL
#define TYPE binary
#define TYPEbinary 1
#define ARCH $ARCH
#define ARCH$ARCH 1
#define DISKNUM 1
#define DISKNUM1 1
#define TOTALNUM 0
#define TOTALNUM0 1
FOO
cp $WORKDIR/ISOTMP/README.diskdefines $WORKDIR/ISOTMP/casper/README.diskdefines
sleep 1
# Step 4 - Make the filesystem.manifest and filesystem.manifest-desktop
echo "Creating filesystem.manifest and filesystem.manifest-desktop"
dpkg-query -W --showformat='${Package} ${Version}\n' \
> $WORKDIR/ISOTMP/casper/filesystem.manifest
cp $WORKDIR/ISOTMP/casper/filesystem.manifest $WORKDIR/ISOTMP/casper/filesystem.manifest-desktop
REMOVE='remastersys ubiquity ubiquity-frontend-gtk ubiquity-frontend-kde casper lupin-casper live-initramfs user-setup discover1 xresprobe os-prober libdebian-installer4'
for i in $REMOVE
do
sudo sed -i "/${i}/d" $WORKDIR/ISOTMP/casper/filesystem.manifest-desktop
done
sleep 1
# Step 5 - Prepare casper.conf depending on whether this is a backup or dist
if [ "$1" = "backup" ]; then
LIVEUSER="`grep '^[^:]*:[^:]*:1000:' /etc/passwd | awk -F ":" '{ print $1 }'`"
fi
echo "# This file should go in /etc/casper.conf" > /etc/casper.conf
echo "# Supported variables are:" >> /etc/casper.conf
echo "# USERNAME, USERFULLNAME, HOST, BUILD_SYSTEM" >> /etc/casper.conf
echo " " >> /etc/casper.conf
echo "export USERNAME=\"$LIVEUSER\"" >> /etc/casper.conf
echo "export USERFULLNAME=\"Live session user\"" >> /etc/casper.conf
echo "export HOST=\"$LIVEUSER\"" >> /etc/casper.conf
echo "export BUILD_SYSTEM=\"Ubuntu\"" >> /etc/casper.conf
cp /etc/casper.conf $WORKDIR/dummysys/etc/
sleep 1
# if the mode is dist then renumber the uid's for any user with a uid greater than 1000
# and make the passwdrestore file so the uid's are restored before the script finishes
# if this is not done, the livecd user will not be created properly
if [ "$1" = "dist" ]; then
# make sure user-setup-apply is present in case backup mode was last used
if [ -f /usr/lib/ubiquity/user-setup/user-setup-apply.orig ]; then
cp /usr/lib/ubiquity/user-setup/user-setup-apply.orig /usr/lib/ubiquity/user-setup/user-setup-apply
fi
else
# since this is backup mode, prevent user-setup-apply from running during install
if [ ! -f /usr/lib/ubiquity/user-setup/user-setup-apply.orig ]; then
mv /usr/lib/ubiquity/user-setup/user-setup-apply /usr/lib/ubiquity/user-setup/user-setup-apply.orig
fi
echo "exit 0"> /usr/lib/ubiquity/user-setup/user-setup-apply
chmod 755 /usr/lib/ubiquity/user-setup/user-setup-apply
# copy the install icon to the sudo users desktop
cp `find /usr -name ubiquity*.desktop` /home/`grep '^[^:]*:[^:]*:1000:' /etc/passwd | awk -F ":" '{ print $1 }'`/Desktop
fi
sleep 1
echo "Setting up casper and ubiquity options for $1 mode"
rm -f /usr/share/ubiquity/apt-setup
echo "#do nothing" > /usr/share/ubiquity/apt-setup
chmod 755 /usr/share/ubiquity/apt-setup
# make a new initial ramdisk including the casper scripts
mkinitramfs -o /boot/initrd.img-`uname -r` `uname -r`
echo "Copying your kernel and initrd for the livecd"
cp /boot/vmlinuz-`uname -r` $WORKDIR/ISOTMP/casper/vmlinuz
cp /boot/initrd.img-`uname -r` $WORKDIR/ISOTMP/casper/initrd.gz
# Step 6 - Make filesystem.squashfs
if [ -f $WORKDIR/remastersys.log ]; then
rm -f $WORKDIR/remastersys.log
touch $WORKDIR/remastersys.log
fi
if [ -f $WORKDIR/ISOTMP/casper/filesystem.squashfs ]; then
rm -f $WORKDIR/ISOTMP/casper/filesystem.squashfs
fi
echo "Creating filesystem.squashfs ... this will take a while so be patient"
SQUASHFSOPTSHIGH="-no-recovery -always-use-fragments"
echo "Adding stage 1 files/folders that the livecd requires."
# add the blank folders and trimmed down /var to the cd filesystem
mksquashfs $WORKDIR/dummysys/ $WORKDIR/ISOTMP/casper/filesystem.squashfs -b 1M -no-duplicates $SQUASHFSOPTSHIGH 2>>$WORKDIR/remastersys.log
sleep 1
echo "Adding stage 2 files/folders that the livecd requires."
# add the rest of the system depending on the mode selected
if [ "$1" = "backup" ]; then
mksquashfs / $WORKDIR/ISOTMP/casper/filesystem.squashfs -b 1M -no-duplicates $SQUASHFSOPTSHIGH -e \
.thumbnails \
.cache \
.bash_history \
Cache \
boot/grub \
dev \
etc \
media \
mnt \
proc \
sys \
tmp \
var \
$WORKDIR $EXCLUDES 2>>$WORKDIR/remastersys.log
else
mksquashfs / $WORKDIR/ISOTMP/casper/filesystem.squashfs -b 1M -no-duplicates $SQUASHFSOPTSHIGH -e \
.thumbnails \
.cache \
.bash_history \
Cache \
boot/grub \
dev \
etc \
home \
media \
mnt \
proc \
sys \
tmp \
var \
$WORKDIR $EXCLUDES 2>>$WORKDIR/remastersys.log
fi
sleep 1
#add some stuff the log in case of problems so I can troubleshoot it easier
echo "------------------------------------------------------" >>$WORKDIR/remastersys.log
echo "Mount information" >>$WORKDIR/remastersys.log
mount >>$WORKDIR/remastersys.log
echo "------------------------------------------------------" >>$WORKDIR/remastersys.log
echo "Casper Script info" >>$WORKDIR/remastersys.log
ls -l /usr/share/initramfs-tools/scripts/casper-bottom/ >>$WORKDIR/remastersys.log
echo "------------------------------------------------------" >>$WORKDIR/remastersys.log
echo "/etc/remastersys.conf info" >>$WORKDIR/remastersys.log
cat /etc/remastersys.conf >>$WORKDIR/remastersys.log
echo "------------------------------------------------------" >>$WORKDIR/remastersys.log
echo "/etc/casper.conf info" >>$WORKDIR/remastersys.log
cat /etc/casper.conf >>$WORKDIR/remastersys.log
echo "------------------------------------------------------" >>$WORKDIR/remastersys.log
echo "/etc/passwd info" >>$WORKDIR/remastersys.log
cat $WORKDIR/dummysys/etc/passwd >>$WORKDIR/remastersys.log
echo "------------------------------------------------------" >>$WORKDIR/remastersys.log
echo "/etc/group info" >>$WORKDIR/remastersys.log
cat $WORKDIR/dummysys/etc/group >>$WORKDIR/remastersys.log
echo "------------------------------------------------------" >>$WORKDIR/remastersys.log
echo "Command-line options = $@" >>$WORKDIR/remastersys.log
echo "------------------------------------------------------" >>$WORKDIR/remastersys.log
# cleanup the install icons as they aren't needed on the current system
if [ "$1" = "backup" ]; then
rm -rf /home/`grep '^[^:]*:[^:]*:1000:' /etc/passwd | awk -F ":" '{ print $1 }'`/Desktop/ubiquity*.desktop
fi
sleep 1
#checking the size of the compressed filesystem to ensure it meets the iso9660 spec for a single file"
SQUASHFSSIZE=`ls -s $WORKDIR/ISOTMP/casper/filesystem.squashfs | awk -F " " '{print $1}'`
if [ "$SQUASHFSSIZE" -gt "3999999" ]; then
echo " The compressed filesystem is larger than the iso9660 specification allows for a single file. You must try to reduce the amount of data you are backing up and try again."
echo " The compressed filesystem is larger than the iso9660 specification allows for a single file. You must try to reduce the amount of data you are backing up and try again.">>$WORKDIR/remastersys.log
exit 1
fi
#add filesystem size for lucid
echo " Calculating the installed filesystem size for the installer"
echo " Calculating the installed filesystem size for the installer">>$WORKDIR/remastersys.log
unsquashfs -lls $WORKDIR/ISOTMP/casper/filesystem.squashfs | grep -v " inodes " | grep -v "unsquashfs:" | awk '{print $3}' | grep -v "," > /tmp/size.tmp
for i in `cat /tmp/size.tmp`; do a=$(($a+$i)); done
echo $a > $WORKDIR/ISOTMP/casper/filesystem.size
}
iso (){
CREATEISO="`which mkisofs`"
if [ "$CREATEISO" = "" ]; then
CREATEISO="`which genisoimage`"
fi
# check to see if the cd filesystem exists
if [ ! -f "$WORKDIR/ISOTMP/casper/filesystem.squashfs" ]; then
echo "The cd filesystem is missing. Either there was a problem creating the compressed filesystem or you are trying to run sudo remastersys dist iso before sudo remastersys dist cdfs"
echo "The cd filesystem is missing. Either there was a problem creating the compressed filesystem or you are trying to run sudo remastersys dist iso before sudo remastersys dist cdfs" >>$WORKDIR/remastersys.log
exit 1
fi
#checking the size of the compressed filesystem to ensure it meets the iso9660 spec for a single file
SQUASHFSSIZE=`ls -s $WORKDIR/ISOTMP/casper/filesystem.squashfs | awk -F " " '{print $1}'`
if [ "$SQUASHFSSIZE" -gt "3999999" ]; then
echo " The compressed filesystem is larger than the iso9660 specification allows for a single file. You must try to reduce the amount of data you are backing up and try again."
echo " The compressed filesystem is larger than the iso9660 specification allows for a single file. You must try to reduce the amount of data you are backing up and try again.">>$WORKDIR/remastersys.log
exit 1
fi
#Step 6.5 - Added by Tim Farley. Make ISO compatible with Ubuntu Startup Disk Creator (Karmic).
echo "Making disk compatible with Ubuntu Startup Disk Creator."
touch $WORKDIR/ISOTMP/ubuntu
touch $WORKDIR/ISOTMP/.disk/base_installable
echo "full_cd/single" > $WORKDIR/ISOTMP/.disk/cd_type
ARCH=`archdetect | awk -F "/" '{print $1}'`
echo $LIVECDLABEL - Release $ARCH > $WORKDIR/ISOTMP/.disk/info
echo $LIVECDURL > $WORKDIR/ISOTMP/.disk/release_notes_url
# Step 7 - Make md5sum.txt for the files on the livecd - this is used during the
# checking function of the livecd
echo "Creating md5sum.txt for the livecd/dvd"
cd $WORKDIR/ISOTMP && find . -type f -print0 | xargs -0 md5sum > md5sum.txt
#isolinux mode
# remove files that change and cause problems with checking the disk
sed -e '/isolinux/d' md5sum.txt > md5sum.txt.new
sed -e '/md5sum/d' md5sum.txt.new > md5sum.txt
rm -f md5sum.txt.new
sleep 1
# Step 8 - Make the ISO file
echo "Creating $CUSTOMISO in $WORKDIR"
$CREATEISO \
-quiet \
-r \
-V "$LIVECDLABEL" \
-cache-inodes \
-J \
-l \
-b isolinux/isolinux.bin \
-c isolinux/boot.cat \
-no-emul-boot \
-boot-load-size 4 \
-boot-info-table \
-o $WORKDIR/$CUSTOMISO "$WORKDIR/ISOTMP" 2>>$WORKDIR/remastersys.log 1>>$WORKDIR/remastersys.log
# create the md5 sum file so the user doesn't have to - this is good so the iso file can later be tested to ensure it hasn't become corrupted
echo "Creating $CUSTOMISO.md5 in $WORKDIR"
cd $WORKDIR
md5sum $CUSTOMISO > $CUSTOMISO.md5
sleep 1
echo "$WORKDIR/$CUSTOMISO is ready to be burned or tested in a virtual machine."
echo " "
echo "Check the size and if it is larger than 700MB you will need to burn it to a dvd"
echo " "
ls -hs $WORKDIR/$CUSTOMISO
echo " "
echo "It is recommended to run 'sudo remastersys clean' once you have burned and tested the $CUSTOMISO"
echo " "
}
# check to see if either iso or cdfs options have been invoked and proceed accordingly
if [ "$2" = "iso" ]; then
iso $@
elif [ "$2" = "cdfs" ]; then
cdfs $@
else
cdfs $@
iso $@
fi
exit 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment