BIOS extender
From Grub4Dos Wiki
A BIOS extender is an applications which does a part of a task normally the BIOS could do itself in a more reliable way. It adds new functionality or it will try to implement existing functionality in a way with less bugs or better features.
All public known BIOS extender for IBM compatible computer with legacy BIOS do not write code to the BIOS directly, this means them do not attempt to flash it, therefore chances that hardware gets damaged isn't higher then with any regular software you know. The BIOS extender itself is software inside a file, image or folder on a regular data medium which must be booted by the BIOS or a bootloader. The BIOS extender itself will chainboot another bootloader or bootmanager (similar, a bootmanger is just an advanced bootloader and minimal operating system).
It's basically a driver loaded before the real operating system is getting chainbooted. The driver hooks BIOS services and is available even after the real operating system was getting chainbooted and is still in real mode. In most cases the operating system isn't aware that a BIOS extender is active. Therefore BIOS extenders works well as long the operating system is in real mode (DOS all the time, Windows and Linux operating systems only in bootstrapping phase). To get the operating system to inherit the new features in protected mode (such as after booting Windows from USB on a BIOS with no BIOS support) this is up to the tweaks made in the operating system.
Contents |
list with existing BIOS extenders
pure software
grub4dos
- grub4dos can boot from CD-ROM's where the BIOS isn't able to. Only ATAPI CD-ROM's are supported. The code is Free and has it's source at Smart BootManager and isn't currently enhanced by grub4dos developers.
- grub4dos can make CD-ROM's available to DOS if DOS is using a "half" generic CD-ROM driver, see eltorito.
- Rather is grub4dos able to use images and to emulate them at boot time to a virtual floppy, CD-ROM or harddisk and to boot them.
Bootable CD Loader
BCDL can boot from CD-ROM's where the BIOS isn't able to. It supports ATAPI CD-ROM's and has also some support for USB CD-ROM's. Latest stable version is v1.50Z and latest alpha version is v2.0a1.
PLoP Bootmanager
License: closed source, freeware
If you want to boot USB but your BIOS does not support booting from USB then there is currently one known software to ship around this limitation, PLoP Bootmanager. It can be booted from floppy or CD. It has the ability to boot from USB even if BIOS does not support from USB. It's compatible with HIMEM.EXE.
PLoP Bootmanager makes it possible to boot from
- USB pendrives,
- USB harddrives,
- USB cardreaders and
- CD/DVD (probable ATAPI only, USB-CDROM is explicitly not supported yet, no comments about connectors)
where the BIOS isn't able to itself. PLoP Bootmanager is still active maintained and developed. Unfortunately it's not Open Source but freeware and a very nice addition to grub4dos.
Any issues (not working for your USB device) may be reported to the developer and maybe he can provide an improved version. Before contacting him make sure the fault is not on your side, only if the USB device is booting on another computers BIOS contact him.
Advantages:
- Booting Windows for the real mode part works always, the protected mode part of Windows is up to the tweaks made.
- Booting Linux works always perfect as soon the USB controller is supported by PLoP (most are already) and as long the Linux kernel has USB support for the specific controller (almost always).
- It even works in VMware for USB booting!
- USB 2.0 support
- fast thought caching mechanism
Limitations:
- It implements only read access, no write support yet.
- No USB hub support.
- Only support for USB-HDD (harddisks and pendrives) and USB-cardreader. (No support for USB-FDD, USB-ZIP and USB-CDROM.)
- It works only for real mode operating systems and real mode applications using INT 13. (Like for any currently existing BIOS extender there is no whole controller implemented an protected mode operating system could takeover.)
- While the PLoP USB driver is active EMM386.EXE will crash in DOS (there is a workaround below).
- While the PLoP USB driver is active other DOS USB drivers will hang during loading (there is a workaround below).
USB legacy support for mass storage
Since PLoP Bootmanager 5.0.3 it provides also now a limited implementation for USB legacy support for mass storage, it works only for one USB mass storage at the same time. This means you can now boot from a non-USB boot device such as harddisk and use PLoP to make the USB-device available thought INT 13, that way also grub4dos can access it.
The following examples try to show how it can work. (hd0) is internal harddisk and (hd1) is the new USB-device which the PLoP USB driver made available.
Example #1:
BIOS -> harddisk (hd0) -> grub4dos ->
load PLoP USB driver -> return to grub4dos -> chainloader (hd1)+1
Result #1:
booting from an BIOS without USB legacy support for mass storage and
chainbooted an USB-device anyway
Example #2:
BIOS -> harddisk (hd0) -> grub4dos ->
load PLoP USB driver -> return to grub4dos -> kernel (hd1,0)/memtest.bin
Result #2:
booted from an BIOS without USB legacy support for mass storage and
booted a kernel from an USB-device anyway
More info on http://www.plop.at/en/bootmanager.html#drv
PLoP Bootmanager as DOS USB driver
Because PLoP Bootmanager provides INT 13 it can now be also used as a DOS USB driver. FAT partitions are instantly accessible and it is also compatible with DOS filesystem (NTFS) drivers.
Example:
BIOS -> harddisk (hd0) -> grub4dos ->
load PLoP USB driver -> return to grub4dos ->
chainloader (hd0,0)/kernel.sys ->
C: will be now the internal harddisk and D: (if FAT) will be now the USB-device
Result:
Used PLoP Bootmanager as DOS USB driver for an USB-device which has actually not been booted.
Using PLoP Bootmanager as DOS USB driver has the advantage that the "driver" is recent from 2009, still developed/maintained/bugfixed, fast USB 2.0 with caching.
More info on http://www.plop.at/en/bootmanager.html#drv
DOS
EMM386.EXE
Using an expanded memory manager for EMS/XMS like EMM386.EXE, JEMME386.EXE or JEMMX.EXE while the PLoP USB driver is active will result in a crash due to a conflict with protected mode. Since release of PLoP Bootmanager 5.03 there is now a tool plpdisd.exe which can disable the PLoP Bootmanager USB driver after you have booted from USB. This makes only sense if you used before a grub4dos virtual boot device emulation (map --mem) or syslinux's memdisk to boot into a DOS ramdisk. See http://www.plop.at/en/bootmanager.html#plpdisd
Example:
BIOS -> CD-ROM -> PLoP Bootmanager -> USB ->
grub4dos -> mapping a virtual device into memory (map --mem) ->
plpdisd.exe -> JEMMEX.EXE LOAD
Result:
booted from USB on USB-unaware BIOS with full expanded memory manager support
other DOS USB drivers
Loading other DOS USB driver is useful if you want to get write access to the USB-device. However, if you try to load an DOS USB driver while the PLoP USB driver is still active then the DOS USB driver will most likely hang (as the USB controller is still in use and in a modified state). To deactivate the PLoP USB driver you can use plpdisd.exe and load the DOS USB driver afterwards.
Example #1:
BIOS -> CD-ROM -> PLoP Bootmanager -> USB ->
grub4dos -> mapping a virtual device into memory (map --mem) -> plpdisd.exe -> DOS USB driver.
Result #1:
booted DOS from USB on a USB-unaware BIOS with full read and write access
Example #2:
BIOS -> CD-ROM -> PLoP Bootmanager -> USB ->
grub4dos -> mapping a virtual device into memory (map --mem) ->
plpdisd.exe -> JEMMEX.EXE LOAD -> DOS USB driver.
Result #2:
booted DOS from USB on a USB-unaware BIOS
with full read and write access and with full expanded memory manager support
CD-ROM driver
After booting from any device (but not CD-ROM) and in case grub4dos's cdrom --init is not working you can also try to use the PLoP CD-ROM driver. More info on http://www.plop.at/en/bootmanager.html#drv
It may also work in future similar to "half" generic DOS CD-ROM driver.
gPXE
Previously known as Etherboot is a network bootloader with many advanced features and still under developement.
system encryption software
Full disk encryption software able to encrypt also the NT-based Microsoft Windows (XP, Vista, 7) system/boot partition, such as TrueCrypt, replace the default NT MBR (and sometimes bootloader) and replace it with their own one. Their real mode encryption driver hooks INT 13 and inserts the encryption driver between so the Windows can access it's startup files in the short real mode part in the bootstrap phase from the encrypted harddisk.
breaking harddisk size limitations
Some BIOS's are to old to detect and support the full size of a new harddisk (for example 8 GB boundary) and perhaps there is no BIOS update available. Examples: EZ-Drive by Micro House and Disk Manager by Ontrack. For more see link.
hardware - BIOS extension ROM
Some addon cards have a BIOS extension ROMs.
network cards
have mosttimes a proprietary PXE boot ROM which can be invoked by telling the BIOS to boot from LAN.
controller cards
such as for SCSI and SATA include their own BIOS to support booting and access to the harddisks connected by the controller addon card by telling the BIOS to boot from SCSI.
ideas for new BIOS extenders
serial console
Could be used to enter the password for pre-boot authentication on monitor-less computers.
USB legacy support
Not all BIOS's have USB legacy support included.
- USB keyboard to PS/2 emulation
- USB mouse to PS/2 emulation
- USB mass storage available thought INT 13h even if not booted
- USB floppy available thought INT 13h even if not booted
- USB-CD-ROM available thought INT 13h even if not booted
SATA / SCSI
SATA (AHCI) / SCSI available thought INT 13h even if not booted.
keyboard layout driver
Change the layout of the keyboard so keyboards from non-US countrys work like with expected. Just like keyb.com for DOS, mabye it can be ported.
TCP/IP keyboard / mouse / monitor
Keyboard / mouse / monitor connected over TCP/IP available right at boot time.
