Jump to content

Keshav Amburay

  • Content count

  • Joined

  • Last visited

About Keshav Amburay

  • Rank
    InsanelyMac Protégé
  • Birthday 08/08/1991

Profile Information

  • Gender
  • Location
    Indiana, USA
  • Interests
    Arch Linux
  1. Linux and Windows UEFI boot using Tianocore DUET firmware

    Hi guys, Its been a long time since I interacted with many of you. I just want to say that I won't be updating the DUET git repos often since I now have a native UEFI 2.3.1 system (Lenovo Thinkpad Edge E430 3254-DAQ). You can find some UEFI related info about my laptop at https://wiki.archlinux.org/index.php/HCL/Firmwares/UEFI#Lenovo_Thinkpad_Edge_E430_3254-DAQ . I am not planning to take down the git repos but I suggest compiling your own DUET image if you want to test the latest code. I also suggest trying http://sourceforge.net/projects/cloverefiboot/ . I believe it might be discussed somewhere in the forum but can't find the thread. I haven't tried it myself but it seems to be updated regularly and has similar goals towards DUET usage.
  2. Linux and Windows UEFI boot using Tianocore DUET firmware

    In fact it does http://git.kernel.org/?p=linux/kernel/git/...s/efi.h;hb=HEAD . Its better to change it there too . Also I don't understand why the kernel devs named the source files fs/partitions/efi.{h,c} instead of fs/partitions/gpt.{h,c} . I think PARTITION_SYSTEM_GUID should be renamed to PARTITION_UEFI_SYSTEM_GUID , PARTITION_BASIC_DATA_GUID to PARTITION_MSFT_BASIC_DATA_GUID , and define the new PARTITION_LINUX_BASIC_DATA_GUID . I could'nt find my way through LKML on how to post this.
  3. Linux and Windows UEFI boot using Tianocore DUET firmware

    Also please mention the bug in libparted that makes parted segfault when it encounters a disk with >128 partitions GPT tabel. I once created a 140 entries GPT table using gdisk in a USB pandrive just for fun. Parted segfaulted even for print/list partition table operation. For others http://lists.gnu.org/archive/html/bug-part...6/msg00026.html is the link to the discussion between srs5694 and parted devs.
  4. Linux and Windows UEFI boot using Tianocore DUET firmware

    Can you push the changes to the gptfdisk git repo? I hope that change does not cause compile issues with mingw-w64. I compile gdisk as a win64 binary using http://tdm-gcc.tdragon.net/. I think it is better to let Linux kernel devs know about any new "Linux Basic Data " GUID you might create along with the parted devs. That way we might get linux kernel to recognize the new partition type guid as basic data type similar to how the userspace tools recognize linux lvm guid specific to that partition etc. If this guid is defined in the kernel itself, it will be easier to make distro installer and other tools use this guid instead of the Windows defined one. Except Linux all other OS have their unique Basic data Partition GUID defined seprate from the Windows one. Heck even ChromeOS has a different GUID defined for its rootfs. This ia the reason why I currently use random guids for all my linux partitions (/boot,/var,/,/home etc.). BTW what happenned to gdisk's R option to generate random GUID (within the change type 't' option).
  5. Linux and Windows UEFI boot using Tianocore DUET firmware

    I have created a wiki at gitorious https://gitorious.org/tianocore_uefi_duet_builds/pages/Home with random UEFI stuff i posted in this forum, Ubuntu and Archlinux forums. Please read it and link to that wiki from now on. Comments are welcome.
  6. Linux and Windows UEFI boot using Tianocore DUET firmware

    I moved the first post to https://gitorious.org/tianocore_uefi_duet_b...64_BIOS_to_UEFI . It is better to maintain this in a wiki than in a forum. @srs5694 and migle: Please update duet-install and BootDuet UEFI DUET url to https://gitorious.org/tianocore_uefi_duet_b..._duet_installer and the forum link to https://gitorious.org/tianocore_uefi_duet_b...64_BIOS_to_UEFI . From now on this thread shall be used for discussing Windows and Linux UEFI boot using the DUET binaries. GitHub repos have been deleted.
  7. Linux and Windows UEFI boot using Tianocore DUET firmware

  8. Linux and Windows UEFI boot using Tianocore DUET firmware

    @srs5694: Please change the UEFI DUET link in bios2uefi page to https://gitorious.org/tianocore_uefi_duet_b...-tarball/master . This link works. I plan to remove github repos soon. For updated links see http://www.insanelymac.com/forum/index.php...t&p=1300176 .
  9. Linux and Windows UEFI boot using Tianocore DUET firmware

    @srs5694: In the bios2uefi page you mention thet grub2 seems to be most difficult-to-setup UEFI bootloader. Can you elaborate on it? Can you try https://github.com/skodabenz/My_Shell_Scrip...2/grub2_uefi.sh ? For others: rEFIt is written specifically for Intel Macs, not for any UEFI system, as a (kinda) multiboot boot-loader, so you may have problems with it in DUET or in Sandy Bridge UEFI systems.
  10. Linux and Windows UEFI boot using Tianocore DUET firmware

    I have created a mirror of the git repos at gitorious - https://gitorious.org/tianocore_uefi_duet_builds . Since I use github for my personal stuff (and it has a 300 MB or MiB limit), I thought gitirious is more suited for stuff like duet. Few comments :- UEFI can boot CD/DVDs just fine provided they come with a EFI floppy image and a eltorito 0xEF entry pointing to that floppy image in the iso. which will be mounted by the UEFI firmware as a virtual EFISYS filesystem. I am not so well-versed with English language but this sound like DUET does not start in ALL x86_64 computers. I think it should be 'in some of the systems'. Please add link to gitorious page for the duet binaries https://gitorious.org/tianocore_uefi_duet_builds . I may even use it as default if i plan to change my github account to 'for personal stuff only' . It is actually a Microsoft specific format called http://en.wikipedia.org/wiki/Windows_Imaging_Format . 7-zip aka p7zip is the only non-Microsoft decompressor tool that can (as of now) extract WIM files. I don't recommend Linux Reserved GUID either. We don't know (yet) for what purpose the linux kernel uses the partition type. Its better to stick with some random GUID untill a linux specific Data partition GUID is defined by upstream. This link can go into the Additional Resources section http://homepage.ntlworld.com/jonathan.debo...ot-process.html . Also like [url="http://www.insanelymac.com/forum/topic/279450-why-insanelymac-does-not-support-tonymacx86/"]#####[/url] XPC seems to be another DUET based hackintosh bootloader. And http://homepage.ntlworld.com/jonathan.debo...ot-process.html too.
  11. Linux and Windows UEFI boot using Tianocore DUET firmware

    The below quote is not of any forum post. It is copied form the UEFI Specification 2.3.1 (supported by UDK/EDK2 DUET) Chapter 12.3 File System Format. Also see - Microsoft EFI FAT32 File System Specification - http://msdn.microsoft.com/en-us/windows/ha...e/gg463080.aspx .
  12. Linux and Windows UEFI boot using Tianocore DUET firmware

    Might be related to UEFI Spec specifically mentioning FAT32 for ESP (atleast in one place in the document). GParted (and KDE Partition Manager) depends on libparted (part of GNU Parted) so thats the one likely creating the problem. I actually had this error with Syslinux when I repartitioned my linux system using GParted for separate /var about two months back but I didn't suspect libparted was the cause of the problem. I simply replaced syslinux with grub2 bios but didn't check the /boot partition GPT attributes. BTW RIP (Recovery Is Possible, not Rest In Peace lol) linux http://www.tux.org/pub/people/kent-robotti/looplinux/rip/ includes gdisk command in the iso but I am not sure of fixparts though. I use it instead of parted-magic since parted magic does not provide a 64-bit kernel (for chroot operations). For a person new to the linux world I would recommend System Rescue CD for an ALL-IN-ONE rescue system but its download size is slightly bigger than RIP Linux or parted-magic. AFAIK RIP uses Fluxbox, SysResCD uses XFCE and Parted Magic uses LXDE as the Desktop Environment. Of these Parted Magic does not provide a 64-bit kernel. Also a Microsoft Reserved Partition (msftres GNU Parted flag) is not needed to boot Windows in UEFI mode. That partition is used to compensate for lack of post MBR 31 KiB gap (due to cylinder alignment in MBR setup) in GPT table. This region is used by Windows to store partition metadata of dynamic disks within the GPT system. Dynamic disks are similar to linux LVM. Having the msftres partition allows you to convert your disk to dynamic disk anytime. If you want to prevent Windows from converting the disk to Dynamic, I suggest you delete the msftres partition. http://en.wikipedia.org/wiki/Microsoft_Reserved_Partition http://en.wikipedia.org/wiki/Logical_Disk_...dynamic_volumes http://msdn.microsoft.com/en-us/windows/ha...201104111922443 http://msdn.microsoft.com/en-us/library/aa...28VS.85%29.aspx
  13. Linux and Windows UEFI boot using Tianocore DUET firmware

    I don't know whether it is actually true, haven't found any documentation regarding this. But I never tried FAT16 or FAT12 (which will be never be actually used since EFISYS should be atleast 100 MiB) for EFISYS partition. I used mkfs.vfat -F32 option for my EFISYS and my DUET partition. You can also try http://www.insanelymac.com/forum/index.php...t&p=1261601 . BTW see the link in post #71 on how to create Archlinux BIOS+UEFI and Windows x64 BIOS+UEFI USB drive. It will also be useful for other UEFI supporting distros like Ubuntu, Fedora (if using grub2-efi) or Clonezilla.
  14. Linux and Windows UEFI boot using Tianocore DUET firmware

    http://dl.dropbox.com/u/9710721/UEFI/DUET_...LE_BUILD.tar.xz http://dl.dropbox.com/u/9710721/UEFI/DUET_...LE_BUILD.tar.xz Compiled files compressed with tar and (xz -9) as on 13-JUN-2011 , the (DUET_EMUVARIABLE_BUILD.tar.xz)/FV/Efildr20 is same as Efildr20 in EFI_DUET and ditto for FSVARIABLE build. @migle: All the Efildr files plus the relevant scripts copied into the dir for you to see. My build process :- 1) Set up symlinks outside (OUTER_DIR) the edk2 and other tianocore git checkout dirs - https://github.com/skodabenz/My_Shell_Scrip.../my_symlinks.sh 2) Then apply https://github.com/skodabenz/EFI_DUET/blob/...Makefiles.patch into EDK2 root dir - not all the changes are needed for DuetPkg, some of them are for OvmfPkg (QEMU and VirtualBox UEFI firmware), but those changes are untested. For now I maintain the patch in the form of a separate git branch keshav_pr in the edk2 git repo so my duet compile script simply checks out that branch before compile, instead of applying the patch like normally needed. 3) Run (OUTER_DIR)/duet_x64_edk2_linux_compile_setup.sh ( https://github.com/skodabenz/My_Shell_Scrip...ompile_setup.sh ) which sources https://github.com/skodabenz/My_Shell_Scrip..._duet_common.sh which in turn sources https://github.com/skodabenz/My_Shell_Scrip...ocore_common.sh . See the scripts on how the compile process occurs. Important info - I compile in Archlinux x86_64 system with gcc-multilib 4.6 (mostly latest snapshot - Archlinux is bleeding-edge like), and Archlinux uses default python to python3, so i temporarily re symlink python2 into python for the compile process to continue. Also with -Werror compile fails in gcc 4.6, that is removed in CORRECT_WERROR() in tianocore_common.sh . 4) duet_x64_edk2_linux_compile_setup.sh calls http://tianocore.git.sourceforge.net/git/g...ld64.sh;hb=HEAD which automates most of the compile process. No need for mingw or mingw-w64. Although it can also be compiled in Windows with VS2008 or VS2010, I am more comfortable in linux due to the ability to automate the task using bash scripts. 5) DuetPkg/build64.sh simply builds only the FirmwareVolume (DUET_EMUVARIABLE_BUILD.tar.xz)/FV/DUETEFIMAINFV.Fv file (don't know what that means exactly). DuetPkg/PostBuild.sh ( http://tianocore.git.sourceforge.net/git/g...uild.sh;hb=HEAD ) then creates the actual Efildr files using the pre-compiled ASM Bootsector files from DuetPkg/BootSector/bin ( http://tianocore.git.sourceforge.net/git/g...bc0c4fe;hb=HEAD ) 6) DuetPkg/PostBuild.sh also creates the memdisk file i include in the other two repos in github by calling DuetPkg/CreateBootDisk.sh in the very end ( http://tianocore.git.sourceforge.net/git/g...Disk.sh;hb=HEAD ). I also added a https://github.com/skodabenz/My_Shell_Scrip..._memdisk_old.sh file to my scripts to do this separately if the precompiled files are already available which may optionally be called in post_duet_x64_compile.sh (which I will describe later). I tried to do the same memdisk but with BootDuet instead of edk2's bootsectors in https://github.com/skodabenz/My_Shell_Scrip..._memdisk_new.sh but have not succeeded sop far due to device naming assumptions in srs5694's duet-install which do not work for a superfloppy loop device. 7) If the above compile succeeds and the Efildr files are generated successfully the i manually run https://github.com/skodabenz/My_Shell_Scrip..._x64_compile.sh which copies the files ot the relevant local location of the github repos, commits the changes with the DATE as the commit messages. I push the changes to github manually though. The main reason sometimes Efildr files are not generated are due to some filesize restriction hardcoded in http://tianocore.git.sourceforge.net/git/g...nPage.c;hb=HEAD (mainly #define EFI_PAGE_BASE_OFFSET_IN_LDR 0x70000 ). This file is called in DuetPkg/PostBuild.sh for X64 firmware alone. I had to disable some modules in http://tianocore.git.sourceforge.net/git/g...X64.dsc;hb=HEAD (file that includes modules to be compiled) and http://tianocore.git.sourceforge.net/git/g...Pkg.fdf;hb=HEAD (file that defines modules that should go into FV image) . See the UDK_EDK2_DuetPkg_Changes_to_Makefiles.patch patch for the changes I made to those files. If someone know what GenPage exactly does and can circumvent the filesize restriction I can include more modules like floppy (right nor the Efildr file will not recognize a floppy disk drive (hardware) once loaded, this restriction does not apply to loading Efildr from a floppy disk using BootDuet). For all these scripts checkout https://github.com/skodabenz/My_Shell_Scripts . Hope this helps. Also gnu-efi http://sourceforge.net/projects/gnu-efi/ headers which ELILO uses, are a very minimal subset of efi-toolkit http://sourceforge.net/apps/mediawiki/tian...tle=EFI_Toolkit project which was active when EDK1 was used. Now EDK2 is one big integrated UEFI development environment which is much more updated and follow the latest Spec version. http://tianocore.git.sourceforge.net/git/g...=StdLib;hb=HEAD is the EDK2 equivalent of efi-toolkit.
  15. Linux and Windows UEFI boot using Tianocore DUET firmware

    But please do not remove the -b and -u options in the script. I maintain the repo in a ntfs-3g mounted partition (with exec permissions) and filemode = false set in the git repo .config file. So maybe git push ignores the filemode or github does. I think its the first one.