====== Etherboot image types ======
Using rom-o-matic, or compiling Etherboot yourself, you will be able to generate different file types, depending on your needs.
Those file types shall be explained here:
===== Floppy bootable ROM image (.zdsk) =====
These files are meant to be used on floppy disks. If you obtained such a file, copy it to a floppy: Under Linux, cat etherboot.zdsk > /dev/fd0 will mostly do the trick. Programs for windows are also available; raw disk access is an add-on-feature on windows, which ''rawrite'' can be used for. [[http://www.redhat.com/docs/manuals/linux/RHL-7.1-Manual/alpha-install-guide/s1-makediskette-rawrite.html|RedHat has an explanation]] of rawrite usage.
Those files can also be used to run [[vmware|Etherboot inside VMware]]. Bochs and qemu might also work.
===== Binary ROM image (.zrom) =====
Binary ROM images are meant to be [[burningroms|burned into a ROM chip]], which then is set into the ROM socket on a network card.
Those files can also be patched into a Mainboard BIOS, at least for Modular Award and AMI BIOSes this has been done successfully.
The advantages of adding EtherBoot into a mainboard BIOS:
* Fast access
* easier management, because of using BIOS flash utilities\\ ( programming a network card (Flash)EEPROM is generally more complicated/time consuming )
* Further EEPROMs are not necessary\\ (Using EtherBoot ROM directly on/with a network card, needs a further EEPROM at first. Embedding EtherBoot ROM into a mainboard BIOS does not require a further EEPROM.)
Read [[biosmodule|this article]] to find out how to patch Etherboot into a Mainboard BIOS.
Information about [[vmwarebios|using .zrom files in VMware and bochs]] is also available.
[[http://www.codebreakers-journal.com/index.php/CodeBreakersJournal/article/view/12/13|A Codebreakers-Journal article]] describes the whereabouts of Option ROMs in the PC boot process.
===== ISO bootable images (.iso, .liso) =====
Those files are meant to be burnt onto a CD-ROM. Although very small (what a waste of disk space), there might be situations where PCs can reasonably be booted from CD-ROM instead of floppy disk, to run Etherboot later.
The difference between those two lies in the mechanism of disk access (and details are to be found in the source, if you really need to know). Try one, if it does not work with your BIOS, try the others. *FIXME* A recommendation of the method rather expected to work would be nice.
===== LILO/GRUB/SysLinux files (.zlilo) =====
Those files are meant to be loaded by any of those bootloaders. To the bootloader, it will look like a Linux kernel, so just go ahead as you would with inserting another kernel file into your bootmanager configuration.
==== Using lilo on a floppy ====
Marty Connor wrote an explanation on how to use .zlilo files on a floppy:
First, you need a formatted floppy. I would recommend doing:
fdformat /dev/fd0H1440
Which will low-level format a standard double-sided 1.44M floppy disk.
If your floppy is already DOS formatted, you can probably skip this
step.
Next, you can do:
mformat -f 1440 a:
Which puts a DOS filesystem on the floppy ( and makes sure the floppy
geometry is known :) ).
Next, let's use SYSLINUX to make the floppy bootable:
syslinux /dev/fd0
After this step, you have a bootable floppy, but nothing to boot.
Let's fix that.
First we'll need something to boot. Make a .zlilo file using rom-o-
matic.net or, since you're writing a driver, something like:
make bin/mynic.zlilo
Let's put it on the DOS floppy, using an 8.3 format name:
mcopy bin/mynic.zlilo a:mynic.zli
Now, we just need to tell SYSLINUX to boot our image. For that, you
need a file called "syslinux.cfg" on the floppy.
So first, create a text file in emacs, vi, or whatever your favorite
text editor is, and put the following three lines in it:
DEFAULT mynic.zli
LABEL mynic.zli
KERNEL mynic.zli
Save the file as syslinux.cfg.
Now, copy the file to the floppy with:
mcopy syslinux.cfg a:
You can do:
mdir a:
to see the contents of your floppy:
Volume in drive A has no label
Volume Serial Number is 063C-F9DA
Directory for A:/
ldlinux sys 8236 2006-06-21 10:43
mynic zli 25162 2006-06-21 10:50 mynic.zli
SYSLINUX CFG 57 2006-06-21 10:58 syslinux.cfg
4 files 33 512 bytes
1 422 336 bytes free
You now have a bootable DOS formatted floppy that you can put into
your test machine, and it should load and run your .zlilo formatted
Etherboot image.
One of the nice things about this is that when you want to update
your floppy, you can just do:
mcopy mynic.zlilo a:mynic.zli
and the floppy is ready to go. It makes for easy testing.
Of course, if your testing machine has a hard drive, you can use GRUB
or LILO to load an Etherboot .zlilo (or .lilo) image. LILO needs to
be run again if you copy a new image onto the media, because it
stores the disk location of the file. GRUB and SYSLINUX find it by
name, so just putting it in the right place with the right name is
enough.
I hope this message is helpful. It probably should be on the
Etherboot wiki or in an FAQ. (anybody want to do that? :)
Corrections and suggestions to this recipe are welcome. I am sure
there are other ways to achieve the same effect.
In particular, if the syslinux.cfg file contained:
PROMPT 1
TIMEOUT 30
DEFAULT mynic.zli
LABEL mynic.zli
KERNEL mynic.zli
SYSLINUX would display a "boot: " prompt for 3 seconds before
booting, and allow you to type in a filename instead of "mynic.zli".
This might be useful for testing alternative images without deleting
the original one.
Please let us know how things go, or if we can offer other
suggestions to make your development task easier.
Regards,
/ Marty /
==== EtherBoot from USB flash ====
An EtherBoot initial load from USB flash media is quite staightforward provided of course that your BIOS can boot from USB in the first place. A modern machine will probably be able to do this.
- BIOS
- USB master boot record
- USB partition boot record
- SYSLINUX
- EtherBoot
- Linux kernel
Your BIOS should really be able to boot from any sensible arrangement of partitions and boot sectors, but it might insist that a ZIP DRIVE geometry be used.
Required:
[[http://syslinux.zytor.com/|SYSLINUX]]
[[http://www.etherboot.org|EtherBoot]]
Once Linux is running with USB storage support, an inserted USB key will appear as a SCSI drive and be called something like ///dev/sda//, ///dev/sdb//, ///dev/sdc//,... in the following guide, the key is referred to as ///dev/sda//.
** Be certain which device name refers to your flash key as this device is about to be irrevocably erased **
===== USB Flash EtherBoot - General hard disk boot geometry =====
* If necessary, prepare Linux to handle USB storage devices. This is up to your configuration and distribution. For example, you might find these modules present if they are not already linked into the kernel:
Module Size Used by
sd_mod 19472 0
usb_storage 35588 0
libusual 14864 1 usb_storage
uhci_hcd 25100 0
usbcore 141956 4 usb_storage,libusual,uhci_hcd
* Insert USB flash key and examine //dmesg// output
sda: sda1
sd 2:0:0:0: Attached scsi removable disk sda
* Wipe the master boot record ** losing all data **
dd if=/dev/zero of=/dev/sda bs=1k count=128
* Create new partition
sfdisk /dev/sda [ENTER for defaults then (w)rite partition table]
Device Boot Start End #cyls #blocks Id System
/dev/sda1 0+ 1021 1022- 124683+ 83 Linux
/dev/sda2 0 - 0 0 0 Empty
/dev/sda3 0 - 0 0 0 Empty
/dev/sda4 0 - 0 0 0 Empty
* Mark the partition as active:
sfdisk /dev/sda -A1
* Create a DOS filesystem on the newly created active partition
mkdosfs /dev/sda1
* Install SYSLINUX onto it
syslinux /dev/sda1
* Mount the device and copy over required //networkcard.zlilo// file and corresponding //syslinux.cfg// [[eb_imagetypes#Using lilo on a floppy|just as in a diskette boot]]. There will now be three files on the flash device
root@shark(/flash)# ls
ldlinux.sys r8169.zli syslinux.cfg
root@shark(/flash)# cat syslinux.cfg
default r8169.zli
* Unmount the device, shutdown and reboot from the network.
===== USB Flash EtherBoot - ZIP drive geometry =====
An older machine may insist on a geometry which appears to your BIOS as a standard ZIP drive having 64 heads and 32 sectors per track. The number of cylinders depends on the capacity of the drive. A ZIP drive boots from partition 4.
* Use the mkdiskimage script from SYSLINUX to create a blank DOS-formatted image on your flash key, letting mkdiskimage work out the size of the device. This may take a little while to complete.
mkdiskimage -4 /dev/sda 0 64 32
* Install SYSLINUX onto the key.
syslinux /dev/sda4
* Mount /dev/sda4 and copy over required //networkcard.zlilo// file and corresponding //syslinux.cfg// [[eb_imagetypes#Using lilo on a floppy|just as in a diskette boot]]
* Unmount the device, shutdown and reboot from the network.
More recipies can be found [[http://www.beezmo.com/FloobyDustDir/FDKnoppixUsbDir/FDKnoppixUsb.htm|here]], with another source of information [[http://www.freesoftwaremagazine.com/articles/grub_intro|here]].
===== PXE bootstrap loader (.zpxe) =====
.zpxe files are meant to be loaded BY a PXE ROM, so that Etherboot can replace the PXE functionality. Please read also [[pxefilenamehack|A method to work more than one stage of PXE with stupid DHCP servers]].
===== DOS executable (.com) =====
.com files are straightforward: Boot DOS, execute etherboot.com (except that DOS only has 8.3 filenames...). You will have to find out though wether etherboot works with EMM386 loaded, for example.
===== Hard disk partition image (.zhd) =====
*FIXME*
===== ELF Rom images (.elf) - generic / LinuxBIOS =====
*FIXME*