summaryrefslogtreecommitdiffstats
path: root/contrib
diff options
context:
space:
mode:
Diffstat (limited to 'contrib')
-rwxr-xr-xcontrib/cloud/aws-import67
-rwxr-xr-xcontrib/cloud/gce-import167
-rwxr-xr-xcontrib/cloud/gce-int13con146
-rwxr-xr-xcontrib/crypto/cmsdetach61
-rw-r--r--contrib/rom-o-matic/README62
-rw-r--r--contrib/rom-o-matic/bottom.php62
-rw-r--r--contrib/rom-o-matic/build.php311
-rw-r--r--contrib/rom-o-matic/customize-flags.php69
-rw-r--r--contrib/rom-o-matic/directions.php63
-rw-r--r--contrib/rom-o-matic/doc/AUTOBOOT_CMD.html1
-rw-r--r--contrib/rom-o-matic/doc/BANNER_TIMEOUT.html1
-rw-r--r--contrib/rom-o-matic/doc/COMCONSOLE.html3
-rw-r--r--contrib/rom-o-matic/doc/COMDATA.html1
-rw-r--r--contrib/rom-o-matic/doc/COMPARITY.html1
-rw-r--r--contrib/rom-o-matic/doc/COMPRESERVE.html1
-rw-r--r--contrib/rom-o-matic/doc/COMSPEED.html1
-rw-r--r--contrib/rom-o-matic/doc/COMSTOP.html1
-rw-r--r--contrib/rom-o-matic/doc/CONFIG_CMD.html1
-rw-r--r--contrib/rom-o-matic/doc/CONSOLE_PC_BIOS.html1
-rw-r--r--contrib/rom-o-matic/doc/CONSOLE_SERIAL.html1
-rw-r--r--contrib/rom-o-matic/doc/CRYPTO_80211_WEP.html1
-rw-r--r--contrib/rom-o-matic/doc/CRYPTO_80211_WPA.html1
-rw-r--r--contrib/rom-o-matic/doc/CRYPTO_80211_WPA2.html1
-rw-r--r--contrib/rom-o-matic/doc/DHCP_CMD.html1
-rw-r--r--contrib/rom-o-matic/doc/DNS_RESOLVER.html1
-rw-r--r--contrib/rom-o-matic/doc/DOWNLOAD_PROTO_FTP.html1
-rw-r--r--contrib/rom-o-matic/doc/DOWNLOAD_PROTO_HTTP.html1
-rw-r--r--contrib/rom-o-matic/doc/DOWNLOAD_PROTO_TFTP.html1
-rw-r--r--contrib/rom-o-matic/doc/IFMGMT_CMD.html1
-rw-r--r--contrib/rom-o-matic/doc/IMAGE_BZIMAGE.html1
-rw-r--r--contrib/rom-o-matic/doc/IMAGE_CMD.html1
-rw-r--r--contrib/rom-o-matic/doc/IMAGE_ELF.html1
-rw-r--r--contrib/rom-o-matic/doc/IMAGE_MULTIBOOT.html1
-rw-r--r--contrib/rom-o-matic/doc/IMAGE_NBI.html1
-rw-r--r--contrib/rom-o-matic/doc/IMAGE_PXE.html1
-rw-r--r--contrib/rom-o-matic/doc/IMAGE_SCRIPT.html1
-rw-r--r--contrib/rom-o-matic/doc/IWMGMT_CMD.html1
-rw-r--r--contrib/rom-o-matic/doc/NMB_RESOLVER.html1
-rw-r--r--contrib/rom-o-matic/doc/NVO_CMD.html1
-rw-r--r--contrib/rom-o-matic/doc/ROUTE_CMD.html1
-rw-r--r--contrib/rom-o-matic/doc/SANBOOT_CMD.html1
-rw-r--r--contrib/rom-o-matic/flag-table.php531
-rw-r--r--contrib/rom-o-matic/globals.php51
-rw-r--r--contrib/rom-o-matic/index.php47
-rw-r--r--contrib/rom-o-matic/top.php41
-rw-r--r--contrib/rom-o-matic/utils.php684
-rw-r--r--contrib/vm/bochsrc.txt427
47 files changed, 641 insertions, 2182 deletions
diff --git a/contrib/cloud/aws-import b/contrib/cloud/aws-import
index ace005870..77c0fd0f7 100755
--- a/contrib/cloud/aws-import
+++ b/contrib/cloud/aws-import
@@ -22,11 +22,12 @@ def detect_architecture(image):
return 'x86_64'
-def create_snapshot(region, description, image):
+def create_snapshot(region, description, image, tags):
"""Create an EBS snapshot"""
client = boto3.client('ebs', region_name=region)
snapshot = client.start_snapshot(VolumeSize=1,
- Description=description)
+ Description=description,
+ Tags=tags)
snapshot_id = snapshot['SnapshotId']
with open(image, 'rb') as fh:
for block in count():
@@ -46,21 +47,42 @@ def create_snapshot(region, description, image):
return snapshot_id
-def import_image(region, name, architecture, image, public, overwrite):
- """Import an AMI image"""
+def delete_images(region, filters, retain):
client = boto3.client('ec2', region_name=region)
resource = boto3.resource('ec2', region_name=region)
- description = '%s (%s)' % (name, architecture)
- images = client.describe_images(Filters=[{'Name': 'name',
- 'Values': [description]}])
- if overwrite and images['Images']:
- images = images['Images'][0]
- image_id = images['ImageId']
- snapshot_id = images['BlockDeviceMappings'][0]['Ebs']['SnapshotId']
+ images = client.describe_images(Owners=['self'], Filters=filters)
+ old_images = sorted(images['Images'], key=lambda x: x['CreationDate'])
+ if retain > 0:
+ old_images = old_images[:-retain]
+ for image in old_images:
+ image_id = image['ImageId']
+ snapshot_id = image['BlockDeviceMappings'][0]['Ebs']['SnapshotId']
resource.Image(image_id).deregister()
resource.Snapshot(snapshot_id).delete()
+
+
+def import_image(region, name, family, architecture, image, public, overwrite,
+ retain):
+ """Import an AMI image"""
+ client = boto3.client('ec2', region_name=region)
+ resource = boto3.resource('ec2', region_name=region)
+ description = '%s (%s)' % (name, architecture)
+ tags = [
+ {'Key': 'family', 'Value': family},
+ {'Key': 'architecture', 'Value': architecture},
+ ]
+ if overwrite:
+ filters = [{'Name': 'name', 'Values': [description]}]
+ delete_images(region=region, filters=filters, retain=0)
+ if retain is not None:
+ filters = [
+ {'Name': 'tag:family', 'Values': [family]},
+ {'Name': 'tag:architecture', 'Values': [architecture]},
+ {'Name': 'is-public', 'Values': [str(public).lower()]},
+ ]
+ delete_images(region=region, filters=filters, retain=retain)
snapshot_id = create_snapshot(region=region, description=description,
- image=image)
+ image=image, tags=tags)
client.get_waiter('snapshot_completed').wait(SnapshotIds=[snapshot_id])
image = client.register_image(Architecture=architecture,
BlockDeviceMappings=[{
@@ -72,12 +94,19 @@ def import_image(region, name, architecture, image, public, overwrite):
}],
EnaSupport=True,
Name=description,
+ TagSpecifications=[{
+ 'ResourceType': 'image',
+ 'Tags': tags,
+ }],
RootDeviceName='/dev/sda1',
SriovNetSupport='simple',
VirtualizationType='hvm')
image_id = image['ImageId']
client.get_waiter('image_available').wait(ImageIds=[image_id])
if public:
+ image_block = client.get_image_block_public_access_state()
+ if image_block['ImageBlockPublicAccessState'] != 'unblocked':
+ client.disable_image_block_public_access()
resource.Image(image_id).modify_attribute(Attribute='launchPermission',
OperationType='add',
UserGroups=['all'])
@@ -94,10 +123,14 @@ def launch_link(region, image_id):
parser = argparse.ArgumentParser(description="Import AWS EC2 image (AMI)")
parser.add_argument('--name', '-n',
help="Image name")
+parser.add_argument('--family', '-f',
+ help="Image family name")
parser.add_argument('--public', '-p', action='store_true',
help="Make image public")
parser.add_argument('--overwrite', action='store_true',
help="Overwrite any existing image with same name")
+parser.add_argument('--retain', type=int, metavar='NUM',
+ help="Retain at most <NUM> old images")
parser.add_argument('--region', '-r', action='append',
help="AWS region(s)")
parser.add_argument('--wiki', '-w', metavar='FILE',
@@ -108,9 +141,13 @@ args = parser.parse_args()
# Detect CPU architectures
architectures = {image: detect_architecture(image) for image in args.image}
+# Use default family name if none specified
+if not args.family:
+ args.family = 'iPXE'
+
# Use default name if none specified
if not args.name:
- args.name = 'iPXE (%s)' % date.today().strftime('%Y-%m-%d')
+ args.name = '%s (%s)' % (args.family, date.today().strftime('%Y-%m-%d'))
# Use all regions if none specified
if not args.region:
@@ -123,10 +160,12 @@ with ThreadPoolExecutor(max_workers=len(imports)) as executor:
futures = {executor.submit(import_image,
region=region,
name=args.name,
+ family=args.family,
architecture=architectures[image],
image=image,
public=args.public,
- overwrite=args.overwrite): (region, image)
+ overwrite=args.overwrite,
+ retain=args.retain): (region, image)
for region, image in imports}
results = {futures[future]: future.result()
for future in as_completed(futures)}
diff --git a/contrib/cloud/gce-import b/contrib/cloud/gce-import
new file mode 100755
index 000000000..e7adfee84
--- /dev/null
+++ b/contrib/cloud/gce-import
@@ -0,0 +1,167 @@
+#!/usr/bin/env python3
+
+import argparse
+from concurrent.futures import ThreadPoolExecutor, as_completed
+from datetime import date
+import io
+import subprocess
+import tarfile
+from uuid import uuid4
+
+from google.cloud import compute
+from google.cloud import exceptions
+from google.cloud import storage
+
+IPXE_STORAGE_PREFIX = 'ipxe-upload-temp-'
+
+FEATURE_GVNIC = compute.GuestOsFeature(type_="GVNIC")
+FEATURE_IDPF = compute.GuestOsFeature(type_="IDPF")
+FEATURE_UEFI = compute.GuestOsFeature(type_="UEFI_COMPATIBLE")
+
+POLICY_PUBLIC = compute.Policy(bindings=[{
+ "role": "roles/compute.imageUser",
+ "members": ["allAuthenticatedUsers"],
+}])
+
+def delete_temp_bucket(bucket):
+ """Remove temporary bucket"""
+ assert bucket.name.startswith(IPXE_STORAGE_PREFIX)
+ for blob in bucket.list_blobs(prefix=IPXE_STORAGE_PREFIX):
+ assert blob.name.startswith(IPXE_STORAGE_PREFIX)
+ blob.delete()
+ if not list(bucket.list_blobs()):
+ bucket.delete()
+
+def create_temp_bucket(location):
+ """Create temporary bucket (and remove any stale temporary buckets)"""
+ client = storage.Client()
+ for bucket in client.list_buckets(prefix=IPXE_STORAGE_PREFIX):
+ delete_temp_bucket(bucket)
+ name = '%s%s' % (IPXE_STORAGE_PREFIX, uuid4())
+ return client.create_bucket(name, location=location)
+
+def create_tarball(image):
+ """Create raw disk image tarball"""
+ tarball = io.BytesIO()
+ with tarfile.open(fileobj=tarball, mode='w:gz',
+ format=tarfile.GNU_FORMAT) as tar:
+ tar.add(image, arcname='disk.raw')
+ tarball.seek(0)
+ return tarball
+
+def upload_blob(bucket, image):
+ """Upload raw disk image blob"""
+ blob = bucket.blob('%s%s.tar.gz' % (IPXE_STORAGE_PREFIX, uuid4()))
+ tarball = create_tarball(image)
+ blob.upload_from_file(tarball)
+ return blob
+
+def detect_uefi(image):
+ """Identify UEFI CPU architecture(s)"""
+ mdir = subprocess.run(['mdir', '-b', '-i', image, '::/EFI/BOOT'],
+ stdout=subprocess.PIPE, stderr=subprocess.PIPE,
+ check=False)
+ mapping = {
+ b'BOOTX64.EFI': 'x86_64',
+ b'BOOTAA64.EFI': 'arm64',
+ }
+ uefi = [
+ arch
+ for filename, arch in mapping.items()
+ if filename in mdir.stdout
+ ]
+ return uefi
+
+def image_architecture(uefi):
+ """Get image architecture"""
+ return uefi[0] if len(uefi) == 1 else None if uefi else 'x86_64'
+
+def image_features(uefi):
+ """Get image feature list"""
+ features = [FEATURE_GVNIC, FEATURE_IDPF]
+ if uefi:
+ features.append(FEATURE_UEFI)
+ return features
+
+def image_name(base, uefi):
+ """Calculate image name or family name"""
+ suffix = ('-uefi-%s' % uefi[0].replace('_', '-') if len(uefi) == 1 else
+ '-uefi-multi' if uefi else '')
+ return '%s%s' % (base, suffix)
+
+def create_image(project, basename, basefamily, overwrite, public, bucket,
+ image):
+ """Create image"""
+ client = compute.ImagesClient()
+ uefi = detect_uefi(image)
+ architecture = image_architecture(uefi)
+ features = image_features(uefi)
+ name = image_name(basename, uefi)
+ family = image_name(basefamily, uefi)
+ if overwrite:
+ try:
+ client.delete(project=project, image=name).result()
+ except exceptions.NotFound:
+ pass
+ blob = upload_blob(bucket, image)
+ disk = compute.RawDisk(source=blob.public_url)
+ image = compute.Image(name=name, family=family, architecture=architecture,
+ guest_os_features=features, raw_disk=disk)
+ client.insert(project=project, image_resource=image).result()
+ if public:
+ request = compute.GlobalSetPolicyRequest(policy=POLICY_PUBLIC)
+ client.set_iam_policy(project=project, resource=name,
+ global_set_policy_request_resource=request)
+ image = client.get(project=project, image=name)
+ return image
+
+# Parse command-line arguments
+#
+parser = argparse.ArgumentParser(description="Import Google Cloud image")
+parser.add_argument('--name', '-n',
+ help="Base image name")
+parser.add_argument('--family', '-f',
+ help="Base family name")
+parser.add_argument('--public', '-p', action='store_true',
+ help="Make image public")
+parser.add_argument('--overwrite', action='store_true',
+ help="Overwrite any existing image with same name")
+parser.add_argument('--project', '-j', default="ipxe-images",
+ help="Google Cloud project")
+parser.add_argument('--location', '-l',
+ help="Google Cloud Storage initial location")
+parser.add_argument('image', nargs='+', help="iPXE disk image")
+args = parser.parse_args()
+
+# Use default family name if none specified
+if not args.family:
+ args.family = 'ipxe'
+
+# Use default name if none specified
+if not args.name:
+ args.name = '%s-%s' % (args.family, date.today().strftime('%Y%m%d'))
+
+# Create temporary upload bucket
+bucket = create_temp_bucket(args.location)
+
+# Use one thread per image to maximise parallelism
+with ThreadPoolExecutor(max_workers=len(args.image)) as executor:
+ futures = {executor.submit(create_image,
+ project=args.project,
+ basename=args.name,
+ basefamily=args.family,
+ overwrite=args.overwrite,
+ public=args.public,
+ bucket=bucket,
+ image=image): image
+ for image in args.image}
+ results = {futures[future]: future.result()
+ for future in as_completed(futures)}
+
+# Delete temporary upload bucket
+delete_temp_bucket(bucket)
+
+# Show created images
+for image in args.image:
+ result = results[image]
+ print("%s (%s) %s" % (result.name, result.family, result.status))
diff --git a/contrib/cloud/gce-int13con b/contrib/cloud/gce-int13con
new file mode 100755
index 000000000..3b909a44a
--- /dev/null
+++ b/contrib/cloud/gce-int13con
@@ -0,0 +1,146 @@
+#!/usr/bin/env python3
+
+import argparse
+import textwrap
+import time
+from uuid import uuid4
+
+from google.cloud import compute
+
+IPXE_LOG_PREFIX = 'ipxe-log-temp-'
+IPXE_LOG_MAGIC = 'iPXE LOG'
+IPXE_LOG_END = '----- END OF iPXE LOG -----'
+
+def get_log_disk(instances, project, zone, name):
+ """Get log disk source URL"""
+ instance = instances.get(project=project, zone=zone, instance=name)
+ disk = next(x for x in instance.disks if x.boot)
+ return disk.source
+
+def delete_temp_snapshot(snapshots, project, name):
+ """Delete temporary snapshot"""
+ assert name.startswith(IPXE_LOG_PREFIX)
+ snapshots.delete(project=project, snapshot=name)
+
+def delete_temp_snapshots(snapshots, project):
+ """Delete all old temporary snapshots"""
+ filter = "name eq %s.+" % IPXE_LOG_PREFIX
+ request = compute.ListSnapshotsRequest(project=project, filter=filter)
+ for snapshot in snapshots.list(request=request):
+ delete_temp_snapshot(snapshots, project, snapshot.name)
+
+def create_temp_snapshot(snapshots, project, source):
+ """Create temporary snapshot"""
+ name = '%s%s' % (IPXE_LOG_PREFIX, uuid4())
+ snapshot = compute.Snapshot(name=name, source_disk=source)
+ snapshots.insert(project=project, snapshot_resource=snapshot).result()
+ return name
+
+def delete_temp_instance(instances, project, zone, name):
+ """Delete log dumper temporary instance"""
+ assert name.startswith(IPXE_LOG_PREFIX)
+ instances.delete(project=project, zone=zone, instance=name)
+
+def delete_temp_instances(instances, project, zone):
+ """Delete all old log dumper temporary instances"""
+ filter = "name eq %s.+" % IPXE_LOG_PREFIX
+ request = compute.ListInstancesRequest(project=project, zone=zone,
+ filter=filter)
+ for instance in instances.list(request=request):
+ delete_temp_instance(instances, project, zone, instance.name)
+
+def create_temp_instance(instances, project, zone, family, image, machine,
+ snapshot):
+ """Create log dumper temporary instance"""
+ image = "projects/%s/global/images/family/%s" % (family, image)
+ machine_type = "zones/%s/machineTypes/%s" % (zone, machine)
+ logsource = "global/snapshots/%s" % snapshot
+ bootparams = compute.AttachedDiskInitializeParams(source_image=image)
+ bootdisk = compute.AttachedDisk(boot=True, auto_delete=True,
+ initialize_params=bootparams)
+ logparams = compute.AttachedDiskInitializeParams(source_snapshot=logsource)
+ logdisk = compute.AttachedDisk(boot=False, auto_delete=True,
+ initialize_params=logparams,
+ device_name="ipxelog")
+ nic = compute.NetworkInterface()
+ name = '%s%s' % (IPXE_LOG_PREFIX, uuid4())
+ script = textwrap.dedent(f"""
+ #!/bin/sh
+ tr -d '\\000' < /dev/disk/by-id/google-ipxelog-part3 > /dev/ttyS3
+ echo "{IPXE_LOG_END}" > /dev/ttyS3
+ """).strip()
+ items = compute.Items(key="startup-script", value=script)
+ metadata = compute.Metadata(items=[items])
+ instance = compute.Instance(name=name, machine_type=machine_type,
+ network_interfaces=[nic], metadata=metadata,
+ disks=[bootdisk, logdisk])
+ instances.insert(project=project, zone=zone,
+ instance_resource=instance).result()
+ return name
+
+def get_log_output(instances, project, zone, name):
+ """Get iPXE log output"""
+ request = compute.GetSerialPortOutputInstanceRequest(project=project,
+ zone=zone, port=4,
+ instance=name)
+ while True:
+ log = instances.get_serial_port_output(request=request).contents.strip()
+ if log.endswith(IPXE_LOG_END):
+ if log.startswith(IPXE_LOG_MAGIC):
+ return log[len(IPXE_LOG_MAGIC):-len(IPXE_LOG_END)]
+ else:
+ return log[:-len(IPXE_LOG_END)]
+ time.sleep(1)
+
+# Parse command-line arguments
+#
+parser = argparse.ArgumentParser(description="Import Google Cloud image")
+parser.add_argument('--project', '-j', default="ipxe-images",
+ help="Google Cloud project")
+parser.add_argument('--zone', '-z', required=True,
+ help="Google Cloud zone")
+parser.add_argument('--family', '-f', default="debian-cloud",
+ help="Helper OS image family")
+parser.add_argument('--image', '-i', default="debian-12",
+ help="Helper OS image")
+parser.add_argument('--machine', '-m', default="e2-micro",
+ help="Helper machine type")
+parser.add_argument('instance', help="Instance name")
+args = parser.parse_args()
+
+# Construct client objects
+#
+instances = compute.InstancesClient()
+snapshots = compute.SnapshotsClient()
+
+# Clean up old temporary objects
+#
+delete_temp_instances(instances, project=args.project, zone=args.zone)
+delete_temp_snapshots(snapshots, project=args.project)
+
+# Create log disk snapshot
+#
+logdisk = get_log_disk(instances, project=args.project, zone=args.zone,
+ name=args.instance)
+logsnap = create_temp_snapshot(snapshots, project=args.project, source=logdisk)
+
+# Create log dumper instance
+#
+dumper = create_temp_instance(instances, project=args.project, zone=args.zone,
+ family=args.family, image=args.image,
+ machine=args.machine, snapshot=logsnap)
+
+# Wait for log output
+#
+output = get_log_output(instances, project=args.project, zone=args.zone,
+ name=dumper)
+
+# Print log output
+#
+print(output)
+
+# Clean up
+#
+delete_temp_instance(instances, project=args.project, zone=args.zone,
+ name=dumper)
+delete_temp_snapshot(snapshots, project=args.project, name=logsnap)
diff --git a/contrib/crypto/cmsdetach b/contrib/crypto/cmsdetach
new file mode 100755
index 000000000..a48d30c67
--- /dev/null
+++ b/contrib/crypto/cmsdetach
@@ -0,0 +1,61 @@
+#!/usr/bin/env python3
+
+"""Detach CMS encrypted data.
+
+Detach encrypted data from a CMS envelopedData or authEnvelopedData
+message into a separate file.
+"""
+
+import argparse
+from pathlib import Path
+
+from asn1crypto.cms import ContentInfo, AuthEnvelopedData, EnvelopedData
+
+# Parse command-line arguments
+#
+parser = argparse.ArgumentParser(
+ description=__doc__,
+ formatter_class=argparse.RawDescriptionHelpFormatter,
+)
+parser.add_argument("-d", "--data", metavar="FILE", type=Path,
+ help="Write detached data (without envelope) to FILE")
+parser.add_argument("-e", "--envelope", metavar="FILE", type=Path,
+ help="Write envelope (without data) to FILE")
+parser.add_argument("-o", "--overwrite", action="store_true",
+ help="Overwrite output files")
+parser.add_argument("file", type=Path, help="Input envelope file")
+args = parser.parse_args()
+if args.data is None and args.envelope is None:
+ parser.error("at least one of --data and --envelope is required")
+outmode = "wb" if args.overwrite else "xb"
+
+# Read input envelope
+#
+envelope = ContentInfo.load(args.file.read_bytes())
+
+# Locate encrypted content info
+#
+content = envelope["content"]
+if type(content) is AuthEnvelopedData:
+ encinfo = content["auth_encrypted_content_info"]
+elif type(content) is EnvelopedData:
+ encinfo = content["encrypted_content_info"]
+else:
+ parser.error("Input file does not contain any encrypted data")
+
+# Detach encrypted content data
+#
+data = encinfo["encrypted_content"]
+del encinfo["encrypted_content"]
+
+# Write envelope (without data), if applicable
+#
+if args.envelope:
+ with args.envelope.open(mode=outmode) as fh:
+ fh.write(envelope.dump())
+
+# Write data (without envelope), if applicable
+#
+if args.data:
+ with args.data.open(mode=outmode) as fh:
+ fh.write(data.contents)
diff --git a/contrib/rom-o-matic/README b/contrib/rom-o-matic/README
deleted file mode 100644
index b68cf775e..000000000
--- a/contrib/rom-o-matic/README
+++ /dev/null
@@ -1,62 +0,0 @@
-ROM-o-matic web interface for building iPXE ROMs
-------------------------------------------------
-
-This web application generates iPXE images and sends them to a web
-browser.
-
-Available as part of the iPXE source code distribution, which can be
-downlaoded from http://etherboot.org/
-
-Author: Marty Connor <mdc@etherboot.org>
-License: GPLv2
-Support: http://etherboot.org/mailman/listinfo/ipxe
- Please send support questions to the iPXE mailing list
-
-System Requirements
--------------------
-- Apache web server
-- PHP 4+
-- Tools required to build iPXE installed on the server
- - gcc, mtools, syslinux, perl, etc.
-
-Setup
------
-As distributed, it is expected that the rom-o-matic source code
-directory is in the contrib directory of a iPXE source distribution.
-
-The easiest way to do this is to simply put a iPXE source distribution
-in a web server accessible directory.
-
-If this is not the case, you will need to either edit the file
-
- "globals.php"
-
-or create a file called
-
- "local-config.php"
-
-containing the following lines:
-
-<?php
-$src_dir = "../../src";
-?>
-
-Then change the line beginning "$src_dir = " to the path of your iPXE
-source code tree.
-
-To make build times shorter, before you run rom-o-matic for the first time
-you should cd to the ipxe "src" directory and enter the following
-commands:
-
- $ make
- $ make bin/NIC
-
-This will pro-compile most object files and will make your rom-o-matic
-builds much faster.
-
-Running rom-o-matic from a web browser
---------------------------------------
-Enter a URL like:
-
- http://example.com/ipxe-1.x.x/contrib/rom-o-matic
-
diff --git a/contrib/rom-o-matic/bottom.php b/contrib/rom-o-matic/bottom.php
deleted file mode 100644
index 9ba8e3190..000000000
--- a/contrib/rom-o-matic/bottom.php
+++ /dev/null
@@ -1,62 +0,0 @@
-<?php
-
-/**
- * Copyright (C) 2009 Marty Connor <mdc@etherboot.org>.
- * Copyright (C) 2009 Entity Cyber, Inc.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-?>
-<hr>
-<h4>
-Resources:
-</h4>
-<ul>
- <li>
- Source code for iPXE images is available at
- <a href="http://www.ipxe.org/download" target="_blank">
- http://www.ipxe.org/download</a>
- <br><br>
- </li>
- <li>
- For general information about using iPXE, please visit the
- <a href="http://www.ipxe.org/" target="_blank">
- iPXE Project Home Page</a>
- <br><br>
- </li>
- <li>
- For Email-based support for iPXE please join
- <a href="http://www.ipxe.org/contact" target="_blank">
- iPXE Project mailing lists.</a>
- <br><br>
- </li>
- <li>
- For real-time online iPXE support via IRC please visit the
- <a href="irc://irc.freenode.net/%23ipxe"> #ipxe channel
- of irc.freenode.net</a>.
- <br><br>
- </li>
-</ul>
-<hr>
- <font size="-1">
- <br>
- Please email <a href="mailto:<?php echo "${webmaster_email}" ?>"><?php echo "${webmaster_email}"?></a>
- with questions or comments about this website.
- </font>
- <br><br>
-<hr>
-</body>
-</html>
diff --git a/contrib/rom-o-matic/build.php b/contrib/rom-o-matic/build.php
deleted file mode 100644
index b2b5bb452..000000000
--- a/contrib/rom-o-matic/build.php
+++ /dev/null
@@ -1,311 +0,0 @@
-<?php // -*- Mode: PHP; -*-
-
-/**
- * Copyright (C) 2009 Marty Connor <mdc@etherboot.org>.
- * Copyright (C) 2009 Entity Cyber, Inc.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-// Get utility functions and set globals
-require_once "utils.php";
-
-// Make sure at least $A (action) was supplied
-if ( ! isset ( $_POST['A'] ) ) {
-
- // Present user with form to customize build options
- require_once "customize-flags.php";
-
- exit ();
-
-// If user chose "Customize" option on form
-} else if ( $_POST['A'] == "Customize" ) {
-
- // Present user with form to customize build options
- require_once "customize-flags.php";
-
- exit ();
-
-// The following conditional includes all other cases except "Get Image"
-// particularly the explicit ($A == "Start Over") case
-} else if ( $_POST['A'] != "Get Image" ) {
-
- // Note that this method of redirections discards all the
- // configuration flags, which is intentional in this case.
-
- $dest = curDirURL ();
- header ( "Location: $dest" );
-
- // This next "echo" should normally not be seen, because
- // the "header" statement above should cause immediate
- // redirection but just in case...
-
- echo "Try this link: <a href=\"$dest\">$dest</a>";
-
- exit ();
-}
-
-// OK, we're going to try to use whatever options have been set
-// to build an image.
-
-// Make sure at least $nic was supplied
-if ( ! isset ( $_POST['nic'] ) ) {
- die ( "No NIC supplied!" );
-}
-if ( isset ( $nics[$_POST['nic']] ) ) {
- $nic = $nics[$_POST['nic']];
-} else {
- die ( "Invalid NIC \"${_POST['nic']}\" supplied!" );
-}
-
-// Fetch flags
-$flags = get_flags ();
-
-// Get requested format
-$ofmt = isset ( $_POST['ofmt'] ) ? $_POST['ofmt'] : "";
-$fmt_extension = isset ( $ofmts[$ofmt] ) ? $ofmts[$ofmt] : 'dsk';
-
-// Handle some special cases
-
-$pci_vendor_code = "";
-$pci_device_code = "";
-
-if ( $nic == 'undionly' && $fmt_extension == "pxe" ) {
-
- // undionly.pxe can't work because it unloads the PXE stack
- // that it needs to communicate with, so we set the extension
- // to .kpxe, which has a chance of working. The extension
- // .kkpxe is another option.
-
- $fmt_extension = "kpxe";
-
-} else if ( $fmt_extension == "rom" ) {
-
- if ( ! isset ( $_POST['pci_vendor_code'] )
- || ! isset ( $_POST['pci_device_code'] ) ) {
- die ( "rom output format selected but PCI code(s) missing!" );
- }
-
- $pci_vendor_code = $_POST['pci_vendor_code'];
- $pci_device_code = $_POST['pci_device_code'];
-
- if ( $pci_vendor_code == ""
- || $pci_device_code == "" ) {
- die ( "rom output format selected but PCI code(s) missing!" );
- }
-
- // Try to be forgiving of 0xAAAA format
- if ( strtolower ( substr ( $pci_vendor_code, 0, 2 ) ) == "0x"
- && strlen ( $pci_vendor_code ) == 6 ) {
- $pci_vendor_code = substr ( $pci_vendor_code, 2, 4 );
- }
- if ( strtolower ( substr ( $pci_device_code, 0, 2 ) ) == "0x"
- && strlen ( $pci_device_code ) == 6 ) {
- $pci_device_code = substr ( $pci_device_code, 2, 4 );
- }
-
- // concatenate the pci codes to get the $nic part of the
- // Make target
- $pci_codes = strtolower ( $pci_vendor_code . $pci_device_code );
-
- $nic = $pci_codes;
- if ( ! isset ( $roms[$pci_codes] ) ) {
- die ( "Sorry, no network driver supports PCI codes<br>"
- . "${_POST['pci_vendor_code']}:"
- . "${_POST['pci_device_code']}" );
- }
-} else if ( $fmt_extension != "rom"
- && ( $pci_vendor_code != "" || $pci_device_code != "" ) ) {
- die ( "'$fmt_extension' format was selected but PCI IDs were"
- . " also entered.<br>Did you mean to select 'rom' output format"
- . " instead?" );
-}
-
-/**
- * remove temporary build directory
- *
- * @return bool true if removal is successful, false otherwise
- */
-function rm_build_dir ()
-{
- global $build_dir;
- global $keep_build_dir;
-
- if ( $keep_build_dir !== true ) {
- rm_file_or_dir ( $build_dir );
- }
-}
-
-// Arrange for the build directory to always be removed on exit.
-$build_dir = "";
-$keep_build_dir = false;
-register_shutdown_function ( 'rm_build_dir' );
-
-// Make temporary copy of src directory
-$build_dir = mktempcopy ( "$src_dir", "/tmp", "MDCROM" );
-$config_dir = $build_dir . "/config";
-
-// Write config files with supplied flags
-write_ipxe_config_files ( $config_dir, $flags );
-
-// Handle a possible embedded script
-$emb_script_cmd = "";
-$embedded_script = isset ( $_POST['embedded_script'] ) ? $_POST['embedded_script'] : "";
-if ( $embedded_script != "" ) {
- $emb_script_path = "$build_dir" . "/script0.ipxe";
-
- if ( substr ( $embedded_script, 0, 5 ) != "#!ipxe" ) {
- $embedded_script = "#!ipxe\n" . $embedded_script;
- }
-
- // iPXE 0.9.7 doesn't like '\r\n" in the shebang...
- $embedded_script = str_replace ( "\r\n", "\n", $embedded_script );
-
- write_file_from_string ( $emb_script_path, $embedded_script );
- $emb_script_cmd = "EMBEDDED_IMAGE=${emb_script_path}";
-}
-
-// Make the requested image. $status is set to 0 on success
-$make_target = "bin/${nic}.${fmt_extension}";
-$gitversion = exec('git describe --always --abbrev=1 --match "" 2>/dev/null');
-if ($gitversion) {
- $gitversion = "GITVERSION=$gitversion";
-}
-
-$make_cmd = "make -C '$build_dir' '$make_target' $gitversion $emb_script_cmd 2>&1";
-
-exec ( $make_cmd, $maketxt, $status );
-
-// Uncomment the following section for debugging
-
-/**
-
-echo "<h2>build.php:</h2>";
-echo "<h3>Begin debugging output</h3>";
-
-//echo "<h3>\$_POST variables</h3>";
-//echo "<pre>"; var_dump ( $_POST ); echo "</pre>";
-
-echo "<h3>Build options:</h3>";
-echo "<strong>Build directory is:</strong> $build_dir" . "<br><br>";
-echo "\$_POST['ofmt'] = " . "\"${_POST['ofmt']}\"" . "<br>";
-echo "\$_POST['nic'] = " . "\"${_POST['nic']}\"" . "<br>";
-echo "\$_POST['pci_vendor_code'] = " . "\"${_POST['pci_vendor_code']}\"" . "<br>";
-echo "\$_POST['pci_device_code'] = " . "\"${_POST['pci_device_code']}\"" . "<br>";
-
-echo "<h3>Flags:</h3>";
-show_flags ( $flags );
-
-if ( $embedded_script != "" ) {
- echo "<h3>Embedded script:</h3>";
- echo "<blockquote>"."<pre>";
- echo $embedded_script;
- echo "</pre>"."</blockquote>";
-}
-
-echo "<h3>Make output:</h3>";
-echo "Make command: " . $make_cmd . "<br>";
-echo "Build status = <? echo $status ?>" . "<br>";
-echo "<blockquote>"."<pre>";
-echo htmlentities ( implode ("\n", $maketxt ) );
-echo "</pre>"."</blockquote>";
-// Uncomment the next line if you want to keep the
-// build directory around for inspection after building.
-$keep_build_dir = true;
-die ( "<h3>End debugging output</h3>" );
-
-**/ // End debugging section
-
-// Send ROM to browser (with extreme prejudice)
-
-if ( $status == 0 ) {
-
- $fp = fopen("${build_dir}/${make_target}", "rb" );
- if ( $fp > 0 ) {
-
- $len = filesize ( "${build_dir}/${make_target}" );
- if ( $len > 0 ) {
-
- $buf = fread ( $fp, $len );
- fclose ( $fp );
-
- // Delete build directory as soon as it is not needed
- rm_build_dir ();
-
- $output_filename = preg_replace('/[^a-z0-9\+\.\-]/i', '', "ipxe-${version}-${nic}.${fmt_extension}");
-
- // Try to force IE to handle downloading right.
- Header ( "Cache-control: private");
- Header ( "Content-Type: application/x-octet-stream; " .
- "name=$output_filename");
- Header ( "Content-Disposition: attachment; " .
- "Filename=$output_filename");
- Header ( "Content-Location: $output_filename");
- Header ( "Content-Length: $len");
-
- echo $buf;
-
- exit ();
- }
- }
-}
-
-/*
- * If we reach this point, the build has failed, and we provide
- * debugging information for a potential bug report
- *
- */
-
-// Remove build directory
-rm_build_dir ();
-
-// Announce failure if $status from make was non-zero
-echo "<h2>Build failed. Status = " . $status . "</h2>";
-echo "<h2>build.php:</h2>";
-echo "<h3>Build options:</h3>";
-echo "<strong>Build directory is:</strong> $build_dir" . "<br><br>";
-echo "\$_POST['ofmt'] = " . "\"${_POST['ofmt']}\"" . "<br>";
-echo "\$_POST['nic'] = " . "\"${_POST['nic']}\"" . "<br>";
-echo "\$_POST['pci_vendor_code'] = " . "\"${_POST['pci_vendor_code']}\"" . "<br>";
-echo "\$_POST['pci_device_code'] = " . "\"${_POST['pci_device_code']}\"" . "<br>";
-
-echo "<h3>Flags:</h3>";
-show_flags ( $flags );
-
-if ( $embedded_script != "" ) {
- echo "<h3>Embedded script:</h3>";
- echo "<blockquote>"."<pre>";
- echo $embedded_script;
- echo "</pre>"."</blockquote>";
-}
-
-echo "<h3>Make output:</h3>";
-echo "Make command: " . $make_cmd . "<br>";
-echo "<blockquote>"."<pre>";
-echo htmlentities ( implode ("\n", $maketxt ) );
-echo "</pre>"."</blockquote>";
-
-echo "Please let us know that this happened, and paste the above output into your email message.<br>";
-
-include_once $bottom_inc;
-
-// For emacs:
-// Local variables:
-// c-basic-offset: 4
-// c-indent-level: 4
-// tab-width: 4
-// End:
-
-?>
diff --git a/contrib/rom-o-matic/customize-flags.php b/contrib/rom-o-matic/customize-flags.php
deleted file mode 100644
index e283921a8..000000000
--- a/contrib/rom-o-matic/customize-flags.php
+++ /dev/null
@@ -1,69 +0,0 @@
-<?php // -*- Mode: PHP; -*-
-
-/**
- * Copyright (C) 2009 Marty Connor <mdc@etherboot.org>.
- * Copyright (C) 2009 Entity Cyber, Inc.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-// Get utility functions and set globals
-require_once "utils.php";
-
-// Prepare settable compile options for presentation to user
-$flags = default_flags ();
-
-$build = "<input type=\"submit\" name=\"A\" value=\"Get Image\">";
-$restart = "<input type=\"submit\" name=\"A\" value=\"Start Over\">";
-
-// Begin html output
-include_once $top_inc;
-
-?>
-
-<form action="build.php" method=POST>
- <input type="hidden" name="version" value = "<?php echo $version ?>">
- <input type="hidden" name="use_flags" value="1">
- <h3>
- Make changes below and press <?php echo $build ?> to create an image, <br>
- Or press <?php echo $restart ?> to return to the main page.
- </h3>
- <hr>
- <ul>
- <?php require ( "directions.php" ); ?>
- </ul>
- <hr>
- <?php echo_flags( $flags ); ?>
- <hr>
- <h3>Embedded Script:</h3>
- <?php echo textarea ( "embedded_script", "", "10", "50" ); ?>
- <br><br>
- <hr>
- <center><table width="35%"><tr>
- <td align="left"> <?php echo $build; ?> </td>
- <td align="right"> <?php echo $restart ?></td>
- </tr></table></center>
-</form>
-
-<?php include_once $bottom_inc; ?>
-<?
-// For emacs:
-//
-// Local variables:
-// c-basic-offset: 4
-// c-indent-level: 4
-// tab-width: 4
-// End:
-?>
diff --git a/contrib/rom-o-matic/directions.php b/contrib/rom-o-matic/directions.php
deleted file mode 100644
index 540121edd..000000000
--- a/contrib/rom-o-matic/directions.php
+++ /dev/null
@@ -1,63 +0,0 @@
-<?php
-
-/**
- * Copyright (C) 2009 Marty Connor <mdc@etherboot.org>.
- * Copyright (C) 2009 Entity Cyber, Inc.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-?>
- <li>
- Choose an output format: <?php echo keys_menubox ( "ofmt", $ofmts,
- isset ( $_POST['ofmt'] ) ? $_POST['ofmt'] : "") ?>
- <br><br>
- </li>
- <li>
- Choose a NIC type: <?php echo keys_menubox ( "nic", $nics,
- isset ( $_POST['nic'] ) ? $_POST['nic'] : "" ) ?>
- <br><br>
- </li>
- <li>
- <strong>( optional &mdash; for binary ROM image format only )</strong> <br><br>
- If you choose <em>Binary ROM image</em> as your output format, you must<br>
- enter <strong>4 hex digits</strong> below for
- <em>PCI VENDOR CODE</em> and <em>PCI DEVICE CODE</em> <br>
- that match the NIC device for which you are making this image.<br><br>
- Information on how to determine NIC PCI IDs may be found
- <a href="http://www.ipxe.org/howto/romburning"
- target="_blank">here</a>.
- <br><br>
- PCI VENDOR CODE: <?php echo textbox ( "pci_vendor_code",
- isset ( $_POST['pci_vendor_code'] ) ? $_POST['pci_vendor_code']
- : "", 6 ); ?>
- &nbsp;&nbsp;
- PCI DEVICE CODE: <?php echo textbox ( "pci_device_code",
- isset ( $_POST['pci_device_code'] ) ? $_POST['pci_device_code']
- : "", 6 ); ?>
- <h4>Please note for ROM images:</h4>
- <ul>
- <li>
- If you enter PCI IDs, we will attempt to determine the correct<br>
- driver to support them, and will ignore any NIC type entered
- above.<br><br>
- </li>
- <li>
- iPXE does not support all possible PCI IDs for supported
- NICs.
- <br><br>
- </li>
- </ul>
- </li>
diff --git a/contrib/rom-o-matic/doc/AUTOBOOT_CMD.html b/contrib/rom-o-matic/doc/AUTOBOOT_CMD.html
deleted file mode 100644
index 444c5e602..000000000
--- a/contrib/rom-o-matic/doc/AUTOBOOT_CMD.html
+++ /dev/null
@@ -1 +0,0 @@
-Automatic booting
diff --git a/contrib/rom-o-matic/doc/BANNER_TIMEOUT.html b/contrib/rom-o-matic/doc/BANNER_TIMEOUT.html
deleted file mode 100644
index e135897f1..000000000
--- a/contrib/rom-o-matic/doc/BANNER_TIMEOUT.html
+++ /dev/null
@@ -1 +0,0 @@
-Tenths of a second for which the shell banner should appear
diff --git a/contrib/rom-o-matic/doc/COMCONSOLE.html b/contrib/rom-o-matic/doc/COMCONSOLE.html
deleted file mode 100644
index e7036c00e..000000000
--- a/contrib/rom-o-matic/doc/COMCONSOLE.html
+++ /dev/null
@@ -1,3 +0,0 @@
-Serial Console I/O port address. Common addresses are:<br>
-COM1 => 0x3f8, COM2 => 0x2f8, COM3 => 0x3e8, COM4 => 0x2e8
-
diff --git a/contrib/rom-o-matic/doc/COMDATA.html b/contrib/rom-o-matic/doc/COMDATA.html
deleted file mode 100644
index a27e27510..000000000
--- a/contrib/rom-o-matic/doc/COMDATA.html
+++ /dev/null
@@ -1 +0,0 @@
-Serial Console Data bits
diff --git a/contrib/rom-o-matic/doc/COMPARITY.html b/contrib/rom-o-matic/doc/COMPARITY.html
deleted file mode 100644
index 14f359517..000000000
--- a/contrib/rom-o-matic/doc/COMPARITY.html
+++ /dev/null
@@ -1 +0,0 @@
-Serial Console Parity: 0=None, 1=Odd, 2=Even
diff --git a/contrib/rom-o-matic/doc/COMPRESERVE.html b/contrib/rom-o-matic/doc/COMPRESERVE.html
deleted file mode 100644
index 6e41a10b3..000000000
--- a/contrib/rom-o-matic/doc/COMPRESERVE.html
+++ /dev/null
@@ -1 +0,0 @@
-Keep settings from a previous user of the serial port \ No newline at end of file
diff --git a/contrib/rom-o-matic/doc/COMSPEED.html b/contrib/rom-o-matic/doc/COMSPEED.html
deleted file mode 100644
index 32b685957..000000000
--- a/contrib/rom-o-matic/doc/COMSPEED.html
+++ /dev/null
@@ -1 +0,0 @@
-Serial Console Baud rate
diff --git a/contrib/rom-o-matic/doc/COMSTOP.html b/contrib/rom-o-matic/doc/COMSTOP.html
deleted file mode 100644
index ae3fd24fb..000000000
--- a/contrib/rom-o-matic/doc/COMSTOP.html
+++ /dev/null
@@ -1 +0,0 @@
-Serial Console Stop bits
diff --git a/contrib/rom-o-matic/doc/CONFIG_CMD.html b/contrib/rom-o-matic/doc/CONFIG_CMD.html
deleted file mode 100644
index 1256c0694..000000000
--- a/contrib/rom-o-matic/doc/CONFIG_CMD.html
+++ /dev/null
@@ -1 +0,0 @@
-Option configuration console
diff --git a/contrib/rom-o-matic/doc/CONSOLE_PC_BIOS.html b/contrib/rom-o-matic/doc/CONSOLE_PC_BIOS.html
deleted file mode 100644
index 144eea3b9..000000000
--- a/contrib/rom-o-matic/doc/CONSOLE_PC_BIOS.html
+++ /dev/null
@@ -1 +0,0 @@
-Enable Default BIOS console
diff --git a/contrib/rom-o-matic/doc/CONSOLE_SERIAL.html b/contrib/rom-o-matic/doc/CONSOLE_SERIAL.html
deleted file mode 100644
index f35e2ff5a..000000000
--- a/contrib/rom-o-matic/doc/CONSOLE_SERIAL.html
+++ /dev/null
@@ -1 +0,0 @@
-Enable Serial port console
diff --git a/contrib/rom-o-matic/doc/CRYPTO_80211_WEP.html b/contrib/rom-o-matic/doc/CRYPTO_80211_WEP.html
deleted file mode 100644
index 26fdf8a85..000000000
--- a/contrib/rom-o-matic/doc/CRYPTO_80211_WEP.html
+++ /dev/null
@@ -1 +0,0 @@
-Wireless WEP encryption support
diff --git a/contrib/rom-o-matic/doc/CRYPTO_80211_WPA.html b/contrib/rom-o-matic/doc/CRYPTO_80211_WPA.html
deleted file mode 100644
index b218a1e91..000000000
--- a/contrib/rom-o-matic/doc/CRYPTO_80211_WPA.html
+++ /dev/null
@@ -1 +0,0 @@
-Wireless WPA encryption support
diff --git a/contrib/rom-o-matic/doc/CRYPTO_80211_WPA2.html b/contrib/rom-o-matic/doc/CRYPTO_80211_WPA2.html
deleted file mode 100644
index 947597d13..000000000
--- a/contrib/rom-o-matic/doc/CRYPTO_80211_WPA2.html
+++ /dev/null
@@ -1 +0,0 @@
-Wireless WPA2 encryption support
diff --git a/contrib/rom-o-matic/doc/DHCP_CMD.html b/contrib/rom-o-matic/doc/DHCP_CMD.html
deleted file mode 100644
index a0c31c7c0..000000000
--- a/contrib/rom-o-matic/doc/DHCP_CMD.html
+++ /dev/null
@@ -1 +0,0 @@
-DHCP management commands
diff --git a/contrib/rom-o-matic/doc/DNS_RESOLVER.html b/contrib/rom-o-matic/doc/DNS_RESOLVER.html
deleted file mode 100644
index 1029b9c52..000000000
--- a/contrib/rom-o-matic/doc/DNS_RESOLVER.html
+++ /dev/null
@@ -1 +0,0 @@
-DNS resolver
diff --git a/contrib/rom-o-matic/doc/DOWNLOAD_PROTO_FTP.html b/contrib/rom-o-matic/doc/DOWNLOAD_PROTO_FTP.html
deleted file mode 100644
index 7686d5d8a..000000000
--- a/contrib/rom-o-matic/doc/DOWNLOAD_PROTO_FTP.html
+++ /dev/null
@@ -1 +0,0 @@
-File Transfer Protocol
diff --git a/contrib/rom-o-matic/doc/DOWNLOAD_PROTO_HTTP.html b/contrib/rom-o-matic/doc/DOWNLOAD_PROTO_HTTP.html
deleted file mode 100644
index c28d88868..000000000
--- a/contrib/rom-o-matic/doc/DOWNLOAD_PROTO_HTTP.html
+++ /dev/null
@@ -1 +0,0 @@
-Hypertext Transfer Protocol
diff --git a/contrib/rom-o-matic/doc/DOWNLOAD_PROTO_TFTP.html b/contrib/rom-o-matic/doc/DOWNLOAD_PROTO_TFTP.html
deleted file mode 100644
index f2b31b17a..000000000
--- a/contrib/rom-o-matic/doc/DOWNLOAD_PROTO_TFTP.html
+++ /dev/null
@@ -1 +0,0 @@
-Trivial File Transfer Protocol
diff --git a/contrib/rom-o-matic/doc/IFMGMT_CMD.html b/contrib/rom-o-matic/doc/IFMGMT_CMD.html
deleted file mode 100644
index 0e2b2a5e8..000000000
--- a/contrib/rom-o-matic/doc/IFMGMT_CMD.html
+++ /dev/null
@@ -1 +0,0 @@
-Interface management commands
diff --git a/contrib/rom-o-matic/doc/IMAGE_BZIMAGE.html b/contrib/rom-o-matic/doc/IMAGE_BZIMAGE.html
deleted file mode 100644
index d85e5d079..000000000
--- a/contrib/rom-o-matic/doc/IMAGE_BZIMAGE.html
+++ /dev/null
@@ -1 +0,0 @@
-Linux bzImage image support
diff --git a/contrib/rom-o-matic/doc/IMAGE_CMD.html b/contrib/rom-o-matic/doc/IMAGE_CMD.html
deleted file mode 100644
index 6f5acb538..000000000
--- a/contrib/rom-o-matic/doc/IMAGE_CMD.html
+++ /dev/null
@@ -1 +0,0 @@
-Image management commands
diff --git a/contrib/rom-o-matic/doc/IMAGE_ELF.html b/contrib/rom-o-matic/doc/IMAGE_ELF.html
deleted file mode 100644
index 5e39e8bd4..000000000
--- a/contrib/rom-o-matic/doc/IMAGE_ELF.html
+++ /dev/null
@@ -1 +0,0 @@
-ELF image support
diff --git a/contrib/rom-o-matic/doc/IMAGE_MULTIBOOT.html b/contrib/rom-o-matic/doc/IMAGE_MULTIBOOT.html
deleted file mode 100644
index 6a092a203..000000000
--- a/contrib/rom-o-matic/doc/IMAGE_MULTIBOOT.html
+++ /dev/null
@@ -1 +0,0 @@
-MultiBoot image support
diff --git a/contrib/rom-o-matic/doc/IMAGE_NBI.html b/contrib/rom-o-matic/doc/IMAGE_NBI.html
deleted file mode 100644
index eb78e03c3..000000000
--- a/contrib/rom-o-matic/doc/IMAGE_NBI.html
+++ /dev/null
@@ -1 +0,0 @@
-NBI image support
diff --git a/contrib/rom-o-matic/doc/IMAGE_PXE.html b/contrib/rom-o-matic/doc/IMAGE_PXE.html
deleted file mode 100644
index bdca3841d..000000000
--- a/contrib/rom-o-matic/doc/IMAGE_PXE.html
+++ /dev/null
@@ -1 +0,0 @@
-PXE image support
diff --git a/contrib/rom-o-matic/doc/IMAGE_SCRIPT.html b/contrib/rom-o-matic/doc/IMAGE_SCRIPT.html
deleted file mode 100644
index 87416727f..000000000
--- a/contrib/rom-o-matic/doc/IMAGE_SCRIPT.html
+++ /dev/null
@@ -1 +0,0 @@
-iPXE script image support
diff --git a/contrib/rom-o-matic/doc/IWMGMT_CMD.html b/contrib/rom-o-matic/doc/IWMGMT_CMD.html
deleted file mode 100644
index 0d5bd4a6f..000000000
--- a/contrib/rom-o-matic/doc/IWMGMT_CMD.html
+++ /dev/null
@@ -1 +0,0 @@
-Wireless interface management commands
diff --git a/contrib/rom-o-matic/doc/NMB_RESOLVER.html b/contrib/rom-o-matic/doc/NMB_RESOLVER.html
deleted file mode 100644
index a0bdc17d3..000000000
--- a/contrib/rom-o-matic/doc/NMB_RESOLVER.html
+++ /dev/null
@@ -1 +0,0 @@
-NMB resolver
diff --git a/contrib/rom-o-matic/doc/NVO_CMD.html b/contrib/rom-o-matic/doc/NVO_CMD.html
deleted file mode 100644
index 5346f3f57..000000000
--- a/contrib/rom-o-matic/doc/NVO_CMD.html
+++ /dev/null
@@ -1 +0,0 @@
-Non-volatile option storage commands
diff --git a/contrib/rom-o-matic/doc/ROUTE_CMD.html b/contrib/rom-o-matic/doc/ROUTE_CMD.html
deleted file mode 100644
index 8114c265b..000000000
--- a/contrib/rom-o-matic/doc/ROUTE_CMD.html
+++ /dev/null
@@ -1 +0,0 @@
-Routing table management commands
diff --git a/contrib/rom-o-matic/doc/SANBOOT_CMD.html b/contrib/rom-o-matic/doc/SANBOOT_CMD.html
deleted file mode 100644
index 2e9d84075..000000000
--- a/contrib/rom-o-matic/doc/SANBOOT_CMD.html
+++ /dev/null
@@ -1 +0,0 @@
-SAN boot commands
diff --git a/contrib/rom-o-matic/flag-table.php b/contrib/rom-o-matic/flag-table.php
deleted file mode 100644
index fe81c8029..000000000
--- a/contrib/rom-o-matic/flag-table.php
+++ /dev/null
@@ -1,531 +0,0 @@
-<?php // -*- Mode: PHP; -*-
-
-/**
- * Copyright (C) 2009 Marty Connor <mdc@etherboot.org>.
- * Copyright (C) 2009 Entity Cyber, Inc.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-$ofmts = array
- ( "Floppy bootable image (.dsk)" => "dsk",
- "SYSLINUX-based bootable floppy image (.sdsk)" => "sdsk",
- "ISO bootable image (.iso)" => "iso",
- "ISO bootable image with legacy floppy emulation (.liso)" => "liso",
- "Linux kernel (SYSLINUX/GRUB/LILO) loadable image (.lkrn)" => "lkrn",
- "USB Keychain disk image (.usb)" => "usb",
- "ROM binary (flashable) image (.rom)" => "rom",
- "ROM binary (flashable) for problem PMM BIOSES (.hrom)" => "hrom",
- "PXE bootstrap loader image [Unload PXE stack] (.pxe)" => "pxe",
- "PXE bootstrap loader keep [Keep PXE stack method 1] (.kpxe)" => "kpxe",
- "PXE bootstrap loader keep [Keep PXE stack method 2] (.kkpxe)" => "kkpxe",
- );
-
-$flag_table = array (
-
- // Begin General Options:
-
- "HDR_MISC_OPTIONS"
- => array (
- "flag" => "HDR_MISC_OPTIONS",
- "hide_from_user" => "yes", // Hide even the header
- "type" => "header",
- "label" => "Miscellaneous Options"
- ),
-
- "PRODUCT_NAME"
- => array (
- "flag" => "PRODUCT_NAME",
- "hide_from_user" => "yes",
- "type" => "string",
- "value" => "",
- "cfgsec" => "general"
- ),
-
- "PRODUCT_SHORT_NAME"
- => array (
- "flag" => "PRODUCT_SHORT_NAME",
- "hide_from_user" => "yes",
- "type" => "string",
- "value" => "iPXE",
- "cfgsec" => "general"
- ),
-
- // End General Options:
-
- // Begin Console Options:
-
- "HDR_CONSOLE_OPTIONS"
- => array (
- "flag" => "HDR_CONSOLE_OPTIONS",
- "type" => "header",
- "label" => "Console Options"
- ),
-
- "CONSOLE_PCBIOS"
- => array (
- "flag" => "CONSOLE_PCBIOS",
- "type" => "on/off",
- "value" => "on",
- "cfgsec" => "console"
- ),
-
- "CONSOLE_SERIAL"
- => array (
- "flag" => "CONSOLE_SERIAL",
- "type" => "on/off",
- "value" => "off",
- "cfgsec" => "console"
- ),
-
- "BANNER_TIMEOUT"
- => array (
- "flag" => "BANNER_TIMEOUT",
- "type" => "integer",
- "value" => "20",
- "cfgsec" => "general"
- ),
-
- "KEYBOARD_MAP"
- => array (
- "flag" => "KEYBOARD_MAP",
- "type" => "choice",
- "options" => array("al","az","bg","by","cf","cz","de","dk","es","et","fi","fr",
- "gr","hu","il","it","lt","mk","mt","nl","no","pl","pt","ro","ru","sg","sr",
- "th","ua","uk","us","wo"),
- "value" => "us",
- "cfgsec" => "console"
- ),
-
- "LOG_LEVEL"
- => array (
- "flag" => "LOG_LEVEL",
- "type" => "choice",
- "options" => array("LOG_NONE","LOG_EMERG","LOG_ALERT","LOG_CRIT","LOG_ERR",
- "LOG_WARNING","LOG_NOTICE","LOG_INFO","LOG_DEBUG","LOG_ALL"),
- "value" => "LOG_NONE",
- "cfgsec" => "console"
- ),
-
- // End Console Options
-
- // Begin Network Protocol Options:
-
- "HDR_NETWORK_PROTOCOL_OPTIONS"
- => array (
- "flag" => "HDR_NETWORK_PROTOCOL_OPTIONS",
- "hide_from_user" => "yes", // Hide even the header
- "type" => "header",
- "label" => "Network Protocol Options"
- ),
-
- "NET_PROTO_IPV4"
- => array (
- "flag" => "NET_PROTO_IPV4",
- "type" => "on/off",
- "value" => "on",
- "hide_from_user" => "yes",
- "cfgsec" => "general"
- ),
-
- // End Network Protocol Options
-
- // Begin Serial Port configuration
-
- "HDR_SERIAL_PORT_OPTIONS"
- => array (
- "flag" => "HDR_SERIAL_PORT_OPTIONS",
- "type" => "header",
- "label" => "Serial Port Options"
- ),
-
- "COMCONSOLE"
- => array (
- "flag" => "COMCONSOLE",
- "type" => "integer-hex", // e.g. 0x378
- "value" => "0x3F8",
- "cfgsec" => "serial"
- ),
-
- "COMPRESERVE"
- => array (
- "flag" => "COMPRESERVE",
- "type" => "on/off",
- "value" => "off",
- "cfgsec" => "serial"
- ),
-
- "COMSPEED"
- => array (
- "flag" => "COMSPEED",
- "type" => "integer",
- "value" => "115200",
- "cfgsec" => "serial"
- ),
-
- "COMDATA"
- => array (
- "flag" => "COMDATA",
- "type" => "integer",
- "value" => "8",
- "cfgsec" => "serial"
- ),
-
- "COMPARITY"
- => array (
- "flag" => "COMPARITY",
- "type" => "integer",
- "value" => "0",
- "cfgsec" => "serial"
- ),
-
- "COMSTOP"
- => array (
- "flag" => "COMSTOP",
- "type" => "integer",
- "value" => "1",
- "cfgsec" => "serial"
- ),
-
- // End Serial Options
-
- // Begin Download Protocols
-
- "HDR_DOWNLOAD_PROTOCOLS"
- => array (
- "flag" => "HDR_DOWNLOAD_PROTOCOLS",
- "type" => "header",
- "label" => "Download Protocols"
- ),
-
- "DOWNLOAD_PROTO_TFTP"
- => array (
- "flag" => "DOWNLOAD_PROTO_TFTP",
- "type" => "on/off",
- "value" => "on",
- "cfgsec" => "general"
- ),
-
- "DOWNLOAD_PROTO_HTTP"
- => array (
- "flag" => "DOWNLOAD_PROTO_HTTP",
- "type" => "on/off",
- "value" => "on",
- "cfgsec" => "general"
- ),
-
- "DOWNLOAD_PROTO_HTTPS"
- => array (
- "flag" => "DOWNLOAD_PROTO_HTTPS",
- "type" => "on/off",
- "value" => "off",
- "cfgsec" => "general"
- ),
-
- "DOWNLOAD_PROTO_FTP"
- => array (
- "flag" => "DOWNLOAD_PROTO_FTP",
- "type" => "on/off",
- "value" => "off",
- "cfgsec" => "general"
- ),
-
- // End Download Protocols
-
- // Begin SAN boot protocols
-
- "HDR_SANBOOT_PROTOCOLS"
- => array (
- "flag" => "HDR_SANBOOT_PROTOCOLS",
- "type" => "header",
- "label" => "SAN Boot Protocols"
- ),
-
- "SANBOOT_PROTO_ISCSI"
- => array (
- "flag" => "SANBOOT_PROTO_ISCSI",
- "type" => "on/off",
- "value" => "on",
- "cfgsec" => "general"
- ),
-
- "SANBOOT_PROTO_AOE"
- => array (
- "flag" => "SANBOOT_PROTO_AOE",
- "type" => "on/off",
- "value" => "on",
- "cfgsec" => "general"
- ),
-
- // End SAN boot protocols
-
- // Begin Name resolution modules
-
- "HDR_NAME_RESOLUTION_MODULES"
- => array (
- "flag" => "HDR_NAME_RESOLUTION_MODULES",
- "type" => "header",
- "label" => "Name Resolution Modules"
- ),
-
- "DNS_RESOLVER"
- => array (
- "flag" => "DNS_RESOLVER",
- "type" => "on/off",
- "value" => "on",
- "cfgsec" => "general"
- ),
-
- "NMB_RESOLVER"
- => array (
- "flag" => "NMB_RESOLVER",
- "type" => "on/off",
- "value" => "off",
- "hide_from_user" => "yes",
- "cfgsec" => "general"
- ),
-
- // End Name resolution modules
-
- // Begin Image types
-
- "HDR_IMAGE_TYPES"
- => array (
- "flag" => "HDR_IMAGE_TYPES",
- "type" => "header",
- "label" => "Image Types",
- ),
-
- "IMAGE_ELF"
- => array (
- "flag" => "IMAGE_ELF",
- "type" => "on/off",
- "value" => "on",
- "cfgsec" => "general"
- ),
-
- "IMAGE_NBI"
- => array (
- "flag" => "IMAGE_NBI",
- "type" => "on/off",
- "value" => "on",
- "cfgsec" => "general"
- ),
-
- "IMAGE_MULTIBOOT"
- => array (
- "flag" => "IMAGE_MULTIBOOT",
- "type" => "on/off",
- "value" => "on",
- "cfgsec" => "general"
- ),
-
- "IMAGE_PXE"
- => array (
- "flag" => "IMAGE_PXE",
- "type" => "on/off",
- "value" => "on",
- "cfgsec" => "general"
- ),
-
- "IMAGE_SCRIPT"
- => array (
- "flag" => "IMAGE_SCRIPT",
- "type" => "on/off",
- "value" => "on",
- "cfgsec" => "general"
- ),
-
- "IMAGE_BZIMAGE"
- => array (
- "flag" => "IMAGE_BZIMAGE",
- "type" => "on/off",
- "value" => "on",
- "cfgsec" => "general"
- ),
-
- "IMAGE_COMBOOT"
- => array (
- "flag" => "IMAGE_COMBOOT",
- "type" => "on/off",
- "value" => "on",
- "cfgsec" => "general"
- ),
-
- // End Image types
-
- // Begin Command-line commands to include
-
- "HDR_COMMAND_LINE_OPTIONS"
- => array (
- "flag" => "HDR_COMMAND_LINE_OPTIONS",
- "type" => "header",
- "label" => "Command Line Options",
- ),
-
- "AUTOBOOT_CMD"
- => array (
- "flag" => "AUTOBOOT_CMD",
- "type" => "on/off",
- "value" => "on",
- "cfgsec" => "general"
- ),
-
- "NVO_CMD"
- => array (
- "flag" => "NVO_CMD",
- "type" => "on/off",
- "value" => "on",
- "cfgsec" => "general"
- ),
-
- "CONFIG_CMD"
- => array (
- "flag" => "CONFIG_CMD",
- "type" => "on/off",
- "value" => "on",
- "cfgsec" => "general"
- ),
-
- "IFMGMT_CMD"
- => array (
- "flag" => "IFMGMT_CMD",
- "type" => "on/off",
- "value" => "on",
- "cfgsec" => "general"
- ),
-
- "IWMGMT_CMD"
- => array (
- "flag" => "IWMGMT_CMD",
- "type" => "on/off",
- "value" => "on",
- "cfgsec" => "general"
- ),
-
- "ROUTE_CMD"
- => array (
- "flag" => "ROUTE_CMD",
- "type" => "on/off",
- "value" => "on",
- "cfgsec" => "general"
- ),
-
- "IMAGE_CMD"
- => array (
- "flag" => "IMAGE_CMD",
- "type" => "on/off",
- "value" => "on",
- "cfgsec" => "general"
- ),
-
- "DHCP_CMD"
- => array (
- "flag" => "DHCP_CMD",
- "type" => "on/off",
- "value" => "on",
- "cfgsec" => "general"
- ),
-
- "SANBOOT_CMD"
- => array (
- "flag" => "SANBOOT_CMD",
- "type" => "on/off",
- "value" => "on",
- "cfgsec" => "general"
- ),
-
- "LOGIN_CMD"
- => array (
- "flag" => "LOGIN_CMD",
- "type" => "on/off",
- "value" => "on",
- "cfgsec" => "general"
- ),
-
- "TIME_CMD"
- => array (
- "flag" => "TIME_CMD",
- "type" => "on/off",
- "value" => "off",
- "cfgsec" => "general"
- ),
-
- "DIGEST_CMD"
- => array (
- "flag" => "DIGEST_CMD",
- "type" => "on/off",
- "value" => "off",
- "cfgsec" => "general"
- ),
-
- // End Command-line commands to include
-
- // Begin Wireless options
-
- "HDR_WIRELESS_OPTIONS"
- => array (
- "flag" => "HDR_WIRELESS_OPTIONS",
- "type" => "header",
- "label" => "Wireless Interface Options",
- ),
-
- "CRYPTO_80211_WEP"
- => array (
- "flag" => "CRYPTO_80211_WEP",
- "type" => "on/off",
- "value" => "on",
- "cfgsec" => "general"
- ),
-
- "CRYPTO_80211_WPA"
- => array (
- "flag" => "CRYPTO_80211_WPA",
- "type" => "on/off",
- "value" => "on",
- "cfgsec" => "general"
- ),
-
- "CRYPTO_80211_WPA2"
- => array (
- "flag" => "CRYPTO_80211_WPA2",
- "type" => "on/off",
- "value" => "on",
- "cfgsec" => "general"
- ),
-
- // End Wireless options
-
- // Obscure options required to compile
- "NETDEV_DISCARD_RATE"
- => array (
- "flag" => "NETDEV_DISCARD_RATE",
- "type" => "integer",
- "value" => "0",
- "cfgsec" => "general",
- "hide_from_user" => true
- )
-
- // End Obscure options
-);
-
-// For emacs:
-// Local variables:
-// c-basic-offset: 4
-// c-indent-level: 4
-// tab-width: 4
-// End:
-
-?>
diff --git a/contrib/rom-o-matic/globals.php b/contrib/rom-o-matic/globals.php
deleted file mode 100644
index 822e4bc0b..000000000
--- a/contrib/rom-o-matic/globals.php
+++ /dev/null
@@ -1,51 +0,0 @@
-<?php // -*- Mode: PHP; -*-
-
-/**
- * Copyright (C) 2009 Marty Connor <mdc@etherboot.org>.
- * Copyright (C) 2009 Entity Cyber, Inc.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-// Directory containing iPXE source code tree
-$src_dir = "../../src";
-
-// Compute iPXE version based on source tree
-exec ( "make -C '$src_dir' version 2>&1", $make_output, $status );
-$version = ( $status == 0 && count ( $make_output ) > 1 )
- ? trim ( $make_output[count ( $make_output ) - 2] )
- : "";
-
-// Email address of person responsible for this website
-$webmaster_email = "webmaster@example.com";
-
-// Files that header and footer text
-$top_inc = "top.php";
-$bottom_inc = "bottom.php";
-
-// Descriptive strings
-$header_title = "ROM-o-matic for iPXE $version";
-$html_tagline = "ROM-o-matic dynamically generates iPXE images";
-$html_title = "ROM-o-matic for iPXE $version";
-$description = "a dynamic iPXE image generator";
-
-// For emacs:
-// Local variables:
-// c-basic-offset: 4
-// c-indent-level: 4
-// tab-width: 4
-// End:
-
-?>
diff --git a/contrib/rom-o-matic/index.php b/contrib/rom-o-matic/index.php
deleted file mode 100644
index 26585c975..000000000
--- a/contrib/rom-o-matic/index.php
+++ /dev/null
@@ -1,47 +0,0 @@
-<?php // -*- Mode: PHP; -*-
-
-/**
- * Copyright (C) 2009 Marty Connor <mdc@etherboot.org>.
- * Copyright (C) 2009 Entity Cyber, Inc.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-// Get utility functions and set globals
-require_once "utils.php";
-
-// Begin html output
-include_once $top_inc;
-
-?>
-<form action="build.php" method=POST>
- <input type="hidden" name="version" value = "<?php echo $version ?>">
- <h3>To create an image:</h3>
- <ol>
- <?php require ( "directions.php" ); ?>
- <li>
- Generate and download an image:
- <input type="submit" name="A" value="Get Image">
- <br><br>
- </li>
- <li>
- (optional) Customize image configuration options:
- <input type="submit" name="A" value="Customize">
- <br><br>
- </li>
- </ol>
-</form>
-
-<?php include_once $bottom_inc ?>
diff --git a/contrib/rom-o-matic/top.php b/contrib/rom-o-matic/top.php
deleted file mode 100644
index 42a8e2d27..000000000
--- a/contrib/rom-o-matic/top.php
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-
-<?php
-
-/**
- * Copyright (C) 2009 Marty Connor <mdc@etherboot.org>.
- * Copyright (C) 2009 Entity Cyber, Inc.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-?>
-
-<html>
-<head>
- <link rev="made" href="mailto:<?php echo "${webmaster_email}" ?>">
- <meta name="keywords" content="rom, etherboot, ipxe, open source, rom-o-matic.net">
- <title><?php echo $header_title ?></title>
- <meta name="description" content="<?php echo $description ?>">
-</head>
-<h1>
-<?php echo "$html_title" ?>&nbsp;
-</h1>
-<hr>
-<h2>
-<?php echo "$html_tagline" ?>
-</h2>
-</form>
-<hr>
diff --git a/contrib/rom-o-matic/utils.php b/contrib/rom-o-matic/utils.php
deleted file mode 100644
index e0e62f447..000000000
--- a/contrib/rom-o-matic/utils.php
+++ /dev/null
@@ -1,684 +0,0 @@
-<?php // -*- Mode: PHP; -*-
-
-/**
- * Copyright (C) 2009 Marty Connor <mdc@etherboot.org>.
- * Copyright (C) 2009 Entity Cyber, Inc.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-// Include table of user-configurable iPXE options
-require_once "flag-table.php";
-
-// Include user-shadowable globals
-require_once "globals.php";
-
-// Allow user to shadow globals
-if ( is_file ( 'local-config.php' ) ) {
- include_once "local-config.php";
-}
-
-////
-// General utility functions
-////
-
-/**
- * Remove undesirable characters from a given string
- *
- * Certain characters have the potential to be used for
- * malicious purposes by web-based attackers. This routine
- * filters out such characters.
- *
- * @param string $s supplied string
- *
- * @return string returned string with unwanted characters
- * removed
- */
-function cleanstring ( $s )
-{
- $len = strlen ( $s );
- if ( $len > 80 ) {
- $s = substr ( $s, 0, 80 );
- }
-
- $s = trim ( $s );
- $pos = 0;
- $result = "";
-
- while ( $pos < $len ) {
- $ltr = ord ( ucfirst ( $s[$pos] ) );
- if ( ( $ltr >= ord ( "A" ) ) && ( $ltr <= ord ( "Z" ) ) ||
- ( $ltr >= ord ( "0" ) ) && ( $ltr <= ord ( "9" ) ) ||
- ( $ltr == ord ( "." ) ) && ( strlen ( $result ) > 0 ) ||
- ( $ltr == ord ( "_" ) ) ||
- ( $ltr == ord ( "+" ) ) ||
- ( $ltr == ord ( ":" ) ) ||
- ( $ltr == ord ( "/" ) ) ||
- ( $ltr == ord ( "-" ) ) ) {
- $result .= $s[$pos];
- }
- $pos++;
- }
- return $result;
-}
-
-/**
- * Return URL of the currently running script, minus the filename
- *
- * @return string the URL of the currently running script, minus the filename
- */
-function curDirURL ()
-{
- $dir = dirname ( $_SERVER['PHP_SELF'] );
-
- if ( $dir == "." || $dir == "/" ) {
- $dir = "";
- }
-
- $isHTTPS = ( isset ( $_SERVER["HTTPS"] ) && $_SERVER["HTTPS"] == "on" );
- $port = ( isset($_SERVER["SERVER_PORT"] ) &&
- ( ( !$isHTTPS && $_SERVER["SERVER_PORT"] != "80" ) ||
- ( $isHTTPS && $_SERVER["SERVER_PORT"] != "443" ) ) );
-
- $port = ( $port ) ? ':' . $_SERVER["SERVER_PORT"] : '';
-
- $dest = ( $isHTTPS ? 'https://' : 'http://' ) .
- $_SERVER["SERVER_NAME"] . $dir . "/";
-
- return $dest;
-}
-
-/**
- * Extract NIC families and associated ROM PCI IDs from the src/bin/NIC file.
- *
- * $src_dir must contain the path of the iPXE src directory for this build
- *
- * @return array[0] array $new_nics
- * @return array[1] array $roms
- */
-function parse_nic_file ()
-{
- global $src_dir;
-
- $fd = fopen ( "$src_dir/bin/NIC", "r" );
- if ( ! $fd ) {
- die ( "Missing src/bin/NIC file. 'make bin/NIC'" );
- }
-
- $nics = array ();
- $roms = array ();
- $nic = "";
-
- while ( !feof ( $fd ) ) {
-
- $line = trim ( fgets ( $fd, 200 ) );
-
- $first_eight_chars = substr ( $line, 0, 8 );
- settype ( $first_eight_chars, "string" );
-
- if ( strpos ( $first_eight_chars, "family" ) === 0 ) {
-
- // get pathname of NIC driver
- #list ( $dummy, $nic ) = split( "[ \t]+", $line );
- list ( $dummy, $nic ) = explode("\t", $line);
- settype ( $nic, "string" );
-
- // extract filename name of driver from pathname
- $nic = substr ( $nic, strrpos ( $nic, "/" ) + 1,
- strlen ( $nic ) - strrpos ( $nic, "/" ) + 1 );
-
- $nics[$nic] = $nic;
-
- // For each ISA NIC, there can only be one ROM variant
- $roms[$nic] = $nic;
- }
-
- // If the first 8 digits of the line are hex digits
- // add this rom to the current nic family.
-
- if ( ( strlen ( $first_eight_chars ) == 8 )
- && ( ctype_xdigit ( $first_eight_chars ) )
- && ( $nic != "" ) ) {
-
- $roms[$first_eight_chars] = $nic;
- }
- }
- fclose ( $fd );
-
- // put most NICs in nice alpha order for menu
- ksort ( $nics );
-
- // add special cases to the top
-
- $new_nics = array ( "all-drivers" => "ipxe",
- "undionly" => "undionly",
- "undi" => "undi",
- );
-
- foreach ( $nics as $key => $value ) {
- // skip the undi driver
- if ( $key != "undi" ) {
- $new_nics[$key] = $value;
- }
- }
-
- return array ( $new_nics, $roms );
-}
-
-////
-// HTML form utility functions
-////
-
-/**
- * Return html code to create hidden form input fields
- *
- * @param string $flag name of form variable to set
- * @param string $value value to give form variable
- *
- * @return string html code for given hidden form input field
- */
-function hidden ( $flag, $value )
-{
- $value = htmlentities ( $value );
- return "<input type=\"hidden\" value=\"$value\" name=\"$flag\"></input>";
-}
-
-/**
- * Return html code to create checkbox form input fields
- *
- * @param string $flag name of form variable to set
- * @param string $value "on" means box should be checked
- *
- * @return string html code for given hidden form input field
- */
-function checkbox ( $flag, $value )
-{
- return "<input type=\"checkbox\" value=\"on\" name=\"$flag\"" .
- ($value == "on" ? " checked>" : ">" );
-}
-
-/**
- * Return html code to create text form input fields
- *
- * @param string $flag name of form variable to set
- * @param string $value initial contents of field
- * @param string $size size in characters of text box
- *
- * @return string html code for given text input field
- */
-function textbox ( $flag, $value, $size )
-{
- $value = htmlentities ( $value );
- return "<input type=\"text\" size=\"$size\" value=\"$value\" name=\"$flag\">";
-}
-
-/**
- * Return html code to create textarea form fields
- *
- * @param string $flag name of form variable to set
- * @param string $value initial contents of textarea
- * @param string $rows height of text area in rows
- * @param string $cols width of text area in columns
- *
- * @return string html code for given textarea input field
- */
-function textarea ( $flag, $value, $rows, $cols )
-{
- $value = htmlentities ( $value );
- return "<textarea name=\"$flag\" rows=\"$rows\" cols=\"$cols\">"
- . $value . "</textarea>";
-}
-
-/**
- * Return html code to create select (menu) form fields
- *
- * Use array of strings as menu choices
- *
- * @param string $flag name of form variable to set
- * @param array $options array of strings representing choices
- * @param string $value value of choice to select in menu
- *
- * @return string html code for given select (menu) input field
- */
-function menubox ( $name, $options, $value )
-{
- $s="<select name=\"$name\">";
-
- foreach ( $options as $ignore => $option ) {
- if ( !$value ) $value = $option;
- $s .= "<option" . ( $option == $value ? " selected>" : ">" ) .
- htmlentities ( $option ) . "</option>";
- }
- return $s . "</select>";
-}
-
-/**
- * Return html code to create select (menu) form fields
- *
- * Use indices of array of strings as menu choices rather than
- * the values pointed to by the indicies.
- *
- * @param string $flag name of form variable to set
- * @param array $options array of strings representing choices
- * @param string $value value of choice to select in menu
- *
- * @return string html code for given select (menu) input field
- */
-function keys_menubox ( $name, $options, $value )
-{
- $s="<select name=\"$name\">";
-
- foreach ( $options as $option => $ignore ) {
- if ( !$value ) $value = $option;
- $s .= "<option" . ( $option == $value ? " selected>" : ">" ) .
- htmlentities ( $option ) . "</option>";
- }
- return $s . "</select>";
-}
-
-////
-// Flag (compile option) handling functions
-////
-
-/**
- * Return default compile options (flags)
- *
- * Initial compile options are in a global called $flag_table.
- * Create and return an array containing the ones we want.
- *
- * @return array default compile options (flags)
- */
-function default_flags ()
-{
- global $flag_table;
-
- $flags = array ();
-
- foreach ( $flag_table as $key => $props ) {
-
- $flag = $props["flag"];
- $type = $props["type"];
-
- // Fields like headers have no "value" property
- if ( isset ( $props["value"] ) ) {
- $flags[$flag] = $props["value"];
- }
- }
- return $flags;
-}
-
-/**
- * Return combination of default and user compile options (flags)
- *
- * Initial compile options are in a global called $flag_table.
- * Compile options may have been changed via form input. We return
- * an array with either the default value of each option or a user
- * supplied value from form input.
- *
- * @return array combined default and user supplied compile options (flags)
- */
-function get_flags ()
-{
- global $flag_table;
-
- $flags = default_flags ();
-
- if ( ! isset ( $_POST["use_flags"] ) )
- return $flags;
-
- foreach ( $flag_table as $key => $props ) {
-
- $flag = $props["flag"];
- $type = $props["type"];
-
- if ( isset ( $_POST["$flag"] ) ) {
- $flags[$flag] = $_POST["$flag"];
- if ( $type == "integer-hex" ) {
- if ( strtolower ( substr ( $flags[$flag], 0, 2 ) ) != "0x" ) {
- $flags[$flag] = "0x" . $flags[$flag];
- }
- }
- } else if ( $type == "on/off" ) {
- // Unchecked checkboxes don't pass any POST value
- // so we must check for them specially. At this
- // point we know that there is no $_POST value set
- // for this option. If it is a checkbox, this means
- // it is unchecked, so record that in $flags so we
- // can later generate an #undef for this option.
- $flags[$flag] = "off";
- }
- }
- return $flags;
-}
-
-/**
- * Output given value in appropriate format for iPXE config file
- *
- * iPXE config/*.h files use C pre-processor syntax. Output the given
- * compile option in a format appropriate to its type
- *
- * @param string $key index into $flag_table for given compile option
- * @param string $value value we wish to set compile option to
- *
- * @return string code to set compile option to given value
- */
-function pprint_flag ( $key, $value )
-{
- global $flag_table;
-
- // Determine type of given compile option (flag)
- $type = $flag_table[$key]["type"];
- $s = "";
-
- if ( $type == "on/off" && $value == "on" ) {
- $s = "#define $key";
- } else if ( $type == "on/off" && $value != "on" ) {
- $s = "#undef $key";
- } else if ( $type == "string" ) {
- $s = ( "#define $key \"" . cleanstring ( $value ) . "\"" );
- } else if ($type == "qstring" ) {
- $s = ( "#define $key \\\"" . cleanstring ( $value ) . "\\\"" );
- } else {
- $s = "#define $key " . cleanstring ( $value );
- }
-
- return $s;
-}
-
-/**
- * Output html code to display all compile options as a table
- *
- * @param array $flags array of compile options
- *
- * @return void
- */
-function echo_flags ( $flags )
-{
- global $flag_table;
-
- echo "<table>\n";
-
- foreach ( $flag_table as $key => $props ) {
-
- // Hide parameters from users that should not be changed.
- $hide_from_user = isset ( $props["hide_from_user"] ) ? $props["hide_from_user"] : "no";
-
- $flag = $props["flag"];
- $type = $props["type"];
-
- $value = isset ( $flags[$flag] ) ? $flags[$flag] : '';
-
- if ( $hide_from_user == "yes" ) {
-
- // Hidden flags cannot not be set by the user. We use hidden form
- // fields to keep them at their default values.
- if ( $type != "header" ) {
- echo hidden ( $flag, $value );
- }
-
- } else {
-
- // Flag (iPXE compile option) should be displayed to user
-
- if ( $type == "header" ) {
-
- $label = $props["label"];
- echo "<td colspan=2><hr><h3>$label</h3><hr></td>";
-
- } else if ($type == "on/off" ) {
-
- echo "<td>", checkbox ( $flag, $value ), "</td><td><strong>$flag</strong></td>";
-
- } else { // don't display checkbox for non-on/off flags
-
- echo "<td>&nbsp;</td><td><strong>$flag: </strong>";
-
- if ($type == "choice" ) {
- $options = $props["options"];
- echo menubox($flag, $options, $value);
-
- } else {
-
- echo textbox($flag, $value, ($type == "integer" ||
- $type == "integer-hex"
- ? 7 : 25));
- }
- echo "</td>";
- }
- echo "</tr>\n";
-
- if ( $type != "header" ) {
- echo "<tr><td>&nbsp;</td>";
- echo "<td>\n";
- if ( is_file ( "doc/$flag.html" ) ) {
- include_once "doc/$flag.html";
- }
- echo "\n</td></tr>\n";
- }
- }
- }
- echo "</table>";
-}
-
-/**
- * Return an array of configuration sections used in all compile options
- *
- * $flag_table, the global list of compile options contains a 'cfgsec'
- * property for each flag we are interested in. We return a list of
- * all the unique cfgsec options we find in $flag_table.
- *
- * @return array an array of strings representing all unique cfgsec values
- * found in $flag_table
- */
-function get_flag_cfgsecs ()
-{
- global $flag_table;
- $cfgsecs = array ();
-
- foreach ( $flag_table as $key => $props ) {
- if ( isset ( $props['cfgsec'] ) ) {
- $cfgsec = $props["cfgsec"];
- $cfgsecs[$cfgsec] = $cfgsec;
- }
- }
- return $cfgsecs;
-}
-
-////
-// File and directory handling functions
-////
-
-/**
- * Create a copy of a given source directory to a given destination
- *
- * Since we are going to modify the source directory, we create a copy
- * of the directory with a unique name in the given destination directory.
- * We supply a prefix for the tempnam call to prepend to the random filename
- * it generates.
- *
- * @param string $src source directory
- * @param string $dst destination directory
- * @param string $prefix string to append to directory created
- *
- * @return string absolute path to destination directory
- */
-function mktempcopy ( $src, $dst, $prefix )
-{
- if ( $src[0] != "/" ) {
- $src = dirname ( $_SERVER['SCRIPT_FILENAME'] ) . "/" . $src;
- }
-
- // Create a file in the given destination directory with a unique name
- $dir = tempnam ( $dst, $prefix );
-
- // Delete the file just created, since it would interfere with the copy we
- // are about to do. We only care that the dir name we copy to is unique.
- unlink ( $dir );
-
- exec ( "/bin/cp -a '$src' '$dir' 2>&1", $cpytxt, $status );
-
- if ( $status != 0 ) {
- die ( "src directory copy failed!" );
- }
- return $dir;
-}
-
-/**
- * Write iPXE config files based on value of given flags
- *
- * iPXE compile options are stored in src/config/*.h .
- * We write out a config file for each set of options.
- *
- * @param string $config_dir directory to write .h files to
- * @param array $flags array of compile options for this build
- *
- * @return void
- */
-function write_ipxe_config_files ( $config_dir, $flags )
-{
- global $flag_table;
-
- $cfgsecs = get_flag_cfgsecs ();
-
- foreach ( $cfgsecs as $cfgsec ) {
-
- $fname = $config_dir . "/" . $cfgsec . ".h";
-
- $fp = fopen ( $fname, "wb" );
- if ( $fp <= 0 ) {
- die ( "Unable to open $fname file for output!" );
- }
-
- $ifdef_secname = "CONFIG_" . strtoupper ( $cfgsec ) . "_H";
-
- fwrite ( $fp, "#ifndef ${ifdef_secname}\n" );
- fwrite ( $fp, "#define ${ifdef_secname}\n" );
- fwrite ( $fp, "#include <config/defaults.h>\n" );
-
- foreach ( $flags as $key => $value ) {
- // When the flag matches this section name, write it out
- if ( $flag_table[$key]["cfgsec"] == $cfgsec ) {
- fwrite ( $fp, pprint_flag ( $key, $value ) . "\n" );
- }
- }
- fwrite ( $fp, "#endif /* ${ifdef_secname} */\n" );
- fclose ( $fp );
- }
-}
-
-/**
- * Output a string to a file
- *
- * Output a given string to a given pathname. The file will be created if
- * necessary, and the string will replace the file's contents in all cases.
- *
- * @param string $fname pathname of file to output string to
- * @param string $ftext text to output to file
- *
- * @return void
- */
-function write_file_from_string ( $fname, $ftext )
-{
- $fp = fopen ( $fname, "wb" );
- if ( ! $fp ) {
- die ( "Unable to open $fname file for output!" );
- }
- fwrite ( $fp, $ftext );
- fclose ( $fp );
-}
-
-/**
- * Delete a file or recursively delete a directory tree
- *
- * @param string $file_or_dir_name name of file or directory to delete
- * @return bool Returns TRUE on success, FALSE on failure
- */
-function rm_file_or_dir ( $file_or_dir_name )
-{
- if ( ! file_exists ( $file_or_dir_name ) ) {
- return false;
- }
-
- if ( is_file ( $file_or_dir_name ) || is_link ( $file_or_dir_name ) ) {
- return unlink ( $file_or_dir_name );
- }
-
- $dir = dir ( $file_or_dir_name );
- while ( ( $dir_entry = $dir->read () ) !== false ) {
-
- if ( $dir_entry == '.' || $dir_entry == '..') {
- continue;
- }
- rm_file_or_dir ( $file_or_dir_name . '/' . $dir_entry );
- }
- $dir->close();
-
- return rmdir ( $file_or_dir_name );
-}
-
-////
-// Debugging functions
-////
-
-/**
- * Emit html code to display given array of compile options (flags)
- *
- * @param array $flags array of compile options for this build
- *
- * @return void
- */
-function show_flags ( $flags )
-{
- echo ( "\$flags contains " . count ( $flags ) . " elements:" . "<br>" );
-
- foreach ( $flags as $key => $flag ) {
- echo ( "\$flags[" . $key . "]=" . "\"$flag\"" . "<br>" );
- }
-}
-
-/**
- * Emit HTML code to display default array of compile options (flags)
- *
- * $flag_table contains default compile options and properties. This
- * routine outputs HTML code to display all properties of $flag_table.
- *
- * @return void
- */
-function dump_flag_table ()
-{
- global $flag_table;
-
- echo ( "\$flag_table contains " . count ( $flag_table ) . " elements:" . "<br>" );
-
- foreach ( $flag_table as $key => $props ) {
- print ( "flag_table[" . $key . "] = " . "<br>" );
-
- foreach ( $props as $key2 => $props2 ) {
- print ( "&nbsp;&nbsp;&nbsp;" . $key2 . " = " . $props2 . "<br>" );
- }
- }
-}
-
-// Parse src/bin/NIC file
-list ( $nics, $roms ) = parse_nic_file ();
-
-// For emacs:
-// Local variables:
-// c-basic-offset: 4
-// c-indent-level: 4
-// tab-width: 4
-// End:
-
-?>
diff --git a/contrib/vm/bochsrc.txt b/contrib/vm/bochsrc.txt
index feda98595..19db76636 100644
--- a/contrib/vm/bochsrc.txt
+++ b/contrib/vm/bochsrc.txt
@@ -25,12 +25,12 @@ plugin_ctrl: unmapped=1, biosdev=1, speaker=1, e1000=1, parallel=1, serial=1
# allows you to change all the settings that control Bochs's behavior.
# Depending on the platform there are up to 3 choices of configuration
# interface: a text mode version called "textconfig" and two graphical versions
-# called "win32config" and "wx". The text mode version uses stdin/stdout and
-# is always compiled in, unless Bochs is compiled for wx only. The choice
-# "win32config" is only available on win32 and it is the default there.
-# The choice "wx" is only available when you use "--with-wx" on the configure
-# command. If you do not write a config_interface line, Bochs will
-# choose a default for you.
+# called "win32config" and "wx". The text mode version uses stdin/stdout or
+# gui console (if available / runtime config) and is always compiled in, unless
+# Bochs is compiled for wx only. The choice "win32config" is only available on
+# win32/win64 and it is the default on these platforms. The choice "wx" is only
+# available when Bochs is compiled with wxWidgets support. If you do not write
+# a config_interface line, Bochs will choose a default for you.
#
# NOTE: if you use the "wx" configuration interface, you must also use
# the "wx" display library.
@@ -73,12 +73,14 @@ plugin_ctrl: unmapped=1, biosdev=1, speaker=1, e1000=1, parallel=1, serial=1
# "cmdmode" - call a headerbar button handler after pressing F7 (sdl, sdl2,
# win32, x)
# "fullscreen" - startup in fullscreen mode (sdl, sdl2)
-# "gui_debug" - use GTK debugger gui (sdl, sdl2, x) / Win32 debugger gui (sdl,
-# sdl2, win32)
# "hideIPS" - disable IPS output in status bar (rfb, sdl, sdl2, term, vncsrv,
# win32, wx, x)
# "nokeyrepeat" - turn off host keyboard repeat (sdl, sdl2, win32, x)
+# "no_gui_console" - use system console instead of builtin gui console
+# (rfb, sdl, sdl2, vncsrv, x)
# "timeout" - time (in seconds) to wait for client (rfb, vncsrv)
+# "gui_debug" - This option is DEPRECATED, use command line option '-dbg_gui'
+# instead. It also supports the 'globalini' extension
#
# See the examples below for other currently supported options.
# Setting up options without specifying display library is also supported.
@@ -113,9 +115,12 @@ plugin_ctrl: unmapped=1, biosdev=1, speaker=1, e1000=1, parallel=1, serial=1
#
# CPU configurations that can be selected:
# -----------------------------------------------------------------
+# i386 Intel 386SX
+# i486dx4 Intel 486DX4
# pentium Intel Pentium (P54C)
# pentium_mmx Intel Pentium MMX
# amd_k6_2_chomper AMD-K6(tm) 3D processor (Chomper)
+# athlon_xp AMD Athlon(tm) XP Processor
# p2_klamath Intel Pentium II (Klamath)
# p3_katmai Intel Pentium III (Katmai)
# p4_willamette Intel(R) Pentium(R) 4 (Willamette)
@@ -136,6 +141,26 @@ plugin_ctrl: unmapped=1, biosdev=1, speaker=1, e1000=1, parallel=1, serial=1
# corei7_ivy_bridge_3770k Intel(R) Core(TM) i7-3770K CPU (Ivy Bridge)
# corei7_haswell_4770 Intel(R) Core(TM) i7-4770 CPU (Haswell)
# broadwell_ult Intel(R) Processor 5Y70 CPU (Broadwell)
+# corei7_skylake_x Intel(R) Core(TM) i7-7800X CPU (Skylake)
+# corei3_cnl Intel(R) Core(TM) i3-8121U CPU (Cannonlake)
+# corei7_icelake_u QuadCore Intel Core i7-1065G7 (IceLake)
+# tigerlake 11th Gen Intel(R) Core(TM) i5-1135G7 (TigerLake)
+# sapphire_rapids Intel(R) Xeon(R) w9-3475X (Sappire Rapids)
+# arrow_lake 15th Gen Intel(R) Core(TM) Ultra 5 245K (ArrowLake)
+#
+# ADD_FEATURES:
+# Enable one of more CPU feature in the CPU configuration selected by MODEL.
+# Could be useful for testing CPU with newer imaginary configurations by
+# adding a specific feature or set of features to existing MODEL. The list
+# of features to add supplied through space or comma separated string.
+#
+# EXCLUDE_FEATURES:
+# Disable one of more CPU feature from CPU configuration selected by MODEL.
+# Could be useful for testing CPU without a specific feature or set of
+# features. When experiening issues booting a modern OS it could be useful
+# to disable CPU features(s) to see if they responsible for the failures.
+# The list of features to exclude supplied through space or comma separated
+# string.
#
# COUNT:
# Set the number of processors:cores per processor:threads per core when
@@ -197,151 +222,6 @@ cpu: model=core2_penryn_t9600, count=1, ips=50000000, reset_on_triple_fault=1, i
cpu: cpuid_limit_winnt=0
#=======================================================================
-# CPUID:
-#
-# This defines features and functionality supported by Bochs emulated CPU.
-# The option has no offect if CPU model was selected in CPU option.
-#
-# MMX:
-# Select MMX instruction set support.
-# This option exists only if Bochs compiled with BX_CPU_LEVEL >= 5.
-#
-# APIC:
-# Select APIC configuration (LEGACY/XAPIC/XAPIC_EXT/X2APIC).
-# This option exists only if Bochs compiled with BX_CPU_LEVEL >= 5.
-#
-# SEP:
-# Select SYSENTER/SYSEXIT instruction set support.
-# This option exists only if Bochs compiled with BX_CPU_LEVEL >= 6.
-#
-# SIMD:
-# Select SIMD instructions support.
-# Any of NONE/SSE/SSE2/SSE3/SSSE3/SSE4_1/SSE4_2/AVX/AVX2/AVX512
-# could be selected.
-#
-# This option exists only if Bochs compiled with BX_CPU_LEVEL >= 6.
-# The AVX choises exists only if Bochs compiled with --enable-avx option.
-#
-# SSE4A:
-# Select AMD SSE4A instructions support.
-# This option exists only if Bochs compiled with BX_CPU_LEVEL >= 6.
-#
-# MISALIGNED_SSE:
-# Select AMD Misaligned SSE mode support.
-# This option exists only if Bochs compiled with BX_CPU_LEVEL >= 6.
-#
-# AES:
-# Select AES instruction set support.
-# This option exists only if Bochs compiled with BX_CPU_LEVEL >= 6.
-#
-# SHA:
-# Select SHA instruction set support.
-# This option exists only if Bochs compiled with BX_CPU_LEVEL >= 6.
-#
-# MOVBE:
-# Select MOVBE Intel(R) Atom instruction support.
-# This option exists only if Bochs compiled with BX_CPU_LEVEL >= 6.
-#
-# ADX:
-# Select ADCX/ADOX instructions support.
-# This option exists only if Bochs compiled with BX_CPU_LEVEL >= 6.
-#
-# XSAVE:
-# Select XSAVE extensions support.
-# This option exists only if Bochs compiled with BX_CPU_LEVEL >= 6.
-#
-# XSAVEOPT:
-# Select XSAVEOPT instruction support.
-# This option exists only if Bochs compiled with BX_CPU_LEVEL >= 6.
-#
-# AVX_F16C:
-# Select AVX float16 convert instructions support.
-# This option exists only if Bochs compiled with --enable-avx option.
-#
-# AVX_FMA:
-# Select AVX fused multiply add (FMA) instructions support.
-# This option exists only if Bochs compiled with --enable-avx option.
-#
-# BMI:
-# Select BMI1/BMI2 instructions support.
-# This option exists only if Bochs compiled with --enable-avx option.
-#
-# XOP:
-# Select AMD XOP instructions support.
-# This option exists only if Bochs compiled with --enable-avx option.
-#
-# FMA4:
-# Select AMD four operand FMA instructions support.
-# This option exists only if Bochs compiled with --enable-avx option.
-#
-# TBM:
-# Select AMD Trailing Bit Manipulation (TBM) instructions support.
-# This option exists only if Bochs compiled with --enable-avx option.
-#
-# X86-64:
-# Enable x86-64 and long mode support.
-# This option exists only if Bochs compiled with x86-64 support.
-#
-# 1G_PAGES:
-# Enable 1G page size support in long mode.
-# This option exists only if Bochs compiled with x86-64 support.
-#
-# PCID:
-# Enable Process-Context Identifiers (PCID) support in long mode.
-# This option exists only if Bochs compiled with x86-64 support.
-#
-# FSGSBASE:
-# Enable GS/GS BASE access instructions support in long mode.
-# This option exists only if Bochs compiled with x86-64 support.
-#
-# SMEP:
-# Enable Supervisor Mode Execution Protection (SMEP) support.
-# This option exists only if Bochs compiled with BX_CPU_LEVEL >= 6.
-#
-# SMAP:
-# Enable Supervisor Mode Access Prevention (SMAP) support.
-# This option exists only if Bochs compiled with BX_CPU_LEVEL >= 6.
-#
-# MWAIT:
-# Select MONITOR/MWAIT instructions support.
-# This option exists only if Bochs compiled with --enable-monitor-mwait.
-#
-# VMX:
-# Select VMX extensions emulation support.
-# This option exists only if Bochs compiled with --enable-vmx option.
-#
-# SVM:
-# Select AMD SVM (Secure Virtual Machine) extensions emulation support.
-# This option exists only if Bochs compiled with --enable-svm option.
-#
-# VENDOR_STRING:
-# Set the CPUID vendor string returned by CPUID(0x0). This should be a
-# twelve-character ASCII string.
-#
-# BRAND_STRING:
-# Set the CPUID vendor string returned by CPUID(0x80000002 .. 0x80000004).
-# This should be at most a forty-eight-character ASCII string.
-#
-# LEVEL:
-# Set emulated CPU level information returned by CPUID. Default value is
-# determined by configure option --enable-cpu-level. Currently supported
-# values are 5 (for Pentium and similar processors) and 6 (for P6 and
-# later processors).
-#
-# FAMILY:
-# Set model information returned by CPUID. Default family value determined
-# by configure option --enable-cpu-level.
-#
-# MODEL:
-# Set model information returned by CPUID. Default model value is 3.
-#
-# STEPPING:
-# Set stepping information returned by CPUID. Default stepping value is 3.
-#=======================================================================
-#cpuid: x86_64=1, mmx=1, sep=1, simd=sse4_2, apic=xapic, aes=1, movbe=1, xsave=1
-#cpuid: family=6, model=0x1a, stepping=5
-
-#=======================================================================
# MEMORY
# Set the amount of physical memory you want to emulate.
#
@@ -357,8 +237,14 @@ cpu: cpuid_limit_winnt=0
# memory pool. You will be warned (by FATAL PANIC) in case guest already
# used all allocated host memory and wants more.
#
+# BLOCK_SIZE:
+# Memory block size select granularity of host memory allocation. Very
+# large memory configurations might requre larger memory blocks which
+# configurations with small memory might want memory block smaller.
+# Default memory block size is 128K.
+#
#=======================================================================
-memory: guest=512, host=256
+memory: guest=512, host=256, block_size=512
#=======================================================================
# ROMIMAGE:
@@ -368,28 +254,50 @@ memory: guest=512, host=256
# starting at address 0xfffe0000, and it is exactly 128k long. The legacy
# version of the Bochs BIOS is usually loaded starting at address 0xffff0000,
# and it is exactly 64k long.
-# You can use the environment variable $BXSHARE to specify the location
-# of the BIOS.
# The usage of external large BIOS images (up to 512k) at memory top is
# now supported, but we still recommend to use the BIOS distributed with Bochs.
-# The start address is optional, since it can be calculated from image size.
-# The Bochs BIOS currently supports only the option "fastboot" to skip the
-# boot menu delay.
+#
+# FILE
+# Name of the BIOS image file. You can use the environment variable $BXSHARE
+# to specify the location of the BIOS.
+#
+# ADDRESS
+# The start address is optional, since it can be calculated from image size.
+#
+# OPTIONS
+# The Bochs BIOS currently only supports the option "fastboot" to skip the
+# boot menu delay.
+#
+# FLASH_DATA
+# This parameter defines the file name for the flash BIOS config space loaded
+# at startup if existing and saved on exit if modified. The Bochs BIOS doesn't
+# use this feature yet.
+#
+# Please note that if you use the BIOS-bochs-legacy romimage BIOS option,
+# you cannot use a PCI enabled VGA ROM BIOS.
+# Please note that if you use a SeaBIOS binary in romimage BIOS option,
+# you must use a PCI enabled VGA ROM BIOS.
#=======================================================================
#romimage: file=$BXSHARE/BIOS-bochs-latest, options=fastboot
+#romimage: file=$BXSHARE/BIOS-bochs-legacy
#romimage: file=$BXSHARE/bios.bin-1.13.0 # http://www.seabios.org/SeaBIOS
+#romimage: file=$BXSHARE/i440fx.bin, flash_data=escd.bin
+#romimage: file=asus_p6np5.bin, flash_data=escd.bin
#romimage: file=mybios.bin, address=0xfff80000 # 512k at memory top
romimage: file=bochs/bios/BIOS-bochs-latest
#=======================================================================
# VGAROMIMAGE
# You now need to load a VGA ROM BIOS into C0000.
+# Please note that if you use the BIOS-bochs-legacy romimage BIOS option,
+# you cannot use a PCI enabled VGA ROM BIOS option such as the cirrus
+# option shown below.
#=======================================================================
-#vgaromimage: file=$BXSHARE/VGABIOS-lgpl-latest
-#vgaromimage: file=bios/VGABIOS-lgpl-latest-cirrus
+#vgaromimage: file=$BXSHARE/VGABIOS-lgpl-latest.bin
+#vgaromimage: file=bios/VGABIOS-lgpl-latest-cirrus.bin
#vgaromimage: file=$BXSHARE/vgabios-cirrus.bin-1.13.0 # http://www.seabios.org/SeaVGABIOS
#vgaromimage: file=bios/VGABIOS-elpin-2.40
-vgaromimage: file=bochs/bios/VGABIOS-lgpl-latest
+vgaromimage: file=bochs/bios/VGABIOS-lgpl-latest.bin
#=======================================================================
# OPTROMIMAGE[1-4]:
@@ -406,7 +314,7 @@ vgaromimage: file=bochs/bios/VGABIOS-lgpl-latest
#optromimage2: file=optionalrom.bin, address=0xd1000
#optromimage3: file=optionalrom.bin, address=0xd2000
#optromimage4: file=optionalrom.bin, address=0xd3000
-optromimage1: file=../../src/bin/intel.rom, address=0xcb000
+optromimage1: file=../../src/bin/intel.rom, address=0xc8000
#optramimage1: file=/path/file1.img, address=0x0010000
#optramimage2: file=/path/file2.img, address=0x0020000
@@ -426,7 +334,9 @@ optromimage1: file=../../src/bin/intel.rom, address=0xcb000
# UPDATE_FREQ
# This parameter specifies the number of display updates per second.
# The VGA update timer by default uses the realtime engine with a value
-# of 5. This parameter can be changed at runtime.
+# of 10 (valid: 1 to 75). This parameter can be changed at runtime.
+# The special value 0 enables support for using the frame rate of the
+# emulated graphics device.
#
# REALTIME
# If set to 1 (default), the VGA timer is based on realtime, otherwise it
@@ -440,6 +350,10 @@ optromimage1: file=../../src/bin/intel.rom, address=0xcb000
# the monitor EDID data. By default the 'builtin' values for 'Bochs Screen'
# are used. Other choices are 'disabled' (no DDC emulation) and 'file'
# (read monitor EDID from file / path name separated with a colon).
+#
+# VBE_MEMSIZE
+# With this parameter the size of the memory for the Bochs VBE extension
+# can be defined. Valid values are 4, 8, 16 and 32 MB (default is 16 MB).
# Examples:
# vga: extension=cirrus, update_freq=10, ddc=builtin
#=======================================================================
@@ -488,6 +402,8 @@ optromimage1: file=../../src/bin/intel.rom, address=0xcb000
# KEYMAP:
# This enables a remap of a physical localized keyboard to a
# virtualized us keyboard, as the PC architecture expects.
+# Using a language specifier instead of a file name is also supported.
+# A keymap is also required by the paste feature.
#
# USER_SHORTCUT:
# This defines the keyboard shortcut to be sent when you press the "user"
@@ -504,7 +420,7 @@ optromimage1: file=../../src/bin/intel.rom, address=0xcb000
# keyboard: keymap=gui/keymaps/x11-pc-de.map
# keyboard: user_shortcut=ctrl-alt-del
#=======================================================================
-#keyboard: type=mf, serial_delay=250
+#keyboard: type=mf, serial_delay=150
#=======================================================================
# MOUSE:
@@ -529,8 +445,8 @@ optromimage1: file=../../src/bin/intel.rom, address=0xcb000
# TOGGLE:
# The default method to toggle the mouse capture at runtime is to press the
# CTRL key and the middle mouse button ('ctrl+mbutton'). This option allows
-# to change the method to 'ctrl+f10' (like DOSBox), 'ctrl+alt' (like QEMU)
-# or 'f12'.
+# to change the method to 'ctrl+f10' (like DOSBox), 'ctrl+alt' (legacy QEMU),
+# 'ctrl+alt+g' (QEMU current) or 'f12'.
#
# Examples:
# mouse: enabled=1
@@ -567,7 +483,8 @@ mouse: enabled=0
# PCI chipset. These options can be specified as comma-separated values.
# By default the "Bochs i440FX" chipset enables the ACPI and HPET devices, but
# original i440FX doesn't support them. The options 'noacpi' and 'nohpet' make
-# it possible to disable them.
+# it possible to disable them. The option 'noagp' disables the incomplete AGP
+# subsystem of the i440BX chipset.
#
# Example:
# pci: enabled=1, chipset=i440fx, slot1=pcivga, slot2=ne2k, advopts=noacpi
@@ -772,10 +689,11 @@ ata3: enabled=0, ioaddr1=0x168, ioaddr2=0x360, irq=9
# This defines the boot sequence. Now you can specify up to 3 boot drives,
# which can be 'floppy', 'disk', 'cdrom' or 'network' (boot ROM).
# Legacy 'a' and 'c' are also supported.
+# The new boot choice 'usb' is only supported by the i440fx.bin BIOS.
# Examples:
# boot: floppy
# boot: cdrom, disk
-# boot: network, disk
+# boot: network, usb, disk
# boot: cdrom, floppy, disk
#=======================================================================
#boot: floppy
@@ -929,15 +847,15 @@ parport1: enabled=1, file="parport.out"
# waveoutdrv:
# This defines the driver to be used for the waveout feature.
# Possible values are 'file' (all wave data sent to file), 'dummy' (no
-# output) and the platform-dependant drivers 'alsa', 'oss', 'osx', 'sdl'
-# and 'win'.
+# output), 'pulse', 'sdl' (both cross-platform) and the platform-dependant
+# drivers 'alsa', 'oss', 'osx' and 'win'.
# waveout:
# This defines the device to be used for wave output (if necessary) or
# the output file for the 'file' driver.
# waveindrv:
# This defines the driver to be used for the wavein feature.
-# Possible values are 'dummy' (recording silence) and platform-dependent
-# drivers 'alsa', 'oss', 'sdl' and 'win'.
+# Possible values are 'dummy' (recording silence), 'pulse', 'sdl' (both
+# cross-platform) and platform-dependent drivers 'alsa', 'oss' and 'win'.
# wavein:
# This defines the device to be used for wave input (if necessary).
# midioutdrv:
@@ -967,6 +885,7 @@ parport1: enabled=1, file="parport.out"
# the Beep() function. The 'gui' mode forwards the beep to the related
# gui methods (currently only used by the Carbon gui).
#=======================================================================
+#speaker: enabled=1, mode=sound, volume=15
speaker: enabled=1, mode=system
#=======================================================================
@@ -1000,14 +919,15 @@ speaker: enabled=1, mode=system
# log: The file to write the sb16 emulator messages to.
# dmatimer:
# microseconds per second for a DMA cycle. Make it smaller to fix
-# non-continuous sound. 750000 is usually a good value. This needs a
-# reasonably correct setting for the IPS parameter of the CPU option.
+# non-continuous sound. 1000000 is usually a good value. This needs a
+# reasonably correct setting for the IPS parameter of the CPU option
+# and also depends on the clock sync setting.
#
# Examples for output modes:
# sb16: midimode=2, midifile="output.mid", wavemode=1 # MIDI to file
# sb16: midimode=1, wavemode=3, wavefile="output.wav" # wave to file and device
#=======================================================================
-#sb16: midimode=1, wavemode=1, loglevel=2, log=sb16.log, dmatimer=600000
+#sb16: midimode=1, wavemode=1, loglevel=2, log=sb16.log, dmatimer=900000
#=======================================================================
# ES1370:
@@ -1069,7 +989,8 @@ speaker: enabled=1, mode=system
#
# BOOTROM: The bootrom value is optional, and is the name of the ROM image
# to load. Note that this feature is only implemented for the PCI version of
-# the NE2000.
+# the NE2000. For the ISA version using one of the 'optromimage[1-4]' options
+# must be used instead of this one.
#
# If you don't want to make connections to any physical networks,
# you can use the following 'ethmod's to simulate a virtual network.
@@ -1137,34 +1058,40 @@ e1000: enabled=1, mac=52:54:00:12:34:56, ethmod=tuntap, ethdev=/dev/net/tun:tap0
# the numeric keypad to the USB device instead of the PS/2 keyboard. If the
# keyboard is selected, all key events are sent to the USB device.
#
-# To connect a 'flat' mode image as a USB hardisk you can use the 'disk' device
-# with the path to the image separated with a colon. To use other disk image modes
-# similar to ATA disks the syntax 'disk:mode:filename' must be used (see below).
+# To connect a disk image as a USB hardisk you can use the 'disk' device. Use
+# the 'path' option in the optionsX parameter to specify the path to the image
+# separated with a colon. To use other disk image modes similar to ATA disks
+# the syntax 'path:mode:filename' must be used (see below).
#
-# To emulate a USB cdrom you can use the 'cdrom' device name and the path to
-# an ISO image or raw device name also separated with a colon. An option to
-# insert/eject media is available in the runtime configuration.
+# To emulate a USB cdrom you can use the 'cdrom' device and the path to an
+# ISO image or raw device name can be set with the 'path' option in the
+# optionsX parameter also separated with a colon. An option to insert/eject
+# media is available in the runtime configuration.
#
-# To emulate a USB floppy you can use the 'floppy' device with the path to the
-# image separated with a colon. To use the VVFAT image mode similar to the
-# legacy floppy the syntax 'floppy:vvfat:directory' must be used (see below).
+# To emulate a USB floppy you can use the 'floppy' device and the path to a
+# floppy image can be set with the 'path' option in the optionsX parameter
+# separated with a colon. To use the VVFAT image mode similar to the legacy
+# floppy the syntax 'path:vvfat:directory' must be used (see below).
# An option to insert/eject media is available in the runtime configuration.
#
# The device name 'hub' connects an external hub with max. 8 ports (default: 4)
-# to the root hub. To specify the number of ports you have to add the value
-# separated with a colon. Connecting devices to the external hub ports is only
-# available in the runtime configuration.
+# to the root hub. To specify the number of ports you have to use the 'ports'
+# option in the optionsX parameter with the value separated with a colon.
+# Connecting devices to the external hub ports is only available in the runtime
+# configuration.
#
# The device 'printer' emulates the HP Deskjet 920C printer. The PCL data is
-# sent to a file specified in bochsrc.txt. The current code appends the PCL
-# code to the file if the file already existed. The output file can be
-# changed at runtime.
+# sent to a file specified in the 'file' option with the optionsX parameter.
+# The current code appends the PCL code to the file if the file already existed.
+# The output file can be changed at runtime.
#
# The optionsX parameter can be used to assign specific options to the device
-# connected to the corresponding USB port. Currently this feature is used to
-# set the speed reported by device ('low', 'full', 'high' or 'super'). The
-# available speed choices depend on both HC and device. The option 'debug' turns
-# on debug output for the device at connection time.
+# connected to the corresponding USB port. The option 'speed' can be used to set
+# the speed reported by device ('low', 'full', 'high' or 'super'). The available
+# speed choices depend on both HC and device. The option 'debug' turns on debug
+# output for the device at connection time. The option 'pcap' turns on packet
+# logging in PCAP format.
+#
# For the USB 'disk' device the optionsX parameter can be used to specify an
# alternative redolog file (journal) of some image modes. For 'vvfat' mode USB
# disks the optionsX parameter can be used to specify the disk size (range
@@ -1174,15 +1101,23 @@ e1000: enabled=1, mac=52:54:00:12:34:56, ethmod=tuntap, ethdev=/dev/net/tun:tap0
# supported (can fix hw detection in some guest OS). The USB floppy also
# accepts the parameter "write_protected" with valid values 0 and 1 to select
# the access mode (default is 0).
+#
+# For a high- or super-speed USB 'disk' device the optionsX parameter can include
+# the 'proto:bbb' or 'proto:uasp' parameter specifying to use either the bulk-only
+# Protocol (default) or the USB Attached SCSI Protocol. If no such parameter
+# is given, the 'bbb' protocol is used. A Guest that doesn't support UASP
+# should revert to bbb even if the 'uasp' attribute is given. See the usb_ehci:
+# or usb_xhci: section below for an example. (Only 1 LUN is available at this time)
#=======================================================================
#usb_uhci: enabled=1
-#usb_uhci: enabled=1, port1=mouse, port2=disk:usbstick.img
-#usb_uhci: enabled=1, port1=hub:7, port2=disk:growing:usbdisk.img
-#usb_uhci: enabled=1, port2=disk:undoable:usbdisk.img, options2=journal:redo.log
-#usb_uhci: enabled=1, port2=disk:usbdisk2.img, options2=sect_size:1024
-#usb_uhci: enabled=1, port2=disk:vvfat:vvfat, options2="debug,speed:full"
-#usb_uhci: enabled=1, port1=printer:printdata.bin, port2=cdrom:image.iso
-#usb_uhci: enabled=1, port2=floppy:vvfat:diskette, options2="model:teac"
+#usb_uhci: port1=mouse, port2=disk, options2="path:usbstick.img"
+#usb_uhci: port1=hub, options1="ports:6, pcap:outfile.pcap"
+#usb_uhci: port2=disk, options2="path:undoable:usbdisk.img, journal:u.redolog"
+#usb_uhci: port2=disk, options2=""path:usbdisk2.img, sect_size:1024"
+#usb_uhci: port2=disk, options2="path:vvfat:vvfat, debug, speed:full"
+#usb_uhci: port2=cdrom, options2="path:image.iso"
+#usb_uhci: port1=printer, options1="file:printdata.bin"
+#usb_uhci: port2=floppy, options2="path:vvfat:diskette, model:teac"
#=======================================================================
# USB_OHCI:
@@ -1200,19 +1135,61 @@ e1000: enabled=1, mac=52:54:00:12:34:56, ethmod=tuntap, ethdev=/dev/net/tun:tap0
# 6-port hub. The portX parameter accepts the same device types with the
# same syntax as the UHCI controller (see above). The optionsX parameter is
# also available on EHCI.
+# The HC will default to three UHCI companion controllers, but you can specify
+# either UHCI or OHCI. Each companion controller will be evenly divided
+# with 2 ports each, the first 2 on the first companion, and so on.
#=======================================================================
#usb_ehci: enabled=1
+#usb_ehci: enabled=1, companion=uhci
+#usb_ehci: enabled=1, companion=ohci
+#usb_ehci: port1=disk, options1="speed:high, path:hdd.img, proto:bbb"
+#usb_ehci: port1=disk, options1="speed:high, path:hdd.img, proto:uasp"
#=======================================================================
# USB_XHCI:
# This option controls the presence of the USB xHCI host controller with a
-# 4-port hub. The portX parameter accepts the same device types with the
-# same syntax as the UHCI controller (see above). The optionsX parameter is
-# also available on xHCI. NOTE: port 1 and 2 are USB3 and only support
-# super-speed devices, but port 3 and 4 are USB2 and support speed settings
-# low, full and high.
+# default 4-port hub. The portX parameter accepts the same device types
+# with the same syntax as the UHCI controller (see above). The optionsX
+# parameter is also available on xHCI.
+#
+# The xHCI emulation allows you to set the number of ports used with a range
+# of 2 to 10, requiring an even numbered count.
+#
+# NOTE: The first half of the ports, (ports 1 and 2 on a 4-port hub) are
+# USB3 only and support super-speed devices. The second half ports (ports
+# 3 and 4) are USB2 and support speed settings of low, full, or high.
+# The xHCI also allows for different host controllers using the model=
+# parameter. Currently, the two allowed options are "uPD720202" and
+# "uPD720201". The first defaults to 2 sockets (4 ports) and the later
+# defaults to 4 sockets (8 ports).
+#=======================================================================
+#usb_xhci: enabled=1 # defaults to the uPD720202 w/4 ports
+#usb_xhci: enabled=1, n_ports=6 # defaults to the uPD720202 w/6 ports
+#usb_xhci: enabled=1, model=uPD720202 # defaults to 4 ports
+#usb_xhci: enabled=1, model=uPD720202, n_ports=6 # change to 6 ports
+#usb_xhci: enabled=1, model=uPD720201 # defaults to 8 ports
+#usb_xhci: enabled=1, model=uPD720201, n_ports=10 # change to 10 ports
+#usb_xhci: port1=disk, options1="speed:super, path:hdd.img, proto:bbb"
+#usb_xhci: port1=disk, options1="speed:super, path:hdd.img, proto:uasp"
+#usb_xhci: port3=disk, options3="speed:high, path:hdd.img, proto:uasp"
+
#=======================================================================
-#usb_xhci: enabled=1
+# USB Debugger:
+# This is the experimental USB Debugger for the Windows Platform.
+# Specify a type (none, uhci, ohci, ehci, xhci) and one or more triggers.
+# (Currently, only xhci is supported, with some uhci in the process)
+# Triggers:
+# reset: will break and load the debugger on a port reset
+# enable: will break and load the debugger on a port enable
+# doorbell: will break and load the debugger a xHCI Command Ring addition
+# event: will break and load the debugger on a xHCI Event Ring addition
+# data: will break and load the debugger on a xHCI Data Ring addition
+# start_frame: will break and load the debugger on start of frame
+# (this is different for each controller type)
+# non_exist: will break and load the debugger on a non-existant port access
+# (experimental and is under development)
+#=======================================================================
+#usb_debug: type=xhci, reset=1, enable=1, start_frame=1, doorbell=1, event=1, data=1, non_exist=1
#=======================================================================
# PCIDEV:
@@ -1232,11 +1209,20 @@ e1000: enabled=1, mac=52:54:00:12:34:56, ethmod=tuntap, ethdev=/dev/net/tun:tap0
#=======================================================================
# MAGIC_BREAK:
# This enables the "magic breakpoint" feature when using the debugger.
-# The useless cpu instruction XCHG BX, BX causes Bochs to enter the
+# The useless cpu instructions XCHG %REGW, %REGW causes Bochs to enter the
# debugger mode. This might be useful for software development.
#
-# Example:
+# You can specify multiple at once:
+#
+# cx dx bx sp bp si di
+#
+# Example for breaking on "XCHGW %DI, %DI" or "XCHG %SP, %SP" execution
+# magic_break: enabled=1 di sp
+#
+# If nothing is specified, the default will be used: XCHGW %BX, %BX
# magic_break: enabled=1
+#
+# Note: Windows XP ntldr can cause problems with XCHGW %BX, %BX
#=======================================================================
magic_break: enabled=1
@@ -1262,12 +1248,27 @@ magic_break: enabled=1
# very early when writing BIOS or OS code for example, without having to
# bother with setting up a serial port or etc. Reading from port 0xE9 will
# will return 0xe9 to let you know if the feature is available.
-# Leave this 0 unless you have a reason to use it.
+# Leave this 0 unless you have a reason to use it. By enabling the
+# 'all_rings' option, you can utilize the port e9 hack from ring3.
#
# Example:
# port_e9_hack: enabled=1
+# port_e9_hack: enabled=1, all_rings=1
+#=======================================================================
+port_e9_hack: enabled=1, all_rings=1
+
+#=======================================================================
+# IODEBUG:
+# I/O Interface to Bochs Debugger plugin allows the code running inside
+# Bochs to monitor memory ranges, trace individual instructions, and
+# observe register values during execution. By enabling the 'all_rings'
+# option, you can utilize the iodebug ports from ring3. For more
+# information, refer to "Advanced debugger usage" documentation.
+#
+# Example:
+# iodebug: all_rings=1
#=======================================================================
-port_e9_hack: enabled=1
+#iodebug: all_rings=1
#=======================================================================
# fullscreen: ONLY IMPLEMENTED ON AMIGA