Opened 8 years ago

Last modified 8 years ago

#4042 closed task

grub-2.02 — at Version 4

Reported by: Douglas R. Reno Owned by: lfs-book@…
Priority: normal Milestone: 8.1
Component: Book Version: SVN
Severity: normal Keywords:
Cc:

Description (last modified by bdubbs@…)

After five years, a new version.

New in 2.02:

  • New/improved filesystem and disk support:
    • Big-endian UFS1.
    • Experimental 64-bit ext2 support.
    • Various fixes for non-512-byte sector devices.
    • New `proc' filesystem framework, used by LUKS disks.
    • Fix DM-RAID partition handling.
    • New `nativedisk' command to switch from firmware to native disk drivers.
    • Compressed HFS+.
    • DragonFly BSD labels.
    • CBFS (coreboot).
    • Handle partitioned LVM properly.
    • Use LVM UUIDs whenever possible.
    • GPT PReP.
    • New `progress' module that shows progress information while reading files.
    • ZFS features support.
    • ZFS LZ4 support.
    • XFS V5 format support.
    • LVM RAID1 support.

  • New/improved terminal and video support:
    • Monochrome text (matching `hercules' in GRUB Legacy).
    • Morse code output using system speaker.
    • `spkmodem' output (simple data protocol using system speaker).
    • Handle Japanese special keys.
    • coreboot framebuffer.
    • Serial on ARC.
    • Native vt100 handling for grub-emu, replacing the use of the curses library.
    • New gfxmenu options for terminal window positioning, theme background image handling, and scrollbar padding, plus `item_pixmap_style' and `highlight_overlay'.
    • Support several more image types (paletted and greyscale).

  • Boot protocol improvements:
    • Support Apple FAT binaries on non-Apple platforms.
    • Improve FreeDOS direct loading support compatibility.
    • Enable `linux16' on all x86 platforms, not just BIOS.
    • New TrueCrypt ISO loader.
    • multiboot2 boot-services EFI specification.
    • multiboot2 EFI memory map specification.
    • multiboot2 full-file specfication.

  • New/improved network support:
    • New variables `net_default_*' containing properties of the default interface.
    • Autoload http' and tftp' modules if necessary.
    • Improve TFTP robustness.
    • Parse `nd' disk names in GRUB Legacy configuration files.
    • Issue separate DNS queries for IPv4 and IPv6.
    • Support IPv6 Router Advertisement to configure default router.
    • New variable net_<interface>_next_server containing next server from BOOTP reply.
  • Coreboot improvements:
    • CBFS support both in on-disk images (loopback) and flash.
    • Ability to launch another payload from flash or disk
    • Coreboot framebuffer
    • CBMEMC support (both logging and inspecting logs)
    • Command for inspecting coreboot timestamps (`coreboot_boottime').
    • Command for inspecting coreboot tables (`lscoreboot').
    • New target default_payload.elf.
    • Increased maximal core size.
    • Prefer pmtimer for TSC calibration.
  • New/improved platform support:
    • New efifwsetup' and lsefi' commands on EFI platforms.
    • New cmosdump' and cmosset' commands on platforms with CMOS support.
    • New command `pcidump' for PCI platforms.
    • Improve opcode parsing in ACPI halt implementation.
    • Use the TSC as a possible time source on i386-ieee1275.
    • Merge PowerPC grub-mkrescue implementation with the common one.
    • Support grub-mkrescue on i386-ieee1275, sparc64, bootinfo machines such as pSeries, and mips-arc.
    • Make grub-mkrescue better support Apple Intel Macs on CD.
    • Enable GRUB Legacy configuration file parsing on EFI.
    • Support halt for Loongson 2E.
    • ARM U-Boot and EFI ports.
    • Reorganise platform-dependent code in utilities to avoid #ifdef mess.
    • AROS and Haiku support for userspace utilities.
    • Xen PV port.
    • Fix EFI stack alignment.
    • ARM64 EFI port.
    • On Linux, read partition start offsets from sysfs if possible.
    • New grub-macbless utility, and better integration with Mac firmware in grub-install.
    • Support Yeeloong 3A.
    • Add `cpuid --pae' option to detect Physical Address Extension on x86.
    • Support for USB debug dongles.
    • Support for *-emu on all platforms (previously only i386/x86_64 worked).
    • Support *-emu on Windows.
    • New platform `none' which builds only user level utilities. This is now default if target CPU is not supported.
    • Support for booting little-endian Linux kernel on powerpc.
    • Support network boot with Oracle sun4v vnet devices.
    • Added SAS disks to the IEEE 1275 Open Firmware device list.
    • Try multiple methods for TSC (timestamp counter) calibration - PIT, pmtimer, EFI Stall. If everything fails, use hardcoded frequency 800MHz.
    • Support Hyper-V Gen2 platforms which lack PIT for TSC calibration.
    • Map UEFI Persistent Memory to E820 persistent memory.
    • New Xen loader on ARM64.
    • Respect alignment requirement for block device IO buffers on EFI.
  • Security:
    • Add optional facility to enforce that all files read by the core image from disk have a valid detached digital signature.
  • Performance:
    • Avoid costly division operations in many places.
    • New boot time analysis framework (`./configure --enable-boot-time').
    • Initialise USB ports in parallel.
    • New `testspeed' command to test file read speed.
    • Speed-up gfxterm by storing intermediate results in more compact format.
    • Lazy LVM/mdraid scan.
    • Disk hints.
  • Scripting:
    • New eval' and tr' commands.
    • grub-script-check fails on scripts containing no commands.
  • Installation and other utility improvements:
    • Add option to compress files on installation or image creation.
    • Using grub-reboot no longer requires setting `GRUB_DEFAULT=saved'.
    • Support probing EFI System Partition (requires os-prober >= 1.58).
    • Fix inconsistent use of `GRUB_CRYPTODISK_ENABLE' and `GRUB_ENABLE_CRYPTODISK'; the latter is now used consistently.
    • grub-mount handles symbolic links to directories.
    • Support disabling submenus with `GRUB_DISABLE_SUBMENU' configuration key for grub-mkconfig.
    • grub-install, grub-mknetdir, grub-mkrescue, and grub-mkstandalone rewritten in C. They should now work in supported non-Unix-like environments.
    • Native mingw support.
    • Ability to install on EFI under windows.
    • Reorganise timeout handling using new `timeout_style' environment variable and `GRUB_TIMEOUT_STYLE' configuration key for grub-mkconfig. Menu hotkeys pressed during a hidden timeout now boot the corresponding menu entry immediately.
    • New `file' command and grub-file utility to check file types.
    • New syslinux configuration file parser.
    • Set menu entry class to primary OS name returned by os-prober to display OS specific icon.
    • On Linux x86 detect EFI word size in grub-install and automatically select correct platform (x86_64-efi or i386-efi) to install. Requires Linux kernel 4.0 or higher.
  • Build system:
    • Remove all uses of nested functions; GRUB no longer requires an executable stack.
    • Fix documentation build with Texinfo >= 5.1.
    • More robust and documented cross-compiling support.
    • Partial clang support for some platforms (experimental).
    • Partial mingw64 x86_64-efi compile support (highly experimental).
    • Partial mingw32 i386-* (other than already present i386-pc) compile support (highly experimental).
    • Support for grub-mkpasswd on Windows.
    • Eliminate the use of AutoGen. This allowed some performance improvements to the build system.
    • Remove variable length arrays.
    • OpenBSD compile and tools support (NetBSD and FreeBSD were already supported).
    • Fix build with FreeType >= 2.5.1.
    • Make gentpl.py compatible with Python 3. It now requires at least Python 2.6.
    • modinfo.sh contains build information now.
    • Added many new tests to improve robustness.
    • Target is built without libgcc now. Necessary builtins are reimplemented directly. This removes requirement for target-specific runtime on build system.
    • emu libusb support removed (was broken and unmaintained).
    • powerpc64le compile support.
    • Use fixed timestamp when generating GRUB image for reproducible builds.
    • Verify at build time that modules contain only supported relocations and their structure matches what boot-time module loader expects.
    • Do not require fonts on powerpc-ieee1275.
  • Revision control moved to git.

Change History (4)

comment:1 by bdubbs@…, 8 years ago

I'm not sure if we should use this or just wait for the stable 2.02. Currently we use grub-2.02~beta3 and it works fine. That was released a full year ago. I follow the mailing list and I think they want to release this month.

We can slip in a new grub version any time before release of the stable lfs-8.0 since no other package depends on it.

I do not know of anything new that the latest version adds for the typical LFS user. I copied the long list of changes to:

http://anduin.linuxfromscratch.org/~bdubbs/files/grub-2.02~rc1-news

but it does not differentiate changes between grub-2.02~rc1 and grub-2.02~beta3, only changes between 2.00 and 2.02.

comment:2 by bdubbs@…, 8 years ago

Milestone: 8.08.1

Did not make if for 8.0. Changing to 8.1.

comment:3 by bdubbs@…, 8 years ago

Summary: grub-2.02~rc1grub-2.02~rc2

comment:4 by bdubbs@…, 8 years ago

Description: modified (diff)
Summary: grub-2.02~rc2grub-2.02

Built in basic LFS chroot environment using current instructions:

GRUB2 will be compiled with following components: Platform: i386-pc With devmapper support: No (need libdevmapper header) With memory debugging: No With disk cache statistics: No With boot time statistics: No efiemu runtime: No (explicitly disabled) grub-mkfont: No (need freetype2 library) grub-mount: No (need FUSE library) starfield theme: No (No build-time grub-mkfont) With libzfs support: No (need zfs library) Build-time grub-mkfont: No (need freetype2 library) Without unifont (no build-time grub-mkfont) With liblzma from -llzma (support for XZ-compressed mips images)

Current instructions seem to work, but I have not yet tested grub-install directly, however I did have /boot bind mounted to /mnt/lfs/boot so /boot/grub files (but not grub.cfg) were overwritten.

Man pages are not installed because help2man is not available in chroot.

Note: See TracTickets for help on using tickets.