2001-10-14 Thierry Laronde
Raison d'ĂȘtre:
- allow booting from CD via El Torito extensions.
- allow booting and using extended (unusual) floppy formats.
General modifications:
- WARNING: COMPATIBILITY BROKEN!!! The compatibility
version number has reached 4.0, and, more importantly, the place
to search for it in stage1 has changed. YOU NEED COMPATIBLE
STAGE1, STAGE2 and GRUB SHELL!!!
- Identifying GRUB: in stage1, at offset 0x3 one finds the
following string:
"GRUB "'\0' /* exactly 8 bytes */
[This string is also used by the `message' routine; it now stops
displaying at the first non printable character]
- New variables: `grub_run_flags', `old_int1e', `bios_description',
array of disk structure `kdisks'.
- All flags are passed at installation time to
stage1_inst_flags, at running time to `grub_run_flags' --- "8 bits
flags should be enough for everybody" TL :-^
- The data organization in stage1[.S] has changed
- The values of numerous constants have been corrected [in
stage.h]. The value for BPB length was wrong for example.
- All the routines for probing floppies have been removed, and
replaced by the standard call, the number of floppies being
obtained via INT 11h, and being corrected in case of El Torito
floppy emulation [see stage2/common.c].
- A general disks array [kdisks] is created and filled at
initialization time, devices being probed later only if they are
flagged REMOVABLE. The mbi structures have not been changed, and
the grub shell `disks' is kept at the moment -> unification have
to be done later.
- Names of magic numbers or constants have been changed
with the following principles:
if this is a memory location, the name is composed:
__OFFSET
if this is a value, the name is composed:
_DESCRIPTION /* whether it's used by STAGE1
only or not */
Details by file:
* stage1/stage1.S: major rewrite, add El Torito and customized
geometry support, remove floppy probe routines. DATA
organization changed, tons of comments added: please read
it! To be noted: initialization of `grub_run_flags'.
* stage1/stage1.h: corrections of names and values. Added
numerous constants, specially about BPB and stage1 installation
time flags, and GRUB run time flags. The BPB constants have been
moved from stage2/shared.h to stage1/stage1.h.
* stage2/start.S: modified to match the new data structure in
stage1.
* stage2/asm.S:
- recopy stage1 important data: `grub_run_flags',
`bios_description', geometry of the booting drive (if CHS) in
`boot_disk_geom', `old_int1e'
- removed function `get_diskinfo_floppy'
- added function `disk_changed'
- added code to retrieve the BIOS description of the machine
(mainly for the number of floppy drives [used in common.c])
* stage2/common.c: initialization of new structure kdisks,
probing _all_ the drives, including floppy drives.
* stage2/bios.c:
- removed references to get_diskinfo_floppy
- modification of get_diskinfo to handle the new disks array
`kdisks'.
* stage2/builtins.c:
- updated name of constants
- geometry_func: new options to write and set the geometry
* grub/grub/asmstub.c: initializations of global variables
unused: boot_disk_geom, bios_description, grub_run_flags.
* docs/grub.texi: advertised support for El Torito and unusual
floppy formats. Updated `geometry' function description.