Este projeto descreve a arquitetura, decisões técnicas e passos iniciais para a construção de um Thin Client Linux moderno, focado em baixo consumo, boot rápido, alta segurança e execução de aplicações via containers, utilizando Limine Bootloader, Openbox, Docker e LXC.
Construir um thin client capaz de:
- Inicializar rapidamente (boot mínimo)
- Operar com sistema imutável (read-only + overlay)
- Executar aplicações remotas e locais isoladas
- Utilizar containers para facilitar manutenção e atualização
- Servir como base para ambientes corporativos ou industriais
- Limine Bootloader (UEFI / BIOS)
- Kernel Linux customizado
- Initramfs com Dracut ou mkinitcpio
- Debian minimal / Alpine Linux / Buildroot
- systemd ou OpenRC
- OverlayFS (opcional)
- Xorg
- Openbox (window manager)
- tint2 / polybar (opcional)
- rofi / dmenu (launcher)
- Docker → aplicações isoladas
- LXC / LXD → ambientes persistentes
- RDP (FreeRDP)
- VNC
- SPICE
- Chromium em modo kiosk (WebRTC / apps web)
UEFI / BIOS
↓
Limine Bootloader
↓
Linux Kernel
↓
initramfs
↓
Sistema Linux Minimal (read-only)
↓
Openbox
↓
Docker / LXC
↓
Aplicações Remotas
O Limine Bootloader foi escolhido em substituição ao GRUB por ser:
- Extremamente rápido
- Simples de configurar
- Ideal para sistemas imutáveis
- Compatível com UEFI e BIOS
- Melhor para kernels customizados
| Característica | GRUB | Limine |
|---|---|---|
| Complexidade | Alta | Baixa |
| Velocidade | Média | Alta |
| Scripts | Sim | Não |
| Thin Client | ❌ | ✅ |
/dev/sda
├─ sda1 EFI System Partition (FAT32)
│ └─ /EFI/limine/
│ ├─ limine-uefi-x86_64.efi
│ └─ limine.cfg
└─ sda2 Root filesystem (ext4 / squashfs)
git clone https://github.com/limine-bootloader/limine.git
cd limine
makemkdir -p /boot/EFI/limine
cp limine-uefi-x86_64.efi /boot/EFI/limine/Criar entrada UEFI:
efibootmgr \
--create \
--disk /dev/sda \
--part 1 \
--loader '\\EFI\\limine\\limine-uefi-x86_64.efi' \
--label 'Limine ThinClient'TIMEOUT=3
DEFAULT_ENTRY=ThinClient
:ThinClient
PROTOCOL=linux
KERNEL_PATH=boot:///vmlinuz-linux
INITRD_PATH=boot:///initramfs-linux.img
CMDLINE=root=/dev/sda2 ro quiet loglevel=3quiet loglevel=3→ boot silenciosomitigations=off→ boot mais rápido (avaliar segurança)net.ifnames=0→ interfaces previsíveis
Recomendado para thin clients:
- Root filesystem read-only
- OverlayFS em tmpfs
Exemplo de kernel cmdline:
CMDLINE=root=/dev/sda2 ro overlayroot=tmpfs~/.config/openbox/
├── autostart
├── menu.xml
├── rc.xml
└── environment
#!/bin/sh
setxkbmap br
# Painel
tint2 &
# Launcher principal
/usr/local/bin/thin-launcher &Execução de apps isolados utilizando X11 do host:
docker run -d \
--name rdp-client \
--net=host \
-e DISPLAY=$DISPLAY \
-v /tmp/.X11-unix:/tmp/.X11-unix \
rdp-client-imageVantagens:
- Atualização simples
- Rollback fácil
- Host limpo
Ideal para sessões completas:
- Firefox + LibreOffice
- Usuários dedicados
Exemplo:
lxc launch images:debian/12 thin-user1chromium \
--kiosk \
--no-first-run \
--disable-infobars \
https://app.remoto.localPode rodar:
- Diretamente no host
- Dentro de Docker
- Sistema read-only
- Containers sem privilégios
- Firewall no host
- Autologin sem shell
- Secure Boot (opcional)
- Pull automático de imagens Docker
- Configuração versionada em Git
- Reset por reboot
- Linux minimal
- Limine funcional
- Openbox + autologin
- Docker
- RDP / VNC / Web
- Menu gráfico
- Seleção de servidor
- Autoconfig por MAC
- WireGuard
- USB-over-IP
- PXE Boot
- Criar ISO bootável com Limine
- Kernel minimal custom
- PXE boot
- CI para build automático
Status: Em desenvolvimento 🚧