Jump to content

Clover v3


apianti
 Share

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
  • Like 14
  • Thanks 2
Link to comment
Share on other sites

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.

 

Link to comment
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
Link to comment
Share on other sites

If you are able, please donate, any amount is helpful and I really appreciate it. I would like to focus more time on Clover but I don't have the free time because I'm working on other paying jobs.

 

btn_donateCC_LG.gif

  • Like 4
Link to comment
Share on other sites

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

  • Like 4
Link to comment
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
  • Like 1
Link to comment
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
  • Like 1
Link to comment
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
  • Like 2
Link to comment
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
  • Like 1
Link to comment
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:

Link to comment
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
  • Like 1
Link to comment
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.

Link to comment
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.

Link to comment
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
  • Like 1
Link to comment
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

Link to comment
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
  • Like 1
Link to comment
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.

  • Like 1
Link to comment
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
  • Like 1
Link to comment
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?

Link to comment
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
Link to comment
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
Link to comment
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?

  • Like 1
Link to comment
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
Link to comment
Share on other sites

 Share

×
×
  • Create New...