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)?
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.
Second buildroot as the way to go. This is what I use to build systems for single application touchscreen HMIs. It’s dead simple too, unless you’re messing with a custom kernel config and/ or using obscure hardware without ready made device tree blobs.
@dontblink @Max_P I retract my “ideal” statement; this is the way to do it.
NixOS isn’t a bad option, I’m not sure how much you can trim it down but I’d expect it to be possible to express in Nix to install to a target that’s different from the host. Maybe not NixOS but Nix itself as a package/config manager. I’m sure at minimum it makes for a great development environment for building a buildroot.