Commit Graph

16 Commits

Author SHA1 Message Date
lassulus
f6b72bfed7 types *: make create idempotent 2024-03-13 09:58:33 +01:00
Jason Yundt
810eccbad2 Allow Disko to be run in a systemd service
Before this change, if you created a systemd service that ran
“disko --mode disko <path-to-config>”, then you would (probably) get
this error:

    disk-deactivate: line 6: /dev/stderr: No such device or address

Since disk-deactivate uses “set -e”, that error would prevent
disk-deactivate from actually deactivating any disks. The problem is
that disk-deactivate tries to print text to stderr by doing this:

    echo "Text" >/dev/stderr

systemd.exec(5) explains why that doesn’t work and goes on to say [1]:

> This means when executing shell scripts the construct
> **echo "hello" > /dev/stderr** for writing text to stderr will not
> work. To mitigate this use the construct **echo "hello" >&2** instead,
> which is mostly equivalent and avoids this pitfall.

[1]: <https://www.freedesktop.org/software/systemd/man/latest/systemd.exec.html#StandardOutput=>

---

You can test this commit by doing the following:

1. Download a copy of this gist:
   <https://gist.github.com/Jayman2000/60b483659e89283716582ac38856dca6>

2.  Build a custom NixOS installation ISO that contains a systemd service
    that runs disko:

        nix-build --arg diskoDir <path-to-disko-repo> <path-to-gist>

    Once that command finishes, the ISO will be in ./result/iso/.

3. Create a VM. Make sure that it has a VirtIO disk that’s more than
   500M large. Also make sure that it has an optical disc drive.

4. Put the ISO file from step 2 into the VM’s optical disc drive.

5. Turn on the VM and boot into the installation ISO.

6. Start the systemd service:

    sudo systemctl start disko-test

7. Check journalctl to see if there are any errors related to
   disk-deactivate.
2024-02-15 20:31:41 +00:00
danjujan
f7424625dc
Rework Hybrid MBR https://github.com/nix-community/disko/pull/168 (#508)
Add hybrid MBR functionality to the gpt type
2024-01-26 21:59:23 +01:00
phaer
be305848c6 umount md device before stopping the raid 2024-01-11 10:37:12 +00:00
Paul Haerle
12d0c39ed3 Don't print an error if there's no raid
Co-authored-by: Jörg Thalheim <Mic92@users.noreply.github.com>
2024-01-11 10:37:12 +00:00
phaer
acd2cbdb31 deactivate: stop raid if disk is a member of it
this is useful in cases where the target machine has
a pre-configured RAID setup, as otherwise disko would
wipe the partition tables and create new ones but would
not be able to inform the kernel about it, as the old
raid was still in use.
2024-01-11 10:37:12 +00:00
Carl Dong
196a5deeea disk-deactivate: Use bash and pipefail 2023-10-22 17:26:03 +00:00
Carl Dong
94af39d27e disk-deactivate: Remove MBR bootstrap code for disk 2023-10-22 17:26:03 +00:00
lassulus
7304727801 disk-deactivate: support all raid types 2023-09-12 08:41:56 +00:00
lassulus
7036bb8b30 disk-deactivate: execute directly instead of echoing script 2023-09-12 08:41:56 +00:00
lassulus
7bee8de8e6 disk-deactivate: return correct bash script 2023-09-07 06:48:47 +00:00
lassulus
b2ea7d6258 disk-deactivate: show disk layout before and after running 2023-09-05 09:23:03 +00:00
Jörg Thalheim
a511f59961 jq: filter null values from mountpoints from lsblk output 2023-02-03 14:57:55 +01:00
lassulus
08dc4d06da disk-deactivate: follow by-id/by-uuid links to real device 2023-01-28 18:08:31 +01:00
Victor Engmark
4553130780 fix: Quote variable reference
As recommended by ShellCheck.
2023-01-10 17:02:29 +13:00
lassulus
17da9b0708 init disk-deactivate for cleaning up the disk 2022-12-24 20:53:56 +01:00