Bochs/bochs/plex86/misc/load_module.sh
Kevin Lawton 0768d01522 Added plex86 directory to bochs. This directory contains the
new experimental stripped-down version of plex86, which is now
  a user-code-only VM.  I ripped out all the fancy stuff in plex86,
  such that under that right conditions, user-code (protection level 3)
  can run at near native speeds inside the plex86 VM.
The general idea is that bochs emulates all the initial real-mode code,
  and guest kernel code (protection level 0).  When it senses the
  right conditions (like the context switches to user-code), a shim
  is called to execute the guest inside the plex86 VM.  All guest-generated
  faults/exceptions are then forwarded back to bochs to be handled in
  the emulator.
Actually, I'm not yet adding the mods to the bochs code (other than
  the shim code which is in a separate file), until I hear that we're
  back in a more development mode with bochs after the 2.0 release.
The plex86 subdirectory is really a separate project.  It's just more
  convenient to co-develop it with bochs for now.  Both projects are
  currently LGPL, but each should be taken to be a separate project,
  and have their own license file.  Plex86 (it's only a kernel driver
  now) could ultimately be used with other projects, as it's modular.
  I talked with Bryce, and we both agreed it's OK to keep plex86 as
  a subdir in bochs for now.
2003-01-01 17:32:06 +00:00

56 lines
1.3 KiB
Bash
Executable File

#! /bin/bash
#
# A simple script to load up the kernel module and create the device nodes
# for it.
#
# Note:
# this must be run as root
#
# Work out where the module is
kmodule="`dirname $0`/../kernel/plex86.o"
# Check that root is executing us
if [ "$EUID" != "0" ]; then
echo "Sorry, you need to be root for this script to work."
echo "use 'su -c $0' and enter the root password when prompted"
exit -1
fi
# Check if the module exists
if [ ! -f "$kmodule" ]; then
echo "The kernel module ($kmodule) does not exist!"
exit -1
fi
# Check if the module is already loaded
if [ "x`grep plex86 /proc/devices`" != "x" ]; then
echo "The kernel module is already loaded!"
exit -1
fi
# Remove any stale device nodes
# (extend for any minor devices created in the future)
rm -f /dev/plex86
# Load up the module with insmod
/sbin/insmod $kmodule
# Check if the module loaded
major=`grep plex86 /proc/devices | awk '/plex86/ {print $1;}'`
if [ "x$major" = "x" ]; then
echo "The kernel module failed to load!"
exit -1
fi
# Create the device node and set its permissions
# (extend for any minor devices created in the future)
if [ ! -c /dev/plex86 ]; then
/bin/mknod /dev/plex86 c $major 0
fi
chmod a+rw /dev/plex86
# Job done - Give a little positive feedback
echo "The kernel module is sucessfully installed."
exit 0