GRMrGecko d5a3653915 Improve goroutine safety, error handling, and correctness
- Replace log.Fatalln in goroutines with error returns collected via
  mutex-protected slice, checked at barrier points and after final wait.
- Fix WaitGroup race between mountDrive and mountBindfs by removing the
  separate Add/Done pair and calling mountBindfs as a plain function.
- Fix encrypted+already-decrypted path skipping the mount step entirely.
- Add LUKS cleanup (cryptsetup close) when mount fails after decryption.
- Close cryptsetup stdin pipe after writing password to prevent hangs.
- Only pass -o to mount when Flags is non-empty.
- Support RAID_MOUNT_ENCRYPTION_PASSWORD env var as alternative to the
  command-line flag which is visible in the process list.
- Replace deprecated ioutil.ReadFile with os.ReadFile.
- Standardize error reporting on log package, remove mixed fmt.Printf.
- Fix config path resolution to check flag emptiness before stat.
- Add parallel semantics documentation to raidtab.example.
2026-02-20 12:47:02 -06:00
2021-11-28 09:43:26 -06:00
2021-11-28 09:43:26 -06:00
2021-11-28 09:43:26 -06:00
2021-11-28 09:43:26 -06:00
2021-11-28 09:43:26 -06:00
2021-11-28 09:43:26 -06:00

Raid Mount

This tool was designed to make it easy to mount encrypted hard drives for a snapraid/mergerfs configuration after a boot of a system. This allows your boot drive to be unencrypted so it can boot without intervention, which you can then finish the boot process via ssh remotely to mount encrypted drives and start services that use them. This does not fully protect your system against physical attack, but it is a compromise I am willing to work with on my system to allow me to finish a boot process if I were to be unable to access the system physically.

Raid Mountpoint Table Format

The format of the raidtab file is similar to the fstab format, but instead of having dump/pass options, there is a CryptName option to specify the name of the device once unencrypted. The CryptName field must be unique per each encrypted drive, and cannot match any existing /dev/mapper/ device name. If the CryptName is none, raid-mount will treat it as an unencrypted mount. There is an example file provided to make this concept easier to understand.

Raid Mount Configuration

Simply create a directory as /etc/raid-mount/ and place a config.json and raidtab file within this directory. Configuration options for config.json can be viewed in the config.go file and the config.example.json file.

Description
Mount encrypted drives for use with snapraid/mergerfs after boot.
Readme 37 KiB
Languages
Go 100%