- patch from Bernhard Bablok to create a shell wrapper that eases Bochs launch.
This commit is contained in:
parent
b50ce295da
commit
2a7bfa41de
202
bochs/patches/patch.bochs.sh
Normal file
202
bochs/patches/patch.bochs.sh
Normal file
@ -0,0 +1,202 @@
|
||||
----------------------------------------------------------------------
|
||||
Patch name: patch.bochs.sh
|
||||
Author: Bernhard Bablok
|
||||
Date:
|
||||
|
||||
Detailed description:
|
||||
The bochs-executable does not follow typical
|
||||
unix-conventions for command-line arguments. The
|
||||
included script Bochs.sh is a wrapper for bochs.
|
||||
|
||||
Patch was created with:
|
||||
diff -u
|
||||
Apply patch to what version:
|
||||
release version 1.4.1
|
||||
Instructions:
|
||||
To patch, go to main bochs directory.
|
||||
Type "patch -p0 < THIS_PATCH_FILE".
|
||||
----------------------------------------------------------------------
|
||||
--- /dev/null Tue Mar 26 11:23:49 2002
|
||||
+++ Bochs.sh Mon Aug 12 18:43:03 2002
|
||||
@@ -0,0 +1,181 @@
|
||||
+#!/bin/bash
|
||||
+#
|
||||
+# Start the Bochs emulator.
|
||||
+#
|
||||
+# This script is a Unix-friendly wrapper to the bochs-executable.
|
||||
+# For help, run Bochs.sh -?
|
||||
+#
|
||||
+# You can pass floppy-image, disk-image and cdrom-image filenames as parameters.
|
||||
+# Geometry is detected automatically for all disk-images created
|
||||
+# with this script or disk-images created with bximage with the following sizes:
|
||||
+# 10MB, 20MB, 50MB, 100MB, 200MB, 500MB, 1024MB, 2048MB.
|
||||
+#
|
||||
+# $Author: cbothamy $
|
||||
+# $Revision: 1.1 $
|
||||
+#
|
||||
+# License: GPL2 (see LICENSE)
|
||||
+# -----------------------------------------------------------------------------
|
||||
+
|
||||
+# usage message -------------------------------------------------------------
|
||||
+usage() {
|
||||
+ echo -e "\nusage: `basename $0` [options] [additional bochs arguments]\n\
|
||||
+ possible options:\n\
|
||||
+ -b a|c|cdrom: boot from A: (default), first disk (aka c:) or cdrom\n\
|
||||
+ -f filename: path to floppy-image (default: /dev/fd0)\n\
|
||||
+ -1 filename: path to hda-image (default: no first disk)\n\
|
||||
+ -c filename: path to cdrom-image (default: /dev/cdrom)\n\
|
||||
+ -2 filename: path to hdb-image (default: no second disk)\n\
|
||||
+ -C size: create image of given size and exit\n\
|
||||
+ (10M/30M/46M/62M/112M/126M/483M/504M/640M/886M/1280M/2215M/3495M)\n\
|
||||
+ -c and -2 are mutally exclusive"
|
||||
+ exit 3
|
||||
+}
|
||||
+
|
||||
+# set system defaults -------------------------------------------------------
|
||||
+
|
||||
+setDefaults() {
|
||||
+ [ -z "$BOCHS" ] && BOCHS="bochs"
|
||||
+ boot="boot: a"
|
||||
+ floppyPath="/dev/fd0"
|
||||
+ floppySize="1_44"
|
||||
+ hdaPath=""
|
||||
+ hdbPath=""
|
||||
+ cdromPath="/dev/cdrom"
|
||||
+}
|
||||
+
|
||||
+# translate size to disk geometry -------------------------------------------
|
||||
+
|
||||
+getHDGeom() {
|
||||
+ name=$1
|
||||
+ size=`find $name -printf "%s"`
|
||||
+ case $size in
|
||||
+ 10653696) hdGeom="cyl=306, heads=4, spt=17";;
|
||||
+ 10321920) hdGeom="cyl=20, heads=16, spt=63";;
|
||||
+ 20643840) hdGeom="cyl=40, heads=16, spt=63";;
|
||||
+ 21411840) hdGeom="cyl=615, heads=4, spt=17";;
|
||||
+ 32117760) hdGeom="cyl=615, heads=6, spt=17";;
|
||||
+ 49090560) hdGeom="cyl=940, heads=6, spt=17";;
|
||||
+ 52125696) hdGeom="cyl=101, heads=16, spt=63";;
|
||||
+ 65454080) hdGeom="cyl=940, heads=8, spt=17";;
|
||||
+ 104767488) hdGeom="cyl=203, heads=16, spt=63";;
|
||||
+ 117504000) hdGeom="cyl=900, heads=15, spt=17";;
|
||||
+ 132120576) hdGeom="cyl=256, heads=16, spt=63";;
|
||||
+ 209534976) hdGeom="cyl=406, heads=16, spt=63";;
|
||||
+ 495452160) hdGeom="cyl=1024, heads=15, spt=63";;
|
||||
+ 523837440) hdGeom="cyl=1015, heads=16, spt=63";;
|
||||
+ 528482304) hdGeom="cyl=1024, heads=16, spt=63";;
|
||||
+ 670924800) hdGeom="cyl=1300, heads=16, spt=63";;
|
||||
+ 928972800) hdGeom="cyl=1800, heads=16, spt=63";;
|
||||
+ 1073479680) hdGeom="cyl=2080, heads=16, spt=63";;
|
||||
+ 1341849600) hdGeom="cyl=2600, heads=16, spt=63";;
|
||||
+ 2147475456) hdGeom="cyl=4161, heads=16, spt=63";;
|
||||
+ 2322432000) hdGeom="cyl=4500, heads=16, spt=63";;
|
||||
+ 3664281600) hdGeom="cyl=7100, heads=16, spt=63";;
|
||||
+# 5020M) hdGeom="cyl=10200, heads=16, spt=63";;
|
||||
+# 7088M) hdGeom="cyl=14400, heads=16, spt=63";;
|
||||
+# 10041M) hdGeom="cyl=20400, heads=16, spt=63";;
|
||||
+# 12206M) hdGeom="cyl=24800, heads=16, spt=63";;
|
||||
+# 16045M) hdGeom="cyl=32600, heads=16, spt=63";;
|
||||
+# 20672M) hdGeom="cyl=42000, heads=16, spt=63";;
|
||||
+# 25003M) hdGeom="cyl=50800, heads=16, spt=63";;
|
||||
+# 29974M) hdGeom="cyl=60900, heads=16, spt=63";;
|
||||
+# 32238M) hdGeom="cyl=65500, heads=16, spt=63";;
|
||||
+ *) echo "error: image $name has illegal size $size"; exit 3;;
|
||||
+ esac
|
||||
+}
|
||||
+
|
||||
+# create bochs disk-images --------------------------------------------------
|
||||
+
|
||||
+createDisk() {
|
||||
+ local bs count name=$1 size=$2
|
||||
+ case $size in
|
||||
+ 0M) return;;
|
||||
+ 10|10M) bs=4k; count=2601;;
|
||||
+ 20|20M) bs=10k; count=2091;;
|
||||
+ 30|30M) bs=45k; count=697;;
|
||||
+ 46|46M) bs=60k; count=799;;
|
||||
+ 62|62M) bs=80k; count=799;;
|
||||
+ 112|112M) bs=270k; count=425;;
|
||||
+ 126|126M) bs=2048k; count=63;;
|
||||
+ 483|483M) bs=2560k; count=189;;
|
||||
+ 504|504M) bs=4096k; count=126;;
|
||||
+ 640|640M) bs=2400k; count=273;;
|
||||
+ 886|886M) bs=4800k; count=189;;
|
||||
+ 1280|1280M) bs=4800k; count=273;;
|
||||
+ 2215|2215M) bs=4000k; count=567;;
|
||||
+ 3495|3495M) bs=7200k; count=497;;
|
||||
+ *) echo "error: illegal size $size"; exit 3;;
|
||||
+ esac
|
||||
+ echo -e "creating $name.$size"
|
||||
+ dd if=/dev/zero of=$name.$size bs=$bs count=$count
|
||||
+}
|
||||
+
|
||||
+# set floppy-size -----------------------------------------------------------
|
||||
+
|
||||
+setFloppySize() {
|
||||
+ local name=$1
|
||||
+ if [ "$name" != "/dev/fd0" ]; then
|
||||
+ if [ ! -f $name ]; then
|
||||
+ echo "error: floppy-image $name does not exist"
|
||||
+ exit 3
|
||||
+ fi
|
||||
+ floppySize=`find $name -printf "%s"`
|
||||
+ if [ $floppySize -eq 1474560 ]; then
|
||||
+ floppySize="1_44"
|
||||
+ elif [ $floppySize -eq 2949120 ]; then
|
||||
+ floppySize="2_88"
|
||||
+ else
|
||||
+ echo "error: invalid size for floppy-image"
|
||||
+ exit 3
|
||||
+ fi
|
||||
+ fi
|
||||
+}
|
||||
+
|
||||
+# main program --------------------------------------------------------------
|
||||
+
|
||||
+setDefaults
|
||||
+while getopts ":b:f:1:c:2:C:h" opt; do
|
||||
+ case $opt in
|
||||
+ b) boot="boot: $OPTARG";;
|
||||
+ f) floppyPath=$OPTARG;;
|
||||
+ 1) hdaPath=$OPTARG;;
|
||||
+ c) cdromPath=$OPTARG; hdbPath="";;
|
||||
+ 2) hdbPath=$OPTARG; cdromPath="";;
|
||||
+ C) createDisk "hd" $OPTARG;exit 0;;
|
||||
+ h) usage;;
|
||||
+ ?) usage;;
|
||||
+ esac
|
||||
+done
|
||||
+let OPTIND-=1
|
||||
+shift $OPTIND
|
||||
+
|
||||
+setFloppySize $floppyPath
|
||||
+floppyArg="floppya: $floppySize=$floppyPath, status=inserted"
|
||||
+
|
||||
+if [ ! -z "$hdaPath" ]; then
|
||||
+ if [ ! -f "$hdaPath" ]; then
|
||||
+ echo "error: disk-image $hdaPath does not exist!"
|
||||
+ exit 3
|
||||
+ fi
|
||||
+ getHDGeom $hdaPath
|
||||
+ hdaArg="diskc: file=$hdaPath, $hdGeom"
|
||||
+fi
|
||||
+
|
||||
+if [ ! -z "$hdbPath" ]; then
|
||||
+ if [ ! -f "$hdbPath" ]; then
|
||||
+ echo "error: disk-image $hdbPath does not exist!"
|
||||
+ exit 3
|
||||
+ fi
|
||||
+ getHDGeom $hdbPath
|
||||
+ hdbArg="diskd: file=$hdbPath, $hdGeom"
|
||||
+fi
|
||||
+
|
||||
+if [ ! -z "$cdromPath" ]; then
|
||||
+ if [ "$cdromPath" != "/dev/cdrom" -a ! -f $cdromPath ]; then
|
||||
+ echo "error: cdrom-image $cdromPath does not exist"
|
||||
+ exit 3
|
||||
+ fi
|
||||
+ cdromArg="cdromd: dev=$cdromPath, status=inserted"
|
||||
+fi
|
||||
+
|
||||
+${BOCHS} -nocp "$boot" "$floppyArg" "$hdaArg" "$hdbArg" "$cdromArg" "$@" &
|
Loading…
Reference in New Issue
Block a user