GRUB 2 is derived from PUPAGRUB which was a research project to investigate the next generation of GRUB. GRUB 2 has been rewritten from scratch to clean up everything for modularity and portability.
GRUB 2 targets at the following goals:
- Scripting support, such as conditionals, loops, variables and functions.
- Graphical interface.
- Dynamic loading of modules in order to extend itself at the run time rather than at the build time.
- Portability for various architectures.
- Internationalization. This includes support for non-ASCII character code, message catalogs like gettext, fonts, graphics console, and so on.
- Real memory management, to make GNU GRUB more extensible.
- Modular, hierarchical, object-oriented framework for file systems, files, devices, drives, terminals, commands, partition tables and OS loaders.
- Cross-platform installation which allows for installing GRUB from a different architecture.
- Rescue mode saves unbootable cases. Stage 1.5 was eliminated.
- Fix design mistakes in GRUB Legacy, which could not be solved for backward-compatibility, such as the way of numbering partitions.