![fwlnx](https://gitlab.com/fwlnx/fwlnx/-/raw/master/fwlnx.png) # fwlnx Firewall Linux - A small and simple Busybox/Linux Firewall Distribution It combines an optimized Linux Kernel, Busybox and a simple Webinterface and API to configure. It is not meant to be a replacement to far superiour Appliances but as an alternative solution for typical home use. ## Target platforms - QEMU/KVM - [PCEngines APU2](https://www.pcengines.ch/apu2.htm) ## Planned initial features - Firewall - [ ] NAT - [ ] Rules - [ ] UPnP - [ ] DynDNS - VPN - [ ] OpenVPN - [ ] Wireguard - [ ] NTP - [ ] DHCP - [ ] DNS - [ ] Auto config backup - [ ] Cron/Timers ## Design ### Partitioning MBR/BIOS: ``` /dev/disk: /dev/disk1 ext4 /boot /dev/disk2 swap [SWAP] /dev/disk3 btrfs@home /home /dev/disk3 btrfs@root-2021-04-01 / /dev/disk3 btrfs@root-2021-04-20 / /dev/disk3 btrfs@conf-2021-04-01 /config /dev/disk3 btrfs@conf-2021-04-20 /config ``` - Every installed release has it's own subvolume for rootfs and config in case a configuration changes with an update - The user can choose which one to boot into ### Update flow State before the update: - boot entry `last` is set to version 1 (last known working version) - boot entry `current` is also set to version 1 - on every boot the default boot entry is set to `last` automatically in early boot Update process: - a new version is downloaded as a btrfs snapshot and put into place as version 2 - `current` boot entry is modified to boot the new version - `current` is set as default boot entry - device reboots into new version 2 via `current` boot entry - early boot sets `last` as default boot entry - after successful boot: - the user marks the system as functional which sets the `last` boot entry to the current version - if something goes wrong: - the system reboots, now with the `last` entry being the default booting into the last known working system - the user gets displayed an error because `last` and `current` is not the pointing to the same version and `last` is booted indicating an error --- Made with ❤️ and 🪄✨. Icon partly from [stockio](https://www.stockio.com/free-icon/nature-icons-penguin)