grub-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Replacing the legacy "map" command


From: Javier Martín
Subject: Replacing the legacy "map" command
Date: Tue, 27 May 2008 03:36:49 +0200

First of all, hi there! I'm a 19-old Spanish student and this is my
first post in this list. On to GRUB now:

I'm interested in reimplementing the "map" command from GRUB legacy,
since it may be required by some OSes, specifically M$ Windows, to
boot if they are installed on an HD that was the "first drive" (for
the BIOS) but that is no longer. In particular, my setup is:

SATA channel 1: Samsung 500GB, Windows XP Pro x64
SATA channel 2: Maxtor 300GB, Ubuntu Linux, GRUB installation

However, the BIOS is set to boot from the 300GB drive, and thus at
boot time the Windows drive becomes (hd1): while in GRUB Legacy I
succeeded in booting if I swapped the two BIOS drives with the "map"
command, in GRUB 2 the best result I've got is an "Error loading
operating system" from the Windows boot sector (confirmed after dding
it and grepping for the message).

This message is mainly concerned with "how should I implement it"?
Since this functionality is AFAIK exclusive to the x86/amd64 PC-BIOS
target, it should be confined there, but there are at least two paths
of action that I can think of:
 1.- Given that only the chain OS loader makes use of such a switch, I
could add it as an option to the "chainloader" command. This is the
simplest path, as it would only require modifying
loader/i386/pc/chainloader* and kern/i386/pc/startup.S (where
grub_chainloader_real_boot resides). Such an option would most
probably be named something like "mapdrivefirst", as in "chainloader
--mapdrivefirst (hd1)+1".
 2.- The other option would be to add a new command that managed the
BIOS drive mappings (like, "biosdrivesmap", duh), with three main
options: "show", "map" and "reset". I'm still unsure of what files
should be modified for this change, and this might be overkill.
No matter how the UI (the commands) actually ends up, the mappings
would just be stored in a variable, and not applied until the "boot"
command is issued. Thus, actual functionality should probably be
implemented in grub_chainloader_real_boot, and the logic is pretty
simple, with most of it available in the GRUB Legacy code.

All in all, I'm asking for your thoughts, opinions, advices and
whatever, since I'm the new guy here and I'd like to learn from this.
I might not be able to start right away, since I'm flooded with exams
right now: I could take it as a summer project, though I don't expect
it to take too long - an experienced GRUB hacker could even do it in
the day, but I'm not included in that set, so I think I could have a
testable version within a week if I don't find any problems.
Well, if you have read through all this, thanks for your attention and cheers!
Habbit




reply via email to

[Prev in Thread] Current Thread [Next in Thread]