# YALI (Yet Another Linux Installer) — Rust / egui Rust ve egui ile yeniden yazılmış **Pisi GNU/Linux** kurulum aracı. YALI, canlı ortamdan sistemi kurar, paketleri kurar ve temel yapılandırmayı gerçekleştirir. Orijinal Python/Qt sürümünün modern, hızlı ve bakımı kolay bir yeniden yazımıdır. - [Changelog](CHANGELOG.md) - [English README](README_en.md) ## Özellikler - **10 adımlı kurulum sihirbazı**: Hoş Geldiniz → Konum → Klavye → Ağ → Disk Bölümleme → Kullanıcılar → Bootloader → Özet → Kurulum → Bitir - **İki mod**: Grafik arayüz (varsayılan) ve cevap dosyasıyla otomatik kurulum (`--auto-install answer.toml`) - **Demo modu**: Sistem kontrollerini atlar, kurulumu simüle eder (`--demo`) - **Disk bölümleme**: Otomatik (GPT/MBR) veya manuel, LVM ve LUKS şifreleme desteği - **Ağ yapılandırması**: WiFi tarama (nmcli), proxy ayarları - **Önyükleyici**: GRUB aygıt/parola/zaman aşımı ayarları, çekirdek parametreleri - **Kurtarma modu**: Chroot, GRUB yeniden kurulumu, Pisi geçmişe dönme - **OEM modu**: Üretici ön kurulumu için ön tanımlı ayarlar - **Uluslararasılaştırma**: Türkçe ve İngilizce (rust-i18n ile TOML locale dosyaları) - **Markalama sistemi**: Çalışma zamanında yüklenebilir `branding.toml` ile logo, slayt, renk ayarları - **Tema**: Koyu/açık tema, atomik renk yönetimi, özel gradient butonlar - **Asenkron iş kuyruğu**: Tüm kurulum adımları ayrı `tokio` runtime'ında çalışır, `mpsc` kanalı ile UI güncellenir - **Sistem kontrolleri**: RAM, disk alanı, internet, UEFI, CPU, NVMe gibi 8 ön kontrol - **Slayt gösterisi**: 9 masaüstü ortamı için özel markalı slaytlar - **Demo oturum temizliği**: Canlı ortam artifact'lerini kaldırır, üretim deposu ekler ## Kullanım ```bash # Normal kurulum (root yetkisi gerekir) sudo cargo run --release # Demo modu (root gerekmez) cargo run --release -- --demo # Otomatik kurulum (cevap dosyası ile) sudo cargo run --release -- --auto-install answer.toml ``` ## Proje Yapısı ``` ├── src/ │ ├── main.rs # Giriş noktası, eframe App, GUI düzeni │ ├── installer.rs # InstallerStep trait'i, GlobalState, WelcomeStep │ ├── funct.rs # Paylaşılan UI yardımcıları (form alanları, dil seçici) │ ├── branding.rs # Branding.toml yükleyici (logo, slayt, tema, OEM) │ ├── ui/ │ │ ├── theme.rs # Renkler, fontlar, Visuals, section_heading, error/warning/success kutuları │ │ ├── buttons.rs # Gradient butonlar (primary, secondary, danger, vb.) │ │ ├── combobox.rs # ComboBox yardımcıları (show_combo_box, selectable_value) │ │ ├── combobox_stil.rs # ComboBox görsel sabitleri (weak_bg, border, text renkleri) │ │ ├── slideshow.rs # Otomatik ilerleyen slayt gösterisi │ │ └── error_screen.rs # Hata ekranı (log görüntüleyici, kopyala, yeniden dene) │ ├── steps/ │ │ ├── location.rs # Konum/saat dilimi + tarih/saat │ │ ├── license.rs # Lisans sözleşmesi │ │ ├── keyboard.rs # Klavye düzeni/varyant seçimi │ │ ├── network.rs # Ağ yapılandırması (WiFi, proxy) │ │ ├── partition.rs # Disk bölümleme (otomatik + manuel + LVM) │ │ ├── users.rs # Kullanıcı hesabı oluşturma │ │ ├── bootloader.rs # GRUB yapılandırması │ │ ├── summary.rs # Kurulum özeti │ │ ├── execution.rs # Kurulum yürütme (ilerleme çubuğu, log) │ │ ├── finish.rs # Tamamlanma ekranı │ │ ├── netinstall.rs # Ek paket grubu seçimi │ │ └── rescue.rs # Kurtarma modu (chroot, GRUB, Pisi takeback) │ ├── jobs/mod.rs # Asenkron iş kuyruğu ve tüm kurulum işleri │ └── autoinstall/ │ ├── mod.rs # Cevap dosyası yükleme ve state uygulama │ └── checker.rs # Sistem ön kontrolleri ├── locales/ │ ├── tr.toml # Türkçe çeviriler │ └── en.toml # İngilizce çeviriler ├── assets/ │ ├── icons/ # UI ikonları (YALI_icon_LIGHT.svg, language-icon.svg, vb.) │ ├── flags/ # Ülke bayrakları (~250 SVG) │ └── *.png # Slayt ve logo görselleri ├── branding.toml # Varsayılan markalama yapılandırması ├── branding_en.toml # İngilizce markalama ├── branding_tr.toml # Türkçe markalama └── answer-example.toml # Örnek cevap dosyası ``` ## Kurulum İş Akışı 1. **Hoş Geldiniz** — Dil seçimi, sistem kontrolleri, kurtarma modu 2. **Konum / Zaman** — Saat dilimi seçimi (bölge/alan çift ComboBox), GeoIP, NTP veya manuel tarih/saat 3. **Klavye** — Düzen/varyant seçimi, arama, canlı önizleme (setxkbmap) 4. **Ağ** — WiFi tarama, bağlantı, proxy 5. **Disk Bölümleme** — Otomatik (rehberli) veya manuel, LVM, LUKS 6. **Kullanıcılar** — Hesap oluşturma, parola gücü göstergesi, root parolası, otomatik oturum açma 7. **Bootloader** — GRUB aygıtı, zaman aşımı, parola, çekirdek parametreleri 8. **Özet** — Tüm seçimlerin gözden geçirilmesi 9. **Kurulum** — Slayt + ilerleme çubuğu + canlı log 10. **Bitir** — Başarılı kurulum, yeniden başlat veya canlı masaüstüne dön ## Bağımlılıklar | Bağımlılık | Sürüm | Amaç | |---|---|---| | `eframe` | 0.27 (wgpu) | egui çatısı, WebGPU çıktısı | | `egui_extras` | 0.27 (image, file, svg) | Görsel yükleme, dosya diyalogları, SVG | | `image` | 0.24 | PNG kod çözme | | `serde` / `toml` | 1.0 / 0.8 | Branding ve cevap dosyası serileştirme | | `zbus` | 4.0 | D-Bus iletişimi (COMAR) | | `tokio` | 1.0 (full) | Asenkron iş kuyruğu | | `sysinfo` | 0.30 | Sistem bilgisi (RAM, disk, OS) | | `rust-i18n` | 3.1 | Uluslararasılaştırma | | `chrono` | 0.4 | Tarih/saat işlemleri | ## Lisans GNU General Public License v3.0 Bu proje Pisi GNU/Linux ekibi tarafından geliştirilmektedir.