System update not working

Anytime I try to do a system update, it fails and errors out.

The description reads:

[EFAULT] {'error': 'unsquashfs failed with exit code 1: SYNTAX: unsquashfs [options] filesystem [directories or files to extract]\n\t-v[ersion]\t\tprint version, licence and copyright information\n\t-d[est] \tunsquash to , default "squashfs-root"\n\t-q[uiet]\t\tno verbose output\n\t-n[o-progress]\t\tdon\'t display the progress bar\n\t-no[-xattrs]\t\tdon\'t extract xattrs in file system\n\t-x[attrs]\t\textract xattrs in file system (default)\n\t-u[ser-xattrs]\t\tonly extract user xattrs in file system.\n\t\t\t\tEnables extracting xattrs\n\t-p[rocessors] \tuse processors. By default will use\n\t\t\t\tnumber of processors available\n\t-i[nfo]\t\t\tprint files as they are unsquashed\n\t-li[nfo]\t\tprint files as they are unsquashed with file\n\t\t\t\tattributes (like ls -l output)\n\t-l[s]\t\t\tlist filesystem, but don\'t unsquash\n\t-ll[s]\t\t\tlist filesystem with file attributes (like\n\t\t\t\tls -l output), but don\'t unsquash\n\t-lln[umeric]\t\t-lls but with numeric uids and gids\n\t-lc\t\t\tlist filesystem concisely, displaying only files\n\t\t\t\tand empty directories. Don\'t unsquash\n\t-llc\t\t\tlist filesystem concisely with file attributes,\n\t\t\t\tdisplaying only files and empty directories.\n\t\t\t\tDon\'t unsquash\n\t-o[ffset] \tskip at start of \n\t\t\t\tOptionally a suffix of K, M or G can be given to specify\n\t\t\t\tKbytes, Mbytes or Gbytes respectively.\n\t\t\t\tDefault 0 bytes.\n\t-f[orce]\t\tif file already exists then overwrite\n\t-ig[nore-errors]\tTreat errors writing files to output as non-fatal\n\t-st[rict-errors]\tTreat all errors as fatal\n\t-s[tat]\t\t\tdisplay filesystem superblock information\n\t-UTC\t\t\tUse UTC rather than local time zone when displaying time\n\t-mkfs-time\t\tdisplay filesystem superblock time\n\t-fstime\t\t\tsynonym for -mkfs-time\n\t-e[f] \tlist of directories or files to extract.\n\t\t\t\tOne per line\n\t-da[ta-queue] \tSet data queue to Mbytes. Default 256\n\t\t\t\tMbytes\n\t-fr[ag-queue] \tSet fragment queue to Mbytes. Default\n\t\t\t\t256 Mbytes\n\t-r[egex]\t\ttreat extract names as POSIX regular expressions\n\t\t\t\trather than use the default shell wildcard\n\t\t\t\texpansion (globbing)\n\nDecompressors available:\n\tgzip\n\tlzma\n\tlzo\n\tlz4\n\txz\n\tzstd\n'}

and the “More info…” reads:

 Error: Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/middlewared/job.py", line 427, in run
    await self.future
  File "/usr/lib/python3/dist-packages/middlewared/job.py", line 465, in __run_body
    rv = await self.method(*([self] + args))
  File "/usr/lib/python3/dist-packages/middlewared/schema.py", line 1379, in nf
    return await func(*args, **kwargs)
  File "/usr/lib/python3/dist-packages/middlewared/plugins/update.py", line 285, in update
    await self.middleware.call('update.install', job, os.path.join(location, 'update.sqsh'), options)
  File "/usr/lib/python3/dist-packages/middlewared/main.py", line 1368, in call
    return await self._call(
  File "/usr/lib/python3/dist-packages/middlewared/main.py", line 1328, in _call
    return await self.run_in_executor(prepared_call.executor, methodobj, *prepared_call.args)
  File "/usr/lib/python3/dist-packages/middlewared/main.py", line 1231, in run_in_executor
    return await loop.run_in_executor(pool, functools.partial(method, *args, **kwargs))
  File "/usr/lib/python3.9/concurrent/futures/thread.py", line 52, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/usr/lib/python3/dist-packages/middlewared/plugins/update_/install_linux.py", line 32, in install
    self.middleware.call_sync("update.install_scale", mounted, progress_callback, options)
  File "/usr/lib/python3/dist-packages/middlewared/main.py", line 1398, in call_sync
    return methodobj(*prepared_call.args)
  File "/usr/lib/python3/dist-packages/middlewared/plugins/update_/install.py", line 52, in install_scale
    self._execute_truenas_install(mounted, command, progress_callback)
  File "/usr/lib/python3/dist-packages/middlewared/plugins/update_/install.py", line 83, in _execute_truenas_install
    raise CallError(result or f"Abnormal installer process termination with code {p.returncode}")
middlewared.service_exception.CallError: [EFAULT] {'error': 'unsquashfs failed with exit code 1: SYNTAX: unsquashfs [options] filesystem [directories or files to extract]\n\t-v[ersion]\t\tprint version, licence and copyright information\n\t-d[est] <pathname>\tunsquash to <pathname>, default "squashfs-root"\n\t-q[uiet]\t\tno verbose output\n\t-n[o-progress]\t\tdon\'t display the progress bar\n\t-no[-xattrs]\t\tdon\'t extract xattrs in file system\n\t-x[attrs]\t\textract xattrs in file system (default)\n\t-u[ser-xattrs]\t\tonly extract user xattrs in file system.\n\t\t\t\tEnables extracting xattrs\n\t-p[rocessors] <number>\tuse <number> processors.  By default will use\n\t\t\t\tnumber of processors available\n\t-i[nfo]\t\t\tprint files as they are unsquashed\n\t-li[nfo]\t\tprint files as they are unsquashed with file\n\t\t\t\tattributes (like ls -l output)\n\t-l[s]\t\t\tlist filesystem, but don\'t unsquash\n\t-ll[s]\t\t\tlist filesystem with file attributes (like\n\t\t\t\tls -l output), but don\'t unsquash\n\t-lln[umeric]\t\t-lls but with numeric uids and gids\n\t-lc\t\t\tlist filesystem concisely, displaying only files\n\t\t\t\tand empty directories.  Don\'t unsquash\n\t-llc\t\t\tlist filesystem concisely with file attributes,\n\t\t\t\tdisplaying only files and empty directories.\n\t\t\t\tDon\'t unsquash\n\t-o[ffset] <bytes>\tskip <bytes> at start of <dest>\n\t\t\t\tOptionally a suffix of K, M or G can be given to specify\n\t\t\t\tKbytes, Mbytes or Gbytes respectively.\n\t\t\t\tDefault 0 bytes.\n\t-f[orce]\t\tif file already exists then overwrite\n\t-ig[nore-errors]\tTreat errors writing files to output as non-fatal\n\t-st[rict-errors]\tTreat all errors as fatal\n\t-s[tat]\t\t\tdisplay filesystem superblock information\n\t-UTC\t\t\tUse UTC rather than local time zone when displaying time\n\t-mkfs-time\t\tdisplay filesystem superblock time\n\t-fstime\t\t\tsynonym for -mkfs-time\n\t-e[f] <extract file>\tlist of directories or files to extract.\n\t\t\t\tOne per line\n\t-da[ta-queue] <size>\tSet data queue to <size> Mbytes.  Default 256\n\t\t\t\tMbytes\n\t-fr[ag-queue] <size>\tSet fragment queue to <size> Mbytes.  Default\n\t\t\t\t256 Mbytes\n\t-r[egex]\t\ttreat extract names as POSIX regular expressions\n\t\t\t\trather than use the default shell wildcard\n\t\t\t\texpansion (globbing)\n\nDecompressors available:\n\tgzip\n\tlzma\n\tlzo\n\tlz4\n\txz\n\tzstd\n'}
 

How about a little help here? What version are you running, what version are you updating to? What is your system configuration? With not details it is impossible for anyone to help you.

Correction: I am running TrueNAS 22.12.4.2 trying to upgrade to TrueNAS-24.04.2.5
I’m uncertain what you mean by system configuration in this context.

Server type, memory, size, zfs configuration, applications installed, etc etc.

Server type is a home nas, memory size is 512 gb DDR4 ECC (I got a good deal, I know it’s overkill for my build otherwise)
5x4tb Ironwolf pros in a RAIDZ2 configuration
No applications installed, couldn’t get the UI to let me share my media folder with the Jellyfin container. I have an ubuntu VM for hosting a minecraft server, but thats it.

Oh yeah, also an Optane 900p as a single-drive L2ARC. I want to upgrade to 24.04 mostly for persistent L2ARC, so my iscsi steam drive isn’t super slow for a while when I have to reboot the system

I am pretty sure you have to upgrade in order so you need to do 23.x first.


I can try, but it would be odd that they give you the option if going straight to 24.04 didn’t work

Yeah, updating to 23.10 and then to 24.04 worked. No clue, but thank you for the suggestion!

For future reference, we always recommend upgrading sequentially from the last maintenance release of a major version to the next one. You can jump forward, but should do so with a fresh install of the target version and then a configuration file upload.

https://www.truenas.com/docs/softwarereleases/#upgrade-paths

That update train selector is being reworked for future versions to better communicate available and suggested options.