From 8b47e95eb5cc2ca1fe989903e5620f82d0b32ab9 Mon Sep 17 00:00:00 2001 From: Pete Batard Date: Tue, 18 Nov 2014 23:49:29 +0000 Subject: [PATCH] [grub] switch to the more compatible Grub 2.00-22 * Also enable Old BIOS fixes with Syslinux, Grub installation and fix related UI issues * Also add a check to confirm that Grub SBR will fit --- res/grub/readme.txt | 18 ++++++++------- res/grub2/core.img | Bin 31724 -> 31343 bytes res/grub2/readme.txt | 37 ++++++++++++++++++----------- src/format.c | 54 ++++++++++++++++++++++++++++--------------- src/resource.h | 4 ++-- src/rufus.c | 27 ++++++++++++++-------- src/rufus.rc | 16 ++++++------- 7 files changed, 96 insertions(+), 60 deletions(-) diff --git a/res/grub/readme.txt b/res/grub/readme.txt index 74038ad9..b90fcfc7 100644 --- a/res/grub/readme.txt +++ b/res/grub/readme.txt @@ -1,10 +1,12 @@ -grldr.mbr was compiled on Linux Debian 7.7.0 x64, using gcc-multilib 4.7.2, -from https://github.com/chenall/grub4dos/commit/8549aae. +This directory contains the Grub4DOS boot records that are used by Rufus -Note that, for convenience reasons, the first 512 bytes from this grldr.mbr are -*not* the ones that Rufus processes when writing the actual MBR (first 512 bytes). -Instead, the byte array from src/ms-sys/inc/mbr_grub.h (whose content is identical) -is what Rufus uses. If you have modified this file, and the MBR section is -altered, be mindful that you also need to update the array in mbr_grub.h. +* grldr.mbr was compiled on Linux Debian 7.7.0 x64, using gcc-multilib 4.7.2, from + https://github.com/chenall/grub4dos/commit/8549aae. -For details, see src/format.c. +* Note that, for convenience reasons, the first 512 bytes from this grldr.mbr are + *not* the ones that Rufus processes when writing the actual MBR (first 512 bytes). + Instead, the byte array from src/ms-sys/inc/mbr_grub.h (whose content is identical) + is what Rufus uses. If you have modified this file, and the MBR section is altered, + be mindful that you also need to update the array in mbr_grub.h. + +* For details, see src/format.c, src/msys/br.c and src/msys/inc/mbr_grub.h. diff --git a/res/grub2/core.img b/res/grub2/core.img index 63098ba6c928d99d7e99eca912c549a97dd6e9b6..30d9532059d9f94088c5ca7361601c3a433df8dd 100644 GIT binary patch delta 29616 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 delta 29984 zcmY&jM-V{B|Y8{4)wcCr&|V%xTD+qP{d8{F*gKKJ>aum9+&t~!1C zyj9h2_jJ!(-hrJxf?+7Abl~_Lae(P`-uak-e)@UA0FeE6qH#p&D*>$l+fx%0kO-s+ zY!`AsBESR$Wx_CH^2i*l1oxle2pOydA0mvvB@E-`79Gn8CK^3~$JRmYbEFE;|Botw z{svD4GmV9VVE|l}APXgY5CP;ZMM0)IK@%`h2QDhY)Jr)ZKMS~R5 zD+yA*dYlPSJ_31d#R@@@1A{+NW}m1~=`n_GQ7)$|&y7zAV;JWDvaEqb&VmuZB_X_y z0#@Cs{Q4*~b#(vV$oNBgLzMSIq>sRQK7|AfBm2LAf9BQ^?jz*t6wjL-;D|{%(ERBF zfJBaxAD=k}kRz8qH&0=Haf!@1Y@7nO2cZ6q6i@}mFcbV)m(Nl7etfQx8-{|T|3&<} z++e~XVg0V~PQjLu`CkFTg~2~UM5aQnLCRB2|1d|^vA17zfz1Hu&jwftSvvA~{rF&b zVEFh1Lx`+}h>S^|(l!6rJl7#BP5)p=TYo=3I0OGB*a769?HAVL2e;j&;M(o+l%&7WfffV8JVv}32CF@Sxa zv>@fNV1LwqAR&-+-6jcoeE#^*K2rR@*j^0DD+2gI%#px|ny0{! zKagx5;2NnmN24z`*rH8Bh}J~kT)7b` zcM=#ZxE~&m-W>}6#%Hy}irjsEJN}j)mV}uwjwVb$r`1ZvN1qH0g79Eh?no zWv?Xn85P3X0&KFObpy$ns}(TtWq7}0R?_zNgpAvbmdu*e{bGMCgN8MDWkcuK30&^= zpc2DZC8;UMfPkysX^z1BGG(jn6Y!tEUT^c8 z-z^bP&Ir};9gkhjM>N2#qco#t>$ThJY{NU+6Z2LJ>9#me+y{~ek3_iRb)ygZy(5&3&H|~ zb_IfQc8JeU8;+ppxiP<`D&O@;XpV$;^S8cmxv9&k{D4R?Dl?^Q)#ZZ0V;^dhS@@V> zBr;fsp5@t@Tc8B01BRyK>a z)>ib9TcdlQdfIu<`Sw~)lYey@o4%%0ADDk3uYMvdK5pg@gCS%TXYcaiGe6;nKQhxB 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 diff --git a/res/grub2/readme.txt b/res/grub2/readme.txt index d81dadac..d06ab51b 100644 --- a/res/grub2/readme.txt +++ b/res/grub2/readme.txt @@ -1,16 +1,25 @@ -boot.img and core.img were compiled from git://git.savannah.gnu.org/grub.git, -commit 72ec399ad8d6348b6c74ea63d80c79784c8b84ae, on a Debian 7.7.0 x64 system. -This was done following the guide from: -http://pete.akeo.ie/2014/05/compiling-and-installing-grub2-for.html. +This directory contains the Grub 2.0 boot records that are used by Rufus -boot.img has been modified to nop the jump @ 0x66 as per grub2's setup.c comments: +* boot.img was compiled from git://git.savannah.gnu.org/grub.git at commit: + 72ec399ad8d6348b6c74ea63d80c79784c8b84ae. -/* If DEST_DRIVE is a hard disk, enable the workaround, which is - for buggy BIOSes which don't pass boot drive correctly. Instead, - they pass 0x00 or 0x01 even when booted from 0x80. */ - -Note that, for convenience reasons, the content of boot.img is *not* the one that -Rufus processes when writing the MBR. -Instead, the byte array from src/ms-sys/inc/mbr_grub2.h (whose content is identical) -is what Rufus uses. If you modify these files, be mindful that you may also need -to update the array in mbr_grub2.h. \ No newline at end of file +* core.img was compiled from grub 2.00-22 using the tarballs found at + https://launchpad.net/ubuntu/+source/grub2/2.00-22. + The use of the 2.00-22 source is done for compatibility reasons. + +* This was done on a Debian 7.7.0 x64 system using gcc-multilib 4.7.2, following + the guide from http://pete.akeo.ie/2014/05/compiling-and-installing-grub2-for.html + Note that exFAT was not included in core.img in order to keep it under 31.5 KB. + +* 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 + for buggy BIOSes which don't pass boot drive correctly. Instead, + they pass 0x00 or 0x01 even when booted from 0x80. */ + +* Note that, for convenience reasons, the content of boot.img is *not* the one that + Rufus processes when writing the MBR. + Instead, the byte array from src/ms-sys/inc/mbr_grub2.h (whose content is identical) + is what Rufus uses. If you modify these files, be mindful that you may also need + to update the array in mbr_grub2.h. + +* For details, see src/format.c, src/msys/br.c and src/msys/inc/mbr_grub2.h. \ No newline at end of file diff --git a/src/format.c b/src/format.c index 07dc712a..874604b2 100644 --- a/src/format.c +++ b/src/format.c @@ -890,7 +890,8 @@ static BOOL WriteMBR(HANDLE hPhysicalDrive) } if (IsChecked(IDC_BOOT)) { // Set first partition bootable - masquerade as per the DiskID selected - buf[0x1be] = (IsChecked(IDC_RUFUS_MBR))?(BYTE)ComboBox_GetItemData(hDiskID, ComboBox_GetCurSel(hDiskID)):0x80; + buf[0x1be] = (IsWindowEnabled(GetDlgItem(hMainDialog, IDC_RUFUS_MBR)) && IsChecked(IDC_RUFUS_MBR)) ? + (BYTE)ComboBox_GetItemData(hDiskID, ComboBox_GetCurSel(hDiskID)):0x80; uprintf("Set bootable USB partition as 0x%02X\n", buf[0x1be]); } @@ -947,34 +948,51 @@ out: */ static BOOL WriteSBR(HANDLE hPhysicalDrive) { - BOOL r = FALSE; - DWORD size; + // TODO: Do we need anything special for 4K sectors? + DWORD size, max_size, mbr_size = 0x200; int dt = (int)ComboBox_GetItemData(hBootType, ComboBox_GetCurSel(hBootType)); unsigned char* buf = NULL; FILE fake_fd = { 0 }; - const char* using_msg = "Using %s SBR\n"; fake_fd._ptr = (char*)hPhysicalDrive; fake_fd._bufsiz = SelectedDrive.Geometry.BytesPerSector; - if ((dt == DT_GRUB4DOS) || ((dt == DT_ISO) && (iso_report.has_grub4dos))) { + // Ensure that we have sufficient space for the SBR + max_size = IsChecked(IDC_EXTRA_PARTITION) ? + (DWORD)(SelectedDrive.Geometry.BytesPerSector * SelectedDrive.Geometry.SectorsPerTrack) : 1024 * 1024; + max_size -= mbr_size; + if ((dt == DT_ISO) && (iso_report.has_grub4dos)) + dt = DT_GRUB4DOS; + if ((dt == DT_ISO) && (iso_report.has_grub2)) + dt = DT_GRUB2; + + switch (dt) { + case DT_GRUB4DOS: buf = GetResource(hMainInstance, MAKEINTRESOURCEA(IDR_GR_GRUB_GRLDR_MBR), _RT_RCDATA, "grldr.mbr", &size, FALSE); - if ((buf != NULL) && (size > 0x200)) { - uprintf(using_msg, "Grub4DOS"); - // -0x200 to remove the MBR part - r = (write_data(&fake_fd, 512, &buf[0x200], (uint64_t)(size - 0x200)) != 0); + if ((buf == NULL) || (size <= mbr_size)) { + uprintf("grldr.mbr is either not present or too small"); + return FALSE; } - } else if ((dt == DT_GRUB2) || ((dt == DT_ISO) && (iso_report.has_grub2))) { + buf = &buf[mbr_size]; + size -= mbr_size; + break; + case DT_GRUB2: buf = GetResource(hMainInstance, MAKEINTRESOURCEA(IDR_GR_GRUB2_CORE_IMG), _RT_RCDATA, "core.img", &size, FALSE); - if (buf != NULL) { - uprintf(using_msg, "Grub 2.0"); - // TODO: test what happens for 4096 bytes sectors - r = (write_data(&fake_fd, 512, buf, (uint64_t)size) != 0); + if (buf == NULL) { + uprintf("Could not access core.img"); + return FALSE; } - } else { + break; + default: // No need to write secondary block - r = TRUE; + return TRUE; } - return r; + + uprintf("Writing SBR (Secondary Boot record)"); + if (size > max_size) { + uprintf(" SBR size is too large - You may need to uncheck 'Add fixes for old BIOSes'."); + return FALSE; + } + return (write_data(&fake_fd, mbr_size, buf, (uint64_t)size) != 0); } /* @@ -984,7 +1002,7 @@ static __inline const char* dt_to_name(int dt) { switch (dt) { case DT_FREEDOS: return "FreeDOS"; case DT_REACTOS: return "ReactOS"; - default: + default: return ((dt==DT_ISO)&&(iso_report.has_kolibrios))?"KolibriOS":"Standard"; } } diff --git a/src/resource.h b/src/resource.h index 5d6888f3..3a2e01fd 100644 --- a/src/resource.h +++ b/src/resource.h @@ -66,8 +66,8 @@ #define IDR_FD_EGA18_CPX 326 #define IDR_SL_LDLINUX_V4_BSS 400 #define IDR_SL_LDLINUX_V4_SYS 401 -#define IDR_SL_LDLINUX_V6_BSS 402 -#define IDR_SL_LDLINUX_V6_SYS 403 +#define IDR_SL_LDLINUX_V6_BSS 402 +#define IDR_SL_LDLINUX_V6_SYS 403 #define IDR_SL_MBOOT_C32 404 #define IDR_GR_GRUB_GRLDR_MBR 450 #define IDR_GR_GRUB2_CORE_IMG 451 diff --git a/src/rufus.c b/src/rufus.c index e3891426..096a68ac 100644 --- a/src/rufus.c +++ b/src/rufus.c @@ -43,6 +43,7 @@ #include "localization.h" /* Redefinitions for WDK and MinGW */ +// TODO: these would be better in a 'missing.h' file #ifndef PBM_SETSTATE #define PBM_SETSTATE (WM_USER+16) #endif @@ -487,7 +488,7 @@ static void SetMBRProps(void) int dt = (int)ComboBox_GetItemData(hBootType, ComboBox_GetCurSel(hBootType)); BOOL needs_masquerading = (IS_WINPE(iso_report.winpe) && (!iso_report.uses_minint)); - if ((!mbr_selected_by_user) && ((image_path == NULL) || (dt != DT_ISO) || (fs != FS_NTFS))) { + if ((!mbr_selected_by_user) && ((image_path == NULL) || (dt != DT_ISO) || (fs != FS_NTFS) || IS_GRUB(iso_report))) { CheckDlgButton(hMainDialog, IDC_RUFUS_MBR, BST_UNCHECKED); IGNORE_RETVAL(ComboBox_SetCurSel(hDiskID, 0)); return; @@ -502,25 +503,30 @@ static void SetMBRProps(void) static void EnableAdvancedBootOptions(BOOL enable, BOOL remove_checkboxes) { int bt = GETBIOSTYPE((int)ComboBox_GetItemData(hPartitionScheme, ComboBox_GetCurSel(hPartitionScheme))); - BOOL actual_enable = ((bt==BT_UEFI)||(selection_default>=DT_IMG)||!IsChecked(IDC_BOOT))?FALSE:enable; + BOOL actual_enable_mbr = ((bt==BT_UEFI)||(selection_default>=DT_IMG)||!IsChecked(IDC_BOOT))?FALSE:enable; + BOOL actual_enable_fix = ((bt==BT_UEFI)||(selection_default==DT_IMG)||!IsChecked(IDC_BOOT))?FALSE:enable; static UINT uXPartChecked = BST_UNCHECKED; + if ((selection_default == DT_ISO) && (iso_report.has_kolibrios || IS_GRUB(iso_report) || IS_REACTOS(iso_report) || HAS_SYSLINUX(iso_report))) { + actual_enable_mbr = FALSE; + mbr_selected_by_user = FALSE; + } if (remove_checkboxes) { // Store/Restore the checkbox states - if (IsWindowEnabled(GetDlgItem(hMainDialog, IDC_RUFUS_MBR)) && !actual_enable) { + if (IsWindowEnabled(GetDlgItem(hMainDialog, IDC_RUFUS_MBR)) && !actual_enable_mbr) { uMBRChecked = IsChecked(IDC_RUFUS_MBR); CheckDlgButton(hMainDialog, IDC_RUFUS_MBR, BST_UNCHECKED); uXPartChecked = IsChecked(IDC_EXTRA_PARTITION); CheckDlgButton(hMainDialog, IDC_EXTRA_PARTITION, BST_UNCHECKED); - } else if (!IsWindowEnabled(GetDlgItem(hMainDialog, IDC_RUFUS_MBR)) && actual_enable) { + } else if (!IsWindowEnabled(GetDlgItem(hMainDialog, IDC_RUFUS_MBR)) && actual_enable_mbr) { CheckDlgButton(hMainDialog, IDC_RUFUS_MBR, uMBRChecked); CheckDlgButton(hMainDialog, IDC_EXTRA_PARTITION, uXPartChecked); } } - EnableWindow(GetDlgItem(hMainDialog, IDC_EXTRA_PARTITION), actual_enable); - EnableWindow(GetDlgItem(hMainDialog, IDC_RUFUS_MBR), actual_enable); - EnableWindow(hDiskID, actual_enable); + EnableWindow(GetDlgItem(hMainDialog, IDC_EXTRA_PARTITION), actual_enable_fix); + EnableWindow(GetDlgItem(hMainDialog, IDC_RUFUS_MBR), actual_enable_mbr); + EnableWindow(hDiskID, actual_enable_mbr); } static void EnableBootOptions(BOOL enable, BOOL remove_checkboxes) @@ -556,7 +562,8 @@ static void SetTargetSystem(void) if (SelectedDrive.PartitionType == PARTITION_STYLE_GPT) { ts = 2; // GPT/UEFI } else if (SelectedDrive.has_protective_mbr || SelectedDrive.has_mbr_uefi_marker || (IS_EFI(iso_report) && - (!HAS_SYSLINUX(iso_report)) && (!iso_report.has_bootmgr) && (!IS_WINPE(iso_report.winpe))) ) { + (!HAS_SYSLINUX(iso_report)) && (!iso_report.has_bootmgr) && (!IS_REACTOS(iso_report)) && + (!iso_report.has_kolibrios) && (!IS_GRUB(iso_report)) && (!IS_WINPE(iso_report.winpe))) ) { ts = 1; // MBR/UEFI } else { ts = 0; // MBR/BIOS|UEFI @@ -714,7 +721,7 @@ void UpdateProgress(int op, float percent) return; } if (percent > 100.1f) { - duprintf("UpdateProgress(%d): invalid percentage %0.2f\n", op, percent); +// duprintf("UpdateProgress(%d): invalid percentage %0.2f\n", op, percent); return; } if ((percent < 0.0f) && (nb_slots[op] <= 0)) { @@ -1556,7 +1563,7 @@ void SetBoot(int fs, int bt) static_sprintf(tmp, "Syslinux %s", embedded_sl_version_str[1]); IGNORE_RETVAL(ComboBox_SetItemData(hBootType, ComboBox_AddStringU(hBootType, tmp), DT_SYSLINUX_V6)); IGNORE_RETVAL(ComboBox_SetItemData(hBootType, ComboBox_AddStringU(hBootType, "ReactOS"), DT_REACTOS)); - IGNORE_RETVAL(ComboBox_SetItemData(hBootType, ComboBox_AddStringU(hBootType, "Grub 2.0"), DT_GRUB2)); + IGNORE_RETVAL(ComboBox_SetItemData(hBootType, ComboBox_AddStringU(hBootType, "Grub 2.00-22"), DT_GRUB2)); IGNORE_RETVAL(ComboBox_SetItemData(hBootType, ComboBox_AddStringU(hBootType, "Grub4DOS"), DT_GRUB4DOS)); } if ((!advanced_mode) && (selection_default >= DT_SYSLINUX_V4)) { diff --git a/src/rufus.rc b/src/rufus.rc index 4498fa3a..f2142440 100644 --- a/src/rufus.rc +++ b/src/rufus.rc @@ -32,7 +32,7 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL IDD_DIALOG DIALOGEX 12, 12, 227, 329 STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Rufus 1.5.0.543" +CAPTION "Rufus 1.5.0.544" FONT 8, "Segoe UI", 400, 0, 0x1 BEGIN DEFPUSHBUTTON "Start",IDC_START,113,291,50,14 @@ -164,7 +164,7 @@ END IDD_DIALOG_XP DIALOGEX 12, 12, 227, 329 STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Rufus 1.5.0.543" +CAPTION "Rufus 1.5.0.544" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN DEFPUSHBUTTON "Start",IDC_START,113,291,50,14 @@ -297,7 +297,7 @@ END IDD_DIALOG_RTL DIALOGEX 12, 12, 227, 329 STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_RTLREADING | WS_EX_APPWINDOW | WS_EX_LAYOUTRTL -CAPTION "Rufus 1.5.0.543" +CAPTION "Rufus 1.5.0.544" FONT 8, "Segoe UI", 400, 0, 0x1 BEGIN DEFPUSHBUTTON "Start",IDC_START,113,291,50,14 @@ -437,7 +437,7 @@ END IDD_DIALOG_RTL_XP DIALOGEX 12, 12, 227, 329 STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_RTLREADING | WS_EX_APPWINDOW | WS_EX_LAYOUTRTL -CAPTION "Rufus 1.5.0.543" +CAPTION "Rufus 1.5.0.544" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN DEFPUSHBUTTON "Start",IDC_START,113,291,50,14 @@ -701,8 +701,8 @@ END // VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,5,0,543 - PRODUCTVERSION 1,5,0,543 + FILEVERSION 1,5,0,544 + PRODUCTVERSION 1,5,0,544 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -719,13 +719,13 @@ BEGIN BEGIN VALUE "CompanyName", "Akeo Consulting (http://akeo.ie)" VALUE "FileDescription", "Rufus" - VALUE "FileVersion", "1.5.0.543" + VALUE "FileVersion", "1.5.0.544" VALUE "InternalName", "Rufus" VALUE "LegalCopyright", "© 2011-2014 Pete Batard (GPL v3)" VALUE "LegalTrademarks", "http://www.gnu.org/copyleft/gpl.html" VALUE "OriginalFilename", "rufus.exe" VALUE "ProductName", "Rufus" - VALUE "ProductVersion", "1.5.0.543" + VALUE "ProductVersion", "1.5.0.544" END END BLOCK "VarFileInfo"