Home - RevoGirl/RevoBoot GitHub Wiki
What is RevoBoot?
RevoBoot is a GUI less* stage 2 bootloader based on Master Chief's "Revolution" - Revolution was a special kind of branch of Chameleon based on Apple's Boot 132. That being said. RevoBoot is the successor of Revolution and is now being ripped up, dissected and re-thought by RevoGirl. She has continued to fine tune every aspect of what's required to boot OS X in the most direct way, with the aim of keeping the bootloader as small, quick and tidy as possible. The good news is that other projects / developers are following our example. Which we think is great because that shows you that we are right. Spot on.
- We won't add bloat aka features found in every BIOS, like selecting a target boot drive from a menu, so you just have to set the most used Operating System as the first boot drive in the BIOS, and press F8 – or whatever it is in your BIOS – to boot another Operating System from there. We are however thinking about adding a new compiler option to add a menu, showing all available bootable OS X partitions.
Up-To-Date
RevoBoot was the first boot loader with full support for Intel's i5-2500(K) and i7-2600(K) processors, with automatic P-State and C-State generation (see: "Power Management Fixes"). Our team members also worked real hard to find an ingenious workaround for the broken UEFI implementation used for Asus motherboards – where Power Management failed to work – and on top of that also introduced a complete new way of fixing broken ACPI tables (see: "ACPI patching, done the easy way") Something we are really proud of, and we hope that this new feature, our contribution to solve this problem, will spur new interest from other developers in the community and keep on growing.
Overview of using RevoBoot
RevoBoot can be configured in two different ways. The first option you have is to let RevoBoot detect the hardware (CPU) and create a stripped down copy of the SMBIOS data for you. The second option is to use static CPU data instead of letting RevoBoot detect the CPU type and model data at boot time, and to use an extracted copy of the SMBIOS data – tools included. The latter option happens at the source code level and therefore requires you to compile RevoBoot for your hardware. This allowed us to make RevoBoot what it is today... the smallest and fastest (see: "World Record Benchmark Results") bootloader. Not the most practical and/or easiest bootloader.
RevoStick
RevoBoot may not fit your day-to-day needs, but there is one undeniable fact, and that is that it is the best Rescue Booter out on the market. Simply copy RevoBoot onto a specially crafted USB Flash Drive (see: "About RevoStick and RevoDisk") and plug it in when something fails, and RevoBoot will load the mach_kernel and extensions cache (or individual kexts) or a pre-linked kernel, from the RevoStick. This way you can fix things again. Something that helped us many times already!
Booting from a RevoStick can also be used to try out new things, without breaking your working environment. A very easy, but powerful, way to save some of your valuable time for other things.
Source Code Organization
RevoGirl has engineered the code to have a config folder, and in this config folder are the files which need to be changed. This keeps things simple for us, and less daunting for a new user as we only have to concentrate one or two configuration files – up to four when you use want to use static ACPI and SMBIOS data (see: "When to use static data").
Config Files
Looking at Revolutions' source code, drill down to /i386/config and you will find three folders, ACPI, EFI and SMBIOS, each containing a file named data.h. Static data for your system can be added to these data.h files in a structured way to enable you to benefit from a faster boot. For example, your DSDT.aml can be added to /i386/config/ACPI/data.h which will then be compiled inside Revolution. The result being the bootloader no longer needs to search for the file on disk to load at boot time.
Though note: These files don't have to be populated straight away as Revolution can still load your files from the /Extra folder on your boot volume.
Along with the three customisable data.h files, there is also a lose data.h file and settings.h file in /i386/config. The data.h file doesn't need to be touched and should remain where it is as it's part of the source code. Though the settings.h file is your master controller file, containing all the switches that can be turned on or off to direct the compiler code to include for your personal boot file.
Our Goals
One of our goals is to have a pre-compiled version of RevoBoot available for download, so that you don't have to compile it yourself when you want to use RevoBoot. This version will allow you to boot right away and it will do the following tasks for you:
- Detect your CPU model/type and match it with what OS X wants.
- Strip your SMBIOS data to a minimum.
- Patch the ACPI tables (this step also drops SSDT tables).
- Inject P-States and C-States (second generation Intel Core i[3/5/7] only).
This will help you get started, but after this it will be up to you. Then you decide if and how you want to use RevoBoot. Flip a few switches in the config file to make it even smaller/faster and/or inject EFI device-properties to make audio and your graphics card work.
Can it boot Lion?
Yes of course. We however do not support Lion until after it is officially released, but all you have to do is to use: make lion
instead of just entering make
. Please note that this will effectively block you from booting Snow Leopard (or vise versa) but this may change after the official release.
Related Projects
To help new users in the process of prepare and configure RevoBoot, users STLVNUB and Blackosx have made a suite of scripts. You can find more info here: RevoBuilder's how-to.
- RevoBuilder is not required, but an easy asset for new users of RevoBoot, and can certainly help you setup RevoBoot quicker, and more easily, but please be aware of the fact that we may have changed something that breaks RevoBuilder. We try not to break things, but sometimes we need to make changes that have a bad side effect on RevoBuilder.
Tip: run make
or make lion
in a terminal window when RevoBuilder fails for you – this should help you to determine if RevoBuilder is broken or not.
Warning: People with more than one monitor using RevoBuilder need to open settings.h and check the value of STATIC_SCREEN_WIDTH and STATIC_SCREEN_HEIGHT which should match with your boot screen – the one with AAPL,boot-display set (thanks Pike).