The way android_x86 treats EFI GRUB config is buggy or misunderstood. No matter what android_installation you choose from grub it will just boot the first found android system on the hard drive (and it seems that device.map that causes the pain).
Anyhow here is a workaround that I did to get stuff working:
I wiped 1 of my laptops for that (MacBook Pro 8,1 320GB hard drive)
Installed Linux (Kubuntu) choosing the whole hard drive as one part + efi
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 298.1G 0 disk
├─sda1 8:1 0 512M 0 part /boot/efi
└─sda2 8:2 0 297.6G 0 part /
Installed PrimeOS choosing sda2 (DO NOT FORMAT),
ignore EFI installation (optional)
Booted into Linux again and renamed primeOS installation folder
sudo mv /android /primeOS
Installed Bliss OS the same way as PrimeOS + choose /system to be rw
Booted into Linux again, renamed Bliss OS installation folder
sudo mv /blissos_x86.xx.xx /blissOS
While still on Linux added both Android installations to GRUB by adding the following lines to /etc/grube.d/40_custom
submenu 'Android' {
menuentry 'primeOS' --class android --class android-x86_64 --class gnu-linux --class os {
set root='hd0,gpt2'
linux /primeOS/kernel root=/dev/ram0 SERIAL=random logo.showlogo=1 androidboot.selinux=permissive quiet DATA= USB_DATA_PARTITION=1
initrd /primeOS/initrd.img
}
menuentry 'blissOS' --class android --class android-x86_64 --class gnu-linux --class os {
set root='hd0,gpt2'
linux /blissOS/kernel root=/dev/ram0 SERIAL=random logo.showlogo=1 androidboot.selinux=permissive quiet DATA= USB_DATA_PARTITION=1
initrd /blissOS/initrd.img
}
}
Updated GRUB on Linux sudo update-grub
, and made sure the tail of /boot/grub/grub.conf
contains the Android entries
Rebooted and chose one of the Android installations and I meet an error telling me hd0,gpt2 not found
bizarre o.O , after a bit of googling it says that it happens when running grub-install before generating or coping device.map to /boot/grub!
To fix that I had to go back to /etc/grub.d/40_custom and change hd0 to hd1
in my case
NOTE for small hard drives like mine it's better to use one partition (ext4) shared between Linux and Androids, from all systems you enjoy the full free space.