Commit Graph

275 Commits

Author SHA1 Message Date
Pete Batard 9edd7492db
[ext2fs] improve formatting speed
* Fix use of EXT2_BLOCK_SIZE() instead of EXT2_INODE_SIZE() during inode
  initialization, that made us zero way many more blocks than was needed.
* Also disable sparse_super feature and improve block setup.
* Also explicitly use IS_POWER_OF_2 macro where required.
2020-02-11 19:22:22 +00:00
Pete Batard 35af4cbacb
[misc] move Large FAT32 and ext formatting to their own source
* Also add randomization to test images
2020-02-10 13:04:50 +00:00
Pete Batard 87a7228d38
[ui] improve error reporting for download issues
* This is part of #1444
2020-02-03 12:35:49 +00:00
Pete Batard d1d5c2a7b6
[efi] enable the use of exFAT with UEFI:NTFS
* Only applies for blank UEFI:NTFS drives for now. UEFI:NTFS Windows drives are
  still set to use NTFS only (since Windows 7 doesn't support UEFI exFAT boot).
2020-01-30 13:51:19 +00:00
Pete Batard 4f0335a4a4
[cmp] fix writing of compressed streams that don't end on sector boundary
* Closes #1422
2019-12-27 00:41:53 +01:00
Pete Batard c1613ab7fc
[cmp] upgrade Bled to latest 2019-12-27 00:21:22 +01:00
Pete Batard 80a2bce5b3
[misc] mention that ext and persistence support should still be viewed as EXPERIMENTAL
* This is in relation to #1396
* Also fix a small typo
2019-11-09 13:38:30 +00:00
Pete Batard 1b02181f74
[ui] fix percent not being displayed on slow format 2019-09-21 22:39:00 +01:00
Pete Batard bf8d888b21
[ext2fs] fix creation of persistent partitions for pre-1703 platforms
* Windows platforms prior to Windows 10 1703 cannot access any logical partition besides the
  first one (we don't even get a volume for those).
* This fix enables the use of physical + offset for ext# formatting to work around this,
  which is file since we don't actually need to mount the partition.
* Also fix ext2fs_open2() not handling normalized versions of Windows drive paths ("\\?\...")
* Also fix an issue where we would make the drive letter unavailable after formatting a
  standalone partition to ext#.
* Also ensure that we return an error if the drive we attempt to locate a partition on
  through an offset does not match the currently selected one.
* Also remove some unused calls in drive.c.
* Closes #1374
2019-09-14 23:33:46 +01:00
Pete Batard 4c816a519e
[misc] update license URLs and align ms-sys's write_data buffer to 4K
* Also remove some obsolete TODOs
2019-09-06 11:32:37 +01:00
Pete Batard 398baf23d8
[ui] fix WIM image application progress
* Use UpdateProgressWithInfo() always
* Remove cubic progress and use an estimated overhead instead
2019-08-25 14:09:28 +01:00
Pete Batard e11113f802
[ui] fix stale progress bar during standalone ext2/ext3 format
* Also rename the FormatXXX function calls
2019-08-23 16:58:36 +01:00
Pete Batard af95de8198
[ui] add experimental optional display of transfer speed and time remaining
* You can use <Alt> to switch modes during an operation that supports it (e.g. Checksum
  computation, DD image writing or zeroing, save to VHD, download, etc.
* IMPORTANT: This is *NOT* available for all operations. Especially, if you were hoping
  to get transfer speed or ETA during ISO or WIM extraction, you *WILL* be disappointed.
* Also harmonize the code in checksum.c
2019-08-20 18:06:07 +01:00
Pete Batard 94e2015edf
[core] use offset rather than index to identify a partition
* Also fix potential bcdboot invocation failure by introducing a new AltGetLogicalName() call.
* Also use the AltMount calls for ext# formatting
2019-08-18 14:13:09 +01:00
Pete Batard 936bd9beb0
[core] revert to having the ESP as the last partition
* This is to avoid Microsoft's appalling refresh of the partition layout,
  which can result in partitions not being assigned a volume GUID.
* Mostly reverts a change that was applied in 1c39a80d72.
* Also add some more enum output and bail if we can't get a logical drive.
* Closes #1351
2019-08-13 09:14:13 +01:00
Pete Batard fcb15ab6e9
[ext2fs] automated persistence set up for Debian Live & Ubuntu
* Only UEFI boot for now (GRUB) & requires a post 2019.07.26 ISO for Ubuntu.
* This adds the relevant persistence/persistent kernel option to the conf file, sets the
  expected volume label and creates a /persistence.conf file where needed.
* Also improve token parsing by ensuring a token is followed by at least one white space.
2019-08-02 17:57:10 +01:00
Pete Batard f6687e729b
[ui] fix unwanted persistence unit overlay
* Also fix a typo and make sure to quote more paths when invoking Fido.
2019-06-05 17:00:21 +01:00
Pete Batard 8b18d8ce1d
[core] add CycleDevice and VDS layout refresh
* Also fix some minor issues
2019-05-23 13:09:25 +01:00
Pete Batard 2ff6da49f0
[extfs] add standalone ext2/ext3 formatting
* Only enabled when Advanced format options are shown
* Also enable reading of extfs volume label
* Also improve GRUB lookup fallback
* Also fix possible truncation when sanitizing labels
* Also write a zeroed MBR when non-bootable is selected
2019-05-03 23:51:05 +01:00
Pete Batard 5ae6e4f494
[ext2fs] improve error reporting
* Also clean up VDS error messages
2019-05-02 15:41:42 +01:00
Pete Batard 1c39a80d72
[core] partial overhaul of the partitioning and formatting facilities
* Add VDS formatting support (through an Alt-V cheat mode)
* Add partition index support
* Improve(?) Windows To Go support by following Microsoft recommended partition order
* Code refactoring & cleanup
2019-04-25 18:58:55 +01:00
Pete Batard 4b38483a68
[ext2fs] improve persistence partition creation's progress report
* Closes #691
2019-04-19 13:24:20 +01:00
Pete Batard 0a3600f9ff
[ext2fs] add registry setting to specify which ext fs version we should use
* Also improve log progress report
* Also move ext formatting to before we format the main partition
2019-04-17 20:34:39 +01:00
Pete Batard 0ad3f8c1d3
[ext2fs] integrate ext3 formatting into UI operations
* Add display of persistence controls on relevant images
* Add progress on ext3 formatting and improve error reporting
* Also improve MountVolume() and fix some Coverity warnings
2019-04-16 20:44:13 +01:00
Pete Batard ccf0f1bf3c
[ext2fs] add journal support for ext3 formatting
* Also clean up code, handle errors and fix issues
2019-04-15 17:04:39 +01:00
Pete Batard 9610e3a63b
[misc] refactor some global variables' names so we can reinstate -Wshadow
* Also remove no longer used _coverity.cmd and update .gitignore
2019-04-13 15:29:27 +01:00
Pete Batard cec443ef61
[ext2fs] update to latest e2fsprogs
* e2fsprogs commit [cecc2bc78b39ddcd34a819a4d7e7cd30897958cb]
* Also add LGPLv2 license text
2019-04-13 14:52:29 +01:00
Pete Batard cda716c1ff
[ext2fs] initial ext2fs support 2019-04-12 21:32:40 +01:00
Pete Batard d4a663991b
[core] report write errors more explicitly
* Also issue a port cycle on ERROR_NOT_READY
* Also run a check for conflicting processes during write retries
2019-04-09 21:37:08 +01:00
Pete Batard 06b33f94e4
[core] alter the drive letter we use when Windows has already remounted it
* Our code should be flexible enough to do just that and this will also
  alleviate requiring end users to retry an operation.
2019-04-08 16:29:17 +01:00
Pete Batard 661ba7b64c
[core] fix Win7 EFI boot file extraction when dual BIOS+UEFI is in use
* Closes #1292
* Also add "RISD" (Ricoh IDE SD Card reader) to list of card readers (#551)
* Also make running Fido script read-only
2019-03-27 12:21:41 +00:00
Pete Batard 82bb497c1b
[fido] add a log notice to explain why ISO downloads are disabled
* Also fix an issue where Rufus doesn't report an error if 'fmifs.dll' can't be found (#1284)
* Also improve GitHub issue template to mention that Ctrl-L can also be used to access the log
2019-03-19 12:04:29 +00:00
Pete Batard 28c1d6eb31
[core] display a notice about Legacy in the protective MBR for GPT
* This should help Windows users who create a GPT/UEFI drive and try to use it in BIOS/Legacy
* Also make sure that we take into account the split space for both "SELECT" and "DOWNLOAD"
2019-03-16 13:12:08 +00:00
Pete Batard e073fb47b0
[net] add Windows retail ISO downloads
* This is accomplished through Fido (https://github.com/pbatard/Fido), a *SIGNED*
  PowerShell script, that is downloaded from GitHub and that resides in memory for
  the duration of a session.
* The reason we use a downloaded PS script, rather than an embedded on, is because:
  - Microsoft have regularly been changing the deal with regards to how retail ISOs
    can be downloaded, and not for the better, so we can't simply embed a static
    means of downloading ISOs and expect that to work forever.
  - By using an external script, we can immediately respond to whatever new means of
    *ANNOYING* their legitimate users Microsoft will come up with next, as well as
    make sure that, the minute a new retail version of Windows becomes available, it
    also becomes available for download in Rufus.
* Note that if you are concerned about downloading a remote PS script that is being
  run at the same level as an elevated application, you should understand that:
  - Only scripts downloaded from GitHub, from an account that is protected with 2FA,
    are allowed to run (i.e. someone would first have to steal a *physical* 2FA key
    to be in a position to upload a malicious script).
  - On top of this, only scripts that are signed with a separate private key (RSA +
    AES-256), that is itself also protected with a strong unique password which only
    a single person knows (and must manually enter each time they want to make a new
    version of the script available for download), are allowed to run.
  The above means that there's about as much chance for someone to manage to upload
  a malicious script on the GitHub servers, that Rufus would allow to run, as there
  is for someone to upload a malicious version of Rufus itself.
  Still, if you are paranoid and have concerns that, even as you can validate from
  its source that Rufus does not attempt to execute any remote script unless a user
  actively selected and clicked the DOWNLOAD button, you can also completely disable
  the remote script download feature, if you just set the update check to disabled
  (which, by the way, Rufus *EXPLICITLY* asks you to choose whether you want to
  enable or not, the very first time you run the application).
* Also remove _unlinkU() which duplicates what DeleteFileU() already does.
2019-03-02 23:34:32 +00:00
Pete Batard 326ae54f45
[togo] add a notice about WppRecorder.sys BSOD with 1809 ISOs
* Also improve detection of build number
2019-01-30 17:15:25 +00:00
Pete Batard 521034da99
[togo] add newer install.wim + install.esd support
* With no thanks whatsoever to Microsoft for *NOT* documenting that you need
  to pass flag 0x2000000 to WIMCreateFile() if you want to avoid an open error.
  One has to wonder if Microsoft isn't deliberately adding *BULLSHIT FLAGS*
  that only they know of, to hinder competing third-party tools...
2019-01-08 18:30:07 +00:00
Pete Batard befe2606cf
[misc] use %S to print wchar_t strings where possible
* Also fix some Coverity warnings
2019-01-03 12:29:28 +00:00
Pete Batard 4cd308a1c0
[core] don't analyse boot records of deleted partition
* Also revert a472e96e87 as this is creating
  unwanted detection issues as per #1239. We'll try to devise a better way
  to avoid intempestive refreshes later on.
2018-11-28 11:12:54 +00:00
Pete Batard c0526b3e8b
[core] invoke VDS to delete all partitions before format/write 2018-11-28 10:50:00 +00:00
Pete Batard 04a5793ee7
[misc] use compilation flag to undefine NDEBUG for assert 2018-11-21 17:45:18 +00:00
Pete Batard 790b188b3d [ui] fix disabling of Quick Format checkbox
* Closes #1211
* Also fix MBR analysis report displayed each time the user changes boot selection
2018-10-03 19:14:40 +02:00
Pete Batard 204908f8e0 [misc] enable MinGW reproducible builds
* -Wl,--no-insert-timestamp seems to do the trick
* Also set rufus-next to 3.4
2018-09-24 23:42:04 +01:00
Pete Batard 1b63e59ee2 v3.3
* Also be more lenient about erasing the backup GPT
2018-09-17 12:09:54 +01:00
Pete Batard 97315a238d [togo] fix bcdboot invocation for ISOs that aren't dual BIOS and UEFI
* Closes #1111
2018-09-14 14:10:40 +01:00
Pete Batard 2d99601a5f [core] fix a regression when scanning uncompressed bootable DD images
* Closes #1206
2018-09-13 11:49:51 +01:00
Pete Batard 2d99bbcd41 v3.2 (build 1397) 2018-09-11 16:05:30 +01:00
Pete Batard 6275c5b724 fix MinGW-w64 warnings 2018-09-03 13:41:29 +01:00
Pete Batard 71578459d7 [loc] fix spaces before full stops
* Also: "Asserts, it's not just for debug any more!"
2018-07-31 20:47:24 +01:00
Pete Batard 59aab9b61d [core] refactor fast-zeroing code and fix warnings
* Fox coverity and MinGW warnings
2018-07-15 12:27:21 +01:00
René van der Zee 77bf5c8a49 [core] add alternate cheat mode for fast zeroing
* Ctrl-Alt-Z can now be used to zero a drive, while skipping blocks that are detected empty
* Depending on your hardware, as well as the existing drive content, this strategy can greatly
  speed up zeroing operations, especially if the flash memory's read speed is much higher than
  its write speed.
* Closes #1174
2018-07-06 13:29:20 +01:00