Deactivate any external data disk device on first boot (#2390) (#2410)

* Deactivate any external data disk device on first boot (#2390)

* Use lsblk to determine the underlying device file

Comparing major number is not reliable, e.g. virtio disks have the same
major number despite being different devices. Use lsblk to find the
underlying device, and compare the device name instead.
This commit is contained in:
Stefan Agner 2023-03-15 14:16:11 +01:00 committed by GitHub
parent 24f3efdbe3
commit 5200096c4e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 39 additions and 0 deletions

View File

@ -0,0 +1,16 @@
[Unit]
Description=HAOS data disk detach
DefaultDependencies=no
Before=mnt-data.mount
RefuseManualStart=true
RefuseManualStop=true
Requires=dev-disk-by\x2dlabel-hassos\x2ddata.device
After=dev-disk-by\x2dlabel-hassos\x2ddata.device systemd-fsck@dev-disk-by\x2dlabel-hassos\x2ddata.service
ConditionFirstBoot=yes
[Service]
Type=oneshot
ExecStart=/usr/libexec/haos-data-disk-detach
[Install]
WantedBy=local-fs.target

View File

@ -0,0 +1,23 @@
#!/bin/sh
# Find root using rdev command
rootpart=$(rdev | cut -f 1 -d ' ')
rootdev=$(lsblk -no pkname "${rootpart}")
# Wait up to 10s for devices to enumerate
sleep 10s
datapartitions=$(blkid --match-token LABEL="hassos-data" --output device)
for datapart in ${datapartitions}
do
datadev=$(lsblk -no pkname "${datapart}")
# If major does not match our root device major, it is an external data
# disk. Rename to make sure it gets ignored.
if [ "$rootdev" != "$datadev" ]
then
echo "Found external data disk device on ${datapart}, mark it disabled..."
e2label "${datapart}" hassos-data-dis
fi
done