Jump to content

Antonio19

Antonio19

Member Since 02 Jan 2011
Offline Last Active Jun 07 2014 09:02 PM
-----

Posts I've Made

In Topic: Linux and Windows UEFI boot using Tianocore DUET firmware

13 January 2013 - 01:26 PM

Well, I have tried to use the procedure you describe with no success. The install script you mentioned from Rod Smith is mainly suited to start from an empty drive. So I would have preferred to simply install an access for Windows in the current installation.

When selecting the Windows entry from the GRUB2 menu I get the following error message:
"error: invalid signature."

May be the problem is related on "How is the Hard Drive Partition Signature is calculated" in DUET. There is at least one question from a user on their edk2-devel email archive. I didn't found an answer for this. Nor why there is no problem with the Rod Smith script starting from a blank drive.
--------------------------------------------------------------------------------------------------------------------------------------------------
EDIT 1: For the following test I removed the EFI directory completely (containing Windows / ubuntu boot manager firmware) in the Boot DUET partition. Meaning the partition is either empty or with file Efildr20

On my latest test when I remove the Efildr20 file from the root of the Boot DUET partition I get the same error message meaning it does not load this file. Hence couldn't boot DUET.

Then copying again Efildr20 to the root of the partition, I get "error: file not found."

Removing it another time and I still get the same message "file not found".

It looks like it is unable to see the file Efildr20 ...

EDIT 2: It looks like the trouble come from the chainloading entry in GRUB2. I used an entry which worked well in pure EFI mode (on another computer).

Per se, if I remove my entry and replace it by the one used by the Chinese Poster:

menuentry "EFI DUET" {
set root=(hd0,3)
chainloader +1
}

I exit grub, but I get the error message:

"This is not a bootable disk. Please insert a bootable floppy and press any key to try again ..."

EDIT 3: replacing chainloader +1 by the path to the Windows boot manager firmware
chainloader (${root})/EFI/Microsoft/Boot/bootmgfw.efi
does not change anything. The system is expecting a bootable partition and it says it isn't. Why isn't it seen as bootable ? partition type is EF00 (boot flag is set).

Removing the file Efildr20 from the partition does not change anything. Meaning the system does not load Efildr20 but exit on error before. Hence should have nothing to do with the chainloading.

Well, I am not close to a quick solution.
--------------------------------------------------------------------------------------------------------------------------------------------------
Here are the detailed steps I followed. If you find anything I did wrong, please let me know.

Partition List on /dev/sda
-------------------------- -----
Command (? for help): p
Disk /dev/sda: 5860533168 sectors, 2.7 TiB
Logical sector size: 512 bytes
Disk identifier (GUID): 6BA8BBC5-DB5D-47FA-A208-5ED2A213A87C
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 5860533134
Partitions will be aligned on 2048-sector boundaries
Total free space is 4678632301 sectors (2.2 TiB)

Number Start (sector) End (sector) Size Code Name
1 2048 1953791 953.0 MiB 0700 EFI System (for future
2 1953792 1955839 1024.0 KiB EF02 Boot BIOS GRUB
3 1955840 2932735 477.0 MiB 0700 EFI Boot DUET
4 2932736 3194879 128.0 MiB 0C01 Microsoft Reserved
5 3194880 393818111 186.3 GiB 0700 Windows 7
6 393820160 784445439 186.3 GiB AF00 Mac OS X
7 784445440 785422335 477.0 MiB 0700 boot
8 785422336 801046527 7.5 GiB 8200 linux-swap
9 801046528 947529727 69.8 GiB 0700 root
10 947529728 1181904895 111.8 GiB 0700 home

Preparing the boot partition
---------------------------- -------

$ sudo mkfs.msdos -F 32 -h 1955840 -v /dev/sda3
mkfs.msdos 3.0.12 (29 Oct 2011)
/dev/sda3 has 255 heads and 63 sectors per track,
logical sector size is 512,
using 0xf8 media descriptor, with 976896 sectors;
file system has 2 32-bit FATs and 8 sectors per cluster.
FAT size is 960 sectors, and provides 121868 clusters.
There are 32 reserved sectors.
Volume ID is 84239f3a, no volume label.
$

Show detailed information on ESP for DUET
----------------------------------------- --------------
Command (? for help): i
Partition number (1-10): 3
Partition GUID code: EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 (Microsoft basic data)
Partition unique GUID: 98475614-D7BE-494E-92DA-02B0A01EB693
First sector: 1955840 (at 955.0 MiB)
Last sector: 2932735 (at 1.4 GiB)
Partition size: 976896 sectors (477.0 MiB)
Attribute flags: 0000000000000000
Partition name: 'EFI Boot DUET'

Install BootDuet on the boot sector
----------------------------------- ---------
$ sudo -i
[sudo] password for jean:
# pwd
/root
# cd /home/jean/Downloads/BootDuet-master
# ls
bd12.bin bd16_64.bin bd16.bin bd32_64.bin bd32.bin BootDuet.S Makefile
bd12.lst bd16_64.lst bd16.lst bd32_64.lst bd32.lst COPYING README
bd12.map bd16_64.map bd16.map bd32_64.map bd32.map INSTALL
# dd if=bd32.bin of=/dev/sda20 bs=1 skip=90 seek=90 count=420
420+0 records in
420+0 records out
420 bytes (420 B) copied, 0.000607002 s, 692 kB/s
# logout
$

Get UUID for the Boot DUET Partition
------------------------------------ -----------
$ sudo blkid /dev/sda3
/dev/sda3: UUID="8423-9F3A" TYPE="vfat"

Chainloading Windows 7 in GRUB2
------------------------------- -------------
$ gksu gedit /etc/grub.d/40_custom

then append the following entry:

menuentry "Windows 7 x86_64 UEFI-GPT" {
insmod chain
insmod ntfs
search --fs-uuid --no-floppy --set=root 8423-9F3A
chainloader (${root})/EFI/Microsoft/Boot/bootmgfw.efi
}

Run update-grub
--------------- ------
$ sudo update-grub
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-3.2.0-35-generic
Found initrd image: /boot/initrd.img-3.2.0-35-generic
Found linux image: /boot/vmlinuz-3.2.0-23-generic
Found initrd image: /boot/initrd.img-3.2.0-23-generic
Found memtest86+ image: /memtest86+.bin
done
$

Mount the Boot DUET partition & Copy Microsoft Boot Manager Firmware [from Earlier install, as I have restored an image of the Windows 7 x64 partition]
-------------------------------------------------------------------------------------------------------------------------------------------------------
$ sudo mount /dev/sda3 /boot/efi
[sudo] password for jean:
$ sudo cp -R EFI /boot/efi
$

Copy DUET EFI Loader for FAT32
------------------------------ -------------
$ sudo cp Efildr20 /boot/efi

Unmount the Boot DUET partition
-------------------------------
$ sudo umount /dev/sda3

Change the partition type code of the Boot DUET partition
-------------------------------------------------------------------------
$ sudo gdisk
Command (? for help): t
Partition number (1-10): 3
Current type is 'Microsoft basic data'
Hex code or GUID (L to show codes, Enter = 8300): EF00
Changed type of partition to 'EFI System'

Command (? for help): p
Disk /dev/sda: 5860533168 sectors, 2.7 TiB
Logical sector size: 512 bytes
Disk identifier (GUID): 6BA8BBC5-DB5D-47FA-A208-5ED2A213A87C
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 5860533134
Partitions will be aligned on 2048-sector boundaries
Total free space is 4678632301 sectors (2.2 TiB)

Number Start (sector) End (sector) Size Code Name
1 2048 1953791 953.0 MiB 0700
2 1953792 1955839 1024.0 KiB EF02
3 1955840 2932735 477.0 MiB EF00
4 2932736 3194879 128.0 MiB 0C01
5 3194880 393818111 186.3 GiB 0700
6 393820160 784445439 186.3 GiB AF00
7 784445440 785422335 477.0 MiB 0700
8 785422336 801046527 7.5 GiB 8200
9 801046528 947529727 69.8 GiB 0700
10 947529728 1181904895 111.8 GiB 0700

Command (? for help): w

Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!

Do you want to proceed? (Y/N): y
OK; writing new GUID partition table (GPT) to /dev/sda.
Warning: The kernel is still using the old partition table.
The new table will be used at the next reboot.
The operation has completed successfully.
$

Reboot
---------

Regards.

In Topic: Linux and Windows UEFI boot using Tianocore DUET firmware

10 January 2013 - 05:27 PM

Well, I am back at it. Thank you for your information. However I have still some questions.

On my system based on a GPT hard drive I have now several Linux running fine with GRUB2 intalled on a 1MiB partition with flag "bios_grub". I just want to add an entry for Windows 7 in GRUB2 to be able to launch Windows as well on this GPT disk.

Obviously I need to install DUET to do that. Initially I thought like making a DUET USB and map it on the GPT HD (ref. to the Chinese poster). Reading your answer I understand that I can do it directly on the HD (?)...

I never had a look to your BootDuet-master.zip before. So I went to compile it on my system. It gave me a list of bdxx.bin lst and map files. My system is amd64 then I guess I should use the file bd32_64.bin instead of bd32.bin as input file. I imagine I need as well to copy the bootmgfw.efi (and all of the files installed in the boot/efi partition by the windows installation in EFI mode).

Should I use a build with the hard-coded BIOS drive number (for the ESP) ?

However I am afraid it will compromise my working Linuxes installation. I don't want to directly boot into Windows. I would like it to work through GRUB2 after chainloading it in a specific entry for EFI DUET.

Could this work ? I guess I will not set the "boot" flag on the EFI System Partition so I will still be able to boot on the "bios_grub" flag 1 MiB partition ?

I mainly use Linux which I found more configurable, much quicker and more safe than Microsoft Windows. However, I still have some programs like Garmin GPS which only works in Windows. Some big commercial programs like the Adobe Creative Suite, ... etc.

Regards.

In Topic: Linux and Windows UEFI boot using Tianocore DUET firmware

23 December 2012 - 04:36 PM

Thank you for the details. I installed GRUB2 on a 1MiB partition with flag bios_grub on while installing Linux Ubuntu 12.04 by setting the boot loader on this partition.

Now Linux is working on GTP partitioning using bios_grub.

I was trying to make DUET USB like the Chinese poster at the beginning of this thread with no luck.

sh ./install-duet -m -s [path to]/syslinux-5.00/mbr /dev/sdg2

Afterwards I would copy through "dd" to a partition on my HD and chainload in GRUB2.

Should I use a bootable BIOS FAT32 USB ? how to install DUET to get a bootable USB DUET stick ?

Or using the memdisk compiled img ? [This looks very different from the poster I mentioned].

Regards.

EDIT: It looks like I found a text file Usage_Linux which details "Setting up DUET USB flash drive in Linux" within the master.tar.gz I will give it a try. However I would like to know if you did use the method of the Chinese poster.

In Topic: Linux and Windows UEFI boot using Tianocore DUET firmware

21 December 2012 - 08:46 PM

Thank you for your prompt reply. Thank you for your work as well on writing the Boot Loader BootDuet.

Seeping through the messages of this thread I realised after posting and as you suggest that the (latest) version from Keshav (gitorious repo) I installed is missing the EFIVAR.BIN file. Hence the trouble for not "remembering" the configuration.

The solution you describe using as well as the one used by Keshav, is to only boot Windows in UEFI through an option Boot DUET, the other OSes being installed outside DUET ? Do you use GRUB2 Legacy or GRUB2 EFI ? Then you add manually the option "Boot DUET" ?

Usually I add GRUB2 menu entries to /etc/grub.d/40_custom. Do you chainload the EFI System partition then ? to make the option of booting DUET from GRUB.

My current problem is that the PC boots in windows at startup and no GRUB2 booting options are first displayed.

May be as you suggest it is not worth to try to get through a full EFILDR compilation with the EFIVAR module.

However, after some testing on a pure GTP [EFI] hard drive I realized that if I only install a Linux with GRUB2 EFI, then DUET is stuck at its menu screen. I have to select the file to boot through the menu to make it launch Linux in EFI mode. But as soon as I add Windows 7 x64 entry in the boot/EFI partition (I installed Windows through DUET in EFI previouly - (on first DUET install) - then I re-installed DUET & installed Linux through it - And at last I did only add the entry for Windows 7 in the EFI partition) then DUET always launch directly Windows unless you press F12 at the tianocore welcome screen to enter its selection menu.

This behaviour looks "hardcoded" somewhere. What I would like is a similar "hardcode" to boot GRUB2 EFI. This should be a lot easier than sorting the issues of EFIVAR.

Furthermore I've seen that Keshav posted on 29 April 2011 that "I am able to boot linux x86_64 using grub2 (1.99~rc2)in edk2_x64.". This is exactly the behaviour I would like on my system.

Booting time for Linux is greatly reduced in EFI mode. Usually I get less than 5 sec. in EFI vs. 17 sec. in MBR. Same for Logging out.

I didn't had a look at the different repositories. I don't know if it is easy to get the version of that time back and running. May be only Keshav could have a quick answer on this ? ...

Greetings & Happy Holidays.

In Topic: Linux and Windows UEFI boot using Tianocore DUET firmware

20 December 2012 - 06:14 PM

Well, I managed to install succesfuly the latest version of tianocore_uefi_duet_installer on a brand new SATA drive GPT formatted.
I followed the instructions from http://www.rodsbooks...uefi/index.html (from user srs5694).

I first installed Windows 7 then Ubuntu 12.04 both in UEFI.

However within DUET Boot Manager "Managing the Boot Process" it looks like there is no way to add permanently a new Boot Option. The same is true for modifying the Boot Order.

My EFI System Partition is mounted as /boot/efi then I have EFI folder which contains Boot, extras, Microsoft, Shell, ubuntu.

To be able to see the GRUB EFI menu at startup, I have to manually add, each time I boot my PC, a Boot Option that use the file /boot/efi/EFI/ubuntu/grubx64.efi, then to modify the Boot Order.

It looks like the default option is broadly set as the SATA GTP Disk [no specific file is given], which for me ends up to always booting Windows 7, the first OS I installed.

Is there anyway to make any of these manually added Boot Options stick for good ?

Or another way to set the default boot to GRUB EFI ?

Thanks for your feedback.
© 2014 InsanelyMac  |   News  |   Forum  |   Downloads  |   OSx86 Wiki  |   Mac Netbook  |   PHP hosting by CatN  |   Designed by Ed Gain  |   Logo by irfan  |   Privacy Policy