I Tried “Disable All Devices” on Linux for Faster Boot. Here’s What Actually Worked.

You know what? I wanted a rocket-booting laptop. No splash screen. No wait. Coffee still warm when the desktop shows up.
If you’d like to see the step-by-step diary of this exact experiment, I published the blow-by-blow right here.

So I went a little wild: I tried turning off almost every extra device I don’t use at boot. Some wins were real. Some breaks were funny. Some… not worth it. Let me explain.

My setup (and why I cared)

I run Linux on a few boxes for work and home:

  • ThinkPad T480, Ubuntu 22.04 LTS, NVMe SSD
  • Dell XPS 13 (9300), Fedora 40
  • Intel NUC (headless server), Arch Linux
  • Raspberry Pi 4, Raspberry Pi OS (Bookworm)

I boot a lot. I also fix other people’s laptops. So shaving seconds helps. It sounds silly, but when you reboot six times during a kernel change, it adds up.
If you're curious how different distros stack up in day-to-day use (including boot times), drop by Desktop Linux Reviews for some candid benchmarks.

First rule: measure first

I always start with this:

It shows total boot time and which services drag. It’s not fancy. But it tells the truth. If you’d like to see how researchers have modeled and quantified startup latency at a deeper level, take a look at this academic study.

On my ThinkPad, first run looked like this:

  • 3.8s firmware
  • 2.1s loader
  • 7.2s kernel
  • 6.1s userspace
  • Total: 19.4s to a login screen

Not bad. Not great. I wanted under 10.

What I turned off (and what broke)

Here’s the idea: if a device isn't needed at boot, don't load it. Fewer modules. Fewer daemons. Less fuss for udev.
If you’re unsure what actually counts as a “device” in Linux terms, check out my hands-on explainer where I map the jargon to real hardware.

What I disabled on each box, in plain words:

  • Bluetooth (btusb, bluetooth, and bluetooth.service)
  • Thunderbolt (thunderbolt module and bolt.service)
  • Modem stuff I don’t use (ModemManager.service)
  • Printer things (cups.service)
  • Webcam (uvcvideo)
  • Fingerprint reader (depends on hardware; I had goodix on one)
  • Wi-Fi on the wired-only desktop (iwlwifi on the NUC)
  • “Wait online” during boot (NetworkManager-wait-online.service)
  • On the server: graphics stack and graphical target

What broke when I pushed too far:

  • I blacklisted USB once. My keyboard died at the login screen. Funny for one second. Then I had to reboot with a live USB.
  • I killed the audio module (snd_hda_intel). Great for boot time. Bad for Zoom.
  • I masked NetworkManager itself by mistake. No network. Oops.
  • On Fedora, I trimmed initramfs too hard. LUKS unlock got stuck. I had to rebuild with dracut.

That’s the thing. “Disable all devices” sounds bold, but you still need the basics: disk, GPU (if you use a display), keyboard, network (if you need it), and crypto bits.

Real numbers from my machines

These are my actual notes from a week of tinkering.

ThinkPad T480 (Ubuntu 22.04, kernel 6.5, NVMe)

  • Before: 19.4s total
  • After disabling bluetooth, thunderbolt, cups, ModemManager, and masking “wait-online,” plus blacklisting uvcvideo:
    • 3.8s firmware, 1.6s loader, 5.1s kernel, 2.3s userspace
    • Total: 12.8s
  • After trimming initramfs and removing Plymouth:
    • 3.8s firmware, 1.2s loader, 4.2s kernel, 1.9s userspace
    • Total: 11.1s
  • Best run (no BT, no TB, no webcam, no printer, fast initramfs): 10.3s

Dell XPS 13 (9300, Fedora 40, SSD)

  • Before: 14.8s to GDM
  • After cutting bluetooth, thunderbolt, cups, ModemManager, and masking “wait-online”:
    • 8.9s to GDM
  • Any more cuts? Audio and camera made meetings painful, so I rolled those back.

Intel NUC (Arch, headless)

  • Before: 13.2s to multi-user.target
  • After: blacklisted GPU, disabled NetworkManager-wait-online, no graphical target, lean initramfs:
    • 4.8s to multi-user.target
  • This one felt snappy. It just pops up on ping.

Raspberry Pi 4 (Raspberry Pi OS, SD card)

  • Before: 31s
  • After disabling Wi-Fi and BT with overlays, and masking cups and bluetooth:
    • 22–24s
  • SD cards are slow. Still, that was a good cut.

Old HP with a spinning disk (Debian)

  • Before: 42s
  • After all safe trims:
    • 35s
  • The disk is the boss here. You won’t beat physics.

Speaking of aging workhorses and the surprising pep they can still muster, you might get a laugh from seeing how “vintage” performs outside the realm of silicon—check out these lively grannies looking for local fun where you’ll discover that experience and enthusiasm can keep things exciting well past their prime, offering a playful reminder that speed and energy aren’t just for the young.

Quick how-to: what I actually did

Please back up first. Keep a USB stick close. I learned the hard way.

Step 1: Kill slow services

  • Disable what you don’t use:
    • sudo systemctl disable –now bluetooth.service
    • sudo systemctl disable –now cups.service
    • sudo systemctl disable –now ModemManager.service
    • sudo systemctl mask NetworkManager-wait-online.service
  • Check:
    • systemd-analyze blame
    • systemctl –failed

Step 2: Blacklist unused modules

  • Make a file: /etc/modprobe.d/blacklist-local.conf
  • Add lines like:
    • blacklist btusb
    • blacklist bluetooth
    • blacklist thunderbolt
    • blacklist uvcvideo
    • blacklist iwlwifi (only if you don’t need Wi-Fi)
    • blacklist snd_hda_intel (only if you don’t need sound)
  • Rebuild initramfs:
    • Ubuntu/Debian: sudo update-initramfs -u
    • Fedora/RHEL: sudo dracut –force
    • Arch: sudo mkinitcpio -P

Step 3: Trim the initramfs

  • Keep only what you need. On Debian/Ubuntu, set MODULES=dep in /etc/initramfs-tools/initramfs.conf, then update-initramfs -u.
  • On Fedora/Arch, set dracut or mkinitcpio hooks to the lean set. Don’t remove crypt or filesystems you need.

Step 4: Make the boot loader fast

  • GRUB: shorten timeout in /etc/default/grub (GRUB_TIMEOUT=1), then:
    • Ubuntu/Debian: sudo update-grub
    • Fedora: sudo grub2-mkconfig -o /boot/grub2/grub.cfg
  • If safe for you, remove the splash theme.

Step 5: Firmware switches (if you can)

  • In BIOS/UEFI, turn off Thunderbolt, modem, and wake features you never use. This shaved a second on my ThinkPad.

Step 6: Test one change at a time

  • Reboot. Run systemd-analyze again. Keep notes.

What felt worth it (most of the time)

  • Mask “wait-online.” For laptops, it’s dead weight.
  • Turn off Bluetooth if you don’t use it. Saves a bit, and cleans logs.
  • Trim initramfs. Small image, faster load.
  • Kill printer stuff. I print once a year. I can start cups later.
  • On servers, skip graphics. Boot to multi-user.target. It’s fast.

For more day-to-day tweaks that don’t involve kernel surgery, skim through my real-world Linux tips and tricks—it’s a grab-bag of the habits I keep and the hacks I avoid.

What I wouldn’t kill again

  • USB core. I lost my keyboard. Don’t laugh.
  • Audio on my daily laptop. Meetings need sound.
  • Wi-Fi on the go. Toggling modules back and forth got old.
  • Anything storage or crypto. If your root is encrypted, keep those hooks.