1Özellikler
- 181 MB kullanılabilir RAM ve 256 MB SPI NAND ile Rockchip RV1106G3 (Cortex-A7, 1,2 GHz)
- Her cihaz için DNS seviyesinde ~600.000 kurallık filtreleme, DoH sunucuları paralel sorgulanıyor
- Ağın DHCP'sini kendisi dağıtıyor; her istemci onu kendiliğinden çözümleyici olarak alıyor
- Standart kütüphaneyle yazılmış mDNS yanıtlayıcı sayesinde hangi alt ağda olursa olsun pure.local ile bulunuyor
- İlk açılışta bilmediği bir alt ağa yerleşiyor, ağ geçidi susarsa eski yapılandırmaya dönüyor
- Gerçek HTTP sağlık kontrolüne bakan watchdog: önce servisi yeniden başlatıyor, DNS inatla düşükse sistemi
- Flash ömrünü gözetiyor: ham ölçümler RAM'de kalıyor, diske saatlik özet yazılıyor
- Fabrika imajı sertleştirildi — telnet, Samba ve adb kapalı, SSH yalnızca anahtarla
2Teknik özellikler
- Kart
- Luckfox Pico Max
- Yonga
- RV1106G3 · Cortex-A7
- RAM
- 181 MB kullanılabilir
- Depolama
- 256 MB SPI NAND · UBIFS
- İşletim sistemi
- Buildroot 2023.02 · Linux 5.10
- Filtre kuralı
- ~600.000
- Servisler
- 5, açılışta başlıyor
- Besleme
- USB-C
3Şekil 1 — Modemin üzerinde

4Cihaz paneli




5Açıklama
PURE, ev modeminin yanında duruyor ve ağdaki her DNS sorgusunu yanıtlıyor: reklam ve izleyici alan adları bir yere varmıyor, geri kalan her şey normal çözümleniyor. Donanım bir Luckfox Pico Max — 181 MB kullanılabilir RAM ve 256 MB SPI NAND'lı Rockchip RV1106G3 Cortex-A7 — üzerinde Buildroot Linux çalışıyor; çözümleyici armv7 için tek statik Go ikilisi olarak derlendiği için tüm sistem microSD'ye gerek kalmadan NAND'a sığıyor.
İşin büyük kısmı, bir geliştirme imajını ürün gibi davranmaya ikna etmekti. Hazır imaj boş bir sertifika deposuyla geliyordu; bu yüzden şifreli üst sunucular sessizce başarısız olurken servis sağlıklı görünüyordu. Bir açılış betiği statik adresi DHCP kirasıyla eziyordu, bir yarış durumu kartı varsayılan rotasız bırakıyordu ve /root dizininin sahipliği sshd'nin anahtarları reddetmesine yol açıyordu. Her biri her cihazda elle değil imajda düzeltildi ve init zinciri, kutunun hiç görmediği bir ağda kendi yerini bulabileceği şekilde genişletildi.
Her şey donanıma göre ölçüldü. Beş servis RAM'i paylaşıyor; kesinti kaydı, hız testleri, yeni cihaz uyarıları ve Telegram bildirimleri beş ayrı süreç yerine tek Python sürecinde tek zamanlayıcı döngüsünde çalışıyor. Kart 7/24 flash üzerinde çalıştığı için ham veri RAM'de kalıyor. Çekirdeğin desteklemediği özellikler — NAT, VPN, paket filtreleme — vaat edilmek yerine ölçülüp kapsam dışı bırakıldı.
Üretim, altın NAND imajı etrafında birim başına bir süreç olarak yazılı: yaz, doğrula, geliştirme araçlarını temizle, müşteri kendi şifresini kursun diye kurulum sihirbazına döndür ve seri numarasıyla çıkış kontrol listesini imzala.
6Açılış sırası
- [ OK ]S35pureagyalnızca ilk açılışta: cihaz müşterinin alt ağına yerleşsin diye DHCP kirası alır
- [ OK ]S40networketh0'ı kayıtlı statik adresle ayağa kaldırır
- [ OK ]S45pureagağ geçidi yok + başka alt ağdan DHCP cevabı → oraya taşın ve kaydet
- [ OK ]S46pureilkayarkurulum sihirbazından sonra: filtreleri, DoH sunucularını ve DHCP'yi uygular
- [ OK ]S99adguardhomeçözümleyiciyi başlatır; varsayılan rotayı eklemeden önce LOWER_UP'ı bekler
- [ OK ]S99puremdnspure.local'i duyurur — A kaydı, cache-flush biti, 120 sn TTL
- [ OK ]S99puremonitorkesinti kaydı, saatlik hız testi ve yeni cihaz uyarıları tek süreçte
- [ OK ]S99purepanelçözümleyicinin girişinin arkasındaki web paneli
- [ OK ]S99purewatchdogHTTP sağlık kontrolü: önce yeniden başlat, yalnızca DNS için sistemi yeniden başlat
7Kaynak kullanımı
- Çözümleyici
- 87 MB
- Web paneli
- 12.4 MB
- İzleyici
- 10.8 MB
- mDNS
- 5.8 MB
- Watchdog
- <1 MB
- Çekirdek, önbellek ve boş
- 64 MB
Beş servis çalışırken ölçülen bellek. Çözümleyici yoğun taramadan sonra ~117 MB'a çıkıyor; yük altında yaklaşık 45 MB boşta kalıyor.