OK, I may have a solution for booting another distro with
ASUS ExpressGate Cloud.
But, as I haven't got any real ASUS box (at least not yet, I am planning to buy eee soon), I was testing the boot process only in VirtualBox (quite surprising that I could actually install ExpressGate from a Windows XP virtual machine - and it worked).
After experimenting with menu.lst located in
C:\ExpressGate I realized that this particular version of Grub is somewhat crippled to say the least. And it's probably on purpose. It seems that it lacks any support of ext file system completely.
As soon as you try to change root to an ext partition it just gets stuck. However, it can start loading any kernel and initrd image present in the same (Windows) partition. That is until you try to set the root to a linux partition - in that case, you end up with kernel panic. In one word: this Grub is completely useless.
To "boot up our way from this mess" we need a better bootloader. So, I figured why not use
Grub4dos. To make it clear, I wasn't trying to replace current Grub (maybe it could be done, but I'm not that capable hacker). I chose a simpler way.
This is what you should do:
1. Download Grub4dos from sourceforge (
http://sourceforge.net/projects/grub4dos/)
2. Install your preferred linux distro (Ubuntu Natty in this example)
When you'll be setting up bootloader,
and this is important, you should probably install it to the partition (e.g. /dev/sda3) not to MBR (we don't want to compromise Asus' way of booting) Also, we must not delete Windows partition, of course.
This is how the partition table could look like at the end:
Code:
/dev/sda1 [BOOT] NTFS - Windows loader
/dev/sda2 NTFS - Windows root (C:\)
/dev/sda3 ext4 - Ubuntu root (/)
/dev/sda5 swap
(and Ubuntu's Grub2 goes to /dev/sda3)
3. Edit menu.lst and prepare Grub4dos
The original C:\ExpressGate\menu.lst looks like this:
Code:
default saved
timeout 0
hiddenmenu
title minik
kernel /ExpressGate/vace ro no_win_installer=0 pci=nocrs i8042.reset quiet video=intelfb acpi_backlight=vendor acpi_display_output=vendor vaKBD=us VALANG=en_US fastreboot=no acpi_osi=Linux av_flag=1 rw_flag=1 debug_log=1 nwm=1
initrd /ExpressGate/vace-id
title Win_1
savedefault 0
rootnoverify (hd0,0)
chainloader +1
title Win_2
savedefault 0
rootnoverify (hd0,1)
chainloader +1
title Win_3
savedefault 0
rootnoverify (hd0,2)
chainloader +1
title Win_4
savedefault 0
rootnoverify (hd0,3)
chainloader +1
Now, we'll just edit the first entry:
Code:
...
title minik
kernel /grub.exe
title Win_1
savedefault 0
...
For this to work we'll need to copy
grub.exe and
grldr from grub4dos archive to C:\
and then we create second
menu.lst file also in C:\ (it will be used for accessing our ext partition and loading Grub2)
It can look something like this:
Code:
timeout 0
default 0
hiddenmenu
title Ubuntu 11.04
root (hd0,2)
kernel /boot/grub/core.img
From Grub4dos you could of course load Ubuntu kernel directly but this way you won't have to change anything manually after a kernel update (just let Grub2 take care of it).
4. Reboot the system and see what happens
OK, now I just wait for you to try it and confirm whether it works.
EDIT: Yes, it works just fine.
Unfortunately, owners of the older versions of ExpressGate cannot use this method because it is based on Splashtop and I've no idea how it boots... but maybe someone will figure it out eventually.
Bookmarks