# 03 — Ubuntu Baseline > Kısa özet: Saha PC'lerinin standart zemini: Ubuntu Server 26.04.1+ LTS minimal kurulum, GNOME masaüstü (saha standardı; XFCE yalnız LAB A/B ölçüm kolu, K-23), terminale boot edilir, `unattended-upgrades` kapalıdır. BIOS güç-kurtarma ayarı, GUI aç/kapa anahtarları ve RDP'nin her-zaman-hazır ayrımı (K-22) bu dosyadadır. - Dosya: `docs/03-UBUNTU-BASELINE.md` - İlgili kararlar: `24-DECISION-LOG.md#K-01` (OS/sürüm), `K-02` (GNOME saha standardı), `K-03` (boot + bf-gui), `K-11` (otomatik update kapalı), `K-22` (RDP her zaman hazır), `K-23` (GNOME vs XFCE LAB A/B ölçümü) - Durum: [ ] Taslak --- ## 1. Amaç Her saha PC'sinin aynı minimal zeminden başlamasını garanti etmek: hangi ISO, hangi masaüstü, hangi boot hedefi, hangi servisler açık/kapalı. Bu zemin 04'teki imajın ve 05'teki kurucunun varsayımıdır. ## 2. Kapsam - Kapsam içi: ISO seçimi, BIOS güç-kurtarma ayarı, boot hedefi (multi-user), GUI katmanı (GNOME + xRDP + `bf-gui-*`), `unattended-upgrades` kapatma, açılışta koşan servis listesi. - Kapsam dışı: imaj üretim yöntemi (04), kurucu modül detayları (05), WireGuard/SSH sertleştirme (06/08/11). ## 3. Kararlar ```text KARAR: Saha standardı Ubuntu Server 26.04.1+ LTS'tir (GUI'siz minimal kurulum; GNOME sonradan eklenir). GEREKÇE: 26.04.1 LTS resmi indirme sayfasında yayında (kod adı Resolute Raccoon); Server ISO'su varsayılan olarak GUI kurmaz, minimal zemin + ihtiyaca göre GUI standart yoldur. Noktasürüm (.1+) baz alınır çünkü ilk .0 dalgasındaki kurulumcu hataları genelde .1'de toplanır. ALTERNATİF: Ubuntu 24.04 LTS — 26.04 doğrulanamasaydı yedekti; doğrulandığı için yedekte bekler. Ubuntu Desktop 26.04 (6 GB RAM şartı) saha bütçesini zorladığı için elendi. RİSK: 26.04.x noktasürümlerinde donanım sürücü farkı; azaltma: golden image LAB(2)'de her saha donanım profilinde test edilir. MALİYET: Ücretsiz. LİSANS: Ubuntu LTS ücretsiz (ESM kapsamına bel bağlanmaz) — https://releases.ubuntu.com/ (26.04.1, doğrulanma: 2026-09-15) + https://ubuntu.com/download/desktop (sistem gereksinimi, doğrulanma: 2026-09-15). ``` ```text KARAR: Saha masaüstü ortamı GNOME'dur (Ubuntu Desktop standardı) ve bu karar yürürlüktedir. XFCE saha standardı DEĞİLDİR: elenmiş sayılmaz, K-23 uyarınca LAB'da GNOME vs XFCE A/B ölçümünde karşılaştırma koludur ve karar ölçüm verisiyle revize edilebilir. GEREKÇE: Kullanıcı kararı + Ubuntu Desktop standardı: tanıdık modern masaüstü, teknisyen akışıyla birebir uyum. RDP oturumu + headless RustDesk + düşük RAM'li mini PC koşulları ölçülmeden "tek doğru masaüstü" iddiası kanıtsız kalır; bu yüzden GNOME baseline olarak sabit tutulur, XFCE yalnız LAB ölçüm koluna alınır (ölçüm seti: RAM, CPU, boot süresi, RDP güvenilirliği, RustDesk reboot sonrası davranış, login screen erişimi, dummy display, 24/72 saat stabilite). Ölçüm seti ve 24/72 saat süreleri sabittir; XFCE kolu saha medyasına girmez. RustDesk headless ZORUNLU şartı her iki kolda da aynen korunur. ALTERNATİF: XFCE — hafif ve düşük kaynak tüketimine rağmen saha standardı değildir (K-02); K-23 uyarınca LAB yedek/karşılaştırma koludur, revizyon yalnız ölçüm verisiyle yapılır. XFCE'yi doğrudan saha standardı yapmak kullanıcı kararı dışı ve kanıtsız olduğu için reddedildi; XFCE'yi tamamen kapatmak da ölçüm şansını yok ettiği için reddedildi. RİSK: xRDP+GNOME kombinasyonu ek ayar isteyebilir (uyarı: GNOME oturumu RDP'de ek yapılandırma gerektirebilir); azaltma: 13-MEG-LINUX-ACCEPTANCE testi GNOME üzerinde koşar, `bf-gui-*` LAB'da 26.04.1 imajında doğrulanmadan dondurulmaz. A/B ölçümü ek LAB zamanı ve iki masaüstü bakım yükü getirir; azaltma: ölçüm seti/süreleri sabit ve sonuç tek tabloda LAB release kaydına bağlıdır. MALİYET: Ücretsiz. LİSANS: GNOME (GPL/LGPL bileşenler), ücretsiz — https://www.gnome.org/ (doğrulanma: 2026-09-15; yeniden doğrulama: 2026-09-16, HTTP 200); XFCE GPL — https://xfce.org/ (doğrulama: 2026-09-16, HTTP 200; yalnız LAB A/B ölçüm adayıdır, saha standardı değildir). ``` > **Güncelleme (2026-09-16, K-23):** Yukarıdaki "XFCE elendi / yedekte tutulmaz" ifadesi geçersizdir. Doğru ifade: **GNOME seçildi ve saha standardı olarak kalır; XFCE LAB A/B ölçümünde karşılaştırılır.** Ölçüm verisi gelmeden revizyon yapılmaz; revizyon 24-DECISION-LOG PR'ı ile işlenir. Ayrıntı: `24-DECISION-LOG.md#K-23`. ```text KARAR: Cihazlar terminale (multi-user) boot eder. `xrdp` + `xrdp-sesman` multi-user seviyesinde HER ZAMAN enable ve active kalır (RDP kanalı `bf-gui-on` beklemez); `bf-gui-on` / `bf-gui-off` yalnız YEREL FİZİKSEL grafik katmanını (display-manager: gdm3/gdm/sddm/lightdm + default target) systemd üzerinden açar/kapatır. GUI kapalı ≠ RDP kapalı. GEREKÇE: xRDP mimarisi oturum yöneticisi (sesman) + systemd servis birimleri (`xrdp`, `xrdp-sesman`) üzerine kuruludur. xRDP'nin servis seviyesinde sürekli hazır olması, yerel GUI kapalı saha cihazında uzaktan grafik kurtarma kanalını korur (sahaya gitme oranını düşürür); `bf-gui-*` yalnız gereksiz yerel grafik katmanını yönetir. Varsayılan kapalı yerel GUI = düşük RAM, düşük saldırı yüzeyi, öngörülebilir boot. ALTERNATİF: RDP'yi `bf-gui-on`'a bağlamak — GUI kapalıyken uzaktan grafik kurtarma kaybolur → reddedildi; her zaman grafik boot — kaynak israfı ve 700 cihazda gereksiz hata yüzeyi nedeniyle elendi. RİSK: Kesin birim adları ve GNOME oturum başlatma satırı 26.04.1'e göre değişebilir; azaltma: LAB'da 26.04.1 imajında doğrulanmadan `bf-gui-*` dondurulmaz. `bf-gui-off` içinde xRDP'i durduran bir satır bulunursa bu sözleşme ihlalidir (`tests/check-specs.sh` bunu zorunlu tutar). MALİYET: Ücretsiz. LİSANS: xRDP Apache-2.0, ücretsiz — https://github.com/neutrinolabs/xrdp (v0.10.6.1, 2026-07-07; doğrulanma: 2026-09-15; yeniden doğrulama: 2026-09-16, HTTP 200). ``` > **Güncelleme (2026-09-16, K-22):** Bu bloktaki "GUI, display-manager + xRDP servisleri üzerinden yönetilir" ifadesi K-22 ile kesinleştirilmiştir: **`xrdp`/`xrdp-sesman` her zaman enable+active; `bf-gui-on`/`bf-gui-off` yalnız yerel fiziksel GUI'yi (display-manager + default target) yönetir; `bf-gui-off` xRDP servislerini asla durdurmaz veya disable etmez.** Ayrıntı ve kod kanıtı: `24-DECISION-LOG.md#K-22`. ```text KARAR: Golden image'da `unattended-upgrades` kapatılır (`/etc/apt/apt.conf.d/20auto-upgrades` değerleri `0` + `apt-daily*.timer` maskeleme). GEREKÇE: `unattended-upgrades` Ubuntu Server'da varsayılan kurulu ve etkindir, günde bir kez çalışır; kapatılmazsa 700 cihaz ilk açılışta güncellemeye kalkar ("onaysız update yasak" ilkesi delinir). ALTERNATİF: Otomatik security update'e izin verme — eşzamanlı indirme + onaysız değişim riski nedeniyle elendi. RİSK: Kapatma adımı imajda atlanırsa filo kendiliğinden güncellenir; azaltma: kurucu final-check + monitoring metriği. MALİYET: Ücretsiz. LİSANS: Yok (OS yapılandırması) — https://ubuntu.com/server/docs/how-to/software/automatic-updates/ (doğrulanma: 2026-09-15). ``` ## 4. Neden Bu Karar? Server minimal kurulum + sonradan GNOME (Ubuntu Desktop standardı, kullanıcı kararı; XFCE saha standardı değil, yalnız K-23 LAB A/B ölçüm kolu). Terminale boot, 700 cihazın varsayılan durumunu en öngörülebilir hale getirir; yerel grafik yalnızca bakım penceresinde açılır — uzaktan grafik erişim (xRDP) ise her zaman hazırdır (K-22), yani "yerel GUI kapalı" bir erişim kaybı değildir. Otomatik update'in kapatılması, update zincirinin (10-UPDATE) "onay olmadan değişim yok" ilkesinin teknik kilididir. ## 5. Alternatifler | Alternatif | Artı | Eksi | Sonuç | |---|---|---|---| | Ubuntu 24.04 LTS | Olgun donanım desteği | Daha kısa destek penceresi | Yedek | | Ubuntu Desktop 26.04 | Tek adımda GUI | 6 GB RAM şartı, şişkin zemin | Elendi | | XFCE | Hafif, düşük kaynak | Saha standardı değil (GNOME baseline, K-02); yalnız ölçüm kolu | LAB A/B ölçüm adayı (K-23) | | Yerel GUI her zaman açık | Teknisyen rahatlığı | Kaynak israfı, geniş hata yüzeyi (RDP'yi etkilemez) | Elendi | ## 6. Avantajlar - Minimal zemin = küçük imaj, hızlı kurulum, az saldırı yüzeyi. - Kapalı GUI varsayılanı = düşük RAM + öngörülebilir boot 700 cihazda çarpan etkisi yapar. - Kapalı otomatik update = filo sürüm determinizmi. ## 7. Dezavantajlar - GNOME oturum başlatma satırı ve display-manager birim adları 26.04.1'e göre LAB'da doğrulanmadan dondurulamaz. - Teknisyen **yerel fiziksel** ekran istediğinde ek komut (`bf-gui-on`) gerekir — runbook'a işlenir; uzaktan grafik (RDP) için bu komut gerekmez, xRDP her zaman hazırdır (K-22). ## 8. Riskler | Risk | Olasılık | Etki | Azaltma | |---|---|---|---| | 26.04.x sürücü farkı heterojen donanımda | Orta | Orta | LAB profil testi (04) | | `bf-gui-*` birim adları 26.04.1'de farklı | Orta | Düşük | LAB doğrulaması, §13 açık soru | | `unattended-upgrades` açık unutulur | Orta | Yüksek | final-check + monitoring metriği | | `bf-gui-off` yanlış yazılıp xRDP'i durdurur (uzaktan kurtarma kaybı) | Düşük | Yüksek | `tests/check-specs.sh` `systemctl stop/disable xrdp*` görürse testi düşürür; 08-rdp check'i active xrdp ister (K-22) | | GNOME/XFCE kararı kanıtsız revize edilir | Düşük | Orta | A/B ölçüm seti sabit; revizyon yalnız LAB verisiyle ve PR ile (K-23) | ## 9. Uygulama Planı 1. BIOS ayarı (her saha PC'sinde, elektrik kesintisi sonrası otomatik açılış için): - `Restore on AC Power Loss = Power On` (üretici menüsünde `After Power Loss: Power On` / `AC Recovery: Power On` adlarıyla da geçer; teknisyen imaj öncesi menüden doğrular). 2. V1 medya: TEK USB **Blueforce Field OS ISO** (`dist/Blueforce-Field-OS--amd64.iso`); ISO içinde autoinstall (kurulum motoru) + offline APT repo + firstboot bulunur ve kimliksiz zemin kurulur (`unattended-upgrades` kapalıdır). `interactive-sections: [storage]` korunur: kurulum katılımsız ilerler ama diski operatör seçer/onaylar, otomatik disk silme YOKTUR. Geri dönüş yolu her zaman sıcaktır: resmi upstream ISO + NoCloud seed USB (K-20). Medya üretimi ve doğrulaması 26'da, boot kabulü LAB'dadır. 3. Boot hedefi terminale sabitlenir: ```bash sudo systemctl set-default multi-user.target systemctl get-default # multi-user.target beklenir ``` 4. GNOME + xRDP katmanı kurulur (kurucu 05 üzerinden): ```bash sudo apt install -y ubuntu-desktop-minimal xrdp sudo systemctl enable xrdp xrdp-sesman # GNOME oturumu varsayılan yapılır (LAB'da 26.04.1'e göre doğrulanacak satır): echo "gnome-session" > ~/.xsession ``` 5. GUI aç/kapa anahtarları (kurucu tarafından `/usr/local/bin/` altına yazılır; **yalnız yerel fiziksel GUI**, K-22): ```bash sudo bf-gui-on # yalnız display-manager (yerel fiziksel oturum) başlatılır; RDP zaten hazırdır sudo bf-gui-off # yerel grafik katman durdurulur, cihaz terminale döner; xrdp/xrdp-sesman ACTIVE KALIR ``` 6. Otomatik update kapatılır: ```bash # /etc/apt/apt.conf.d/20auto-upgrades içinde her iki değer 0: # APT::Periodic::Update-Package-Lists "0"; # APT::Periodic::Unattended-Upgrade "0"; sudo systemctl mask apt-daily.timer apt-daily-upgrade.timer ``` 7. Açılışta koşması beklenen servisler (final-check bunları denetler): `NetworkManager` (veya `systemd-networkd`), `wg-quick@wg0`, `docker`, `xrdp`+`xrdp-sesman` (**her zaman enable/ready; yerel GNOME display-manager durumu bundan bağımsız**), `node_exporter`, RustDesk/MeshCentral agent, `bf-health-push.timer`. Ubuntu 26.04.1 GNOME+xRDP kesin oturum davranışı LAB ile doğrulanmalıdır. 8. GNOME vs XFCE A/B ölçümü (LAB, K-23): aynı donanımda iki kol kurulur ve sabit ölçüm seti doldurulur — RAM, CPU, boot süresi, RDP güvenilirliği, RustDesk reboot sonrası davranışı, login screen erişimi, dummy display davranışı, 24 saat + 72 saat stabilite. RustDesk headless zorunlu şartı iki kolda da aranır; sonuç tablosu LAB release kaydına bağlanır. XFCE kolu saha medyasına girmez; revizyon yalnız bu veriyle yapılır. ## 10. Test Planı | Test | Beklenen sonuç | Ortam | |---|---|---| | `get-default` | `multi-user.target` | LAB(2) | | Güç kesintisi simülasyonu | BIOS ayarı ile cihaz kendiliğinden açılır | LAB(2) | | `bf-gui-on/off` sonrası yerel grafik | Yerel oturum açılır/kapanır (display-manager) | LAB(2) | | `bf-gui-off` sonrası xRDP | `xrdp`/`xrdp-sesman` **active kalır**, RDP oturumu kurulur (K-22) | LAB(2) | | `20auto-upgrades` değerleri `0`, timer'lar maskeli | Otomatik apt çalışmaz | LAB(2) imaj denetimi | | GNOME vs XFCE A/B ölçümü (8 metrik, 24/72 saat) | Tablo dolar; karar LAB verisiyle verilir (K-23) | LAB(2) | | Tek-USB Field OS ISO ile kurulum (03 zemini) | Kimliksiz zemin kurulur, storage operatör onayı beklenir (K-20) | LAB(2) UEFI+Legacy | ## 11. Rollback 1. Yanlış boot hedefi: `sudo systemctl set-default multi-user.target` ile geri alınır. 2. Bozuk GNOME/xRDP katmanı: `bf-gui-off` + paket yeniden kurulumu; son çare imajdan yeniden kurulum (04). 3. Otomatik update yanlışlıkla açıldıysa §9 adım 6 yeniden uygulanır, `apt-daily*` timer durumu denetlenir. ## 12. Kontrol Listesi - [ ] ISO sürümü 26.04.1+ (LAB'da `lsb_release -a` çıktısı kayıtlı). - [ ] BIOS `Restore on AC Power Loss = Power On` her profilde doğrulandı. - [ ] `get-default` = `multi-user.target`. - [ ] `bf-gui-on/off` LAB 26.04.1 imajında test edildi; `bf-gui-off` sonrası xRDP hâlâ active (K-22). - [ ] `unattended-upgrades` kapalı + timer'lar maskeli. - [ ] GNOME vs XFCE A/B ölçüm tablosu (8 metrik) doldurulmuş; XFCE saha medyasına girmemiş (K-23). ## 13. Açık Sorular - [ ] GNOME oturum başlatma satırı + `bf-gui-*` kesin birim listesi — LAB 26.04.1 imajında (sahibi: Faz 3). - [ ] `NetworkManager` vs `systemd-networkd` seçimi — netplan profiliyle birlikte LAB'da netleşecek (sahibi: Faz 3, 08 yazarı). - [ ] GNOME vs XFCE A/B ölçüm seti ve sonuç tablosu (8 metrik, 24/72 saat) — LAB 2 cihaz (sahibi: platform ekibi + bu dosyanın yazarı) [K-23]. - [ ] Medya tabanı sapması: LAB ISO'su Desktop flavour ile üretildi; işletim öncesi Server ISO ile yeniden build ya da Desktop tabanının kabulü — LAB/F2B (sahibi: release yöneticisi) [K-20]. --- ## Ek: Zemin Katmanları ```mermaid flowchart TB ISO["V1 medya: tek USB Field OS ISO
(autoinstall.yaml + offline APT + firstboot)
geri dönüş: upstream ISO + NoCloud seed"] --> BOOT["Boot hedefi: multi-user.target
(terminale boot; yerel GUI kapalı varsayılan)"] BOOT --> GUI["Yerel GUI katmanı (kapalı varsayılan)
GNOME + bf-gui-on/off"] BOOT --> RDP["xRDP servisi HER ZAMAN hazır
xrdp + xrdp-sesman enable+active (K-22)"] GUI -.->|"bf-gui-off xRDP'i DURDURMAZ"| RDP RDP --> KILIT["Update kilidi
unattended-upgrades kapalı + timer maskeli"] GUI --> KILIT KILIT --> SERVIS["Açılış servisleri
wg-quick + docker + node_exporter + agent'lar"] SERVIS --> AB["LAB A/B: GNOME vs XFCE
8 metrik + 24/72 saat (K-23)"] ```