diff --git a/configure b/configure index 20aa5068..7c99f872 100644 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for rufus 2.0. +# Generated by GNU Autoconf 2.69 for rufus 2.1. # # Report bugs to . # @@ -580,8 +580,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='rufus' PACKAGE_TARNAME='rufus' -PACKAGE_VERSION='2.0' -PACKAGE_STRING='rufus 2.0' +PACKAGE_VERSION='2.1' +PACKAGE_STRING='rufus 2.1' PACKAGE_BUGREPORT='https://github.com/pbatard/rufus/issues' PACKAGE_URL='http://rufus.akeo.ie' @@ -1227,7 +1227,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures rufus 2.0 to adapt to many kinds of systems. +\`configure' configures rufus 2.1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1293,7 +1293,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of rufus 2.0:";; + short | recursive ) echo "Configuration of rufus 2.1:";; esac cat <<\_ACEOF @@ -1383,7 +1383,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -rufus configure 2.0 +rufus configure 2.1 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -1438,7 +1438,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by rufus $as_me 2.0, which was +It was created by rufus $as_me 2.1, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2301,7 +2301,7 @@ fi # Define the identity of the package. PACKAGE='rufus' - VERSION='2.0' + VERSION='2.1' cat >>confdefs.h <<_ACEOF @@ -4466,7 +4466,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by rufus $as_me 2.0, which was +This file was extended by rufus $as_me 2.1, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -4520,7 +4520,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -rufus config.status 2.0 +rufus config.status 2.1 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index b34e0a0f..17a8b1c6 100644 --- a/configure.ac +++ b/configure.ac @@ -1,4 +1,4 @@ -AC_INIT([rufus], [2.0], [https://github.com/pbatard/rufus/issues], [rufus], [http://rufus.akeo.ie]) +AC_INIT([rufus], [2.1], [https://github.com/pbatard/rufus/issues], [rufus], [http://rufus.akeo.ie]) AM_INIT_AUTOMAKE([-Wno-portability foreign no-dist no-dependencies]) AC_CONFIG_SRCDIR([src/rufus.c]) AC_CONFIG_MACRO_DIR([m4]) diff --git a/res/uefi/readme.txt b/res/uefi/readme.txt index 1af31021..6aac948f 100644 --- a/res/uefi/readme.txt +++ b/res/uefi/readme.txt @@ -1,12 +1,16 @@ -This directory contains a flat image of the FAT UEFI:TOGO partition added by -Rufus for Windows To Go UEFI mode support as well as seamless installation of -Windows in UEFI, in the case where the original media contains a >4GB file. +This directory contains a flat image of the FAT UEFI:NTFS partition added by +Rufus for NTFS UEFI boot support. See https://github.com/pbatard/uefi-ntfs. This image, which you can mount as FAT filesystem or open in 7-zip, contains the following data: -o The NTFS UEFI driver from efifs (https://github.com/pbatard/efifs) which was +o The NTFS UEFI drivers from efifs (https://github.com/pbatard/efifs) which were compiled, with compression disabled, using Visual Studio 2013 Community Edition. - This is the \EFI\Rufus\ntfs_x64.efi file. -o The UEFI:TOGO binary (https://github.com/pbatard/uefi-togo), which was compiled - using Visual Studio 2013 Community Edition. - This is the \EFI\Boot\bootx64.efi file. + These are the \EFI\Rufus\ntfs_[x32|x64].efi files. +o The UEFI:NTFS binaries (https://github.com/pbatard/uefi-ntfs), which were also + compiled using Visual Studio 2013 Community Edition. + These are the \EFI\Boot\boot[ia32|x64].efi files. + +The FAT partition was created on Debian GNU/Linux using the following commands + dd if=/dev/zero of=uefi-togo.img bs=512 count=512 + mkfs.vfat uefi-ntfs.img +and then mounting the `uefi-ntfs.img` and copying the relevant files. diff --git a/res/uefi/uefi-ntfs.img b/res/uefi/uefi-ntfs.img new file mode 100644 index 00000000..38ddfcb9 Binary files /dev/null and b/res/uefi/uefi-ntfs.img differ diff --git a/res/uefi/uefi-togo.img b/res/uefi/uefi-togo.img deleted file mode 100644 index ea6a1e3d..00000000 Binary files a/res/uefi/uefi-togo.img and /dev/null differ diff --git a/src/drive.c b/src/drive.c index 6bde0513..5203137e 100644 --- a/src/drive.c +++ b/src/drive.c @@ -54,7 +54,7 @@ const GUID PARTITION_SYSTEM_GUID = * Globals */ RUFUS_DRIVE_INFO SelectedDrive; -size_t uefi_togo_size = 0; +size_t uefi_ntfs_size = 0; /* * The following methods get or set the AutoMount setting (which is different from AutoRun) @@ -656,7 +656,7 @@ BOOL GetDrivePartitionData(DWORD DriveIndex, char* FileSystemName, DWORD FileSys { // MBR partition types that can be mounted in Windows const uint8_t mbr_mountable[] = { 0x01, 0x04, 0x06, 0x07, 0x0b, 0x0c, 0x0e, 0xef }; - BOOL r, ret = FALSE, isUefiTogo = FALSE; + BOOL r, ret = FALSE, isUefiNtfs = FALSE; HANDLE hPhysical; DWORD size; BYTE geometry[256] = {0}, layout[4096] = {0}, part_type; @@ -682,8 +682,8 @@ BOOL GetDrivePartitionData(DWORD DriveIndex, char* FileSystemName, DWORD FileSys if (hPhysical == INVALID_HANDLE_VALUE) return 0; - if (uefi_togo_size == 0) - uefi_togo_size = GetResourceSize(hMainInstance, MAKEINTRESOURCEA(IDR_UEFI_TOGO), _RT_RCDATA, "uefi-togo.img"); + if (uefi_ntfs_size == 0) + uefi_ntfs_size = GetResourceSize(hMainInstance, MAKEINTRESOURCEA(IDR_UEFI_NTFS), _RT_RCDATA, "uefi-ntfs.img"); r = DeviceIoControl(hPhysical, IOCTL_DISK_GET_DRIVE_GEOMETRY_EX, NULL, 0, geometry, sizeof(geometry), &size, NULL); @@ -731,9 +731,9 @@ BOOL GetDrivePartitionData(DWORD DriveIndex, char* FileSystemName, DWORD FileSys for (i=0; iPartitionCount; i++) { if (DriveLayout->PartitionEntry[i].Mbr.PartitionType != PARTITION_ENTRY_UNUSED) { part_type = DriveLayout->PartitionEntry[i].Mbr.PartitionType; - isUefiTogo = (i == 1) && (part_type == 0xef) && - (DriveLayout->PartitionEntry[i].PartitionLength.QuadPart == uefi_togo_size); - suprintf("Partition %d%s:\n", i+1, isUefiTogo?" (UEFI:TOGO)":""); + isUefiNtfs = (i == 1) && (part_type == 0xef) && + (DriveLayout->PartitionEntry[i].PartitionLength.QuadPart == uefi_ntfs_size); + suprintf("Partition %d%s:\n", i+1, isUefiNtfs?" (UEFI:NTFS)":""); for (j=0; jPartitionEntry[i].PartitionLength.QuadPart, DriveLayout->PartitionEntry[i].Mbr.HiddenSectors, DriveLayout->PartitionEntry[i].Mbr.BootIndicator?"Yes":"No", DriveLayout->PartitionEntry[i].Mbr.RecognizedPartition?"Yes":"No"); - if ((part_type == RUFUS_EXTRA_PARTITION_TYPE) || (isUefiTogo)) + if ((part_type == RUFUS_EXTRA_PARTITION_TYPE) || (isUefiNtfs)) // This is a partition Rufus created => we can safely ignore it --SelectedDrive.nPartitions; if (part_type == 0xee) // Flag a protective MBR for non GPT platforms (XP) @@ -772,7 +772,7 @@ BOOL GetDrivePartitionData(DWORD DriveIndex, char* FileSystemName, DWORD FileSys DriveLayout->PartitionEntry[i].PartitionLength, DriveLayout->PartitionEntry[i].StartingOffset.QuadPart / DiskGeometry->Geometry.BytesPerSector, DriveLayout->PartitionEntry[i].Gpt.Attributes); // Don't register the partitions that we don't care about destroying - if ( (strcmp(tmp, "UEFI:TOGO") == 0) || + if ( (strcmp(tmp, "UEFI:NTFS") == 0) || (CompareGUID(&DriveLayout->PartitionEntry[i].Gpt.PartitionType, &PARTITION_MSFT_RESERVED_GUID)) || (CompareGUID(&DriveLayout->PartitionEntry[i].Gpt.PartitionType, &PARTITION_SYSTEM_GUID)) ) --SelectedDrive.nPartitions; @@ -1031,9 +1031,9 @@ BOOL CreatePartition(HANDLE hDrive, int partition_style, int file_system, BOOL m PrintInfoDebug(0, MSG_238, PartitionTypeName[partition_style]); - if ((extra_partitions & XP_UEFI_TOGO) && (uefi_togo_size == 0)) { - uefi_togo_size = GetResourceSize(hMainInstance, MAKEINTRESOURCEA(IDR_UEFI_TOGO), _RT_RCDATA, "uefi-togo.img"); - if (uefi_togo_size == 0) + if ((extra_partitions & XP_UEFI_NTFS) && (uefi_ntfs_size == 0)) { + uefi_ntfs_size = GetResourceSize(hMainInstance, MAKEINTRESOURCEA(IDR_UEFI_NTFS), _RT_RCDATA, "uefi-ntfs.img"); + if (uefi_ntfs_size == 0) return FALSE; } @@ -1091,7 +1091,7 @@ BOOL CreatePartition(HANDLE hDrive, int partition_style, int file_system, BOOL m else ms_efi_size = 1200*1024*1024; // That'll teach you to have a nonstandard disk! extra_part_size_in_tracks = (ms_efi_size + bytes_per_track - 1) / bytes_per_track; - } else if (extra_partitions & XP_UEFI_TOGO) + } else if (extra_partitions & XP_UEFI_NTFS) extra_part_size_in_tracks = (MIN_EXTRA_PART_SIZE + bytes_per_track - 1) / bytes_per_track; else if (extra_partitions & XP_COMPAT) extra_part_size_in_tracks = 1; // One track for the extra partition @@ -1134,30 +1134,30 @@ BOOL CreatePartition(HANDLE hDrive, int partition_style, int file_system, BOOL m // Should end on a track boundary DriveLayoutEx.PartitionEntry[pn].StartingOffset.QuadPart = DriveLayoutEx.PartitionEntry[pn-1].StartingOffset.QuadPart + DriveLayoutEx.PartitionEntry[pn-1].PartitionLength.QuadPart; - DriveLayoutEx.PartitionEntry[pn].PartitionLength.QuadPart = (extra_partitions & XP_UEFI_TOGO)?uefi_togo_size: + DriveLayoutEx.PartitionEntry[pn].PartitionLength.QuadPart = (extra_partitions & XP_UEFI_NTFS)?uefi_ntfs_size: extra_part_size_in_tracks * SelectedDrive.Geometry.SectorsPerTrack * SelectedDrive.Geometry.BytesPerSector; if (partition_style == PARTITION_STYLE_GPT) { - DriveLayoutEx.PartitionEntry[pn].Gpt.PartitionType = (extra_partitions & XP_UEFI_TOGO)? + DriveLayoutEx.PartitionEntry[pn].Gpt.PartitionType = (extra_partitions & XP_UEFI_NTFS)? PARTITION_BASIC_DATA_GUID:PARTITION_SYSTEM_GUID; IGNORE_RETVAL(CoCreateGuid(&DriveLayoutEx.PartitionEntry[pn].Gpt.PartitionId)); - wcscpy(DriveLayoutEx.PartitionEntry[pn].Gpt.Name, (extra_partitions & XP_UEFI_TOGO)?L"UEFI:TOGO":L"EFI system partition"); + wcscpy(DriveLayoutEx.PartitionEntry[pn].Gpt.Name, (extra_partitions & XP_UEFI_NTFS)?L"UEFI:NTFS":L"EFI system partition"); } else { - DriveLayoutEx.PartitionEntry[pn].Mbr.PartitionType = (extra_partitions & XP_UEFI_TOGO)?0xef:RUFUS_EXTRA_PARTITION_TYPE; + DriveLayoutEx.PartitionEntry[pn].Mbr.PartitionType = (extra_partitions & XP_UEFI_NTFS)?0xef:RUFUS_EXTRA_PARTITION_TYPE; if (extra_partitions & XP_COMPAT) // Set the one track compatibility partition to be all hidden sectors DriveLayoutEx.PartitionEntry[pn].Mbr.HiddenSectors = SelectedDrive.Geometry.SectorsPerTrack; } - // We need to write the TOGO partition before we refresh the disk - if (extra_partitions & XP_UEFI_TOGO) { - uprintf("Writing UEFI:TOGO partition..."); + // We need to write the UEFI:NTFS partition before we refresh the disk + if (extra_partitions & XP_UEFI_NTFS) { + uprintf("Writing UEFI:NTFS partition..."); if (!SetFilePointerEx(hDrive, DriveLayoutEx.PartitionEntry[pn].StartingOffset, NULL, FILE_BEGIN)) { uprintf("Unable to set position"); return FALSE; } - buffer = GetResource(hMainInstance, MAKEINTRESOURCEA(IDR_UEFI_TOGO), _RT_RCDATA, "uefi-togo.img", &bufsize, FALSE); + buffer = GetResource(hMainInstance, MAKEINTRESOURCEA(IDR_UEFI_NTFS), _RT_RCDATA, "uefi-ntfs.img", &bufsize, FALSE); if (buffer == NULL) { - uprintf("Could not access uefi-togo.img"); + uprintf("Could not access uefi-ntfs.img"); return FALSE; } r = WriteFile(hDrive, buffer, bufsize, &size, NULL); diff --git a/src/drive.h b/src/drive.h index 605ad413..584977ec 100644 --- a/src/drive.h +++ b/src/drive.h @@ -32,7 +32,7 @@ #define XP_MSR 0x01 #define XP_EFI 0x02 -#define XP_UEFI_TOGO 0x04 +#define XP_UEFI_NTFS 0x04 #define XP_COMPAT 0x08 /* We need a redef of these MS structure */ diff --git a/src/format.c b/src/format.c index 6d4ac734..17d906af 100644 --- a/src/format.c +++ b/src/format.c @@ -1498,7 +1498,7 @@ DWORD WINAPI FormatThread(void* param) // http://msdn.microsoft.com/en-us/library/windows/hardware/dn640535.aspx#gpt_faq_what_disk_require_msr extra_partitions = XP_MSR | XP_EFI; else if ((fs == FS_NTFS) && (dt == DT_ISO) && (iso_report.has_efi) && ((bt == BT_UEFI) || (windows_to_go))) - extra_partitions = XP_UEFI_TOGO; + extra_partitions = XP_UEFI_NTFS; else if (IsChecked(IDC_EXTRA_PARTITION)) extra_partitions = XP_COMPAT; diff --git a/src/resource.h b/src/resource.h index 137789c4..5bb4f93a 100644 --- a/src/resource.h +++ b/src/resource.h @@ -69,7 +69,7 @@ #define IDR_GR_GRUB2_CORE_IMG 451 #define IDR_LC_RUFUS_LOC 500 #define IDR_XT_HOGGER 501 -#define IDR_UEFI_TOGO 502 +#define IDR_UEFI_NTFS 502 #define IDR_TOGO_SAN_POLICY_XML 503 #define IDR_TOGO_UNATTEND_XML 504 #define IDC_DEVICE 1001 diff --git a/src/rufus.rc b/src/rufus.rc index 66da0514..5488b846 100644 --- a/src/rufus.rc +++ b/src/rufus.rc @@ -32,7 +32,7 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL IDD_DIALOG DIALOGEX 12, 12, 242, 376 STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Rufus 2.0.644" +CAPTION "Rufus 2.0.645" FONT 8, "Segoe UI", 400, 0, 0x1 BEGIN DEFPUSHBUTTON "Start",IDC_START,127,339,50,14 @@ -157,7 +157,7 @@ END IDD_DIALOG_XP DIALOGEX 12, 12, 242, 376 STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Rufus 2.0.644" +CAPTION "Rufus 2.0.645" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN DEFPUSHBUTTON "Start",IDC_START,127,339,50,14 @@ -283,7 +283,7 @@ END IDD_DIALOG_RTL DIALOGEX 12, 12, 242, 376 STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_RTLREADING | WS_EX_APPWINDOW | WS_EX_LAYOUTRTL -CAPTION "Rufus 2.0.644" +CAPTION "Rufus 2.0.645" FONT 8, "Segoe UI", 400, 0, 0x1 BEGIN DEFPUSHBUTTON "Start",IDC_START,127,339,50,14 @@ -415,7 +415,7 @@ END IDD_DIALOG_RTL_XP DIALOGEX 12, 12, 242, 376 STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_RTLREADING | WS_EX_APPWINDOW | WS_EX_LAYOUTRTL -CAPTION "Rufus 2.0.644" +CAPTION "Rufus 2.0.645" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN DEFPUSHBUTTON "Start",IDC_START,127,339,50,14 @@ -611,7 +611,7 @@ BEGIN "IDR_FD_EGA17_CPX RCDATA ""../res/freedos/ega17.cpx""\r\n" "IDR_FD_EGA18_CPX RCDATA ""../res/freedos/ega18.cpx""\r\n" "IDR_XT_HOGGER RCDATA ""../res/hogger/hogger.exe""\r\n" - "IDR_UEFI_TOGO RCDATA ""../res/uefi/uefi-togo.img""\r\n" + "IDR_UEFI_NTFS RCDATA ""../res/uefi/uefi-ntfs.img""\r\n" "IDR_TOGO_SAN_POLICY_XML RCDATA ""../res/togo/san_policy.xml""\r\n" "IDR_TOGO_UNATTEND_XML RCDATA ""../res/togo/unattend.xml""\r\n" "\r\n" @@ -671,8 +671,8 @@ END // VS_VERSION_INFO VERSIONINFO - FILEVERSION 2,0,644,0 - PRODUCTVERSION 2,0,644,0 + FILEVERSION 2,1,645,0 + PRODUCTVERSION 2,1,645,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -689,13 +689,13 @@ BEGIN BEGIN VALUE "CompanyName", "Akeo Consulting (http://akeo.ie)" VALUE "FileDescription", "Rufus" - VALUE "FileVersion", "2.0.644" + VALUE "FileVersion", "2.1.645" VALUE "InternalName", "Rufus" VALUE "LegalCopyright", "© 2011-2015 Pete Batard (GPL v3)" VALUE "LegalTrademarks", "http://www.gnu.org/copyleft/gpl.html" VALUE "OriginalFilename", "rufus.exe" VALUE "ProductName", "Rufus" - VALUE "ProductVersion", "2.0.644" + VALUE "ProductVersion", "2.1.645" END END BLOCK "VarFileInfo" @@ -766,7 +766,7 @@ IDR_FD_EGA16_CPX RCDATA "../res/freedos/ega16.cpx" IDR_FD_EGA17_CPX RCDATA "../res/freedos/ega17.cpx" IDR_FD_EGA18_CPX RCDATA "../res/freedos/ega18.cpx" IDR_XT_HOGGER RCDATA "../res/hogger/hogger.exe" -IDR_UEFI_TOGO RCDATA "../res/uefi/uefi-togo.img" +IDR_UEFI_NTFS RCDATA "../res/uefi/uefi-ntfs.img" IDR_TOGO_SAN_POLICY_XML RCDATA "../res/togo/san_policy.xml" IDR_TOGO_UNATTEND_XML RCDATA "../res/togo/unattend.xml"