The problem was, ludelete was complaining;
[root] deckard:/root # ludelete zfs_nv_105
System has findroot enabled GRUB
Checking if last BE on any disk...
ERROR: Read-only file system: cannot create mount point
ERROR: failed to create mount point for file system
ERROR: unmounting partially mounted boot environment file systems
ERROR: umount: warning: /dev/dsk/c0d0s3 not in mnttab
umount: /dev/dsk/c0d0s3 not mounted
ERROR: cannot unmount
ERROR: cannot mount boot environment by name
ERROR: Failed to mount BE
ERROR: Failed to mount BE
ERROR: This boot environment
ERROR: Deleting this BE may make it impossible to boot from this disk.
ERROR: However you may still boot solaris if you have BE(s) on other disks.
ERROR: You *may* have to change boot-device order in the BIOS to accomplish this.
ERROR: If you still want to delete this BE
Unable to delete boot environment.
To cut a very long and not very interesting story short the fix was to use the lumount command and try and mount each old boot environment. This gave some more useful pointers but the root cause of all this was that I had deleted some zfs filesystems between then and now, so it was trying to mount filesystems which did not exist any more.
Recreating the filesystems (and ensuring they had the same mount point as before) acted as a temporary fix and as I created each filesystem in turn lumount got a little bit futher each time. Once I was able to lumount each previous BE then the ludelete worked fine. Like a breeze you might say.
I just had the same problem. After talking to some friendly people on Freenode #solaris, I learned that an even easier workaround is to edit the /etc/lu/ICF.nn file for the problemativ BE, and delete the lines that reference the missing (or moved) filesystems.
ReplyDelete