refactor: squashfs akışına uygun sihirbazı daralt, DM tespitini çalışma zamanına al

YALI kurulu sistemi ISO'nun squashfs'inden kopyalar (CopyFilesJob rsync).
Bu yüzden ISO'da hangi paketler, ekran yöneticisi ve masaüstü ortamı
varsa kurulum onları ZATEN içerir. Sihirbazın bunları seçmesi
anlamsızdı: kullanıcının seçimi kopyalama sırasında ezilecekti.

## 1. Sihirbaz 13 → 10 adım
LicenseStep, DisplayManagerStep ve NetinstallStep listeden çıkarıldı.
Silinmedi: steps/mod.rs'te tanımlı, derleniyor, hazır. Her biri için
etkinleştirme koşulu mod.rs'te yazılı (netinstall için ayrıca
selected_package_groups doldurulmalı ve InstallExtraPackagesJob
kuyruğa alınmalı). İzin, 22de7d5'in yaptığının tersine SADECE bu üç
modüle ve SADECE belgelenmiş kasıtlı uyku için kondu — modül
dışındaki taze ölü kod yine uyarı üretir.

## 2. ConfigureAutologinJob ISO'nun DM'ini eziyordu
Alanın doc yorumu "yapılandırma ISO'da hazır olduğu için burada
değiştirilmez" diyordu; kod tam tersini yapıyordu. state.display_manager
GlobalState'in SABİT "sddm" varsayılanı (kullanıcı seçemiyor), ona
göre dallanılıyordu. ISO lightdm kullanıyorsa lightdm.conf'a hiç
dokunulmaz, sddm.conf yazılır ve otomatik giriş sessizce çalışmazdı.

  - detect_display_manager(): hedefte hangi DM'in kurulu olduğunu
    çalışma zamanında arar (/usr/bin/<dm>, yoksa yapılandırma dizini).
    Bu iş CopyFilesJob'dan sonra çalıştığı için mount doludur.
  - sddm config dizini: /usr/lib/sddm/sddm.conf.d yoksa
    /etc/sddm.conf.d deniyor; ikisi de yoksa hata (sessizce yanlış
    yere yazmak yerine).
  - lightdm'de autologin-session ham DE adıyla ("plasma") yazılıyordu;
    sddm/gdm'nin kullandığı .desktop eşlemesi (session_desktop_file)
    kullanılıyor. lightdm oturumu dosya adıyla arar, "plasma" ile
    oturum açılmazdı.
  - DM bulunamazsa hata veriyor (kullanıcıya "elle yapılandırın"
    diyebilmeli), eskiden sadece uyarıp geçiyordu.

## 3. Özet ekranı doğru bilgiyi gösteriyor
state.display_manager sabitini olduğu gibi gösteriyordu → ISO
lightdm iken "sddm" yazıyordu. Artık yalnızca kullanıcının gerçekten
belirlediği şey (otomatik giriş açık/kapalı) gösteriliyor ve DM'in
görüntüden geldiği belirtiliyor. Yanındaki hardcoded İngilizce
parçalar ("password protected", "manual login") de t!() altına alındı.

## 4. Cevap dosyasında (auto-install) sabit değerler
JobQueueConfig alanları answer file'dan hiç okunmuyordu; hepsi
main.rs'te yazılmıştı: display_manager "sddm", desktop_environment
"plasma", autologin TRUE, root_password boş, bootloader_timeout 5.

  - İsteğe bağlı [system] bölümü eklendi: autologin, bootloader_*
    ve kernel_options. [user]'a root_password.
  - autologin varsayılanı true → false. Gözetimsiz kurulumda açık
    olması, kurulan sistemde konsola erişebilen herkesin kullanıcı adını
    görmesini ve oturumu açmasını kolaylaştırıyordu.
  - desktop_environment artık SABİT "plasma" değil, GlobalState'in
    canlı ortam tespiti. XFCE ISO'sunda Plasma oturumu açılmaya
    çalışılıyordu.
  - answer-example.toml güncellendi, iki dilde açıklama eklendi.

### Bulunan ve düzeltilen tuzak
SystemConfig #[derive(Default)] ile 0 döndürüyordu. [system] bloğu
dosyada HİÇ YOKSA serde alan bazlı `#[serde(default = "...")]`
anotasyonlarına uğramaz, doğrudan Default::default() çağırır — yani
GRUB bekleme süresi 0 saniye olurdu ve kurulumda bootloader menüsü
hiç görünmezdi. Default elle uygulandı; regresyon testi eklendi.

## 5. Testler
+7: autologin (2), answer file ayrıştırma (4, biri depodaki gerçek
dosyayı ayrıştırıyor, biri varsayılan tuzağını kilitliyor),
wizard (zaten 4'tü).

cargo check --all-targets : 0 hata, 0 uyarı
cargo test              : 55/55 geçti (47 → 55)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Erkan IŞIK
2026-09-25 23:15:57 +03:00
parent bf6cf727fe
commit 8d652c3a99
10 changed files with 485 additions and 82 deletions
+4
View File
@@ -285,6 +285,10 @@ summary_software = "Yazılım"
summary_display_manager = "Görüntü Yöneticisi"
summary_autologin = "Otomatik oturum açma"
summary_autologin_user = "Otomatik oturum açılacak kullanıcı"
summary_autologin_on = "Açık"
summary_autologin_off = "Kapalı (parola ile giriş)"
summary_bootloader_password = "parola korumalı"
summary_desktop_from_image = "ISO görüntüsünden gelir; kurulumda otomatik tespit edilir"
summary_desktop = "Masaüstü"
# ── Görüntü Yöneticisi ───────────────────────────────────────