Compare commits
	
		
			1 Commits
		
	
	
		
			22c44a9705
			...
			hotfix/zfs
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 3e094a0a4f | 
| @@ -16,25 +16,6 @@ | |||||||
|         }; |         }; | ||||||
|       }; |       }; | ||||||
|  |  | ||||||
|       postResumeCommands = '' |  | ||||||
|         # let root mount and everything, then manually unlock stuff |  | ||||||
|         load_zfs_nix() { |  | ||||||
|           local device="/dev/disk/by-uuid/8bfaa32b-09dd-45c8-831e-05e80be82f9e" |  | ||||||
|           local mountPoint="/" |  | ||||||
|           local options="x-initrd.mount,noatime,nodiratime" |  | ||||||
|           local fsType="ext4" |  | ||||||
|  |  | ||||||
|           echo "manually mounting key location, then unmounting" |  | ||||||
|           udevadm settle |  | ||||||
|  |  | ||||||
|           mountFS "$device" "$(escapeFstab "$mountPoint")" "$(escapeFstab "$options")" "$fsType" |  | ||||||
|  |  | ||||||
|           zfs load-key -L "file://$targetRoot/crypto/keys/zfs-nix-store-key" "ZFS-primary/nix" |  | ||||||
|           umount "$targetRoot/" |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         load_zfs_nix |  | ||||||
|       ''; |  | ||||||
|     }; |     }; | ||||||
|   }; |   }; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -80,4 +80,70 @@ | |||||||
|       }; |       }; | ||||||
|     }; |     }; | ||||||
|   }; |   }; | ||||||
|  |  | ||||||
|  |   # hack to make sure pool is imported before keys are loaded, | ||||||
|  |   # and also keys are imported before things get mounted | ||||||
|  |   # note to self: move zfs encryption over to luks lol | ||||||
|  |   boot.initrd.postResumeCommands = '' | ||||||
|  |     ZFS_FORCE="-f" | ||||||
|  |  | ||||||
|  |     for o in $(cat /proc/cmdline); do | ||||||
|  |       case $o in | ||||||
|  |         zfs_force|zfs_force=1|zfs_force=y) | ||||||
|  |           ZFS_FORCE="-f" | ||||||
|  |           ;; | ||||||
|  |       esac | ||||||
|  |     done | ||||||
|  |     poolReady() { | ||||||
|  |       pool="$1" | ||||||
|  |       state="$("zpool" import -d "/dev/disk/by-id/" 2>/dev/null | "awk" "/pool: $pool/ { found = 1 }; /state:/ { if (found == 1) { print \$2; exit } }; END { if (found == 0) { print \"MISSING\" } }")" | ||||||
|  |       if [[ "$state" = "ONLINE" ]]; then | ||||||
|  |         return 0 | ||||||
|  |       else | ||||||
|  |         echo "Pool $pool in state $state, waiting" | ||||||
|  |         return 1 | ||||||
|  |       fi | ||||||
|  |     } | ||||||
|  |     poolImported() { | ||||||
|  |       pool="$1" | ||||||
|  |       "zpool" list "$pool" >/dev/null 2>/dev/null | ||||||
|  |     } | ||||||
|  |     poolImport() { | ||||||
|  |       pool="$1" | ||||||
|  |       "zpool" import -d "/dev/disk/by-id/" -N $ZFS_FORCE "$pool" | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     echo -n "importing root ZFS pool \"ZFS-primary\"..." | ||||||
|  |     # Loop across the import until it succeeds, because the devices needed may not be discovered yet. | ||||||
|  |     if ! poolImported "ZFS-primary"; then | ||||||
|  |       for trial in `seq 1 60`; do | ||||||
|  |         poolReady "ZFS-primary" > /dev/null && msg="$(poolImport "ZFS-primary" 2>&1)" && break | ||||||
|  |         sleep 1 | ||||||
|  |         echo -n . | ||||||
|  |       done | ||||||
|  |       echo | ||||||
|  |       if [[ -n "$msg" ]]; then | ||||||
|  |         echo "$msg"; | ||||||
|  |       fi | ||||||
|  |       poolImported "ZFS-primary" || poolImport "ZFS-primary"  # Try one last time, e.g. to import a degraded pool. | ||||||
|  |     fi | ||||||
|  |  | ||||||
|  |     # let root mount and everything, then manually unlock stuff | ||||||
|  |     load_zfs_nix() { | ||||||
|  |       local device="/dev/disk/by-uuid/8bfaa32b-09dd-45c8-831e-05e80be82f9e" | ||||||
|  |       local mountPoint="/" | ||||||
|  |       local options="x-initrd.mount,noatime,nodiratime" | ||||||
|  |       local fsType="ext4" | ||||||
|  |  | ||||||
|  |       echo "manually mounting key location, then unmounting" | ||||||
|  |       udevadm settle | ||||||
|  |  | ||||||
|  |       mountFS "$device" "$(escapeFstab "$mountPoint")" "$(escapeFstab "$options")" "$fsType" | ||||||
|  |  | ||||||
|  |       zfs load-key -L "file://$targetRoot/crypto/keys/zfs-nix-store-key" "ZFS-primary/nix" | ||||||
|  |       umount "$targetRoot/" | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     load_zfs_nix | ||||||
|  |   ''; | ||||||
| } | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user