home *** CD-ROM | disk | FTP | other *** search
- #!/bin/bash
- # This script will make almost ANY partition bootable, regardless the filesystem
- # used on it. bootinst.sh/.bat is only for FAT filesystems, while this one should
- # work everywhere. Moreover it setups a 'slaxchanges' directory to be used for
- # persistent changes.
-
- set -e
- TARGET=""
- MBR=""
-
- # Find out which partition or disk are we using
- MYMNT=$(cd -P $(dirname $0) ; pwd)
- while [ "$MYMNT" != "" -a "$MYMNT" != "." -a "$MYMNT" != "/" ]; do
- TARGET=$(egrep "[^[:space:]]+[[:space:]]+$MYMNT[[:space:]]+" /proc/mounts | cut -d " " -f 1)
- if [ "$TARGET" != "" ]; then break; fi
- MYMNT=$(dirname "$MYMNT")
- done
-
- if [ "$TARGET" = "" ]; then
- echo "Can't find device to install to."
- echo "Make sure you run this script from a mounted device."
- exit 1
- fi
-
- if [ "$(cat /proc/mounts | grep "^$TARGET" | grep noexec)" ]; then
- echo "The disk $TARGET is mounted with noexec parameter, trying to remount..."
- mount -o remount,exec "$TARGET"
- fi
-
- MBR=$(echo "$TARGET" | sed -r "s/[0-9]+\$//g")
- NUM=${TARGET:${#MBR}}
- cd "$MYMNT"
-
- # only partition is allowed, not the whole disk
- if [ "$MBR" = "$TARGET" ]; then
- echo Error: You must install your system to a partition, not the whole disk
- exit 1
- fi
-
- clear
- echo "-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-"
- echo " Welcome to Slax boot installer "
- echo "-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-"
- echo
- echo "This installer will setup disk $MBR to boot only Slax from $TARGET."
- echo "Warning! Master boot record (MBR) of $MBR will be overwritten."
- echo "If you use $MBR to boot any existing operating system, it will not work"
- echo "anymore. Only Slax will boot from this device. Be careful!"
- echo
- echo "Press any key to continue, or Ctrl+C to abort..."
- read junk
- clear
-
- echo "Flushing filesystem buffers, this may take a while..."
- sync
-
- mkdir -p $MYMNT/slaxchanges
- if [ $? -ne 0 ]; then
- echo "Make sure to mount the partition read-write." >&2
- exit 5
- fi
-
- cat << ENDOFTEXT >$MYMNT/boot/lilo.conf
- boot=$MBR
- prompt
- timeout=40
- lba32
- compact
- change-rules
- reset
- install=text
- image=$MYMNT/boot/vmlinuz
- initrd=$MYMNT/boot/initrd.gz
- label=Slax
- root=/dev/ram0
- read-write
- append = "ramdisk_size=6666 changes=slaxchanges"
- ENDOFTEXT
-
- echo Updating MBR to setup boot record...
- boot/syslinux/lilo -C $MYMNT/boot/lilo.conf -S $MYMNT/boot/ -m $MYMNT/boot/lilo.map
- echo "Disk $MBR should be bootable now. Installation finished."
-
- echo
- echo "Read the information above and then press any key to exit..."
- read junk
-