-
Notifications
You must be signed in to change notification settings - Fork 2.7k
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
"inflate error" when writing a compressed image larger than 4GB #2264
Comments
Do you have enough space on your local drive (specifically the temp folders) to store the extracted image from within the zip archive? |
@JonnyTech, this shouldn't matter, as Rufus does not need to extract to a temporary file. I'll try to validate this when I get a chance, but it looks like some of the decompression code we have, which we picked from BusyBox because we wanted something lightweight, might not be 64-bit compliant... |
This looks like a BusyBox bug that was fixed in a more recent version of the code than the one we use for Rufus (which comes from Bled which is derived from BusyBox). Especially, the symptoms describe by OP seem to match
from BusyBox's ChangeLog. I'll try to update Bled with the latest BusyBox decompression code when I have some time, so that I can then update Rufus. |
Actually, the issue is more complex than that. The fix mentioned above is for decompressed files that are larger than 4 GB, and we already integrated it last time we updated Bled (for instance you can download the ~1.5 GB [ChromeOS Flex installer image that contains a 8 GB DD image, and you'll find that Rufus has no trouble with it). And unfortunately that fix does nothing for archives that are > 4GB themselves, i.e. our actual issue here. And it's not as simple as adding support for ZIP64 data (basically the traditional ZIP header is limited to 32-bit for compressed and uncompressed file sizes, but you can add extra ZIP64 data after it to define the 64-bit sizes), because I've done just that and the decompressing still fails. So it looks like the problem is in the gunzip decompression, that is being called behind the scenes from unzip, and since we're working with bite-size decompression windows there, I'm not seeing an obvious "This is a 32-bit integer variable that should converted to 64-bit". In short, this will take a bit more time to figure out, and it is far from an easy fix. |
This should be fixed in the next version of Rufus. I basically had to add full blown ZIP64 support to the BusyBox code, since BusyBox doesn't support it, as well as improve CDF/CDE handling. This was a major undertaking, as evidenced in the commit that closes this issue below. But at least, people should now be able to use Rufus with |
Thanks for getting back and doing this so quickly, much appreciated. |
This thread has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue if you think you have a related problem or query. |
Checklist
<FULL LOG>
below.Rufus version: x.y.z
- I have NOT removed any part of it.Additionally (if applicable):
(✓)
button to compute the MD5, SHA1 and SHA256 checksums, which are therefore present in the log I copied. I confirmed, by performing an internet search, that these values match the ones from the official image.Issue description
When attempting to flash a .zip compressed disk image to a USB (tested on SanDisk Extreme Pro and SanDisk UltraFit devices, both >=64 GB in size), there is generally no issue. However, when the compressed image exceeds a size of 4 GB, a warning dialogue titled "Error: Write error." appears about 60 seconds into the write, accompanied by "Error: inflate error" in the logs. The disk image is a custom OS image and was compressed using the "zip" utility on Ubuntu 22.04.
Extracting this .zip archive with Windows Explorer or WinRar and flashing the .img file contained within (which is about 11GB) does not present any errors and allows the USB to be successfully flashed. Using an alternative USB flashing software succeeds to flash the same .zip file to the USB.
Log
The text was updated successfully, but these errors were encountered: