diff --git a/README b/README index 09adefe..3440069 100644 --- a/README +++ b/README @@ -1,8 +1,12 @@ -linux-live -========== +Linux Live Kit +============== -Run the build script to create your live kit in /tmp/live_data_1234 -You will be asked for name of your live kit before the procedure starts +Use this set of scripts to turn your existing preinstalled Linux +distribution into a Live Kit (formely known as Live CD). + +First of all, edit the file ./.config + +Then run the build script to create your Live Kit Author: Tomas M. See DOC/GNU_GPL and DOC/LICENSE for license information diff --git a/build b/build new file mode 100755 index 0000000..4c2a0c2 --- /dev/null +++ b/build @@ -0,0 +1,90 @@ +#!/bin/bash +# Linux Live Kit version 7 + +export PATH=.:./tools:../tools:/usr/sbin:/usr/bin:/sbin:/bin:/ + +CHANGEDIR=$(dirname $(readlink -f $0)) +echo "Changing current directory to $CHANGEDIR" +cd $CHANGEDIR + +. liblinuxlive || exit 1 # this actually includes a file from ./tools/ +. ./.config || exit 1 + +# only root can continue, because only root can read all files from your system +allow_only_root + +# live CD name +echo -ne "Name of your live distro [hit enter for $LIVECDNAME]: " +read NEWLIVECDNAME +if [ "$NEWLIVECDNAME" != "" ]; then LIVECDNAME=$NEWLIVECDNAME; fi +LIVECDNAME=$(echo $LIVECDNAME | tr -d ' ') + +. ./install +if [ "$ROOT" -a "$ROOT" != "/" ]; then + . ./install $ROOT +fi + +# search for kernel +VMLINUZ=$ROOT/boot/vmlinuz +if [ -L "$VMLINUZ" ]; then VMLINUZ=$(readlink -f $VMLINUZ); fi +echo -ne "Enter path for the kernel you'd like to use [hit enter for $VMLINUZ]: " +read NEWKERNEL +if [ "$NEWKERNEL" != "" ]; then VMLINUZ="$NEWKERNEL"; fi +if [ "$(ls $VMLINUZ 2>>$DEBUG)" = "" ]; then echo "cannot find $VMLINUZ"; exit 1; fi + +header "Creating LiveCD from your Linux" +echo "some debug information can be found in $DEBUG" + +mkdir -p $CDDATA/$LIVECDNAME/{base,modules,optional,rootcopy,tools} + +echo "copying cd-root to $CDDATA, using kernel from $VMLINUZ" +cp -R cd-root/boot $CDDATA +for i in isolinux syslinux; do + cat cd-root/boot/$i/$i.cfg | sed -r "s/LABEL linux/LABEL $LIVECDNAME/" | sed -r "s/Run linux/Run $LIVECDNAME/" > $CDDATA/boot/$i/$i.cfg +done +mv $CDDATA/boot/dos/linux.bat $CDDATA/boot/dos/${LIVECDNAME:0:8}.bat +cat cd-root/boot/dos/readme.txt | sed -r "s/LINUX.BAT/"${LIVECDNAME:0:8}.bat"/" > $CDDATA/boot/dos/readme.txt + +mkdir -p $CDDATA/$LIVECDNAME +cp -R cd-root/linux/* $CDDATA/$LIVECDNAME +cp tools/* $CDDATA/$LIVECDNAME/tools +cp -R DOC/LICENSE $CDDATA/$LIVECDNAME +cp $VMLINUZ $CDDATA/boot/vmlinuz + +echo "creating initrd image..." +echo "Using kernel modules from $ROOT/$LMK" +cd initrd +./initrd_create $LIVECDNAME +if [ "$?" -ne 0 ]; then exit; fi +cd .. + +cp initrd/initrd.gz $CDDATA/boot/initrd.gz +rm initrd/initrd.gz + +echo "creating compressed images..." + +for dir in $MKMOD; do + if [ -d $ROOT/$dir ]; then + echo "base/$dir.lzm ..." + echo -ne > exclude.txt + for i in $EXCLUDE; do + part=$(echo "x/$i" | tr -s / | sed -r "s:x/[^/]+/::") + if [ -e "$ROOT/$dir/$part" ]; then echo "$ROOT/$dir/$part" >> exclude.txt; fi + done + cat exclude.txt + create_module $ROOT/$dir $CDDATA/$LIVECDNAME/base/$dir.lzm -keep-as-directory -ef exclude.txt + if [ $? -ne 0 ]; then exit; fi + rm exclude.txt + echo + fi +done + +cd $CDDATA/$LIVECDNAME +echo "--------done----------" +echo +echo "* run $CDDATA/$LIVECDNAME/make_iso.bat to create ISO image" +echo "* or copy content of $CDDATA to your USB device" +echo "and run ./boot/bootinst.sh (from the device!) to setup boot sector" +echo +echo "Now press Enter..." +read junk diff --git a/tools/linuxkitlib b/tools/linuxkitlib new file mode 100644 index 0000000..623b5a7 --- /dev/null +++ b/tools/linuxkitlib @@ -0,0 +1,14 @@ +#!/bin/bash + +# Functions library :: for Linux Kit scripts 7 +# Author: Tomas M. +# + +allow_only_root() +{ + # test if the script is started by root user. If not, exit + if [ "0$UID" -ne 0 ]; then + echo "Only root can run $(basename $0)"; exit 1 + fi +} +