File: customize.sh

package info (click to toggle)
debvm 0.5.2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 212 kB
  • sloc: sh: 2,363; exp: 14; makefile: 5
file content (42 lines) | stat: -rwxr-xr-x 1,247 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#!/bin/sh
# Copyright 2022 Helmut Grohne <helmut@subdivi.de>
# SPDX-License-Identifier: MIT
#
# This is a mmdebstrap customize hook that adds a systemd-generator that causes
# 9p filesystems to be automatically mounted to /media/$SOMETAG during boot.
# You can enable it by passing the containing directory to --hook-dir.
# In order to add a 9p filesystem to your VM, pass
# -virtfs local,security_model=none,mount_tag=$SOMETAG,path=$SOMEDIR
# Note that the linux-image-cloud-* does not include a 9p driver.

set -eu
GENERATOR_PATH="$1/etc/systemd/system-generators/9p-generator"
mkdir -p "${GENERATOR_PATH%/*}"
cat >"$GENERATOR_PATH" << 'ENDOFGENERATOR'
#!/bin/sh

UNITDIR=$1

modprobe 9pnet_virtio || exit 0

for tagfile in /sys/bus/virtio/devices/*/mount_tag; do
	tag=$(cat "$tagfile") || continue
	test -z "$tag" && continue
	mountpoint="/media/$tag"
	mkdir -p "$mountpoint"
	unitname="$(systemd-escape -p "$mountpoint").mount"
	cat > "$UNITDIR/$unitname" <<ENDOFUNIT
[Unit]
Description=9p mount for tag $tag

[Mount]
What=$tag
Where=$mountpoint
Type=9p
Options=trans=virtio
ENDOFUNIT
	mkdir -p "$UNITDIR/remote-fs.target.wants"
	ln -s "../$unitname" "$UNITDIR/remote-fs.target.wants/$unitname"
done
ENDOFGENERATOR
chmod 755 "$GENERATOR_PATH"