I'm currently testing with 22.02.00 in a VMWare environment before installing it on bare metal.
I am especially testing the replacement of boot devices, and I must say that it is not going well

My setup is very simple.. just a VM with two 20GB disks, I then install TrueNAS from ISO and choose both disks as installation targets.
This of cause creates a mirrored boot pool.
I then try to simulate a disk failure, then add a fresh virtual disk, and do the replacement on the boot pool... which almost works...
The zpool seems to be fixed, but the grub installation fails with this error:
[EFAULT] Command grub-install --target=i386-pc /dev/sdb failed (code 1): Installing for i386-pc platform. grub-install: error: failed to get canonical path of `/dev/replacing-1'.
Followed by these details:
Error: Traceback (most recent call last): File "/usr/lib/python3/dist-packages/middlewared/main.py", line 175, in call_method result = await self.middleware._call(message['method'], serviceobj, methodobj, params, app=self, File "/usr/lib/python3/dist-packages/middlewared/main.py", line 1275, in _call return await methodobj(*prepared_call.args) File "/usr/lib/python3/dist-packages/middlewared/schema.py", line 1261, in nf return await func(*args, **kwargs) File "/usr/lib/python3/dist-packages/middlewared/schema.py", line 1129, in nf res = await f(*args, **kwargs) File "/usr/lib/python3/dist-packages/middlewared/plugins/boot.py", line 234, in replace await self.middleware.call('boot.install_loader', dev) File "/usr/lib/python3/dist-packages/middlewared/main.py", line 1318, in call return await self._call( File "/usr/lib/python3/dist-packages/middlewared/main.py", line 1275, in _call return await methodobj(*prepared_call.args) File "/usr/lib/python3/dist-packages/middlewared/plugins/boot_/boot_loader_linux.py", line 19, in install_loader await run('grub-install', '--target=i386-pc', f'/dev/{dev}') File "/usr/lib/python3/dist-packages/middlewared/utils/__init__.py", line 64, in run cp.check_returncode() File "/usr/lib/python3.9/subprocess.py", line 460, in check_returncode raise CalledProcessError(self.returncode, self.args, self.stdout, subprocess.CalledProcessError: Command '('grub-install', '--target=i386-pc', '/dev/sdb')' returned non-zero exit status 1.
As pointed out, the zpool is now resilvered and OK
I can run the command "grub-install --target=i386-pc /dev/sdb" from the command line without any errors...
But... if I then remove the other drive and try to boot of this drive (sdb), it then fails to find any bootloader.. no grub no nothing...
I guess grub is not installed correctly?
Not sure if I am doing something wrong here? But I am trying to do it all from the web GUI...
This is exactly why I do these tests before installing this on a semi production setup
Any help is welcome... and it is very easy to replicate this...
/Beardmann