Skip Navigation

What's the best way to create dedicated devices with Linux?

Let's say I want to build a GPS module for my car, which is only a GPS, doesn't hold anything else. Or a recipe tablet for my kitchen which only hold a recipe app.

Is this kind of purposes common? What would be the best way to do this kind of stuff? How do I choose the hardware? How do I "lockdown" certain aspects I don't need about software?

These kind of devices could be convenient because, by only holding what's needed, they would use less resources, they would be completely distraction free and they would be suitable to be used by non tech savy user which would need to use only one or two programs without messing with the system in any way.

I know KDE ha some kind of multi app kiosk settings, GNOME also can achieve something similar tho it's more confusing.. There are some kiosk distros which only give you a browser. But I don't see anything that can be set up, customized, and locked like that.

But would that be the best way of achieving something like that? I mean to use a GPS I don't need a terminal, nor video codecs, nor a browser.. Maybe I can add the possibility to send Osmand google maps links.. Or I can decide to make it hold Spotify too to make it a radio as well.. But a full distro would be wasted!

But how do I prevent every other use except the intended ones? Is there an easy way to achieve a "one purpose device" using Linux? Should I simply use whichever distro I like and uninstall everything which is not needed (I see use case for arch)?

I feel like we have the total freedom of Linux distros on one side, and companies using managed devices on the other by setting complicated policies, but I don't know any options in between!

Maybe the focus here is the desktop environment more than distros! Are there desktop environment purposed to give the user a set of limited apps, or a single app (which isn't only a browser)?

18 comments
  • It's hard to give concrete advice without knowing the specs or the software you want to run on this, but for tiny Linux systems there's Buildroot so you can compile just the bare minimum you need and not use a distro at all (unless you could Buildroot as a distro). This is what OpenWRT uses to build all the router firmwares among other things.

    For something that would go in a car that seems pretty ideal to me. Skip initializing things you won't use, make something that boots to GUI in 3 seconds. When you want to update the software you flash it as a new firmware image, no on-device installing or anything.

    Depending on what you run, ideally you'd skip Xorg/Wayland and use the framebuffer directly. But if you need to run a more standard environment, that's what things like Cage are designed for. Single app, always full screen. It's called a kiosk environment.

  • Sidenote, maybe some of your applications do not need a Linux computer but a microcontroller like an Arduino or a ESP32 is sufficient.

  • Dietpi user here. I've got a orange pi zero 3 w/ 1GiB of ram serving me nextdns under docker + playing a live stream 24/7 (via yt-dlp/ffplay) and it does its job just nicely.

  • @dontblink I'd think #NixOS would be ideal for this task. As for hardware, any of the SBCs listed on their ARM page should do.

    • @eshep Make sure to use the official wiki at https://wiki.nixos.org/wiki/NixOS/_on/_ARM @dontblink

    • I thought about Nix, it is indeed cool to declaratively install stuff and it would indeed be very helpful to set system settings all from one file so that you control everything there, but I don't think that's what I need, I think I'd need a more focused desktop environment maybe?

      Kiosk environments could be a solution, because once the UI is limited, you can install software in any way you like and from any distro really, I think the focus is to keep it minimal under the hoods and very simple on the surface!

  • Small tangent, I didn't have the energy to read your whole post, so you might have addressed that. But often it's cheaper to go with an established multi purpose device instead of building something new.

    I used to build and sell Raspberry Pi gaming handhelds that were as cheap as possible and literally just held together by some string. My purpose was to get enough money through the sales to be able to build one for myself. Sure, the building process was fun. But when I crunched the numbers just buying a cheap smartphone and controller was much cheaper and more performant and versatile than the self-built solution.

    Just buying a cheap phone or tablet is often the cheaper solution.

    Heck, even Valve just bought off the shelve tablet displays and turned the image in software for the Steam Deck.

18 comments