definitely sometimes No images? Click here ![]() I made another video for the Elixir conference we are making. On the right here. It is something. Call for Proposals is Open! We want submissions for both Goatmire Elixir (anything Elixir-related) and NervesConf EU (Nerves and embedded Elixir). This is going to be a very friendly place to give your first talk. Apply, we want to see your proposal :) The waiting list is overflowing with people interested in the conference. Get on there if you haven't already. Will be announcing pricing quite soon. The only official Elixir and Nerves swag is available for pre-order/order at oswag.org. Now shipping with stickers :) Nobody ever got fired for apt-get upgradeTo preface. I love Debian. I cut my teeth on Slackware when I started Linux. It sounded the coolest so that's what I grabbed. When I finally tried Debian it was a revolution. apt was way ahead of it's time as a tool. I still run a Debian-derivative as a desktop OS. I'll still definitely put it on a pet server. Debian is also one of the singular great projects of Open Source and Free Software. I adore it. You should not be shipping a Debian on your embedded device. You can prototype with it. You can use the BSP (Board Support Package) if it comes with an OS like that to try things. Shove Elixir on there and go to town. There is a reason why there are dedicated embedded OS:es though. Reliability is the primary one. My Linux servers do tend to stay up running Debian but the entire cloud industry is looking at ways to run immutable OS:es and there are good reasons for that. Knowing what's on the machine at every update is incredibly practical. For embedded devices there are so many things that can go wrong in the relationship to the physical world that you want to eliminate as many other potential faults as possible. We don't want to log to disk. We don't want the root filesystem to be changeable. We don't want to wear on the flash storage. We don't want the risk of filling up a filesystem. This is why people do Buildroot or Yocto instead of a Debian. They are much more capable of running a readonly filesystem and more carefully defining what goes into the system. Buildroot is very explicit about what goes in. Yocto is more abstracted. Nerves favors Buildroot and goes the explicit route. You don't have to maintain a general Linux system and update a ton of components. You ship very few components and you maintain those. You get to know the ins and outs of your system. Your application code can be sure about what the underlying OS-level system provides And since the OS is small it is very feasible to keep two of them on device (or more if you like). When an update comes in we write it to the other partition. We reboot to that partition and we can automatically revert if the device doesn't come up clean. How do we undo an "apt-get update && apt-get upgrade"? I've rarely bricked a Debian server but I have really messed a few up. It is not as clean as Nerves.Runtime.FwupOps.revert(). Definitely not. You can lock down a Debian to reduce these risks, definitely. But you'll struggle to get to best practices. On the other hand, definitely learn to use Debian. It is an awesome Linux OS. Just don't put it on a Raspberry Pi and call it done as an industrial product. Okay? No shade on all the hundreds, possibly thousands of people who have done this, we are all learning. I would have done the same at one point. What have you shipped that made you cringe later? Let me know on the Fediverse where I'm @lawik@fosstodon.org or by responding to this email to lars@underjord.io. Thank you for reading. I appreciate you. |