[grub] update embedded GRUB to 2.06

* Also enable NTFS and ext# as GRUB2 compatible file systems.
This commit is contained in:
Pete Batard 2021-07-27 18:10:29 +01:00
parent 6ed7524c1b
commit 8ceb0045fa
No known key found for this signature in database
GPG Key ID: 38E0CF5E69EDD671
8 changed files with 26 additions and 20 deletions

View File

@ -11,7 +11,7 @@
<Identity
Name="19453.net.Rufus"
Publisher="CN=7AC86D13-3E5A-491A-ADD5-80095C212740"
Version="3.15.1803.0" />
Version="3.15.1804.0" />
<Properties>
<DisplayName>Rufus</DisplayName>

Binary file not shown.

View File

@ -2,4 +2,4 @@
* This file contains the version string of the GRUB 2.x binary embedded in Rufus.
* Should be the same as GRUB's PACKAGE_VERSION in config.h.
*/
#define GRUB2_PACKAGE_VERSION "2.04"
#define GRUB2_PACKAGE_VERSION "2.06"

View File

@ -1,17 +1,14 @@
This directory contains the Grub 2.0 boot records that are used by Rufus
* boot.img and core.img were created from:
https://ftp.gnu.org/gnu/grub/grub-2.04.tar.xz
with the following 3 extra patches applied:
- https://lists.gnu.org/archive/html/grub-devel/2020-07/msg00016.html
- https://lists.gnu.org/archive/html/grub-devel/2020-07/msg00017.html
- https://lists.gnu.org/archive/html/grub-devel/2021-03/msg00012.html
on a Debian 10.x x64 system using the commands:
https://ftp.gnu.org/gnu/grub/grub-2.06.tar.xz
on a Debian 10.9 x64 system using the commands:
./autogen.sh
# --enable-boot-time for Manjaro Linux
./configure --disable-nls --enable-boot-time
make -j6
make -j4
cd grub-core
../grub-mkimage -v -O i386-pc -d. -p\(hd0,msdos1\)/boot/grub biosdisk part_msdos fat ntfs exfat -o core.img
../grub-mkimage -v -O i386-pc -d. -p\(hd0,msdos1\)/boot/grub biosdisk fat exfat ext2 ntfs ntfscomp part_msdos -o core.img
* boot.img has been modified to nop the jump @ 0x66 as per grub2's setup.c comments:
/* If DEST_DRIVE is a hard disk, enable the workaround, which is

View File

@ -1698,8 +1698,7 @@ BOOL GetDrivePartitionData(DWORD DriveIndex, char* FileSystemName, DWORD FileSys
SelectedDrive.PartitionOffset[i] = DriveLayout->PartitionEntry[i].StartingOffset.QuadPart;
SelectedDrive.PartitionSize[i] = DriveLayout->PartitionEntry[i].PartitionLength.QuadPart;
}
// NB: MinGW's gcc 4.9.2 broke "%lld" printout on XP so we use the inttypes.h "PRI##" qualifiers
suprintf(" Type: %s (0x%02x)\r\n Size: %s (%" PRIi64 " bytes)\r\n Start Sector: %" PRIi64 ", Boot: %s",
suprintf(" Type: %s (0x%02x)\r\n Size: %s (%lld bytes)\r\n Start Sector: %lld, Boot: %s",
((part_type == 0x07 || super_floppy_disk) && (FileSystemName[0] != 0)) ?
FileSystemName : GetMBRPartitionType(part_type), super_floppy_disk ? 0: part_type,
SizeToHumanReadable(DriveLayout->PartitionEntry[i].PartitionLength.QuadPart, TRUE, FALSE),
@ -2041,6 +2040,9 @@ BOOL CreatePartition(HANDLE hDrive, int partition_style, int file_system, BOOL m
ClusterSize = 0x200;
DriveLayoutEx.PartitionEntry[pn].StartingOffset.QuadPart =
((bytes_per_track + (ClusterSize - 1)) / ClusterSize) * ClusterSize;
// GRUB2 no longer fits in the usual 31½ KB that the above computation provides
// so just unconditionally double that size and get on with it.
DriveLayoutEx.PartitionEntry[pn].StartingOffset.QuadPart *= 2;
}
// Having the ESP up front may help (and is the Microsoft recommended way) but this

View File

@ -961,8 +961,7 @@ static BOOL WriteSBR(HANDLE hPhysicalDrive)
}
// Ensure that we have sufficient space for the SBR
max_size = IsChecked(IDC_OLD_BIOS_FIXES) ?
(DWORD)(SelectedDrive.SectorsPerTrack * SelectedDrive.SectorSize) : 1 * MB;
max_size = (DWORD)SelectedDrive.PartitionOffset[0];
if (br_size + size > max_size) {
uprintf(" SBR size is too large - You may need to uncheck 'Add fixes for old BIOSes'.");
if (sub_type == BT_MAX)
@ -1060,6 +1059,10 @@ BOOL WritePBR(HANDLE hLogicalVolume)
// and also go through a forced remount, so that shouldn't be an issue.
// But with NTFS, if you don't remount, you don't boot!
return TRUE;
case FS_EXT2:
case FS_EXT3:
case FS_EXT4:
return TRUE;
default:
uprintf("Unsupported FS for FS BR processing - aborting\n");
break;

View File

@ -188,13 +188,17 @@ static void SetAllowedFileSystems(void)
}
}
break;
case BT_GRUB2:
allowed_filesystem[FS_EXT2] = TRUE;
allowed_filesystem[FS_EXT3] = TRUE;
allowed_filesystem[FS_EXT4] = TRUE;
// Fall through
case BT_SYSLINUX_V6:
case BT_GRUB4DOS:
allowed_filesystem[FS_NTFS] = TRUE;
// Fall through
case BT_SYSLINUX_V4:
case BT_REACTOS:
case BT_GRUB2:
allowed_filesystem[FS_FAT16] = TRUE;
allowed_filesystem[FS_FAT32] = TRUE;
break;

View File

@ -33,7 +33,7 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
IDD_DIALOG DIALOGEX 12, 12, 232, 326
STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_ACCEPTFILES
CAPTION "Rufus 3.15.1803"
CAPTION "Rufus 3.15.1804"
FONT 9, "Segoe UI Symbol", 400, 0, 0x0
BEGIN
LTEXT "Drive Properties",IDS_DRIVE_PROPERTIES_TXT,8,6,53,12,NOT WS_GROUP
@ -395,8 +395,8 @@ END
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 3,15,1803,0
PRODUCTVERSION 3,15,1803,0
FILEVERSION 3,15,1804,0
PRODUCTVERSION 3,15,1804,0
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
@ -414,13 +414,13 @@ BEGIN
VALUE "Comments", "https://rufus.ie"
VALUE "CompanyName", "Akeo Consulting"
VALUE "FileDescription", "Rufus"
VALUE "FileVersion", "3.15.1803"
VALUE "FileVersion", "3.15.1804"
VALUE "InternalName", "Rufus"
VALUE "LegalCopyright", "© 2011-2021 Pete Batard (GPL v3)"
VALUE "LegalTrademarks", "https://www.gnu.org/licenses/gpl-3.0.html"
VALUE "OriginalFilename", "rufus-3.15.exe"
VALUE "ProductName", "Rufus"
VALUE "ProductVersion", "3.15.1803"
VALUE "ProductVersion", "3.15.1804"
END
END
BLOCK "VarFileInfo"