INT13h network redirection patch for BitVisor

This patch enables BitVisor to redirect BIOS call 13h/42h (Disk Read) to a server over ethernet. This can perform network booting of tiny guest OSs (which rely on only BIOS call 13h/42h to read disks lol) on BitVisor over ethernet.

I’ll explain how to use. Before everything, prepare comparatively-new two x86 machines: a server machine (that provides OS images) and a client machine (that network-boots OSs on it). Now, follow the steps for both machines.

1. Preparing client

First of all, get the latest version of BitVisor from the repository and apply this patch to it.

Then, configure the BitVisor by modifying defconfig. All you have to do is modify .pci parameter and insert .netboot_id parameter just next to the .pci parameter like this. (0x5252 is the id number for the server. You can use any number you like. Note that BitVisor supports Intel PRO/1000, X540 10GbE, RealTek 816x and Broadcom NetXtreme.)

Make bitvisor.elf and install it on the target client machine (see its manual for details).

2. Preparing server

Then, get the server program from the repository and compile it.

Prepare an OS image (that reads disks only via BIOS call 13h/42h) that you want to boot over ethernet. (For example, patched OSv with I/O-less applications in its bootfs with “–nomount” options works fine lol)

Then, start the server program, setting the OS image as its argument. (0x5252 is the id number of the server that provides a disk image, which should be the same number with the one you used in defconfig of BitVisor.)

3. Fire!

Confirm that the server machine (where the server program is running) is connected to the target client machine (where your OS runs on BitVisor) over ethernet.

Then, start BitVisor on the target client machine, then you will see the guest OS (OSv in this example) boots on the target client machine from the disk image provided by the server instead of the local disk.

The example output of OSv on BitVisor is like this (I used “–verbose” for OSv’s boot options). BitVisor does not virtualize devices, and OSv directly runs on physical hardware interface. Note that the firmware vendor printed by OSv is “HP”, which indicates the actual firmware of the physical machine (not the one on QEMU you usually see when running OSv on KVM).

(If you’re interested in running OSv on BitVisor, see OSb.)

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">