Jump to content

74 posts in this topic

Recommended Posts

Just so you all know I actually have done something. I have pushed the source to both my github and to sourceforge, please commit to the experimental branch and I will merge it into the stable branch once it is safe. Also, nothing meaningful happens yet so don't get too excited. Only the Visual studio build works right now. I haven't set up the Xcode or Makefile builds yet, I'm trying to do them now.

 

https://github.com/apianti/Clover

https://sourceforge.net/p/cloverefiboot/Clover

 

IA32/X64/ARM/ARM64 testing ISO (6/7/2018): Clover-3.0-experimental.iso

Edited by apianti

Share this post


Link to post
Share on other sites
Advertisement

Hi,

I have VS2013 ultimate and can't compile the project. NASM installed. Windows 10.

 

3>D:\Projects\Clover\CloverV3\Project\VisualStudio\Build\Customizations\nasm.targets(50,5): error MSB3721: The command "nasm.exe -f win64 -o"D:\Projects\Clover\CloverV3\\Build\Uefi_X64\\X64UefiLib\cmpxchg.obj"  ..\..\..\..\Library\Uefi\X64\cmpxchg.nasm" exited with code 1.

 

Share this post


Link to post
Share on other sites
16 hours ago, Slice said:

Hi,

I have VS2013 ultimate and can't compile the project. NASM installed. Windows 10.

 

3>D:\Projects\Clover\CloverV3\Project\VisualStudio\Build\Customizations\nasm.targets(50,5): error MSB3721: The command "nasm.exe -f win64 -o"D:\Projects\Clover\CloverV3\\Build\Uefi_X64\\X64UefiLib\cmpxchg.obj"  ..\..\..\..\Library\Uefi\X64\cmpxchg.nasm" exited with code 1.

 

 

You need to put NASM path in windows PATH variable. Then it will work.

 

EDIT: I could just make it path from Build.props and can be changed but it defaults to C:\Program Files\NASM, right?

EDIT2: I made that the default path but you can change EfiNASMLocation in Project\VisualStudio\Build\Customizations\Build.props, if needed.

EDIT3: You can also edit it through View > Property Manager. Prebuild > Any arch > Build. Edit EfiNASMLocation under User Macros.

EDIT4: I have modified the readme to include instructions to add the NASM installation path to the Windows PATH variable, I think that is more appropriate since changes to Build.props will end up in the repository.

EDIT5: I am also doing some weird stuff to keep the repo clean so you may notice that I keep deleting and reuploading, this is to keep the initial commit. Once there is working bootloader then commits will be made to "experimental" branch and merged into "stable" branch if they are stable. I will then make tags for releases and such.

Edited by apianti

Share this post


Link to post
Share on other sites
1 hour ago, Slice said:

Compilation successful :thumbsup_anim:

But not tested yet because the computer with VS is far from my Hackintoshes.

We should create usual rules to compile under macOS.

 

Somebody wants to test?

 

Gui.zip

 

Cool. I am working on the Xcode project. There is not much to be seen, as mostly only debug information is printed out, there is no GUI yet. You can run in virtual machine, I have devised some methods for determining if running in a VM. I'd really like to see that it detects everyone's stuff correctly. I'd also like to know how many firmwares actually implement EFI_MP_SERVICES_PROTOCOL. The VMs Virtualbox and VMWare do not, but Qemu (with OVMF) implements it correctly. So if you did try can you please provide me with the log? It just appends .log to the name of the binary EFI application. So, \EFI\BOOT\BOOTX64.efi creates \EFI\BOOT\BOOTX64.efi.log. You can change the path with config.plist but I forget what the key is lol. I'll have to write out some configuration keys that are available.

 

EDIT: There is no key to change the log path yet, I'll need to fix that.

Edited by apianti

Share this post


Link to post
Share on other sites

Here are currently implement configuration keys:

"/Configuration/Path"

  EFI_PROJECT_CONFIGURATION_FILE [\EFI\Clover\Clover.plist]

  The configuration path. There is a built-in default config.plist that can be changed. Located at Application\Gui\config.plist, it will be parsed before anything else is done. Then the file at this location is parsed.
"/Boot/Console/Columns"

  0

  The number of columns to set the console mode, zero is best
"/Boot/Console/Rows"

  0

  The number of rows to set the console mode, zero is best

"/Boot/Console"

  NULL/FALSE

  Specify the console with a string of COLUMNSxROWS, TRUE for best mode, or FALSE to not change modes
"/Boot/Console/Redirect"

  TRUE

  Whether the console should be redirected when drawing, this probably should always be TRUE
"/Boot/Output/Console"

  TRUE

  Enable console logging output
"/Boot/Output/File"

  FALSE, TRUE if DEBUG enabled

  Enable/disable logging to file (It occurs to me that there is no key to change the path for the output file currently)
"/Boot/Output/Serial"

  FALSE, TRUE if DEBUG enabled

  Enable/disable serial logging output
"/Boot/Debug"

  Build time TRUE/FALSE

  Whether to provide runtime debug information or not

"/Gui/ConsoleOnly"

  FALSE

  Do not use a graphical interface and only use console mode
"/Gui/Multithreaded"

  TRUE

  Whether to use multithreading for drawing
"/VirtualMachine"

  Detected TRUE/FALSE

  Whether the machine should be considered a virtual machine or not, should only be changed if detected incorrectly

Edited by apianti

Share this post


Link to post
Share on other sites

Here is ISO, if anyone prefers that to just the binary. It contains IA32, X64, ARM, and ARM64 architectures. Can't test ARM archs so unsure if they work, the other two should though.

Edited by apianti

Share this post


Link to post
Share on other sites
21 minutes ago, apianti said:

Here is ISO, if anyone prefers that to just the binary. It contains IA32, X64, ARM, and ARM64 architectures. Can't test ARM archs so unsure if they work, the other two should though.

Clover-3.0-experimental.iso

Can I test it on Parallels Desktop?

Share this post


Link to post
Share on other sites
1 hour ago, Matgen84 said:

Can I test it on Parallels Desktop?

 

It should work because there is no use of any MSRs or any other model specific features. I have not tested with Parallels so I wonder what the outcome will be, the serial logging is disabled in the ISO, so there will be nothing to capture unless it captures console output like Qemu and outputs that to a log file. Don't get too far ahead as it is still not functional yet for use....

 

EDIT: Here is ISO with serial debugging enabled.

EDIT2: Seriously, though, I won't be able to work on clover for a while if I don't get donations because I will have to work on other stuff to not die. 

Edited by apianti

Share this post


Link to post
Share on other sites
1 hour ago, apianti said:

Here is ISO, if anyone prefers that to just the binary. It contains IA32, X64, ARM, and ARM64 architectures. Can't test ARM archs so unsure if they work, the other two should though.

Clover-3.0-experimental.iso

I think ARM is intended to boot iOS on Samsung Galaxy S? :rolleyes:

Share this post


Link to post
Share on other sites

 

1 hour ago, Matgen84 said:

Hi

 

I try ISO with serial debugging enabled on Parallels.

 

Lol, I posted that one so you can get the log to a file to post, I need to see the information above what could be seen as well. Did you connect a serial output file in the hardware options for the virtual machine? Post that file. You can also burn the other ISO onto a USB and get information from your actual firmware. I need some data.

EDIT: Oops I just realized I have it set to ConsoleOnly mode which won't give me the MP information. Let me reupload these with out the test default config.

Here is without serial: 

Here is with serial: 

Edited by apianti

Share this post


Link to post
Share on other sites
23 minutes ago, Slice said:

I think ARM is intended to boot iOS on Samsung Galaxy S? :rolleyes:

 

Nah, it took no effort really to have them and I'm making the bootloader more universal. There is UEFI on U-Boot so you could use this on any U-Boot device like raspberry pi to prevent having to rebuild whenever you want to replace your kernel. Also I believe there are some tablets that have UEFI and ARM. Really nothing to do with macOS though, lol. But, v3 detects memory leaks, make a change where you allocate memory and don't free it and you will get a message about it in the log that there is a memory leak with which source and line. I also think that it shouldn't perform any OS specific actions until the OS is selected to boot, except for filesystem drivers. This will make it quicker to start and not mess up anything for OSes that don't need anything but chainloaded like windows. I made it so every allocation is made as high as possible, check out the memory map at the beginning and end, they are almost identical except for stuff the firmware still has allocated and if you print the memory map in the middle somewhere (like at GUI start) the entire slide regions are almost always available. I also made a language parser so that we could more easily parse multiple file types, like PLIST and SVG (these are both XML based so wrap the XML parser), but also we can parse javascript to to help with themes and SVGs.

Share this post


Link to post
Share on other sites
27 minutes ago, apianti said:

 

 

Lol, I posted that one so you can get the log to a file to post, I need to see the information above what could be seen as well. Did you connect a serial output file in the hardware options for the virtual machine? Post that file. You can also burn the other ISO onto a USB and get information from your actual firmware. I need some data.

EDIT: Oops I just realized I have it set to ConsoleOnly mode which won't give me the MP information. Let me reupload these with out the test default config.

Here is without serial: Clover-3.0-experimental.iso

Here is with serial: Clover-3.0-experimental.iso

With new ISO, I have console mode on Parallels Desktop for mac. I can burn ISO onto a USB key.

Share this post


Link to post
Share on other sites
1 hour ago, Matgen84 said:

With new ISO, I have console mode on Parallels Desktop for mac. I can burn ISO onto a USB key.

 

 

Hmmmmm should not do that. Appears to have something to do with the console redirection but I'm not sure why..... UUUUUUUUUUggggggggggggggggghhhhhhhhhhhhhhhh.

 

EDIT: Try this one  

 

Edited by apianti

Share this post


Link to post
Share on other sites
8 minutes ago, apianti said:

 

 

Hmmmmm should not do that. Appears to have something to do with the console redirection but I'm not sure why..... UUUUUUUUUUggggggggggggggggghhhhhhhhhhhhhhhh.

 

EDIT: Try this one  Clover-3.0-experimental.iso

 

 

Maybe I do not use the right method: I get this result. On Parallels for mac, I create VM macOS: I don't know if it's good


 

 

Capture d’écran 2018-07-03 à 16.06.53.png

Share this post


Link to post
Share on other sites

Is it stuck there? Because that's the same problem I am having now and it appears to be related to redirecting the console so the GUI will be able to draw with being changed back to console...

Edited by apianti

Share this post


Link to post
Share on other sites

May be it is enough for Windows or Linux, or to boot macOS on virtual machine that is intended to do this.

But to boot Hackintosh you have to implement at least all Protocols, SMBIOS, ACPI, kext injection and kernel patching.

Share this post


Link to post
Share on other sites
15 minutes ago, Slice said:

May be it is enough for Windows or Linux, or to boot macOS on virtual machine that is intended to do this.

But to boot Hackintosh you have to implement at least all Protocols, SMBIOS, ACPI, kext injection and kernel patching.

 

Yes, but all this can be done after you select to boot macOS. There will need to be some drivers that need to be loaded first like filesystem drivers and other protocols for fixing issues. Basically I want to make it like custom entry rules is already but with the ability to load drivers before actually running the specified loader. There is a built in config.plist that gets generated into data section that is parsed first thing in process, this can contain default rules. Users can modify as they see fit with custom entries. This gives the ability to read from the configuration protocol and modify the SMBIOS accordingly, kext and kernel patching, and kext injection. ACPI Patcher can be universal because I know that some people have been asking about it for linux and windows. There is no reason to load all drivers if we only know we will use a subset on boot, lazy loading them later saves time when not being used, and doesn't affect the time at all if used since it's just delaying the loading.

 

EDIT: Also it's not even close to being done, this is pre-alpha software right now. It does nothing meaningful to it's purpose but has a lot of parts, mainly the underlying infrastructure.

Edited by apianti

Share this post


Link to post
Share on other sites
4 hours ago, apianti said:

 

Cool. I am working on the Xcode project. There is not much to be seen, as mostly only debug information is printed out, there is no GUI yet. You can run in virtual machine, I have devised some methods for determining if running in a VM. I'd really like to see that it detects everyone's stuff correctly. I'd also like to know how many firmwares actually implement EFI_MP_SERVICES_PROTOCOL. The VMs Virtualbox and VMWare do not, but Qemu (with OVMF) implements it correctly. So if you did try can you please provide me with the log? It just appends .log to the name of the binary EFI application. So, \EFI\BOOT\BOOTX64.efi creates \EFI\BOOT\BOOTX64.efi.log. You can change the path with config.plist but I forget what the key is lol. I'll have to write out some configuration keys that are available.

 

EDIT: There is no key to change the log path yet, I'll need to fix that.

VMWare Fusion 10 does, do you want me to do some testing on Fusion, Parallels and real Mac?

Share this post


Link to post
Share on other sites

Ok, it turned out I forgot to initialize a variable, lol. Please create a serial output file for Parallels

 

Here is the ISO, if you could also try it on your actual firmware from a USB as well. I need the datas. I NEED THE DATAS.

 

EDIT: This is just X64 image.

 

6 hours ago, Pavo said:

VMWare Fusion 10 does, do you want me to do some testing on Fusion, Parallels and real Mac?

 

I have every VMWare product, haha. I tested on Virtualbox, VMWare Fusion, VMWare workstation, and Qemu with OVMF. Only Qemu supported actual MP, the others don't support it or only support synchronous execution which does not help. You can definitely give it some goes though, can you give me the serial port outputs? And the file log from your real firmware?

Edited by apianti

Share this post


Link to post
Share on other sites
1 hour ago, apianti said:

Ok, it turned out I forgot to initialize a variable, lol. Please create a serial output file for Parallels

 

Here is the ISO, if you could also try it on your actual firmware from a USB as well. I need the datas. I NEED THE DATAS.

Clover-3.0-experimental.iso

EDIT: This is just X64 image.

 

 

I have every VMWare product, haha. I tested on Virtualbox, VMWare Fusion, VMWare workstation, and Qemu with OVMF. Only Qemu supported actual MP, the others don't support it or only support synchronous execution which does not help. You can definitely give it some goes though, can you give me the serial port outputs? And the file log from your real firmware?

 

Now I use USB pendrive (macOS journalized).  Only black screen when I boot on my system. And no .log files generated.

Sorry for my bad english

Edited by Matgen84

Share this post


Link to post
Share on other sites
37 minutes ago, Matgen84 said:

 

Now I use USB pendrive (macOS journalized).  Only black screen when I boot on my system. And no .log files generated.

Sorry for my bad english

 

No formatted FAT32, it works. Did you get the log from serial output in parallels?

Share this post


Link to post
Share on other sites
8 minutes ago, apianti said:

 

No formatted FAT32, it works. Did you get the log from serial output in parallels?

Ok for FAT32. In Parallels, output files (log.txt) is empty

 

What type of VM in Parallels: macOS or windows?

Edited by Matgen84

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By AppleBytes
      OK, I've searching for days trying to gather up the tools to make my current install work correctly. I'm well on my way. But all the links to the things I currently must have were apparently nuked "during a forum upgrade". :(
      As far as EFI Studio goes; I can find many links to it. But for Insanelymac, they're broken (due to the upgrade), or for the Netkas site, they're links to either Rapidshare, or Mediafire that also no linger exist. I see many users here indicating that they used it to tweak their DSDT. But the web (google/duckduckgo), Instanelymac, and Netkas seem to have no idea where it's gone.
      Could some kind soul please share a copy, or a link? I'm a loooong time hacker, and would love to bring it back to life. In fact, I'd love to improve it -- or at least bring it up to current times. If only I knew where it was.
      Thank you for all your time, and consideration.
       
      --Chris
       
    • By SoThOr
      This was spurred on from a discussion in the Clover General thread. Where there was a debate on bcdedit being able create/read/edit (U)EFI Boot entries. I didn't think it appropriate to post all this information there and somebody may want to make use of this and its likely to get lost in that massive thread.
       
      Out of curiosity I decided to see if I could create an EFI entry using bcdedit. What can I say I like a challenge.  Whilst is not a documented method by Microsoft, as it turns out in a round about way it IS possible to create an EFI entry using bcdedit and these are the steps I went through to add UEFI Shell located on a USB stick to the EFI entries. 
       
      Third party software is available that can create and edit UEFI entries from Windows with better support and more features. I'm just making this information available in case those options are unavailable. 
       
      DISCLAIMER - This is not a supported method. Use at your own risk. I recommend backing up your BCD/Firmware variables/settings beforehand.
       
      1) Copy {bootmgr} entry.
      C:\Windows\System32>bcdedit /copy {bootmgr} /d "UEFI Shell" The entry was successfully copied to {34e8383c-73a7-11e9-9cb0-94de8078a7b5}. 2) Edit the new entry using the new GUID bcdedit generated in the copy step.
        a) Set the device and path for UEFI shell on my USB stick.
      bcdedit /set {34e8383d-73a7-11e9-9cb0-94de8078a7b5} device partition=G: bcdedit /set {34e8383d-73a7-11e9-9cb0-94de8078a7b5} path \EFI\SHELL\SHELLX64.efi   b) Clean up some of the stuff that was copied from {bootmgr} (optional as far as I can tell, just makes things tidier in bcdedit)
      3) Put the new EFI entry first in boot order. (optional)
       
      After completing the steps above, here is what "bcdedit /enum firmware" shows:
       
      I shutdown my computer and when I turned my computer back on it booted up into UEFI Shell. After exiting the shell my PC went on to boot Windows.
      Here is the resulting dump using "bcfg boot dump -v" from that shell:
       
      You may notice that the shell shows as "Windows Boot Manager" in the bcdedit output. This I believe is because of the "WINDOWS" at the beginning of the option data that bcdedit added to the EFI Boot entry. I also believe this why bcdedit shows my Windows 8 installation as "Firmware Application" because it has no option data. I don't know how to remove this data using bcdedit nor do I know how the option data, that bcdedit adds, will affect other EFI applications.

      There might be a way to create the EFI entry without copying the Windows entry but if there is I'm unable to find any documentation on how one would do so. If you use the create command then it just puts it in the BCD and I'm unaware of a way to tell it to create it in EFI instead, other than by doing the above.
    • By cvad
      Small tool to download, compile and build the latest Clover X64 package.
       
       
       

      The script inside is editable.

       
      Enjoy...
       
      Many thanks to the comrade SunKi for help with creating the script.
       
       
       
       
       
      Best thanks - click "Rate File".
       
    • By blxkspell
      Hey!
      As I have 3 Monitors connected, my RX 570 gets arround 50°C while ideling/ web browsing etc. The problem is, that this temp is apparently just the threshold, when the fans start to spin. So the fans start spinning for a minute then they stop for a while again... This is very annoying for me as the rest of my hackintosh is nearly quiet (SSD, 120mm low RPM cpu fan, nearly silent PSU,...), especially when Im using the pc to revise for school. Does somebody know wether its possible to "change" the threshold till the fans start spinning? Like it would probably not be a problem for the gpu at all, if the temp rises to 55°C but therefore be soundless....
       
       
    • By kylon
      Cloud Clover Editor allows you to manage Clover EFI and Ozmosis configs everywhere!
       
       
      WEB
      Open Cloud Clover Editor
       
      APP (MacOS - Discontinued)
      Clover flying editor ( Micky1979 )
       
       
       
       
      Sources: https://bitbucket.org/kylon/cloud-clover-editor-cce/overview


      To run CCE at home you will need:
       
      An HTTP server (Apache, Nginx, ...) PHP 5.3.3+ (latest PHP version is always recommended for better performances/security) Sqlite3 PHP extension  
       
      Some Features:
       
      Edit text in tables:
      Editable fields are marked with a text cursor.
      Double click, or tap and hold, to open the inline editor.
      You can now press Enter or click outside to save your changes.
       
       
      Tri-state checkboxes:
      There are 3 possible states for a checkbox: Checked, indeterminate and unchecked.
       
      Checked: Value is true;
      Indeterminate: Value is false;
      Unchecked: Value is not set (ie, removed from plist)
       
      Working with multiple configs:
      The right sidebar is your multitasking menu.
      Use the add button to create a new config and add it to the list.
      You can safely switch between all your configs, no changes will be lost.
      You can mix Clover EFI and Ozmosis configs.


      Config Upgrade feature:
      In the case you are using old configuration options, CCE gives you the ability to automatically upgrade your config.
       
       
      Copy to:
      You can copy patches between your configs (you will love this when you need to copy kernel and kext patches ;D ).
      You will find a yellow copy icon if that field does support the copyTo feature.
       
       
      Ozmosis Mode:
      A new setting, Cloud Clover Editor Mode, is now added in Cloud Clover Editor -> CCE Settings.
      This will let you switch from Clover EFI to Ozmosis mode.
      Changes to your current file will be lost.
       
       
      CCE Bank 2.0:
      Thanks to @cecekpawon for the idea.
       
      CCE Bank is a database where you can save/load Clover EFI and Ozmosis configs.
      You can protect your config from unwanted modifications or make a publicly editable config.
       
      To save a config in CCE Bank you only need to check the "Save to CCE Bank" option.
       
      Tick the box generate a new CID, if you don t have one.
       
      A CID (CCE ID) acts like a container and it is your authentication key.
      You can group multiple configs under the same CID or generate as many CIDs as you like.
       
      Edit Modes:
      Public: Anyone can make modifications, only the owner can change its settings. Private: Only the owner can make modifications and change its settings. MyBank: Only the owner can see this config, make modifications or change its settings.  
      MyBank is your private area.
      Change the 'view mode' to switch between the public bank and your personal bank.
       
      To manage your currently loaded config, go to Cloud Clover Editor -> Open config -> click the settings button.
       
       
      Notes:
      Locked/Private configs are marked with a padlock MyBank configs are only visibile in your private area Only the owner of a locked config can save the modifications in CCE Bank, hower you are free to do whatever you want in CCE and download the modified config If you loose your CID you can just reply or pm me No account is required!  
       
      Main Features:
      Left sidebar does support touch swipe on touch devices.
      No changes will be lost on page reload.
       
       
      Credits
      mackie100 - took some ideas from his app Clover EFI dev team Eric Slivka - new serial number Virtual1 - new serial number cecekpawon - PHP 5.3.3 patch, , help with the ACPI Loader Mode flag and more Micky1979 - Clover flying editor crusher. - Help with the ACPI Loader Mode flag Download-Fritz - Help with the ACPI Loader Mode flag Pavo - Ozmosis fields and values stehor - Ozmosis fields and values Sherlocks - General help and support gujiangjiang - General help and support Please let me know if i forgot you!
×