From df5bce297df40e3a51b71f9add1ad6c4581cbf62 Mon Sep 17 00:00:00 2001 From: Pete Batard Date: Fri, 14 Jun 2013 01:55:48 +0100 Subject: [PATCH] [syslinux] initial Syslinux v5 support * Use .bss and .sys from Syslinux v5.10 * Advanced options allow you to choose between v4 and v5 * Rufus does not currently copy any ldlinux.c32 to the target --- res/syslinux/{ldlinux.bss => ldlinux_v4.bss} | Bin res/syslinux/{ldlinux.sys => ldlinux_v4.sys} | Bin res/syslinux/ldlinux_v5.bss | Bin 0 -> 512 bytes res/syslinux/ldlinux_v5.sys | Bin 0 -> 56657 bytes res/syslinux/readme.txt | 3 +- src/format.c | 5 ++- src/resource.h | 7 ++-- src/rufus.c | 13 ++++--- src/rufus.h | 3 +- src/rufus.rc | 22 +++++++----- src/stdfn.c | 2 +- src/syslinux.c | 35 +++++++++++-------- 12 files changed, 53 insertions(+), 37 deletions(-) rename res/syslinux/{ldlinux.bss => ldlinux_v4.bss} (100%) rename res/syslinux/{ldlinux.sys => ldlinux_v4.sys} (100%) create mode 100644 res/syslinux/ldlinux_v5.bss create mode 100644 res/syslinux/ldlinux_v5.sys diff --git a/res/syslinux/ldlinux.bss b/res/syslinux/ldlinux_v4.bss similarity index 100% rename from res/syslinux/ldlinux.bss rename to res/syslinux/ldlinux_v4.bss diff --git a/res/syslinux/ldlinux.sys b/res/syslinux/ldlinux_v4.sys similarity index 100% rename from res/syslinux/ldlinux.sys rename to res/syslinux/ldlinux_v4.sys diff --git a/res/syslinux/ldlinux_v5.bss b/res/syslinux/ldlinux_v5.bss new file mode 100644 index 0000000000000000000000000000000000000000..1696a0d9722a342cc4f6af146902b5a77c1e83d7 GIT binary patch literal 512 zcmaDIF(EiI*vHc^G=hP;;MX6+lYJNWlvM|@h0BHY9o(q4zoPo{(!QI!D;W5@eJJaWsrCodyH66Y`0)XJG@av@R&{f@~D-OP6Vf@tm%fHO9@z*By zV(o9PTk1zuL|Ab_~JA}kwD|`&{d^e-wraCupVP`t7S;r z@qXXhduhAQ{d)UvH$%eB`<$4r7^Q5RHq4xrBv?}V0f*a7L*pi z7M#VHCD8dSEn$n(i*kmv#NHHvBF4jM35Ew=WB|F3Zh=hJPD@DR-)<&R10?OFYSO-c zGd$UTD((CCG~55o3=HMs2cEDway;xf+Hq|MBhw3gphln}k4_qX>$|omqq^^2T0dI_ z!@gU!YZMNYaBkt-&CYOE;PofN182p~N`86$w@a*~n(eGG`(da2{1S!KqN4mFUM|d- N{l~P)PQpBN6#$G;yng@y literal 0 HcmV?d00001 diff --git a/res/syslinux/ldlinux_v5.sys b/res/syslinux/ldlinux_v5.sys new file mode 100644 index 0000000000000000000000000000000000000000..4ba1031b1947ad2bec1b183350b228e313943fcc GIT binary patch literal 56657 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 te{v%dyZ$_MM-w79Mb>`OOU^n?DhZv literal 0 HcmV?d00001 diff --git a/res/syslinux/readme.txt b/res/syslinux/readme.txt index f2c7047f..47137472 100644 --- a/res/syslinux/readme.txt +++ b/res/syslinux/readme.txt @@ -1,2 +1,3 @@ -o ldlinux.bss and ldlinux.sys are from syslinux-4.06/core/ +o ldlinux_v4.[bss|sys] have been renamed from ldlinux.[bss|sys] found in syslinux-4.06/core/ +o ldlinux_v5.[bss|sys] have been renamed from ldlinux.[bss|sys] found in syslinux-5.10/core/ http://www.kernel.org/pub/linux/utils/boot/syslinux/ \ No newline at end of file diff --git a/src/format.c b/src/format.c index 6bad3e14..0e407c51 100644 --- a/src/format.c +++ b/src/format.c @@ -877,7 +877,7 @@ static BOOL WriteMBR(HANDLE hPhysicalDrive) fake_fd._bufsiz = SelectedDrive.Geometry.BytesPerSector; fs = (int)ComboBox_GetItemData(hFileSystem, ComboBox_GetCurSel(hFileSystem)); dt = (int)ComboBox_GetItemData(hBootType, ComboBox_GetCurSel(hBootType)); - if ( (dt == DT_SYSLINUX) || ((dt == DT_ISO) && ((fs == FS_FAT16) || (fs == FS_FAT32))) ) { + if ( (dt == DT_SYSLINUX_V4) || (dt == DT_SYSLINUX_V5) || ((dt == DT_ISO) && ((fs == FS_FAT16) || (fs == FS_FAT32))) ) { r = write_syslinux_mbr(&fake_fd); } else { if ((IS_WINPE(iso_report.winpe) && !iso_report.uses_minint) || (IsChecked(IDC_RUFUS_MBR))) { @@ -1383,8 +1383,7 @@ DWORD WINAPI FormatThread(LPVOID param) } // We must close and unlock the volume to write files to it safe_unlockclose(hLogicalVolume); - } else if ( (dt == DT_SYSLINUX) || ((dt == DT_ISO) && ((fs == FS_FAT16) || (fs == FS_FAT32))) ) { - PrintStatus(0, TRUE, "Installing Syslinux..."); + } else if ( (dt == DT_SYSLINUX_V4) || (dt == DT_SYSLINUX_V5) || ((dt == DT_ISO) && ((fs == FS_FAT16) || (fs == FS_FAT32))) ) { if (!InstallSyslinux(DriveIndex, drive_name[0])) { FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|ERROR_INSTALL_FAILURE; } diff --git a/src/resource.h b/src/resource.h index 44f7c239..ef97e598 100644 --- a/src/resource.h +++ b/src/resource.h @@ -42,9 +42,10 @@ #define IDR_FD_EGA16_CPX 324 #define IDR_FD_EGA17_CPX 325 #define IDR_FD_EGA18_CPX 326 -#define IDR_SL_LDLINUX_BSS 400 -#define IDR_SL_LDLINUX_SYS 401 -#define IDR_SL_CHAIN_C32 402 +#define IDR_SL_LDLINUX_V4_BSS 400 +#define IDR_SL_LDLINUX_V4_SYS 401 +#define IDR_SL_LDLINUX_V5_BSS 402 +#define IDR_SL_LDLINUX_V5_SYS 403 #define IDC_DEVICE 1001 #define IDC_FILESYSTEM 1002 #define IDC_START 1003 diff --git a/src/rufus.c b/src/rufus.c index 32ad47cf..333f523d 100644 --- a/src/rufus.c +++ b/src/rufus.c @@ -1575,8 +1575,9 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA if (fs < 0) { EnableBootOptions(TRUE); SetMBRProps(); - // Remove the SysLinux option if exists - if (ComboBox_GetItemData(hBootType, ComboBox_GetCount(hBootType)-1) == DT_SYSLINUX) { + // Remove the SysLinux options if they exists + if (ComboBox_GetItemData(hBootType, ComboBox_GetCount(hBootType)-1) == DT_SYSLINUX_V5) { + IGNORE_RETVAL(ComboBox_DeleteString(hBootType, ComboBox_GetCount(hBootType)-1)); IGNORE_RETVAL(ComboBox_DeleteString(hBootType, ComboBox_GetCount(hBootType)-1)); IGNORE_RETVAL(ComboBox_SetCurSel(hBootType, 1)); } @@ -1601,9 +1602,11 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA } IGNORE_RETVAL(ComboBox_SetItemData(hBootType, ComboBox_AddStringU(hBootType, "ISO Image"), DT_ISO)); // If needed (advanced mode) also append a Syslinux option - if ( (bt == BT_BIOS) && (((fs == FS_FAT16) || (fs == FS_FAT32)) && (advanced_mode)) ) - IGNORE_RETVAL(ComboBox_SetItemData(hBootType, ComboBox_AddStringU(hBootType, "SysLinux"), DT_SYSLINUX)); - if ( ((!advanced_mode) && (selection_default == DT_SYSLINUX)) ) { + if ( (bt == BT_BIOS) && (((fs == FS_FAT16) || (fs == FS_FAT32)) && (advanced_mode)) ) { + IGNORE_RETVAL(ComboBox_SetItemData(hBootType, ComboBox_AddStringU(hBootType, "Syslinux 4"), DT_SYSLINUX_V4)); + IGNORE_RETVAL(ComboBox_SetItemData(hBootType, ComboBox_AddStringU(hBootType, "Syslinux 5"), DT_SYSLINUX_V5)); + } + if ( ((!advanced_mode) && ((selection_default == DT_SYSLINUX_V4) || (selection_default == DT_SYSLINUX_V5))) ) { selection_default = DT_FREEDOS; CheckDlgButton(hDlg, IDC_DISK_ID, BST_UNCHECKED); } diff --git a/src/rufus.h b/src/rufus.h index 2e440a14..abf1c5b3 100644 --- a/src/rufus.h +++ b/src/rufus.h @@ -159,7 +159,8 @@ enum dos_type { DT_WINME = 0, DT_FREEDOS, DT_ISO, - DT_SYSLINUX, + DT_SYSLINUX_V4, + DT_SYSLINUX_V5, DT_MAX }; diff --git a/src/rufus.rc b/src/rufus.rc index e315bd4a..14f95393 100644 --- a/src/rufus.rc +++ b/src/rufus.rc @@ -30,7 +30,7 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL IDD_DIALOG DIALOGEX 12, 12, 206, 329 STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_APPWINDOW -CAPTION "Rufus v1.3.4.252" +CAPTION "Rufus v1.3.4.253" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN DEFPUSHBUTTON "Start",IDC_START,94,291,50,14 @@ -185,8 +185,10 @@ END 3 TEXTINCLUDE BEGIN "\r\n" - "IDR_SL_LDLINUX_BSS RCDATA ""../res/syslinux/ldlinux.bss""\r\n" - "IDR_SL_LDLINUX_SYS RCDATA ""../res/syslinux/ldlinux.sys""\r\n" + "IDR_SL_LDLINUX_V4_BSS RCDATA ""../res/syslinux/ldlinux_v4.bss""\r\n" + "IDR_SL_LDLINUX_V4_SYS RCDATA ""../res/syslinux/ldlinux_v4.sys""\r\n" + "IDR_SL_LDLINUX_V5_BSS RCDATA ""../res/syslinux/ldlinux_v5.bss""\r\n" + "IDR_SL_LDLINUX_V5_SYS RCDATA ""../res/syslinux/ldlinux_v5.sys""\r\n" "IDR_BR_MBR_BIN RCDATA ""../res/mbr/mbr.bin""\r\n" "IDR_FD_COMMAND_COM RCDATA ""../res/freedos/COMMAND.COM""\r\n" "IDR_FD_KERNEL_SYS RCDATA ""../res/freedos/KERNEL.SYS""\r\n" @@ -276,8 +278,8 @@ END // VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,3,4,252 - PRODUCTVERSION 1,3,4,252 + FILEVERSION 1,3,4,253 + PRODUCTVERSION 1,3,4,253 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -294,13 +296,13 @@ BEGIN BEGIN VALUE "CompanyName", "Akeo Consulting (http://akeo.ie)" VALUE "FileDescription", "Rufus" - VALUE "FileVersion", "1.3.4.252" + VALUE "FileVersion", "1.3.4.253" VALUE "InternalName", "Rufus" VALUE "LegalCopyright", "© 2011-2013 Pete Batard (GPL v3)" VALUE "LegalTrademarks", "http://www.gnu.org/copyleft/gpl.html" VALUE "OriginalFilename", "rufus.exe" VALUE "ProductName", "Rufus" - VALUE "ProductVersion", "1.3.4.252" + VALUE "ProductVersion", "1.3.4.253" END END BLOCK "VarFileInfo" @@ -331,8 +333,10 @@ IDI_DOWN ICON "../res/down.ico" // Generated from the TEXTINCLUDE 3 resource. // -IDR_SL_LDLINUX_BSS RCDATA "../res/syslinux/ldlinux.bss" -IDR_SL_LDLINUX_SYS RCDATA "../res/syslinux/ldlinux.sys" +IDR_SL_LDLINUX_V4_BSS RCDATA "../res/syslinux/ldlinux_v4.bss" +IDR_SL_LDLINUX_V4_SYS RCDATA "../res/syslinux/ldlinux_v4.sys" +IDR_SL_LDLINUX_V5_BSS RCDATA "../res/syslinux/ldlinux_v5.bss" +IDR_SL_LDLINUX_V5_SYS RCDATA "../res/syslinux/ldlinux_v5.sys" IDR_BR_MBR_BIN RCDATA "../res/mbr/mbr.bin" IDR_FD_COMMAND_COM RCDATA "../res/freedos/COMMAND.COM" IDR_FD_KERNEL_SYS RCDATA "../res/freedos/KERNEL.SYS" diff --git a/src/stdfn.c b/src/stdfn.c index 6baa19a0..f5a80924 100644 --- a/src/stdfn.c +++ b/src/stdfn.c @@ -252,7 +252,7 @@ unsigned char* GetResource(HMODULE module, char* name, char* type, const char* d if (duplicate) { p = (unsigned char*)malloc(*len); if (p == NULL) { - uprintf("Unable to allocate ldlinux.sys resource\n"); + uprintf("Unable to allocate resource '%s'\n", desc); goto out; } memcpy(p, LockResource(res_handle), *len); diff --git a/src/syslinux.c b/src/syslinux.c index 6bbe1c8f..a5fee911 100644 --- a/src/syslinux.c +++ b/src/syslinux.c @@ -75,7 +75,11 @@ BOOL InstallSyslinux(DWORD drive_index, char drive_letter) BOOL r = FALSE; static unsigned char sectbuf[SECTOR_SIZE]; - static char ldlinux_name[] = "?:\\ldlinux.sys"; + static LPSTR resource[2][2] = { + { MAKEINTRESOURCEA(IDR_SL_LDLINUX_V4_SYS), MAKEINTRESOURCEA(IDR_SL_LDLINUX_V4_BSS) }, + { MAKEINTRESOURCEA(IDR_SL_LDLINUX_V5_SYS), MAKEINTRESOURCEA(IDR_SL_LDLINUX_V5_BSS) } }; + static char ldlinux_path[] = "?:\\ldlinux.sys"; + static char* ldlinux_sys = &ldlinux_path[3]; struct libfat_filesystem *fs; libfat_sector_t s, *secp; libfat_sector_t *sectors = NULL; @@ -83,30 +87,33 @@ BOOL InstallSyslinux(DWORD drive_index, char drive_letter) uint32_t ldlinux_cluster; int nsectors; int dt = (int)ComboBox_GetItemData(hBootType, ComboBox_GetCurSel(hBootType)); + BOOL use_v5 = (dt == DT_SYSLINUX_V5) || ((dt == DT_ISO) && (iso_report.has_syslinux_v5)); - ldlinux_name[0] = drive_letter; + PrintStatus(0, TRUE, "Installing Syslinux v%d...", use_v5?5:4); + + ldlinux_path[0] = drive_letter; /* Initialize the ADV -- this should be smarter */ syslinux_reset_adv(syslinux_adv); /* Access a copy of the ldlinux.sys & ldlinux.bss resources */ - syslinux_ldlinux = GetResource(hMainInstance, MAKEINTRESOURCEA(IDR_SL_LDLINUX_SYS), - _RT_RCDATA, "ldlinux.sys", &syslinux_ldlinux_len, TRUE); - syslinux_bootsect = GetResource(hMainInstance, MAKEINTRESOURCEA(IDR_SL_LDLINUX_BSS), - _RT_RCDATA,"ldlinux.bss", &syslinux_bootsect_len, TRUE); + syslinux_ldlinux = GetResource(hMainInstance, resource[use_v5?1:0][0], + _RT_RCDATA, ldlinux_sys, &syslinux_ldlinux_len, TRUE); + syslinux_bootsect = GetResource(hMainInstance, resource[use_v5?1:0][1], + _RT_RCDATA, "ldlinux.bss", &syslinux_bootsect_len, TRUE); if ((syslinux_ldlinux == NULL) || (syslinux_bootsect == NULL)) { goto out; } /* Create ldlinux.sys file */ - f_handle = CreateFileA(ldlinux_name, GENERIC_READ | GENERIC_WRITE, + f_handle = CreateFileA(ldlinux_path, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_READONLY | FILE_ATTRIBUTE_SYSTEM | FILE_ATTRIBUTE_HIDDEN, NULL); if (f_handle == INVALID_HANDLE_VALUE) { - uprintf("Unable to create ldlinux.sys\n"); + uprintf("Unable to create '%s'\n", ldlinux_sys); goto out; } @@ -114,18 +121,18 @@ BOOL InstallSyslinux(DWORD drive_index, char drive_letter) if (!WriteFile(f_handle, syslinux_ldlinux, syslinux_ldlinux_len, &bytes_written, NULL) || bytes_written != syslinux_ldlinux_len) { - uprintf("Could not write ldlinux.sys\n"); + uprintf("Could not write '%s'\n", ldlinux_sys); goto out; } if (!WriteFile(f_handle, syslinux_adv, 2 * ADV_SIZE, &bytes_written, NULL) || bytes_written != 2 * ADV_SIZE) { - uprintf("Could not write ADV to ldlinux.sys\n"); + uprintf("Could not write ADV to '%s'\n", ldlinux_sys); goto out; } - uprintf("Succesfully wrote 'ldlinux.sys'\n"); - if (dt == DT_SYSLINUX) + uprintf("Succesfully wrote '%s'\n", ldlinux_sys); + if (dt != DT_ISO) UpdateProgress(OP_DOS, -1.0f); /* Now flush the media */ @@ -166,7 +173,7 @@ BOOL InstallSyslinux(DWORD drive_index, char drive_letter) !WriteFile(f_handle, syslinux_ldlinux, syslinux_ldlinux_len, &bytes_written, NULL) || bytes_written != syslinux_ldlinux_len) { - uprintf("Could not write ldlinux.sys: %s\n", WindowsErrorString()); + uprintf("Could not write '%s': %s\n", ldlinux_sys, WindowsErrorString()); goto out; } @@ -195,7 +202,7 @@ BOOL InstallSyslinux(DWORD drive_index, char drive_letter) } uprintf("Succesfully wrote Syslinux boot record\n"); - if (dt == DT_SYSLINUX) + if (dt != DT_ISO) UpdateProgress(OP_DOS, -1.0f); r = TRUE;