summaryrefslogtreecommitdiff
path: root/testing/source/pkgtools/scripts/makebootdisk
diff options
context:
space:
mode:
Diffstat (limited to 'testing/source/pkgtools/scripts/makebootdisk')
-rw-r--r--testing/source/pkgtools/scripts/makebootdisk443
1 files changed, 0 insertions, 443 deletions
diff --git a/testing/source/pkgtools/scripts/makebootdisk b/testing/source/pkgtools/scripts/makebootdisk
deleted file mode 100644
index 79379618..00000000
--- a/testing/source/pkgtools/scripts/makebootdisk
+++ /dev/null
@@ -1,443 +0,0 @@
-#!/bin/sh
-# Copyright 1995, 1998, 2002, 2005 Patrick Volkerding, Moorhead, Minnesota USA
-# All rights reserved.
-#
-# Redistribution and use of this script, with or without modification, is
-# permitted provided that the following conditions are met:
-#
-# 1. Redistributions of this script must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
-# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
-# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#
-
-if [ ! "$UID" = "0" ]; then
- echo "You need to be root to run this script."
- exit 1
-fi
-
-# Was a kernel specified on the command line?
-if [ -r "$1" ]; then
- KERNEL=$1
- KMSG="Using kernel $KERNEL"
-else
- KMSG="No kernel selected yet"
-fi
-
-# Make sure there's a proper temp directory:
-TMP=/var/lib/pkgtools/setup/tmp
-# If the $TMP directory doesn't exist, create it:
-if [ ! -d $TMP ]; then
- mkdir -p $TMP
- chmod 700 $TMP # no need to leave it open
-fi
-
-ROOT_DEVICE="`mount | grep ' on / ' | cut -f 1 -d ' '`"
-
-if mount | grep ' on / ' | grep umsdos 1> /dev/null 2> /dev/null ; then
- MOUNT="read-write"
-else
- MOUNT="read-only"
-fi
-
-make_root_device() {
-# Make a device:
-makedev() {
- if [ ! -b $1 ]; then
- mknod $1 b $2 $3
- chown root.disk $1
- chmod 640 $1
- fi
-}
-
-# Make ide device
-# make ide major minor hd1 hd2 (2 base devs for major)
-make_ide() {
- # Handle base devices:
- if [ "$2" = "0" ]; then
- makedev $TMP/lilo/dev/$3 $1 $2
- return 0
- elif [ "$2" = "64" ]; then
- makedev $TMP/lilo/dev/$4 $1 $2
- return 0
- fi
- # Must be a partition:
- if [ "`expr $2 / 64`" = "0" ]; then
- DEV=$3
- NUM=$2
- else
- DEV=$4
- NUM=`expr $2 - 64`
- fi
- makedev $TMP/lilo/dev/$DEV$NUM $1 $2
-}
-
-# Make SCSI device
-make_scsi() {
- # find drive # 0 - 15
- DRV=`expr $1 / 16`
- NUM=`expr $1 % 16`
- if [ "$NUM" = "0" ]; then
- NUM=""
- fi
- if [ "$DRV" = "0" ]; then
- makedev $TMP/lilo/dev/sda$NUM 8 $1
- elif [ "$DRV" = "1" ]; then
- makedev $TMP/lilo/dev/sdb$NUM 8 $1
- elif [ "$DRV" = "2" ]; then
- makedev $TMP/lilo/dev/sdc$NUM 8 $1
- elif [ "$DRV" = "3" ]; then
- makedev $TMP/lilo/dev/sdd$NUM 8 $1
- elif [ "$DRV" = "4" ]; then
- makedev $TMP/lilo/dev/sde$NUM 8 $1
- elif [ "$DRV" = "5" ]; then
- makedev $TMP/lilo/dev/sdf$NUM 8 $1
- elif [ "$DRV" = "6" ]; then
- makedev $TMP/lilo/dev/sdg$NUM 8 $1
- elif [ "$DRV" = "7" ]; then
- makedev $TMP/lilo/dev/sdh$NUM 8 $1
- elif [ "$DRV" = "8" ]; then
- makedev $TMP/lilo/dev/sdi$NUM 8 $1
- elif [ "$DRV" = "9" ]; then
- makedev $TMP/lilo/dev/sdj$NUM 8 $1
- elif [ "$DRV" = "10" ]; then
- makedev $TMP/lilo/dev/sdk$NUM 8 $1
- elif [ "$DRV" = "11" ]; then
- makedev $TMP/lilo/dev/sdl$NUM 8 $1
- elif [ "$DRV" = "12" ]; then
- makedev $TMP/lilo/dev/sdm$NUM 8 $1
- elif [ "$DRV" = "13" ]; then
- makedev $TMP/lilo/dev/sdn$NUM 8 $1
- elif [ "$DRV" = "14" ]; then
- makedev $TMP/lilo/dev/sdo$NUM 8 $1
- elif [ "$DRV" = "15" ]; then
- makedev $TMP/lilo/dev/sdp$NUM 8 $1
- fi
-}
-
-if cat /proc/partitions | grep / 1> /dev/null 2> /dev/null ; then # new
- cat /proc/partitions | grep / | while read line ; do
- SMASHED_LINE=$line
- MAJOR=`echo $SMASHED_LINE | cut -f 1 -d ' '`
- MINOR=`echo $SMASHED_LINE | cut -f 2 -d ' '`
- if [ "$MAJOR" = "3" ]; then
- make_ide $MAJOR $MINOR hda hdb
- elif [ "$MAJOR" = "8" ]; then
- make_scsi $MINOR
- elif [ "$MAJOR" = "22" ]; then
- make_ide $MAJOR $MINOR hdc hdd
- elif [ "$MAJOR" = "33" ]; then
- make_ide $MAJOR $MINOR hde hdf
- elif [ "$MAJOR" = "34" ]; then
- make_ide $MAJOR $MINOR hdg hdh
- elif [ "$MAJOR" = "56" ]; then
- make_ide $MAJOR $MINOR hdi hdj
- fi
- done
-else # old format
- cat /proc/partitions | grep d | while read line ; do
- SMASHED_LINE=$line
- MAJOR=`echo $SMASHED_LINE | cut -f 1 -d ' '`
- MINOR=`echo $SMASHED_LINE | cut -f 2 -d ' '`
- DEVNAME=`echo $SMASHED_LINE | cut -f 4 -d ' '`
- makedev $TMP/lilo/dev/$DEVNAME $MAJOR $MINOR
- done
-fi
-}
-
-choose_kernel() {
-while [ 0 ]; do # input loop
-cat << EOF > $TMP/tmpmsg
-
-Some possible paths to kernels are these:
-
-/boot/vmlinuz
-/usr/src/linux/arch/i386/boot/bzImage
-/usr/src/linux/arch/i386/boot/zImage
-/vmlinuz
-
-Put the path to the kernel you want to use in the box below.
-
-EOF
-
- dialog --title "CHOOSE KERNEL" --inputbox "`cat $TMP/tmpmsg`" \
- 16 72 "/boot/vmlinuz" 2> $TMP/return
- if [ ! $? = 0 ]; then
- exit
- fi
-
- KERNEL="`cat $TMP/return`"
-
- if [ ! -r "$KERNEL" ]; then
- dialog --title "NOT FOUND!" --msgbox "$KERNEL" 5 60
- continue
- fi
- KMSG="Using kernel $KERNEL"
-break
-done
-}
-
-format_disk() {
- # If anyone still uses 1.2 MB, you'll have to uncomment this.
- # It's no longer a default option.
- #FDEV=/dev/fd0h1200
- #FDEV=/dev/fd0u1400
- FDEV=/dev/fd0u1680
- if [ "$FDEV" = "/dev/fd0u1680" ]; then
- dialog --title "Formatting /dev/fd0u1680" --infobox \
- "Formatting /dev/fd0, 1.68 megabytes." 3 42
- elif [ "$FDEV" = "/dev/fd0u1400" ]; then
- dialog --title "Formatting /dev/fd0u1440" --infobox \
- "Formatting /dev/fd0, 1.44 megabytes." 3 42
- elif [ "$FDEV" = "/dev/fd0h1200" ]; then
- dialog --title "Formatting /dev/fd0h1200" --infobox \
- "Formatting /dev/fd0, 1.2 megabytes." 3 42
- fi
- fdformat $FDEV 1> /dev/null 2> /dev/null
- if [ ! $? = 0 ]; then
- dialog --title "ERROR: FLOPPY FORMAT FAILED" --msgbox "The attempt to format the floppy \
-disk in /dev/fd0 has failed, probably due to bad media. Please try again with a \
-different disk. If that doesn't work, perhaps the drive needs cleaning." 0 0
- return 1
- fi
-}
-
-DEFAULT_ITEM="syslinux"
-
-while [ 0 ]; do # menu loop
- dialog --title "MAKE BOOT FLOPPY FROM KERNEL" \
---default-item $DEFAULT_ITEM \
---backtitle "$KMSG" --menu "This menu allows you to make a SYSLINUX bootdisk \
-from a compiled kernel. The SYSLINUX bootloader has the advantage of \
-using a FAT filesystem making it easy to replace the kernel later. \
-Which option would you like?" 12 67 2 \
-"syslinux" "Make a SYSLINUX bootdisk" \
-"exit" "Exit this program" 2> $TMP/return
- if [ ! $? = 0 ]; then
- break;
- fi
- REPLY=`cat $TMP/return`
- rm -f $TMP/return
- if [ "$REPLY" = "simple" ]; then # make simple bootdisk
- if [ "$KERNEL" = "" ]; then
- choose_kernel
- fi
- kernel_size=`du -Lk $KERNEL | cut -f1`
- if [ "$kernel_size" -gt "1023" ]; then
-cat << EOF > $TMP/tmpmsg
-
-The kernel $KERNEL is $kernel_size K (which is
-more than 1023 Kb in size), so it probably won't
-boot standalone on the floppy. Use the 'syslinux'
-method instead.
-
-EOF
- dialog --title "KERNEL TOO BIG!" --msgbox "`cat $TMP/tmpmsg`" 10 60
- continue
- fi
- dialog --title "BOOT DISK CREATION" --backtitle "$KMSG" --yesno \
-"\n\
-Now put a formatted floppy in your boot drive. \n\
-This will be made into your Linux boot disk. Use this to\n\
-boot Linux until LILO has been configured to boot from\n\
-the hard drive.\n\n\
-Any data on the target disk will be destroyed.\n\n\
-YES creates the disk, NO aborts.\n" 14 62
- if [ $? = 0 ]; then
- format_disk
- dialog --title "CREATING DISK" --infobox "Creating boot disk from $KERNEL..." 5 72
- dd if=$KERNEL of=/dev/fd0 2> /dev/null
- rdev /dev/fd0 $ROOT_DEVICE
- rdev -v /dev/fd0 -1
- if [ "$MOUNT" = "read-only" ]; then
- rdev -R /dev/fd0 1
- else
- rdev -R /dev/fd0 0
- fi
- fi
- elif [ "$REPLY" = "syslinux" ]; then # make syslinux bootdisk
- DEFAULT_ITEM="exit"
- if [ "$KERNEL" = "" ]; then
- choose_kernel
- fi
- dialog --title "CREATING SYSLINUX BOOTDISK IN /dev/fd0" --backtitle "$KMSG" --yesno "Now put a \
-floppy in your boot drive. This will be made into a SYSLINUX \
-bootdisk that you can use to start your Linux system. Any data on the \
-target disk will be destroyed. YES creates the disk, NO aborts." 8 62
- if [ $? = 0 ]; then # make the disk
- format_disk
- if [ ! $? = 0 ]; then
- continue
- fi
- dialog --title "CREATING BOOT FLOPPY" --infobox "Creating SYSLINUX bootdisk for \
-$ROOT_DEVICE in /dev/fd0." 3 64
- mkdosfs -F 12 /dev/fd0u1680 1680 1> /dev/null 2> /dev/null
- if [ ! -d $TMP/bootdisk ]; then
- mkdir $TMP/bootdisk
- fi
- mount -t vfat /dev/fd0 $TMP/bootdisk 1> /dev/null 2> /dev/null
- cp $KERNEL $TMP/bootdisk/vmlinuz
- ## This avoids a syslinux-1.72 bug, and doesn't seem to hurt anything:
- #dd if=/dev/zero bs=1k count=1 >> $TMP/bootdisk/vmlinuz 2> /dev/null
- if [ ! "$?" = "0" ]; then
- dialog --title "ERROR COPYING KERNEL TO FLOPPY" \
- --msgbox "Sorry, but there was an error copying the kernel to the \
-floppy disk. Possibly the kernel is too large to fit the disk. \
-This program will now exit." 0 0
- umount /dev/fd0
- rm -rf $TMP/bootdisk
- exit 1
- fi
- cat << EOF > $TMP/bootdisk/message.txt
-
-Welcome to the 09Slackware07 Linux custom bootdisk!
-
-By default, this disk boots a root Linux partition on $ROOT_DEVICE when you
-hit ENTER. If you'd like to boot some other partition, use a command like
-this on the prompt below:
-
- mount root=/dev/sda1 ro
-
-Where "/dev/sda1" is the partition you want to boot, and "ro" specifies that
-the partition should be initially mounted as read-only. If you wish to mount
-the partition read-write, use "rw" instead. To set the video console mode,
-use the vga= parameter (press F1 to see a table). You may also add any other
-kernel parameters you might need depending on your hardware, and which
-drivers are included in your kernel.
-
-EOF
- cat << EOF > $TMP/bootdisk/syslinux.cfg
-default vmlinuz ramdisk_size=7000 root=$ROOT_DEVICE vga=normal ro
-prompt 1
-timeout 6000
-display message.txt
-F1 f1.txt
-F2 message.txt
-#F3 f3.txt
-#F4 f4.txt
-#F5 f5.txt
-#F6 f6.txt
-#F7 f7.txt
-label mount
- kernel vmlinuz
- append ramdisk_size=7000 root=$ROOT_DEVICE vga=normal ro
-label ramdisk
- kernel vmlinuz
- append vmlinuz ramdisk_size=7000 root=/dev/fd0u1440 vga=normal rw
-EOF
- cat << EOF > $TMP/bootdisk/f1.txt
- STANDARD MODES:
- To make the kernel prompt for standard video modes use: vga=ask
-
- FRAMEBUFFER MODES:
- To get the kernel to start in VESA framebuffer mode, you need to pass it
- a vga= init string on the "boot:" prompt. Here's a table:
-
- Colors 640x480 800x600 1024x768 1280x1024 1600x1200
- --------+---------------------------------------------
- 256 | 769 771 773 775 796
- 32,768 | 784 787 790 793 797
- 65,536 | 785 788 791 794 798
- 16.8M | 786 789 792 795 799
-
- ...such as this for 1024x768x64k:
- vga=791
-
- F2 returns to the previous page.
-
-EOF
- umount /dev/fd0
- syslinux-nomtools -s /dev/fd0
- rm -r $TMP/bootdisk
- fi
- elif [ "$REPLY" = "lilo" ]; then # make lilo bootdisk
- DEFAULT_ITEM="exit"
- if [ ! -x "`type -path lilo`" ]; then
-cat << EOF > $TMP/tmpmsg
-
-You don't have 'lilo' installed on the system.
-I guess you didn't install the lilo package.
-
-EOF
- dialog --title "LILO NOT FOUND" --msgbox "`cat $TMP/tmpmsg`" 8 60
- continue
- fi
- if [ "$KERNEL" = "" ]; then
- choose_kernel
- fi
- dialog --title "CREATING LILO BOOTDISK IN /dev/fd0" --backtitle "$KMSG" --yesno "Now put a \
-floppy in your boot drive. This will be made into a LILO \
-bootdisk that you can use to start your Linux system. Any data on the \
-target disk will be destroyed. YES creates the disk, NO aborts." 8 62
- if [ $? = 0 ]; then # make the disk
- format_disk
- DEV=/dev/fd0u1680
- mknod_fd="-m 0640 $TMP/lilo$DEV b 2 44"
- dialog --infobox "Creating LILO bootdisk from $KERNEL for $ROOT_DEVICE..." 4 60
- mke2fs -q -m 0 -i 4096 $DEV 1> /dev/null 2> /dev/null || exit 1
- if [ ! -d $TMP/lilo ]; then
- mkdir -p $TMP/lilo
- fi
- mount -t ext2 $DEV $TMP/lilo 1> /dev/null || exit 1
- rmdir $TMP/lilo/lost+found
- cp $KERNEL $TMP/lilo/vmlinuz || exit 1
- mkdir $TMP/lilo/dev
- make_root_device
- mknod -m 0640 $TMP/lilo/dev/fd0 b 2 0
- mknod -m 0640 $TMP/lilo/dev/fd1 b 2 1
- mknod $mknod_fd
- mknod -m 0666 $TMP/lilo/dev/null c 1 3
- mkdir $TMP/lilo/etc
- cat << EOF > $TMP/lilo/etc/lilo.conf
-boot = $DEV
-message=/boot/message
-backup=/dev/null
-prompt
-image = /vmlinuz
- label = mount
- ramdisk = 0
- root = $ROOT_DEVICE
- vga = normal
- $MOUNT
-EOF
- mkdir $TMP/lilo/boot
- cp -a /boot/chain.b $TMP/lilo/boot
- if [ -f /boot/boot-text.b ]; then
- cp -a /boot/boot-text.b $TMP/lilo/boot/boot.b
- else
- cp -a /boot/boot.b $TMP/lilo/boot
- fi
- cat << EOF > $TMP/lilo/boot/message
-
-Welcome to the Slackware Linux custom LILO bootdisk!
-
-By default, this disk boots a root Linux partition on $ROOT_DEVICE when
-you hit ENTER. If you'd like to boot some other partition, use a command
-like this on the LILO prompt below:
-
- mount root=/dev/sda1 ro
-
-Where "/dev/sda1" is the partition you want to boot, and "ro" specifies that
-the partition should be initially mounted as read-only. If you which to mount
-the partition read-write, use "rw" instead. You may also add any other kernel
-parameters you might need depending on your hardware, and which drivers are
-included in your kernel.
-
-EOF
- lilo -r $TMP/lilo > /dev/null
- umount $TMP/lilo
- rm -rf $TMP/lilo
- fi
- elif [ "$REPLY" = "exit" ]; then
- break;
- fi
-done