Skip to content

Instantly share code, notes, and snippets.

@scateu
Created August 14, 2026 06:35
Show Gist options
  • Select an option

  • Save scateu/15e3e74c61d027f85e3476b8a8a8dd32 to your computer and use it in GitHub Desktop.

Select an option

Save scateu/15e3e74c61d027f85e3476b8a8a8dd32 to your computer and use it in GitHub Desktop.
Raspberry Pi 4, PocketTerm35 - Boot Speed Up

Raspberry Pi Boot Speedup — Findings & Changes

Target: pi@192.168.1.135 — Raspberry Pi (PocketTerm 3.5" / Waveshare display), headless console use OS: Debian GNU/Linux 13 (trixie), systemd 257 Kernel: 6.18.40-v8-cjk+ (custom kernel8-cjk.img) Date: 2026-08-14


Result

Metric Before After Saved
Total boot 55.78 s 25.87 s ~30 s
Kernel (systemd-analyze) 9.04 s 1.65 s 7.4 s
Userspace 46.75 s 24.22 s 22.5 s
Firmware+kernel wall time* 11.8 s 9.4 s 2.4 s
Enabled services 35 16 19 fewer

* Wall-clock time before systemd's first log line (bootloader loading kernel from SD).

Boot messages remain visible on the console (we did not use quiet).


How boot time was measured

systemd-analyze                 # totals: kernel + userspace
systemd-analyze blame           # slowest units, descending
systemd-analyze critical-chain  # the dependency path that gates the finish

The critical chain is what matters: blame shows slow units, but only units on the critical chain actually delay the finish. A slow unit running in parallel off the critical path costs nothing.

To see the true firmware+kernel cost (the bootloader loading the kernel off the SD card, which systemd-analyze under-reports), read the monotonic timestamp of systemd's first log line:

journalctl -b -o short-monotonic | grep -m1 'systemd 257'
# e.g. [ 9.373433] pi systemd[1]: systemd 257 running...  => ~9.4s before userspace

What was slow, and why

The original critical chain:

multi-user.target @45.3s
└─nginx.service +901ms
  └─network-online.target
    └─NetworkManager-wait-online.service +6.0s   ← blocked waiting for DHCP
      └─NetworkManager.service +6.9s
        └─dbus.service
          └─ ... sysinit ...
            └─cloud-init-network.service
              └─cloud-init-local.service +1.4s
                └─cloud-init-main.service +8.4s   ← cloud-init: ~10s, totally unused
                  └─boot-firmware.mount
                    └─fsck (FAT boot partition) +1.8s  ← fsck every boot

Top offenders:

  1. cloud-init (~10 s on the critical path) — a cloud-provisioning tool for AWS/Azure/etc. Pointless on a physical Pi. It was gating sysinit.target.
  2. NetworkManager-wait-online (6 s) — blocks boot until DHCP fully completes. nginx pulled in network-online.target, forcing the whole boot to wait.
  3. FAT boot-partition fsck (1.8 s every boot) — low value; the /boot/firmware partition is rarely written.
  4. initramfs (11.9 MB loaded off a slow SD card each boot) — unnecessary here because the kernel has the SD (bcm2835-mmc) and ext4 drivers built in.
  5. 19 unused services — ModemManager, Bluetooth, CUPS (printing), avahi (mDNS), NFS/rpcbind, lightdm/X (headless!), RPi EEPROM update, X display-test probes, etc.

Changes applied (all reversible)

1. Disabled cloud-init (~10 s)

sudo touch /etc/cloud/cloud-init.disabled
sudo systemctl disable cloud-init-main cloud-init-local cloud-init-network \
                       cloud-config cloud-final

2. Stopped waiting for the network (~6 s)

sudo systemctl disable NetworkManager-wait-online.service

And a drop-in so nginx no longer pulls in network-online.target (/etc/systemd/system/nginx.service.d/override.conf):

[Unit]
After=
After=network.target remote-fs.target nss-lookup.target
Wants=

Plus an ssh drop-in so ssh doesn't order after network.target (/etc/systemd/system/ssh.service.d/speedup.conf) — sshd binds to 0.0.0.0 and serves as soon as an interface gets an address; it doesn't need to wait for DHCP.

3. Disabled unused services (headless, no Bluetooth/printing)

sudo systemctl disable ModemManager bluetooth cups cups-browsed lightdm \
                       rpcbind nfs-blkmap e2scrub_reap rpi-eeprom-update \
                       accounts-daemon rp1-test glamor-test
sudo systemctl disable --now cups.socket cups.path rpcbind.socket \
                             avahi-daemon.service avahi-daemon.socket
  • lightdm/accounts-daemon/rp1-test/glamor-test — GUI/X stuff, unused (console only)
  • avahi — mDNS .local name resolution (you can still reach the Pi by IP)
  • rpcbind/nfs-blkmap — NFS, unused
  • ModemManager — cellular modems, none attached

4. Skipped FAT boot-partition fsck every boot (~1.8 s)

In /etc/fstab, changed the /boot/firmware line's last field (fsck pass) from 2 to 0:

PARTUUID=0f319fba-01  /boot/firmware  vfat  defaults  0  0

5. Firmware tuning (/boot/firmware/config.txt)

boot_delay=0            # no artificial bootloader pause
camera_auto_detect=0    # don't probe CSI camera every boot (none attached)
auto_initramfs=0        # don't build/load initramfs — kernel has mmc+ext4 builtin

6. Removed the initramfs (~2.4 s firmware, biggest kernel-side win)

auto_initramfs=0 above. Verified safe first — these are built into the kernel (so root mounts without an initramfs):

grep -iE 'mmc_block|bcm2835|ext4' /lib/modules/$(uname -r)/modules.builtin

7. Capped journald size (minor, avoids disk churn)

/etc/systemd/journald.conf.d/speedup.conf:

[Journal]
SystemMaxUse=50M
RuntimeMaxUse=20M

What's left (and why it's hard to cut further)

Final critical chain:

multi-user.target @24.2s
└─ssh.service +1.3s
  └─network.target
    └─NetworkManager.service +6.5s       ← top remaining software cost
      └─ ... basic/sysinit @15.5s ...
        └─local-fs.target @14.9s
          └─boot-firmware.mount
            └─dev-mmcblk0p1.device @13.8s ← SD card enumeration (hardware)
  • ~9 s firmware + ~5 s SD-card device settling = mostly hardware-bound (slow SD card). A faster / higher-class SD card or USB/NVMe boot is the real fix.
  • NetworkManager ~6.5 s — starts, loads the WiFi plugin, then does DHCP on both eth0 and wlan0. See the optional tweak below.

Optional: trim NetworkManager by not auto-connecting WiFi

The Pi is on Ethernet (192.168.1.135) but also auto-connects to WiFi (alibaba-guest, giving a 30.49.x address). If you don't need WiFi:

sudo nmcli connection modify alibaba-guest connection.autoconnect no
# repeat for JSBPI, JSBPI-5G, TunaInTheNorth-5GHz if desired

This removes a parallel DHCP transaction during boot.


Recovery

Backups were made on the Pi:

  • /etc/fstab.bak-speedup
  • /boot/firmware/config.txt.bak-speedup
  • /boot/firmware/cmdline.txt.bak-speedup
  • /boot/firmware/RECOVERY-README.txt (initramfs rollback note)

If the Pi won't boot (most likely from the initramfs change): pull the SD card, open config.txt on any computer, and set auto_initramfs=1.

To re-enable any service:

sudo systemctl enable --now <service>
#!/usr/bin/env bash
#
# pi-boot-speedup.sh — speed up Raspberry Pi boot time (systemd + firmware)
#
# Repeatable, idempotent, and reversible. Run it on the Pi (it uses sudo), or
# from your laptop: ssh pi@192.168.1.135 'sudo bash -s' < pi-boot-speedup.sh
#
# Usage:
# sudo ./pi-boot-speedup.sh # apply all tweaks (safe to re-run)
# sudo ./pi-boot-speedup.sh --no-wifi # also disable WiFi autoconnect
# sudo ./pi-boot-speedup.sh --measure # just show boot timing, change nothing
# sudo ./pi-boot-speedup.sh --undo # restore backups / re-enable services
# sudo ./pi-boot-speedup.sh --help
#
# Defaults are tuned for a HEADLESS console Pi (no desktop, no Bluetooth,
# no printing). Edit the DISABLE_SERVICES list below if your usage differs.
#
# Tested on: Debian 13 (trixie), systemd 257, custom kernel8-cjk.img.
#
set -uo pipefail
# ---------------------------------------------------------------------------
# Config — adjust to taste
# ---------------------------------------------------------------------------
FW_DIR="/boot/firmware" # older images use /boot
CONFIG_TXT="$FW_DIR/config.txt"
CMDLINE_TXT="$FW_DIR/cmdline.txt"
FSTAB="/etc/fstab"
TAG="speedup" # backup suffix: *.bak-speedup
# Services safe to disable on a headless, no-BT, no-printer Pi.
DISABLE_SERVICES=(
ModemManager.service
bluetooth.service
cups.service cups-browsed.service
lightdm.service
accounts-daemon.service
rpcbind.service
nfs-blkmap.service
e2scrub_reap.service
rpi-eeprom-update.service
rp1-test.service
glamor-test.service
NetworkManager-wait-online.service
)
# Socket/path units that would otherwise re-trigger a disabled service.
DISABLE_TRIGGERS=(
cups.socket cups.path
rpcbind.socket
avahi-daemon.service avahi-daemon.socket
)
CLOUD_INIT_SERVICES=(
cloud-init-main.service cloud-init-local.service cloud-init-network.service
cloud-config.service cloud-final.service
)
# ---------------------------------------------------------------------------
# Helpers
# ---------------------------------------------------------------------------
c_grn=$'\033[32m'; c_yel=$'\033[33m'; c_red=$'\033[31m'; c_dim=$'\033[2m'; c_off=$'\033[0m'
info(){ printf '%s==>%s %s\n' "$c_grn" "$c_off" "$*"; }
warn(){ printf '%s!! %s%s\n' "$c_yel" "$*" "$c_off"; }
err (){ printf '%sxx %s%s\n' "$c_red" "$*" "$c_off" >&2; }
skip(){ printf ' %s- %s%s\n' "$c_dim" "$*" "$c_off"; }
need_root(){
if [[ $EUID -ne 0 ]]; then
err "Please run as root (use sudo)."; exit 1
fi
}
# Back up a file once (never overwrite an existing .bak-speedup).
backup_once(){
local f="$1"
[[ -f "$f" ]] || return 0
if [[ ! -f "$f.bak-$TAG" ]]; then
cp -a "$f" "$f.bak-$TAG"
skip "backup: $f -> $f.bak-$TAG"
fi
}
# Write a drop-in only if content differs (idempotent).
write_dropin(){
local path="$1"; shift
local content="$*"
mkdir -p "$(dirname "$path")"
if [[ -f "$path" ]] && [[ "$(cat "$path")" == "$content" ]]; then
skip "drop-in already current: $path"
else
printf '%s\n' "$content" > "$path"
info "wrote drop-in: $path"
fi
}
measure(){
command -v systemd-analyze >/dev/null || { warn "systemd-analyze not found"; return; }
info "Boot timing:"
systemd-analyze 2>/dev/null || warn "boot still in progress; try again shortly"
echo
info "Critical chain (what actually gates the finish):"
systemd-analyze critical-chain 2>/dev/null | head -20
echo
info "Firmware+kernel wall time before systemd (bootloader reading SD):"
journalctl -b -o short-monotonic 2>/dev/null | grep -m1 'systemd\[1\]: systemd ' \
| grep -oE '^\[[ ]*[0-9.]+\]' || skip "n/a"
}
# ---------------------------------------------------------------------------
# Apply
# ---------------------------------------------------------------------------
apply(){
local do_wifi="${1:-no}"
need_root
info "Snapshotting current state to /var/log/pi-boot-speedup/"
local snap=/var/log/pi-boot-speedup
mkdir -p "$snap"
systemd-analyze blame 2>/dev/null > "$snap/blame-before.txt" || true
systemctl list-unit-files --state=enabled 2>/dev/null > "$snap/enabled-before.txt" || true
# 1. cloud-init -----------------------------------------------------------
info "Disabling cloud-init"
if [[ -d /etc/cloud ]]; then
touch /etc/cloud/cloud-init.disabled
systemctl disable "${CLOUD_INIT_SERVICES[@]}" 2>/dev/null || true
else
skip "cloud-init not installed"
fi
# 2. unused services ------------------------------------------------------
info "Disabling unused services (headless / no BT / no printing)"
for s in "${DISABLE_SERVICES[@]}"; do
if systemctl list-unit-files "$s" &>/dev/null; then
systemctl disable "$s" 2>/dev/null && skip "disabled $s" || skip "$s already off"
fi
done
info "Disabling socket/path triggers"
for s in "${DISABLE_TRIGGERS[@]}"; do
if systemctl list-unit-files "$s" &>/dev/null; then
systemctl disable --now "$s" 2>/dev/null && skip "disabled $s" || skip "$s already off"
fi
done
# 3. don't block boot on the network -------------------------------------
info "Decoupling ssh/nginx from network-online wait"
if systemctl list-unit-files ssh.service &>/dev/null; then
write_dropin /etc/systemd/system/ssh.service.d/${TAG}.conf \
"[Unit]
# Boot speedup: sshd binds to 0.0.0.0 and does not need routable network.
After=
After=nss-user-lookup.target auditd.service"
fi
if systemctl list-unit-files nginx.service &>/dev/null; then
write_dropin /etc/systemd/system/nginx.service.d/${TAG}.conf \
"[Unit]
# Boot speedup: don't gate boot on network-online.target (DHCP lease).
After=
After=network.target remote-fs.target nss-lookup.target
Wants="
fi
# 4. journald size cap ----------------------------------------------------
info "Capping journald size"
write_dropin /etc/systemd/journald.conf.d/${TAG}.conf \
"[Journal]
SystemMaxUse=50M
RuntimeMaxUse=20M"
# 5. fstab: skip FAT boot-partition fsck each boot ------------------------
info "Skipping fsck on the FAT boot partition"
if grep -qE '[[:space:]]/boot(/firmware)?[[:space:]]+vfat' "$FSTAB"; then
backup_once "$FSTAB"
# set the last field (fsck pass) to 0 on the vfat /boot line
sed -i -E 's#([[:space:]]/boot(/firmware)?[[:space:]]+vfat[[:space:]]+[^[:space:]]+[[:space:]]+[0-9]+[[:space:]]+)[0-9]+#\10#' "$FSTAB"
skip "$(grep -E 'vfat' "$FSTAB")"
else
skip "no vfat /boot line in fstab"
fi
# 6. firmware config ------------------------------------------------------
if [[ -f "$CONFIG_TXT" ]]; then
info "Tuning $CONFIG_TXT"
backup_once "$CONFIG_TXT"
set_config(){ # key value : add or replace 'key=value'
local k="$1" v="$2"
if grep -qE "^${k}=" "$CONFIG_TXT"; then
sed -i -E "s#^${k}=.*#${k}=${v}#" "$CONFIG_TXT"
else
printf '%s=%s\n' "$k" "$v" >> "$CONFIG_TXT"
fi
skip "${k}=${v}"
}
set_config boot_delay 0
set_config camera_auto_detect 0
# initramfs removal — only if kernel has SD + ext4 builtin (else skip, unsafe)
local kver builtin
kver="$(uname -r)"
builtin="/lib/modules/$kver/modules.builtin"
if [[ -f "$builtin" ]] && grep -qiE 'ext4' "$builtin" \
&& grep -qiE 'mmc/host/(bcm2835|sdhci)' "$builtin"; then
set_config auto_initramfs 0
warn "Removed initramfs (kernel has mmc+ext4 builtin). Recovery: set auto_initramfs=1"
cat > "$FW_DIR/RECOVERY-README.txt" <<'NOTE'
BOOT SPEEDUP RECOVERY
If the Pi will NOT boot, mount this FAT partition on another computer and
edit config.txt: set auto_initramfs=1 (and restore *.bak-speedup files).
NOTE
else
warn "Kernel storage/fs drivers not confirmed builtin — LEAVING initramfs enabled (safe)"
fi
else
warn "$CONFIG_TXT not found — skipping firmware tweaks"
fi
# 7. optional: disable WiFi autoconnect ----------------------------------
if [[ "$do_wifi" == "no-wifi" ]]; then
info "Disabling WiFi autoconnect (you asked with --no-wifi)"
if command -v nmcli >/dev/null; then
nmcli -t -f NAME,TYPE connection show | awk -F: '$2 ~ /wireless/ {print $1}' \
| while read -r con; do
nmcli connection modify "$con" connection.autoconnect no && skip "no autoconnect: $con"
done
else
skip "nmcli not present"
fi
fi
systemctl daemon-reload
echo
info "Done. Review, then reboot: sudo systemctl reboot"
info "After reboot, re-run with --measure to compare."
}
# ---------------------------------------------------------------------------
# Undo
# ---------------------------------------------------------------------------
undo(){
need_root
warn "Reverting boot-speedup changes"
# restore backed-up files
for f in "$CONFIG_TXT" "$CMDLINE_TXT" "$FSTAB"; do
if [[ -f "$f.bak-$TAG" ]]; then
cp -a "$f.bak-$TAG" "$f"; info "restored $f"
fi
done
# remove our drop-ins
rm -f /etc/systemd/system/ssh.service.d/${TAG}.conf \
/etc/systemd/system/nginx.service.d/${TAG}.conf \
/etc/systemd/journald.conf.d/${TAG}.conf
rmdir /etc/systemd/system/ssh.service.d 2>/dev/null || true
rmdir /etc/systemd/system/nginx.service.d 2>/dev/null || true
# re-enable everything we turned off
rm -f /etc/cloud/cloud-init.disabled
systemctl enable "${CLOUD_INIT_SERVICES[@]}" 2>/dev/null || true
systemctl enable "${DISABLE_SERVICES[@]}" "${DISABLE_TRIGGERS[@]}" 2>/dev/null || true
systemctl daemon-reload
info "Reverted. Reboot to fully restore: sudo systemctl reboot"
warn "Note: WiFi autoconnect (if changed with --no-wifi) is NOT auto-restored."
warn " Re-enable per network: nmcli connection modify <name> connection.autoconnect yes"
}
usage(){
sed -n '2,20p' "$0" | sed 's/^# \{0,1\}//'
}
# ---------------------------------------------------------------------------
# Main
# ---------------------------------------------------------------------------
case "${1:-apply}" in
--help|-h) usage ;;
--measure) measure ;;
--undo) undo ;;
--no-wifi) apply no-wifi ;;
apply|"") apply no ;;
*) err "Unknown option: $1"; echo; usage; exit 1 ;;
esac

Tutorial: Speed Up Raspberry Pi Boot Time (systemd)

A repeatable method for making a Raspberry Pi boot fast. Works on any Debian/Raspberry Pi OS with systemd. This is the process I used to take pi@192.168.1.135 from 55 s → 26 s.

The golden rule: measure → find the critical path → cut it → reboot → re-measure. Never disable things blindly.


Step 0 — Measure the baseline

systemd-analyze                 # total = kernel + userspace
systemd-analyze critical-chain  # THE important one: what gates the finish
systemd-analyze blame           # slowest units (many run in parallel!)

Save a baseline so you can prove the improvement:

systemd-analyze blame > ~/blame-before.txt

Read the critical chain, not blame. blame lists slow units, but a slow unit that runs in parallel off the critical path costs you nothing. Only units on the critical-chain output actually delay boot completion. Cut those.

Also check the true firmware cost that systemd-analyze hides (bootloader loading the kernel off the SD card):

journalctl -b -o short-monotonic | grep -m1 'systemd'
# The [ 9.37...] timestamp = seconds spent before userspace even started.

Step 1 — Know your machine before cutting

systemctl get-default                       # multi-user = console, graphical = desktop
nmcli device                                # which network is actually used?
systemctl list-unit-files --state=enabled   # what's set to start
systemctl --failed                          # fix/disable anything failed

Decide what you genuinely use. Common things to disable on a headless Pi:

Service What it does Disable if…
cloud-init* Cloud (AWS/Azure) auto-provisioning Always, on a real Pi
NetworkManager-wait-online Blocks boot until DHCP done Almost always
lightdm, accounts-daemon Desktop login / X No desktop
bluetooth Bluetooth stack No BT devices
cups, cups-browsed Printing No printer
avahi-daemon mDNS .local names You use IPs
ModemManager Cellular modems No modem
rpcbind, nfs-* NFS file sharing No NFS
rpi-eeprom-update Firmware update check Update manually

Step 2 — Disable what you don't use

# cloud-init (this is the single biggest win on most cloud-imaged Pis)
sudo touch /etc/cloud/cloud-init.disabled
sudo systemctl disable cloud-init-main cloud-init-local cloud-init-network \
                       cloud-config cloud-final

# don't block boot on the network coming fully online
sudo systemctl disable NetworkManager-wait-online.service

# unused daemons (adjust to your needs)
sudo systemctl disable ModemManager bluetooth cups cups-browsed lightdm \
                       rpcbind nfs-blkmap e2scrub_reap rpi-eeprom-update

# some units are socket/path-activated — disable the trigger too:
sudo systemctl disable --now cups.socket cups.path rpcbind.socket \
                             avahi-daemon.service avahi-daemon.socket

Tip: systemctl disable X sometimes says "its triggering units are still active: X.socket". That means a socket/path unit will still start it on demand. Disable those too (as shown above) to keep it off at boot.


Step 3 — Break the network-wait bottleneck

If a service (e.g. a web server) pulls in network-online.target, the whole boot waits for DHCP. Two fixes:

a) Stop the service from requiring it — drop-in override:

sudo systemctl edit nginx.service
[Unit]
After=
After=network.target remote-fs.target nss-lookup.target
Wants=

(The bare After=/Wants= lines reset the inherited values, then you re-add only what you want.)

b) For ssh, it doesn't need routable network at all — it binds to 0.0.0.0:

sudo systemctl edit ssh.service
[Unit]
After=
After=nss-user-lookup.target auditd.service

Step 4 — Stop fsck'ing the boot partition every boot

The FAT /boot/firmware partition rarely changes; a check every boot costs ~2 s. In /etc/fstab, set the last column (fsck pass) to 0:

PARTUUID=xxxx-01  /boot/firmware  vfat  defaults  0  0

(Leave the root ext4 line's pass at 1 — you still want that checked.)


Step 5 — Firmware tuning (/boot/firmware/config.txt)

boot_delay=0            # remove the default bootloader pause
camera_auto_detect=0    # skip CSI camera probe if you have no camera
display_auto_detect=0   # skip if you have a fixed/known display setup

Step 6 — Remove the initramfs (advanced, big win, has a safety check)

Loading an ~12 MB initramfs off a slow SD card every boot is pure overhead if the kernel already has the storage + filesystem drivers built in. Check first:

grep -iE 'mmc_block|bcm2835|ext4' /lib/modules/$(uname -r)/modules.builtin

If your storage driver (SD = bcm2835-mmc) and ext4 appear there, you can usually drop the initramfs. In /boot/firmware/config.txt:

auto_initramfs=0

⚠️ Risk: if the kernel is actually missing a needed driver, the Pi won't boot and you'll need to edit config.txt from the SD card on another computer. Only do this if you have physical access. Leave a recovery note on the FAT partition:

echo "If no boot: set auto_initramfs=1 in config.txt" | \
  sudo tee /boot/firmware/RECOVERY-README.txt

Step 7 — Reboot and re-measure

sudo systemctl reboot
# after it comes back:
systemd-analyze
systemd-analyze critical-chain

Compare against your blame-before.txt. Repeat: the new critical chain shows the next bottleneck.


What you usually CAN'T easily fix

  • Firmware/bootloader time before Linux starts — mostly reading the kernel off the SD card. Biggest real fix: a faster SD card (A2/UHS) or booting from USB SSD / NVMe.
  • SD-card device enumeration (dev-mmcblkXpY.device taking seconds) — hardware.
  • NetworkManager startup + DHCP — you can trim it by not auto-connecting extra interfaces (e.g. disable WiFi autoconnect if you're on Ethernet):
    sudo nmcli connection modify <wifi-name> connection.autoconnect no

Golden rules recap

  1. Measure first, measure after. systemd-analyze critical-chain is truth.
  2. Cut the critical path, not just anything slow.
  3. One category of change per reboot so you know what helped (or broke).
  4. Keep backups & a recovery note, especially for firmware/initramfs changes.
  5. Prefer systemctl disable (reversible) over deleting/masking files.
  6. Don't add quiet if you like seeing boot messages — it saves almost nothing.

Quick reference: undo everything

# re-enable a service
sudo systemctl enable --now <service>

# restore firmware config
sudo cp /boot/firmware/config.txt.bak-speedup  /boot/firmware/config.txt
sudo cp /boot/firmware/cmdline.txt.bak-speedup /boot/firmware/cmdline.txt
sudo cp /etc/fstab.bak-speedup /etc/fstab

# remove a drop-in override
sudo rm -r /etc/systemd/system/<unit>.service.d/ && sudo systemctl daemon-reload
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment