I recommend using the "GRUB For DOS" instead of the direct boot sector loading. Easier to setup and more configurable. You simply load the grl boot file in place of your bootgrub.bin file in the boot.ini configuration. Good for getting back into linux portion of a Windows dual boot setup....

Robert

On 9/29/2009 5:10 PM, Michael wrote:
First of all, i've never tested it with Vista myself so i need to carefully 
restrict my statements to XP.

Both Windows and ThinkVantage have their own bootloader, and grub can boot that 
bootloader.
All you need is the chainloader command in grub.cfg (this is for grub2, but 
it's very similar for the legacy old grub).

In a Debian system, this file will be automaticly updated after every kernel 
install or update, and  there need to be a 'safe' way to preserve custom 
entries. This is /etc/grub/grub.d/40_custom file.

For example, to insert grub boot entries for Windows XP on partition sda1 and 
Thinkvantage on sda2, you would put this into 40_custom:

!/bin/sh
exec tail -n +3 $0
# /etc/grub.d/40_custom:
menuentry "Chainloader sda1" {
     set root=(hd0,1)
     # insmod fat
     # search --fs-uuid --set 0fa5641b-9105-4102-acf6-c68795e8bf62
     chainloader +1
}

menuentry "ThinVantage sda2" {
     set root=(hd0,2)
     # search --fs-uuid --set 0fa5641b-9105-4102-acf6-c68795e8bf62
     chainloader +1
}

Then run 'update-grub' (as root, or via sudo), it will update the 'real' config 
in /boot.

The fs-uuid directive should normally be not necessary, it is optional. The 
respective uuid of your specific partitions would be different of course. If 
you don't know what it's about just drop it :)

If you install grub into the MasterBootRecord (MBR) then of course the Windows 
code will be gone.
What you will see is that chainloading into Windows will launch the 'normal' 
Windows Boot menu.
However, stuff like hibernation and special boot keys will be affected.

Some 2 years ago a german guy on this list, Stefan Bellon, told me a way to 
boot into grub via the original Windows XP setup, which would preserve the 
original Masterbootrecord and thus keep Windows hibernation and blue 
Thinkvantage button working at startup (before any bootloader).

This works for XP, as far as i know Vista boots different, but probably can be 
setup in some analog way.

You would reinstall Windows MBR again (there should be some onboard M$ System 
Tool) and afterwards modify the Windows XP 'BOOT.INI' file to launch the grub 
code from the Windows harddisk.

You can copy that code in linux commandline with dd into a binary file, say 
'bootgrub.bin' and put that on the Windows filesystem (just beneath the 
BOOT.INI). Since Linux has no good NTFS write support, you could for example 
put it on a memory stick for transfer, or use a Samba network or even just 
email.

An example BOOT.INI would look like that:

[boot loader]
timeout=30
default=C:\bootgrub.bin
[operating systems]
C:\bootgrub.bin="Linux Grub"
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows XP" /fastdetect
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows XP nogui" /fastdetect 
/bootlog /noguiboot /safeboot:network /sos

This setup was working with legacy grub, but i missed to prevent the package 
script from writing into the MBR when i mirgated to grub2. It didn't matter 
much to me, anyway, i think if the harddisk basically is ok, then i can launch 
ThinkVantage via grub quite as well, i just don't really need the button 
anymore. (And if the disk would not work, then also not ThinkVantage, so what. 
And there always are those pretty Recovery CDs). However, for this reason, i 
can't tell if it would work with grub2 exactly the same.

As a result, you will see the Windows boot menu, from where you can boot into 
Windows, or 'jump' to the linux grub bootmenu.

The used grub binary will read the grub.cfg configuration of the linux 
partition just as usual, and also that configuration will be kept updated via 
package managemant just as usual. However, you need to recognize that the 
bootgrub.bin code now is 'out of reach' for grub updates.

But, once it works, it works, so what. Most grub updates anyway would not modiy 
that bootcode anyway, especially with grub2 which is highly modular, and the 
modules are loaded dynamically from the linux /boot directory now. Most updates 
will go there, anyway.

If there would be a security fix just in that initial code, then you need to 
recreate the external binary file. But then, if you really need such a good 
security for your laptop, then you would do completely different things anyway, 
and in the end of that road it wouldn't matter how it gets booted, again, 
because the ultimate solution is to store any sensible information (like your 
complete home directory) on a small external encrypted device.

hth Micha






--
To UNSUBSCRIBE, email to debian-laptop-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to