Jump to content

Build_Clover.command, another Script to build standard Clover (or customized)

Bootloader Clover UEFI Build_Clover.command

  • Please log in to reply
916 replies to this topic

#1
Micky1979

Micky1979

    I realized that I am lucky

  • Moderators
  • 4,814 posts
  • Gender:Male
  • Location:a 100m dal Tevere, vicino a Peppe

post-674334-0-80063400-1476624864.png

 

Hi, building Pandora's Box I need to compile Clover from source so I've created a script to do that following Clover devs advices.

 

Well, Build_Clover.command can easily build a standard Clover, but also permit you to define macros that are not available on the standard package.

So following Slice intruction here you can create a new package containing legacy boot file with all the macro you need by selecting them:

===============================================================================
BUILD boot7 with additional macros
                          <----------------------------------------------------
	 1) USE_APPLE_HFSPLUS_DRIVER
	 2) USE_BIOS_BLOCKIO
	 3) NO_GRUB_DRIVERS
	 4) DISABLE_UDMA_SUPPORT
	 5) ENABLE_VBIOS_PATCH_CLOVEREFI
	 6) DISABLE_USB_SUPPORT
	 7) ENABLE_PS2MOUSE_LEGACYBOOT
	 8) DEBUG_ON_SERIAL_PORT
	 9) DISABLE_LTO
	 10) ENABLE_SECURE_BOOT
	 11) USE_ION
	 12) DISABLE_USB_MASS_STORAGE
	 13) ENABLE_USB_OHCI
	 14) ENABLE_USB_XHCI
ONLY_SATA_0 added!
actual macros defined: -D REAL_NVRAM -D NO_GRUB_DRIVERS_EMBEDDED -D ONLY_SATA_0

That affect boot7 only,
enter you choice or press "b" to build:

Result:

Attached File  CustomClover.png   151.7KB   100 downloads

also the package is customized to remind you what you have done!  B)

 

 

 

Push here to Download 



#2
Micky1979

Micky1979

    I realized that I am lucky

  • Moderators
  • 4,814 posts
  • Gender:Male
  • Location:a 100m dal Tevere, vicino a Peppe

Explanation of the available options:

 

 1) add "buildclover" symlink to /usr/local/bin

Spoiler

 

 2) update Build_Clover.command

Spoiler

 3) update Clover only (no building)

Spoiler

 4) update Clover + force edk2 update (no building)

Spoiler

 5) run my script on the source

Spoiler

 6) build existing revision (no update, for testing only)

Spoiler

 7) build existing revision for release (no update, standard build)

Spoiler

 8) build existing revision with custom macros enabled

Spoiler

 9) info and limitations about this script

Spoiler

 *10) enter Developers mode (only for devs)

Spoiler

 11) Exit

Spoiler

 

 

Selecting the architecture

Spoiler

 

Clover source in a specific subfolder you like (instead of being in the Home directory)

Spoiler

 

Supported OS

macOS X, Ubuntu 16.04 + and Debian Jessie 8.6 + (read)

 

Note:

the package (.pkg) can only be builted in macOS X  since linux use other tecnologies.

 

 

Improvements:

Spoiler

See full changelog


Edited by Micky1979, 03 February 2017 - 12:08 PM.


#3
calibre™

calibre™

    InsanelyMac Sage

  • Members
  • PipPipPipPipPip
  • 257 posts
  • Gender:Male
That affect boot7 only

i applied -D NO_GRUB_DRIVERS_EMBEDDED in boot6 manually and it worked. any downside on why it has to be in boot7 only?

 

Also, i don't see -D USE_APPLE_HFSPLUS_DRIVER in the list.



#4
calibre™

calibre™

    InsanelyMac Sage

  • Members
  • PipPipPipPipPip
  • 257 posts
  • Gender:Male

@Mickey1979

 

First fresh run: Getting multiple "command not found" at the end?

drwxr-xr-x  13 Mike  staff       442 Jul 14 12:13 .
drwxr-xr-x  14 Mike  staff       476 Jul 14 12:13 ..
drwxr-xr-x   5 Mike  staff       170 Jul 14 12:13 CloverCD
drwxr-xr-x   4 Mike  staff       136 Jul 14 12:13 CloverISO-3619
-rw-r--r--   1 Mike  staff   6367733 Jul 14 12:13 CloverISO-3619.tar.lzma
-rw-r--r--@  1 Mike  staff  27842456 Jul 14 12:13 Clover_v2.3k_r3619.pkg
-rw-r--r--   1 Mike  staff        68 Jul 14 12:13 Clover_v2.3k_r3619.pkg.md5
-rw-r--r--   1 Mike  staff  27780057 Jul 14 12:13 Clover_v2.3k_r3619.zip
drwxr-xr-x   3 Mike  staff       102 Jul 14 12:12 Resources
drwxr-xr-x   7 Mike  staff       238 Jul 14 12:13 build
drwxr-xr-x   4 Mike  staff       136 Jul 14 12:13 i386
drwxr-xr-x   3 Mike  staff       102 Jul 14 12:13 package
drwxr-xr-x   7 Mike  staff       238 Jul 14 12:13 utils
===============================================================================
Done
                          <----------------------------------------------------
HTPC:~ Mike$ A    MdePkg/Library/BaseMemoryLibOptPei/Ia32/SetMem32.asm
-bash: A: command not found
HTPC:~ Mike$ A    MdePkg/Library/BaseMemoryLibOptPei/Ia32/ZeroMem.S
-bash: A: command not found
HTPC:~ Mike$ A    MdePkg/Library/BaseMemoryLibOptPei/Ia32/SetMem16.asm
-bash: A: command not found
HTPC:~ Mike$ A    MdePkg/Library/BaseMemoryLibOptPei/Ia32/SetMem.nasm
-bash: A: command not found
HTPC:~ Mike$ A    MdePkg/Library/BaseMemoryLibOptPei/Ia32/CopyMem.asm
-bash: A: command not found
HTPC:~ Mike$ A    MdePkg/Library/BaseMemoryLibOptPei/Ia32/ScanMem32.S
-bash: A: command not found
HTPC:~ Mike$ A    MdePkg/Library/BaseMemoryLibOptPei/Ia32/ScanMem8.asm
-bash: A: command not found
HTPC:~ Mike$ A    MdePkg/Library/BaseMemoryLibOptPei/Ia32/SetMem32.asm
-bash: A: command not found
HTPC:~ Mike$ A    MdePkg/Library/BaseMemoryLibOptPei/Ia32/ZeroMem.S
-bash: A: command not found
HTPC:~ Mike$ A    MdePkg/Library/BaseMemoryLibOptPei/Ia32/SetMem16.asm
-bash: A: command not found
HTPC:~ Mike$ A    MdePkg/Library/BaseMemoryLibOptPei/Ia32/SetMem.nasm
-bash: A: command not found
HTPC:~ Mike$ A    MdePkg/Library/BaseMemoryLibOptPei/Ia32/CopyMem.asm
-bash: A: command not found
HTPC:~ Mike$ A    MdePkg/Library/BaseMemoryLibOptPei/Ia32/ScanMem32.S
-bash: A: command not found
HTPC:~ Mike$ A    MdePkg/Library/BaseMemoryLibOptPei/Ia32/ScanMem8.asm
-bash: A: command not found
HTPC:~ Mike$ A    MdePkg/Library/BaseMemoryLibOptPei/Ia32/SetMem32.asm
-bash: A: command not found
HTPC:~ Mike$ A    MdePkg/Library/BaseMemoryLibOptPei/Ia32/ZeroMem.S
-bash: A: command not found
HTPC:~ Mike$ A    MdePkg/Library/BaseMemoryLibOptPei/Ia32/SetMem16.asm
-bash: A: command not found
HTPC:~ Mike$ A    MdePkg/Library/BaseMemoryLibOptPei/Ia32/SetMem.nasm
-bash: A: command not found
HTPC:~ Mike$ A    MdePkg/Library/BaseMemoryLibOptPei/Ia32/CopyMem.asm
-bash: A: command not found
HTPC:~ Mike$ A    MdePkg/Library/BaseMemoryLibOptPei/Ia32/ScanMem32.S
-bash: A: command not found
HTPC:~ Mike$ A    MdePkg/Library/BaseMemoryLibOptPei/Ia32/ScanMem8.asm
-bash: A: command not found
HTPC:~ Mike$ A    MdePkg/Library/BaseMemoryLibOptPei/Ia32/SetMem32.asm
-bash: A: command not found
HTPC:~ Mike$ A    MdePkg/Library/BaseMemoryLibOptPei/Ia32/ZeroMem.S
-bash: A: command not found
HTPC:~ Mike$ A    MdePkg/Library/BaseMemoryLibOptPei/Ia32/SetMem16.asm
-bash: A: command not found
HTPC:~ Mike$ A    MdePkg/Library/BaseMemoryLibOptPei/Ia32/SetMem.nasm
-bash: A: command not found
HTPC:~ Mike$ A    MdePkg/Library/BaseMemoryLibOptPei/Ia32/CopyMem.asm
-bash: A: command not found
HTPC:~ Mike$ A    MdePkg/Library/BaseMemoryLibOptPei/Ia32/ScanMem32.S
-bash: A: command not found
HTPC:~ Mike$ A    MdePkg/Library/BaseMemoryLibOptPei/Ia32/ScanMem8.asm
-bash: A: command not found
HTPC:~ Mike$ A    MdePkg/Library/BaseMemoryLibOptPei/Ia32/SetMem32.asm
-bash: A: command not found
HTPC:~ Mike$ A    MdePkg/Library/BaseMemoryLibOptPei/Ia32/ZeroMem.S
-bash: A: command not found
HTPC:~ Mike$ A    MdePkg/Library/BaseMemoryLibOptPei/Ia32/SetMem16.asm
-bash: A: command not found
HTPC:~ Mike$ A    MdePkg/Library/BaseMemoryLibOptPei/Ia32/SetMem.nasm
-bash: A: command not found
HTPC:~ Mike$ A    MdePkg/Library/BaseMemoryLibOptPei/Ia32/CopyMem.asm
-bash: A: command not found
HTPC:~ Mike$ A    MdePkg/Library/BaseMemoryLibOptPei/Ia32/ScanMem32.S
-bash: A: command not found
HTPC:~ Mike$ A    MdePkg/Library/BaseMemoryLibOptPei/Ia32/ScanMem8.asm
-bash: A: command not found

2nd run: building pkg skipped due to NO_GRUB_EMBEDDED?

Generating BootSectors
make: Nothing to be done for `all'.
Done!
Build Package/iso skipped because of NO_GRUB_DRIVERS/_EMBEDDED!
===============================================================================
Done
                          <----------------------------------------------------
DADS:~ Mike$


#5
Micky1979

Micky1979

    I realized that I am lucky

  • Moderators
  • 4,814 posts
  • Gender:Male
  • Location:a 100m dal Tevere, vicino a Peppe

i applied -D NO_GRUB_DRIVERS_EMBEDDED in boot6 manually and it worked. any downside on why it has to be in boot7 only?

 

Also, i don't see -D USE_APPLE_HFSPLUS_DRIVER in the list.

Why compile two bootloader with same functionality? I mean, you need only one boot file.

boot6 = standard

boot7 = boot6 with all macros defined that you need. Simply.

 

About "USE_APPLE_HFSPLUS_DRIVER" I forgot to add it :P


 

@Mickey1979

 

First fresh run: Getting multiple "command not found" at the end?

drwxr-xr-x  13 Mike  staff       442 Jul 14 12:13 .
drwxr-xr-x  14 Mike  staff       476 Jul 14 12:13 ..
drwxr-xr-x   5 Mike  staff       170 Jul 14 12:13 CloverCD
drwxr-xr-x   4 Mike  staff       136 Jul 14 12:13 CloverISO-3619
-rw-r--r--   1 Mike  staff   6367733 Jul 14 12:13 CloverISO-3619.tar.lzma
-rw-r--r--@  1 Mike  staff  27842456 Jul 14 12:13 Clover_v2.3k_r3619.pkg
-rw-r--r--   1 Mike  staff        68 Jul 14 12:13 Clover_v2.3k_r3619.pkg.md5
-rw-r--r--   1 Mike  staff  27780057 Jul 14 12:13 Clover_v2.3k_r3619.zip
drwxr-xr-x   3 Mike  staff       102 Jul 14 12:12 Resources
drwxr-xr-x   7 Mike  staff       238 Jul 14 12:13 build
drwxr-xr-x   4 Mike  staff       136 Jul 14 12:13 i386
drwxr-xr-x   3 Mike  staff       102 Jul 14 12:13 package
drwxr-xr-x   7 Mike  staff       238 Jul 14 12:13 utils
===============================================================================
Done
                          <----------------------------------------------------
HTPC:~ Mike$ A    MdePkg/Library/BaseMemoryLibOptPei/Ia32/SetMem32.asm
-bash: A: command not found
HTPC:~ Mike$ A    MdePkg/Library/BaseMemoryLibOptPei/Ia32/ZeroMem.S
-bash: A: command not found
HTPC:~ Mike$ A    MdePkg/Library/BaseMemoryLibOptPei/Ia32/SetMem16.asm
-bash: A: command not found
HTPC:~ Mike$ A    MdePkg/Library/BaseMemoryLibOptPei/Ia32/SetMem.nasm
-bash: A: command not found
HTPC:~ Mike$ A    MdePkg/Library/BaseMemoryLibOptPei/Ia32/CopyMem.asm
-bash: A: command not found
HTPC:~ Mike$ A    MdePkg/Library/BaseMemoryLibOptPei/Ia32/ScanMem32.S
-bash: A: command not found
HTPC:~ Mike$ A    MdePkg/Library/BaseMemoryLibOptPei/Ia32/ScanMem8.asm
-bash: A: command not found
HTPC:~ Mike$ A    MdePkg/Library/BaseMemoryLibOptPei/Ia32/SetMem32.asm
-bash: A: command not found
HTPC:~ Mike$ A    MdePkg/Library/BaseMemoryLibOptPei/Ia32/ZeroMem.S
-bash: A: command not found
HTPC:~ Mike$ A    MdePkg/Library/BaseMemoryLibOptPei/Ia32/SetMem16.asm
-bash: A: command not found
HTPC:~ Mike$ A    MdePkg/Library/BaseMemoryLibOptPei/Ia32/SetMem.nasm
-bash: A: command not found
HTPC:~ Mike$ A    MdePkg/Library/BaseMemoryLibOptPei/Ia32/CopyMem.asm
-bash: A: command not found
HTPC:~ Mike$ A    MdePkg/Library/BaseMemoryLibOptPei/Ia32/ScanMem32.S
-bash: A: command not found
HTPC:~ Mike$ A    MdePkg/Library/BaseMemoryLibOptPei/Ia32/ScanMem8.asm
-bash: A: command not found
HTPC:~ Mike$ A    MdePkg/Library/BaseMemoryLibOptPei/Ia32/SetMem32.asm
-bash: A: command not found
HTPC:~ Mike$ A    MdePkg/Library/BaseMemoryLibOptPei/Ia32/ZeroMem.S
-bash: A: command not found
HTPC:~ Mike$ A    MdePkg/Library/BaseMemoryLibOptPei/Ia32/SetMem16.asm
-bash: A: command not found
HTPC:~ Mike$ A    MdePkg/Library/BaseMemoryLibOptPei/Ia32/SetMem.nasm
-bash: A: command not found
HTPC:~ Mike$ A    MdePkg/Library/BaseMemoryLibOptPei/Ia32/CopyMem.asm
-bash: A: command not found
HTPC:~ Mike$ A    MdePkg/Library/BaseMemoryLibOptPei/Ia32/ScanMem32.S
-bash: A: command not found
HTPC:~ Mike$ A    MdePkg/Library/BaseMemoryLibOptPei/Ia32/ScanMem8.asm
-bash: A: command not found
HTPC:~ Mike$ A    MdePkg/Library/BaseMemoryLibOptPei/Ia32/SetMem32.asm
-bash: A: command not found
HTPC:~ Mike$ A    MdePkg/Library/BaseMemoryLibOptPei/Ia32/ZeroMem.S
-bash: A: command not found
HTPC:~ Mike$ A    MdePkg/Library/BaseMemoryLibOptPei/Ia32/SetMem16.asm
-bash: A: command not found
HTPC:~ Mike$ A    MdePkg/Library/BaseMemoryLibOptPei/Ia32/SetMem.nasm
-bash: A: command not found
HTPC:~ Mike$ A    MdePkg/Library/BaseMemoryLibOptPei/Ia32/CopyMem.asm
-bash: A: command not found
HTPC:~ Mike$ A    MdePkg/Library/BaseMemoryLibOptPei/Ia32/ScanMem32.S
-bash: A: command not found
HTPC:~ Mike$ A    MdePkg/Library/BaseMemoryLibOptPei/Ia32/ScanMem8.asm
-bash: A: command not found
HTPC:~ Mike$ A    MdePkg/Library/BaseMemoryLibOptPei/Ia32/SetMem32.asm
-bash: A: command not found
HTPC:~ Mike$ A    MdePkg/Library/BaseMemoryLibOptPei/Ia32/ZeroMem.S
-bash: A: command not found
HTPC:~ Mike$ A    MdePkg/Library/BaseMemoryLibOptPei/Ia32/SetMem16.asm
-bash: A: command not found
HTPC:~ Mike$ A    MdePkg/Library/BaseMemoryLibOptPei/Ia32/SetMem.nasm
-bash: A: command not found
HTPC:~ Mike$ A    MdePkg/Library/BaseMemoryLibOptPei/Ia32/CopyMem.asm
-bash: A: command not found
HTPC:~ Mike$ A    MdePkg/Library/BaseMemoryLibOptPei/Ia32/ScanMem32.S
-bash: A: command not found
HTPC:~ Mike$ A    MdePkg/Library/BaseMemoryLibOptPei/Ia32/ScanMem8.asm
-bash: A: command not found

2nd run: building pkg skipped due to NO_GRUB_EMBEDDED?

Generating BootSectors
make: Nothing to be done for `all'.
Done!
Build Package/iso skipped because of NO_GRUB_DRIVERS/_EMBEDDED!
===============================================================================
Done
                          <----------------------------------------------------
DADS:~ Mike$

As I said the path should not include blank spaces, why fail (I guess). Will be corrected.

About NO_GRUB_DRIVERS_EMBEDDED, we have to check if the buildpkg.sh script can add all new drivers generated for the legacy options. I guess you need generated drivers not embedded in the boot file and the boot file with no embedded drivers, so the pkg is not generated (I thought you want that since enabling all other macros have no problem generating the pkg).

Finally You know that the boot file where you have applied your choices is boot7 (is a script, and has no brain, so I decide that boot7 will the boot file compiled with your preferences).

Usually in the generated pkg boot7 is the one that report the choice "use Bios block IO", but you will know that your compilation is different.. simply no? ^_^

 

I'll move these posts in a new topic later..


Edited by Micky1979, 16 July 2016 - 01:22 PM.
added a blank spaces check for MODE=R


#6
fantomas1

fantomas1

    InsanelyMacaholic

  • Supervisors
  • 4,298 posts
  • Gender:Male

attachicon.gifBuild_Clover_S.command.zip

---> src in home folder as usual

 

 

attachicon.gifBuild_Clover_R.command.zip (Rehabman idea)

---> src in any sub folder (src is created where the script are located. Make a folder, copy the script inside and run it). Require no empty spaces in the path (ATM).

 

Note: the two script are the same but with standard/custom path commented as required

 

NEW:

Spoiler

 

Thank you - it works fine here.  :thumbsup_anim:

 

Attached File  clover_building_success.png   115.09KB   14 downloads



#7
Micky1979

Micky1979

    I realized that I am lucky

  • Moderators
  • 4,814 posts
  • Gender:Male
  • Location:a 100m dal Tevere, vicino a Peppe

I know :D , also solved the white space characters in the path for the next revision of this script. Going to move all these posts elsewhere..

EDIT

Build_Clover.sh can handle white spaces in paths, Clover's scripts can't. Leaving this opportunity: user must choose a path w/o blank space in the middle. 


Edited by Micky1979, 16 July 2016 - 01:23 PM.
added a blank spaces check for MODE=R


#8
Micky1979

Micky1979

    I realized that I am lucky

  • Moderators
  • 4,814 posts
  • Gender:Male
  • Location:a 100m dal Tevere, vicino a Peppe

 

@Mickey1979

Generating BootSectors
make: Nothing to be done for `all'.
Done!
Build Package/iso skipped because of NO_GRUB_DRIVERS/_EMBEDDED!
===============================================================================
Done
                          <----------------------------------------------------
DADS:~ Mike$

v2.5 at first post is corrected to build with all macros enabled, also the package will show you changes you applied!



#9
Riley Freeman

Riley Freeman

    InsanelyMac Deity

  • Members
  • PipPipPipPipPipPipPipPipPipPip
  • 1,524 posts
  • Gender:Male
  • Location:The Streets

Thanks Micky. It works well but is there any way to set the architecture?

 

I only want it to build x64 (as I do now with CGP).



#10
Micky1979

Micky1979

    I realized that I am lucky

  • Moderators
  • 4,814 posts
  • Gender:Male
  • Location:a 100m dal Tevere, vicino a Peppe

You want the same for ia32 ..boot3?

If you mean this I can do that for the next update

 

EDIT

I saw your edit now, so yes the architecture can be selected adding a switch



#11
Riley Freeman

Riley Freeman

    InsanelyMac Deity

  • Members
  • PipPipPipPipPipPipPipPipPipPip
  • 1,524 posts
  • Gender:Male
  • Location:The Streets

I'm not too familiar with Clover build options, but I got it to work as I like by commenting out the boot7 and Clover IA32 entries in the build section. I only need 64-bit UEFI from Clover.

 

I guess some extra options for the build phase would do it.



#12
Micky1979

Micky1979

    I realized that I am lucky

  • Moderators
  • 4,814 posts
  • Gender:Male
  • Location:a 100m dal Tevere, vicino a Peppe

Yes It easy to automate. The resulting package, btw, is showing you boot3 (+ drivers 32 bit)/boot7 options?


Ok, next release will produce selected architecture, and the package will show/contains only drivers/booter for it



#13
Riley Freeman

Riley Freeman

    InsanelyMac Deity

  • Members
  • PipPipPipPipPipPipPipPipPipPip
  • 1,524 posts
  • Gender:Male
  • Location:The Streets

The resulting package only contains the 64-bit files. No drivers32 or 32 bit efi files. Just how I like it.



#14
Micky1979

Micky1979

    I realized that I am lucky

  • Moderators
  • 4,814 posts
  • Gender:Male
  • Location:a 100m dal Tevere, vicino a Peppe

Because you always build only that target, otherwise no, so I had to clean old builded stuff after selecting the desired arch... working on it!



#15
droples

droples

    InsanelyMac Geek

  • Members
  • PipPipPipPip
  • 221 posts
  • Gender:Male

Build_Clover25

Everything is working.

Spoiler

Attached File  SB_25.txt   115.61KB   10 downloads



#16
Micky1979

Micky1979

    I realized that I am lucky

  • Moderators
  • 4,814 posts
  • Gender:Male
  • Location:a 100m dal Tevere, vicino a Peppe

thanks Guys, working also to customize boot3 :)



#17
droples

droples

    InsanelyMac Geek

  • Members
  • PipPipPipPip
  • 221 posts
  • Gender:Male

There is one nuance.

I installed boot7.

Spoiler

 

In the boot-log I see a loading boot7.

 

Spoiler

 

But on screen I see

Spoiler


#18
Micky1979

Micky1979

    I realized that I am lucky

  • Moderators
  • 4,814 posts
  • Gender:Male
  • Location:a 100m dal Tevere, vicino a Peppe

@droples that is a message printed by boot1f32 (or its "alt" variant) and not by boot3/6/7, I can't see nothing wrong with it (otherwise you will see "b1f: error"). What do you mean?


New v2.6 available:

 

What's New in Version 2.6 

  • v2.6: you can now build Clover's package for the selected architecture (32-bit only, 64-bit only or both)
  • v2.6: You can define macros also for 32-bit builds

 

PS Option 8) show info about the script functionalities and its limitation.



#19
Riley Freeman

Riley Freeman

    InsanelyMac Deity

  • Members
  • PipPipPipPipPipPipPipPipPipPip
  • 1,524 posts
  • Gender:Male
  • Location:The Streets

Thanks for the new version Micky. The architecture option worked for building a x64 version.



#20
Micky1979

Micky1979

    I realized that I am lucky

  • Moderators
  • 4,814 posts
  • Gender:Male
  • Location:a 100m dal Tevere, vicino a Peppe

Thanks for the new version Micky. The architecture option worked for building a x64 version.

 

Thanks. Also this way it's very fast  :yes:







Also tagged with one or more of these keywords: Bootloader, Clover, UEFI, Build_Clover.command


0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

© 2016 InsanelyMac  |   News  |   Forum  |   Downloads  |   OSx86 Wiki  |   Mac Netbook  |   PHP hosting by CatN  |   Designed by Ed Gain  |   Logo by irfan  |   Privacy Policy