Grace Peace Homelander
Çalışkan
Konu Başlıkları Gizle
-
1
Ubuntu 26.04 LTS — Debootstrap Kurulum Rehberi (Snap'siz)
-
1.1
0. Önce config.sh
- 1.1.1 Sabit tasarım kararları
- 1.2 1. Hazırlık — şu anki Debian'dan
- 1.3 2. Live oturumu başlat
- 1.4 3. Faz 2b — hedef diski sil ve bölümle
- 1.5 4. Faz 3 — debootstrap
- 1.6 5. chroot'a gir
- 1.7 6. Faz 4 + 5 — çekirdek yapılandırma ve snap engeli
- 1.8 7. Faz 6 — çekirdek, firmware, AMD sürücüleri, zram
- 1.9 8. Faz 7 — GNOME 50 + Yaru, gerçek Firefox, Flatpak
- 1.10 9. Faz 8 — GRUB
- 1.11 10. Yeniden başlatmadan ÖNCE — denetim
-
1.12
11. İlk açılıştan sonra
- 1.12.1 Snapshot'lar ve geri dönüş
- 1.13 12. Faz 9 — /home'u ikinci diske taşı (isteğe bağlı)
-
1.14
13. Sorun giderme
- 1.14.1 "Sistem read-only açıldı" — geçen seferki hata
- 1.14.2 debootstrap "Retrieving InRelease" satırında donuyor
- 1.14.3 Hiç açılmıyor / GRUB gelmiyor
- 1.14.4 GRUB var, çekirdek panic ("cannot mount root")
- 1.14.5 Metin konsolu geliyor, masaüstü gelmiyor
- 1.14.6 Ağ yok
- 1.14.7 apt update && apt full-upgrade snap'i geri getirir mi?
- 1.14.8 Thunderbird kurmak istiyorum
- 1.14.9 Bir şekilde snapd geldi
- 1.15 14. Dosyalar
- 1.16 15. Kurulum sonrası — ayarlar, eksikler, yapılmaması gerekenler
-
1.1
0. Önce config.sh
Bu script icin yaptigim prompt muhendisligini baska hicbir sey de yapmamistim 
GitHub Repo'sundan butun detaylara ulasabilirsiniz. Bu otomatik kurulum scriptidir. Ben rehberi kurulu Debian sistemim uzerinden yaptim sonra Ubuntu live ISO ile devam ettim. Butun kod claude-code $100 planla yazildi. Fable 5 Ultracode ile yazilmis olup uzerinden hata ayiklama, optimizasyon ve QEMU-VM ortaminda gercek dunya testleri uygulasin diye birden fazla cila yaptim.
Son olarak da su anki kullandigim guncel sistemimi tamamen bu script ile kurdum. SORUN: 0
Ben rehberi Github'dan takip etmenizi oneririm cunku her sey markdown formatinda yazildi.
Bu rehber tek başına yeterlidir. Sohbete ihtiyacın yok.
Scriptler bu klasörde, numara sırasıyla çalıştırılır.
Tüm paket isimleri, sürümler ve kod adı
hafızadan yazılmadı. Doğrulanmış gerçekler:
| Şey | Değer |
|---|---|
| Kod adı |
| Çekirdek | 7.0.0-28 |
| Mesa | 26.0.3 |
| GNOME | 50 |
| Ubuntu'nun
| Ubuntu'nun
|
| snapd'ye sert bağımlı paketler | resolute'ta 10 tane, hepsi
0. Önce
Bu depo tek bir makineye özel değil. Makineye özel her şey
içinde; başka hiçbir dosyaya dokunman gerekmiyor.
Zorunlu iki alan:
Diskin serisini şöyle bul:
Boş bırakırsan diske dokunan her faz bu listeyi basıp durur — yanlışlıkla
yanlış diski silmek mümkün değil.
İsteğe bağlı, makul varsayılanları var:
| Ayar | Varsayılan | Ne işe yarar |
|---|---|---|
|
|
|
|
|
|
|
NVIDIA notu: tescilli sürücü bilerek kurulmuyor. Doğru sürücü kartın
kuşağına ve Secure Boot durumuna bağlı; tahmin etmek ilk açılışta siyah ekran
demek. Nouveau ile masaüstüne çıkarsın, sonra
Disk düzeni: GPT ·
Subvolume'ler:
Mount seçenekleri:
Swap: sadece zram. Disk swap yok, hazırda bekletme yok.
Firmware: sadece UEFI — BIOS/CSM yolu yok.
1.1 ISO indir
1.2 Doğrula — çıktı
1.3 USB'yi tak ve bul
USB çubuğu
1.4 ISO'yu yaz
Önce USB cihazını bir değişkene koy — bölüm değil, disk (
Yazmadan önce doğru cihaza baktığını teyit et. Çıktıda NVMe diskleri
görüyorsan dur,
1.5 Scriptleri yanına al
hale gelir. Bu depoyu ayrı bir USB çubuğuna kopyala, ya da live oturumda
doğrudan klonla:
Silmeyeceğin ikinci bir diskin varsa scriptleri orada da tutabilirsin.
1. Yeniden başlat, UEFI menüsünden (çoğu anakartta
2. GRUB menüsünde "Try or Install Ubuntu". Açılan kurulumcuda
"Try Ubuntu" / Ubuntu'yu dene seçeneğini işaretle — Install değil.
3. Ağa bağlan (kablo veya Wi-Fi). Ağ zorunlu, tüm paketler ağdan geliyor.
4. Terminal aç (
Secure Boot açıksa kurulum yine çalışır (
Scriptlere ulaş. USB'den kopyaladıysan çubuğu bağla, ya da:
eksikken çalışmaz:
Sonunda
Script diski seri numarasından bulur,
hazır olmasını bekler ve yanlış diske denk gelirse durur. Elle yapmanın
hiçbir avantajı yok.
Bu script:
-
UEFI kaydını yazamaz),
- kalan scriptleri
Ekrana basılan fstab'ı oku. Kök satırı şuna benzemeli:
Artık yeni sistemin içindesin. Sıradaki bütün komutlar burada çalışır.
Doğru yerde olduğunu şöyle teyit edebilirsin —
Ayarlar
Yaptıkları, bu sırayla:
1.
önce. Sonra yazarsan snapd bir Recommends üzerinden içeri sızabilir.
2. deb822 formatında APT kaynakları (
3. Pin'lerin çalıştığını kanıtlar:
adayın
Pin listesi "kuracağımız snap şeyler" değil, arşivde snapd'ye sert
bağımlı (Depends / Pre-Depends) olan her paket — hiç kurmayacağın
olanlar dahil. Kazara
kalmamak için:
| Grup | Paketler |
|---|---|
| snapd ve makinesi |
| snap mağaza eklentileri |
| sunucu/bulut metapaketleri |
| snap kurucu "deb"leri |
Liste hafızadan değil arşivden çıkarıldı; komutu
duruyor, sürüm atladıktan sonra tekrar çalıştırabilirsin.
Firefox ve Thunderbird pin'i sürüm dizesine değil kaynağa bağlıdır
(
sürüm bazlı tek bir pin ikisini birden zaten tutamazdı, üstelik Ubuntu
shim'i
olduğu için gerçek deb'ler bu engelden etkilenmez.
4.
5. Locale, saat dilimi, klavye, hostname,
6. Kullanıcı (uid 1000) + sudo grubu, parola sorar.
Sonunda kullanıcı ve root parolasını soracak. İkisini de gerçekten gir.
Önemli nokta:
initrd btrfs kökü bağlayamaz ve masaüstü yerine kernel panic alırsın.
CPU mikrokodu ve grafik yığını donanımdan tespit edilir (
kurulumu komple durdurur.)
NVIDIA'da tescilli sürücü bilerek kurulmaz; script ne yapman gerektiğini
yazar. Nouveau ile masaüstüne çıkar, sonra
doğrulandı:
Depends değil — yani gelmezler, ama tam Ubuntu masaüstünü (dock dahil) alırsın.
Snap kütüphaneleri hakkında dürüst tablo. Tüm paket listesinin bağımlılık
kapanışını (1087 paket) arşivden hesapladım. Sonuç:
| Paket | Nereden geliyor | Ne? |
|---|---|---|
|
|
İkincisi önemli:
gelir, çünkü çalışan bir ses yığını olmadan sistem kullanılmaz ve PipeWire ona
sert bağımlı. Snap kütüphanesiz bir masaüstü 26.04'te mümkün değil.
Ama bunlar
kurulamaz. Kapanış taramasında
firefox kabuğuydu — o da pin'lenip script tarafından açıkça reddediliyor.
Dock ve masaüstü simgelerinin gitmesi.
| Değişken | Varsayılan | Diğer seçenek |
|---|---|---|
|
|
|
|
Firefox kanalı. İkisi de Mozilla'nın APT deposundan gelir; Ubuntu arşivinde
ikisi de yok (
ESR, çünkü bu kurulumun geri kalanı da kararlılık için optimize edilmiş.
Firefox
Ubuntu'nun
Ağ takılır da script Firefox'u atlarsa (çıktıda söyler), ilk açılıştan sonra
depo zaten hazır olduğu için tek komut yeter:
Çıktıda kaynağın
olmadığını gör.
Thunderbird fazın en sonunda Flathub'dan kurulur. Ubuntu'nun
deb'i de
bilinçli: bu fazın en uzun ağ adımı, koptuğunda üstündeki her şey çoktan
bitmiş oluyor ve maliyeti ilk açılıştan sonra tek komut.
ESR ayrı bir branch değil, ayrı bir uygulama kimliği:
kimliğe göre isimlendiriliyor — iki kimlik profil paylaşmaz.
Script kurulumdan hemen önce Flathub'ın gerçekten yayınladığı Thunderbird
ref'lerini listeliyor, kurulumdan sonra da
basıyor. Kimlik değişirse aşağıdaki profil notu da kendini düzeltiyor
(değişkenden türetiliyor).
bağımlılığı — snapd ile konuşmak için var olan iki Shell eklentisi taşıyor ve
Ubuntu bunları varsayılan olarak açık getiriyor:
Bunlar snap değil, JavaScript. snapd olmadan hiçbir şey yapmıyorlar — arama
sağlayıcı hiç snap bulmuyor, izin sorucusunun soracağı bir daemon yok. Ama her
oturumda gnome-shell'e yükleniyorlar ve Extension Manager'da görünüyorlar.
Paketi kaldıramazsın: Ubuntu Dock, DING, AppIndicators ve Tiling Assistant da
onunla gider. Faz 7 bunun yerine bir gschema override yazıp ikisini kapatıyor
(
istersen Extension Manager'dan yine açabilirsin.
Zaten kurulmuş bir sistemde elle kapatmak istersen:
Wayland'de değişikliğin görünmesi için oturumu kapatıp açman gerekir.
-
initramfs btrfs'in en üst seviyesini bağlar,
-
açılışta bütün çekirdek mesajlarını göresin diye. Sorunsuz açıldıktan sonra
istersen
-
içindeki apt'ın DNS'i kırılırdı.
-
altyapısı ilk kez işe yarıyor.
içindeki
subvolume'ünün snapshot'ını alır. Bozuk bir upgrade artık yeniden kurulum
değil, bir
okur — yani kanca kendi kurulumu sırasında tetiklenmez ve önceki fazlar
chroot içinde boşuna snapshot almaz.
-
(
satırında geçiyordu, ama o sadece o tek komut için geçerli — ilk açılıştan
sonra
neyi çözdüğünü değiştirirdi. Tek seferlik istisna:
Bu, geçen seferki hatanın tekrarını engellemek için yazıldı. 7 başlıkta
kontrol eder: fstab, çekirdek/initramfs, GRUB/ESP, kullanıcı ve parolalar,
servisler ve boot hedefi, snap politikası, locale/zram/DNS.
Tek bir
çıkar ve ne yapman gerektiğini yazar.
Hepsi
Live oturumda,
Kapanırken USB'yi çıkar.
zram swap görünmeli (~7G).
Kartının adı görünmeli —
Her şey iyiyse
İlk
alınır. Listelemek için:
sonrası geri dönmek:
adlandırıp seçtiğin snapshot'ı
isme göre boot etmesi (subvolid'ye değil) bunu sorunsuz kılıyor — Faz 8'in
o satırı açıkça yazmasının ikinci faydası.
Bilmen gereken dört şey:
| | |
|---|---|
| Nerede duruyorlar | btrfs'in en üst seviyesinde
| Ne snapshot'lanıyor | sadece
| Temizlik | snapshot alınırken otomatik: son 8 saatlik, 7 günlük, 2 haftalık (
| Dokunma |
Snapshot'tan boot menüsü üzerinden dönmek istersen
Ubuntu arşivinde yok, elle kurulması lazım. Bu repo onu kapsamıyor.
Bu faz isteğe bağlı ve yalnızca eski bir kurulumun diskini yeni
yapmak istiyorsan gerekli. Tek diskin varsa
ve bu bölümü atla.
Sistem düzgün açıldıktan sonra. Önce eski dosyaları al:
İstediklerini kopyala (script komutu yazdırıyor).
komple kopyalama — Debian GNOME ayarlarını GNOME 50'ye taşımak masaüstünü
bozmanın klasik yoludur; ihtiyacın olan uygulamaların klasörlerini tek tek al.
Elindekilerden emin olduktan sonra masaüstünden çık:
Sonra:
Eski disk silinir,
Sebep neredeyse her zaman şunlardan biridir:
1.
bakar; satır yoksa initramfs'in bıraktığı
2. Kök satırında
3. btrfs hata verip kendini
Adım 1 — önce yazılabilir yap. Bunu yapmadan
düzenleyemezsin:
Adım 2 — kök satırı var mı bak:
Adım 3 — çıktı boşsa satırı ekle:
Ekledikten sonra doğrula ve yeniden başlat:
btrfs hatası mı diye bak:
gerekir, fstab'ın suçu yoktur.
Bu senin ağında gerçekten oluyor — test ederken bizzat karşılaştım.
IPv6 üzerinden
bekliyor;
kanıtlamaz, debootstrap
gerekirse:
Doğrula — anında dönmeli:
Kurulum yarıda kaldıysa üstüne devam etme:
sistem yarım demektir.
Live USB'den aç, sonra:
Bölümlerin etiketleri var, o yüzden cihaz adı tahmin etmene gerek yok:
İçeride:
satırının sonuna ekle,
DNS çalışmıyorsa:
Hayır.
güncelleme sırasında ne siler ne üzerine yazar.
bağımlılık olarak bile" demektir. İleride bir paket
gelirse APT snapd'yi kurmaz, o paketi geri tutar (
senaryo "snap geri geldi" değil, "bir paket güncellenmedi".
Upgrade çıktısında
görürsen panik yapma: bunlar snapd değil, sadece GLib binding kütüphaneleri
(
bak). Servis yok,
Upgrade sonrası denetim:
Arşiv değişmiş mi diye bakmak istersen — snapd'ye sert bağımlı olup pin'de
adı geçmeyen bir paket var mı:
Çıktı boşsa her şey yerinde. Bir isim çıkarsa
snapd zaten -1'de olduğu için o paket kurulamaz, ama eklemek anlaşılmaz
bir bağımlılık hatası yerine temiz bir ret verir.
Asıl dikkat edilecek yer normal upgrade değil, sürüm yükseltmesidir
(
dahil) devre dışı bırakır. Sürüm atladıktan sonra yukarıdaki beş komutu tekrar
çalıştır ve
olduğunu doğrula.
kurucusu.
Faz 7
(ağ koptuysa çıktıda söyler):
ya da Mozilla'nın APT deposunda
eklendi,
Aynısı Chromium için:
Faz 9 eski
altında. 8. bölümdeki taşıma komutuna bak.
Sonra
| Dosya | Nerede çalışır |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
Faz 3, bu klasörün tamamını
girdikten sonra rehber de yanında olur.
Debootstrap kurulumu bittiğinde elinde çalışan ama çıplak bir sistem var.
Ubuntu'nun installer'ının senin yerine yaptığı bazı şeyler burada yapılmadı;
bedeli ve bu donanıma özel ayarları listeliyor.
hiç kurulmadı. İçinden dördü gerçekten önemli:
| Paket | Neden |
|---|---|
|
|
|
|
Güvenlik güncellemelerinin otomatik inmesini istersen (masaüstünde mantıklı;
her apt işleminden önce zaten snapshot alınıyor):
Kök btrfs ve tek disk. İki ayar:
Haftalık
ama onaramaz — yine de bozulmayı fark etmen değerli) ve periyodik
zamanlayıcıları kurar. Elle yapmak istersen ayda bir:
VM imajı, veritabanı ya da büyük torrent dosyası tutacaksan o dizinde CoW'u
kapat — btrfs'te bu dosyalar aksi halde parçalanır:
etkilemez.
%10'una kadar büyüyebilir. Sınırlamak istersen:
AMD ve Intel'de sürücü tarafında yapılacak bir şey yok — Mesa 26 kutudan
çalışıyor. Doğrula:
Masaüstü makinesindeysen güç profilini sabitlemek mantıklı (dizüstünde
zram zaten ayarlı (
swap'ı için doğru değerler, diske swap'ın tersi; boyut RAM'in yarısı, 8 GiB
tavanla). Baskı altında ne olduğunu görmek istersen:
kapanıyorsa suçlu odur:
VRR monitörün varsa önce Ayarlar → Ekranlar'a bak; orada yoksa GNOME'un
deneysel bayrağı:
(İkincisi kesirli ölçekleme içindir; ihtiyacın yoksa listeden çıkar.)
| İhtiyaç | Yol |
|---|---|
| Firefox | Zaten kurulu, Mozilla APT deposundan — varsayılan
| Thunderbird | Faz 7'de Flathub'dan kurulu. Profil yolu için 8. bölümdeki nota bak |
| Chromium | Flathub
| Steam / oyun | Flathub
| GNOME eklentileri | Extension Manager (kurulu). Tarayıcıdan kurmak istersen
| Mağaza | GNOME Software'de Flathub çalışıyor;
İlk açılışta Flathub metadata'sı henüz inmemiş olabilir:
Attach edeceksen otomatik servis açmayı kapat —
ve pin yüzünden hata verir:
bugünkü gerçek faydası
| Yapma | Neden |
|---|---|
|
|
|
|
|
|
| Rastgele PPA eklemek |
Bir upgrade sistemi bozarsa 11. bölümdeki geri dönüş adımları.
GitHub Repo'sundan butun detaylara ulasabilirsiniz. Bu otomatik kurulum scriptidir. Ben rehberi kurulu Debian sistemim uzerinden yaptim sonra Ubuntu live ISO ile devam ettim. Butun kod claude-code $100 planla yazildi. Fable 5 Ultracode ile yazilmis olup uzerinden hata ayiklama, optimizasyon ve QEMU-VM ortaminda gercek dunya testleri uygulasin diye birden fazla cila yaptim.
Son olarak da su anki kullandigim guncel sistemimi tamamen bu script ile kurdum. SORUN: 0
Ben rehberi Github'dan takip etmenizi oneririm cunku her sey markdown formatinda yazildi.
Ubuntu 26.04 LTS — Debootstrap Kurulum Rehberi (Snap'siz)
Bu rehber tek başına yeterlidir. Sohbete ihtiyacın yok.
Scriptler bu klasörde, numara sırasıyla çalıştırılır.
Tüm paket isimleri, sürümler ve kod adı
resolute arşivinden doğrulandı —hafızadan yazılmadı. Doğrulanmış gerçekler:
| Şey | Değer |
|---|---|
| Kod adı |
resolute = Ubuntu 26.04 LTS (23 Nisan 2026) || Çekirdek | 7.0.0-28 |
| Mesa | 26.0.3 |
| GNOME | 50 |
| Ubuntu'nun
firefox paketi | 1:1snap1-0ubuntu8 — Pre-Depends: snapd, sadece snap kurar, kullanma || Ubuntu'nun
thunderbird paketi | 2:1snap1-0ubuntu5 — aynı şey, epoch'u 2 (bu yüzden sürüm bazlı pin işe yaramaz, o=Ubuntu kaynağına göre pinleniyor) ||
snapd | ubuntu-desktop-minimal içinde Recommends, Depends değil → pin + --no-install-recommends yeterli || snapd'ye sert bağımlı paketler | resolute'ta 10 tane, hepsi
nosnap.pref'te (aşağıda liste) |0. Önce config.sh
Bu depo tek bir makineye özel değil. Makineye özel her şey
config.shiçinde; başka hiçbir dosyaya dokunman gerekmiyor.
Zorunlu iki alan:
Bash:
TARGET_DISK_SERIAL="" # SİLİNECEK disk
USERNAME="" # açılacak kullanıcı
Diskin serisini şöyle bul:
Bash:
lsblk -dno NAME,SIZE,MODEL,SERIAL
Boş bırakırsan diske dokunan her faz bu listeyi basıp durur — yanlışlıkla
yanlış diski silmek mümkün değil.
Diskleri asla
nvme0n1/nvme1n1isimleriyle ayırt etme. Live
çekirdek altında sıra değişebilir. Bütün scriptler diski seri numarasından
bulur, ayrıca live oturumun kendi diskini ve Faz 9'a ayrılmış diski silmeyi
reddeder.
İsteğe bağlı, makul varsayılanları var:
| Ayar | Varsayılan | Ne işe yarar |
|---|---|---|
|
HOSTNAME | ubuntu-nosnap | ||
TIMEZONE / LOCALE / KEYMAP | Europe/Istanbul / en_US.UTF-8 / us | ||
CPU_VENDOR / GPU_VENDOR | auto | Mikrokod ve grafik yığını donanımdan tespit edilir ||
DESKTOP_MODE | ubuntu | pure (sade GNOME) veya none ||
FIREFOX_CHANNEL | firefox-esr | veya firefox ||
THUNDERBIRD_REF | org.mozilla.thunderbird_esr | Flathub kimliği ||
MIGRATE_DISK_SERIAL | boş | Faz 9 — ikinci disk yoksa boş bırak |NVIDIA notu: tescilli sürücü bilerek kurulmuyor. Doğru sürücü kartın
kuşağına ve Secure Boot durumuna bağlı; tahmin etmek ilk açılışta siyah ekran
demek. Nouveau ile masaüstüne çıkarsın, sonra
sudo ubuntu-drivers install.Sabit tasarım kararları
Disk düzeni: GPT ·
p1 ESP (FAT32, ESP_SIZE) · p2 kalan (btrfs)Subvolume'ler:
@ @home @snapshots @var_log @var_cache @var_lib_flatpakMount seçenekleri:
noatime,compress=zstd:3,ssd,discard=async,space_cache=v2Swap: sadece zram. Disk swap yok, hazırda bekletme yok.
Firmware: sadece UEFI — BIOS/CSM yolu yok.
1. Hazırlık — şu anki Debian'dan
1.1 ISO indir
Bash:
curl -L -o ~/ubuntu-26.04-desktop-amd64.iso https://releases.ubuntu.com/26.04/ubuntu-26.04-desktop-amd64.iso
1.2 Doğrula — çıktı
OK olmalı, olmazsa tekrar indir:
Bash:
echo "487f87faaf547ea30e0aba4d5b53346292571256b25333a978db1692bcee9dd2 ~/ubuntu-26.04-desktop-amd64.iso" | sha256sum -c -
1.3 USB'yi tak ve bul
Bash:
lsblk -dno NAME,SIZE,MODEL,SERIAL,TRAN,HOTPLUG
USB çubuğu
TRAN=usb, HOTPLUG=1 olarak görünür. NVMe diskler nvme / 0.1.4 ISO'yu yaz
Önce USB cihazını bir değişkene koy — bölüm değil, disk (
/dev/sdb, /dev/sdb1 değil):
Bash:
U=/dev/sdX # <-- 1.3'te bulduğun USB cihazı
Yazmadan önce doğru cihaza baktığını teyit et. Çıktıda NVMe diskleri
görüyorsan dur,
$U yanlış:
Bash:
lsblk -o NAME,SIZE,MODEL,TRAN,HOTPLUG "$U"
![]()
ddyanlış cihaza yazarsa o diski anında, onay sormadan yok eder.
Yukarıdaki çıktı gerçekten USB çubuğunu gösteriyorsa devam et.
Bash:
sudo dd if=~/ubuntu-26.04-desktop-amd64.iso of="$U" bs=4M status=progress oflag=direct conv=fsync && sync
1.5 Scriptleri yanına al
dd ile yazılmış çubuğa dosya kopyalayamazsın — ISO9660 olarak salt-okunurhale gelir. Bu depoyu ayrı bir USB çubuğuna kopyala, ya da live oturumda
doğrudan klonla:
Bash:
git clone <bu-deponun-adresi> ubuntu-nosnap && cd ubuntu-nosnap
Silmeyeceğin ikinci bir diskin varsa scriptleri orada da tutabilirsin.
2. Live oturumu başlat
1. Yeniden başlat, UEFI menüsünden (çoğu anakartta
F11/F12) USB'yi seç.2. GRUB menüsünde "Try or Install Ubuntu". Açılan kurulumcuda
"Try Ubuntu" / Ubuntu'yu dene seçeneğini işaretle — Install değil.
3. Ağa bağlan (kablo veya Wi-Fi). Ağ zorunlu, tüm paketler ağdan geliyor.
4. Terminal aç (
Ctrl+Alt+T).Secure Boot açıksa kurulum yine çalışır (
shim-signed kuruluyor). Kontrol:
Bash:
mokutil --sb-state
Scriptlere ulaş. USB'den kopyaladıysan çubuğu bağla, ya da:
Bash:
git clone <bu-deponun-adresi> && cd ubuntu-nosnap
config.sh'i şimdi doldur (0. bölüm). Diske dokunan hiçbir faz o dosyaeksikken çalışmaz:
Bash:
lsblk -dno NAME,SIZE,MODEL,SERIAL
nano config.sh
3. Faz 2b — hedef diski sil ve bölümle
**Bu adım
TARGET_DISK_SERIALdiskindeki her şeyi kalıcı olarak yok
eder.** ScriptERASEyazmanı isteyecek. Başka hiçbir diske dokunmaz;
MIGRATE_DISK_SERIALve live oturumun kendi diski açıkça korunur.
Bash:
sudo bash phase2b-partition.sh
Sonunda
findmnt -R /mnt çıktısında /mnt, /mnt/home, /mnt/var/log,/mnt/boot/efi görünmeli. Görünmüyorsa devam etme.Script diski seri numarasından bulur,
ERASE onayı ister, bölümlerinhazır olmasını bekler ve yanlış diske denk gelirse durur. Elle yapmanın
hiçbir avantajı yok.
4. Faz 3 — debootstrap
Bash:
sudo bash phase3-debootstrap.sh
Bu script:
resoluteiçin debootstrap script'i yoksagutsy'ye symlink atar,- temel sistemi kurar (birkaç dakika),
/etc/fstab'ı üretir — read-only açılışın bir numaralı sebebi eksik
-
/dev /proc /sys /run bağlarını --rbind ile kurar (--bind değil:--rbind olmadan /dev/pts ve efivars chroot'a gelmez, grub-installUEFI kaydını yazamaz),
- kalan scriptleri
/mnt/root/install/ altına kopyalar.Ekrana basılan fstab'ı oku. Kök satırı şuna benzemeli:
Kod:
UUID=xxxx / btrfs rw,noatime,compress=zstd:3,ssd,discard=async,space_cache=v2,subvol=@ 0 0
5. chroot'a gir
Bash:
sudo chroot /mnt /usr/bin/env -i HOME=/root TERM="$TERM" LANG=C.UTF-8 PATH=/usr/sbin:/usr/bin:/sbin:/bin /bin/bash --login
Artık yeni sistemin içindesin. Sıradaki bütün komutlar burada çalışır.
Doğru yerde olduğunu şöyle teyit edebilirsin —
resolute yazmalı:
Bash:
cat /etc/os-release | head -3 && ls /root/install/
6. Faz 4 + 5 — çekirdek yapılandırma ve snap engeli
Ayarlar
config.sh'ten geliyor (HOSTNAME, USERNAME, TIMEZONE, LOCALE,KEYMAP). Faz 3 o dosyayı da chroot'a kopyaladı; kontrol etmek istersen:
Bash:
grep -E '^(HOSTNAME|USERNAME|TIMEZONE|LOCALE|KEYMAP)=' /root/install/config.sh
Bash:
bash /root/install/phase4-core.sh
Yaptıkları, bu sırayla:
1.
nosnap.pref'i ilk iş olarak yazar — tek bir apt install çalışmadanönce. Sonra yazarsan snapd bir Recommends üzerinden içeri sızabilir.
2. deb822 formatında APT kaynakları (
resolute, -updates, -backports, -security).3. Pin'lerin çalıştığını kanıtlar:
nosnap.pref'teki her paket içinadayın
(none) olduğunu doğrular, biri bile geçerse kurulumu durdurur.Pin listesi "kuracağımız snap şeyler" değil, arşivde snapd'ye sert
bağımlı (Depends / Pre-Depends) olan her paket — hiç kurmayacağın
olanlar dahil. Kazara
apt install thunderbird yazmayı hatırlamak zorundakalmamak için:
| Grup | Paketler |
|---|---|
| snapd ve makinesi |
snapd, snapd-seed-glue, snapd-installation-monitor || snap mağaza eklentileri |
gnome-software-plugin-snap, plasma-discover-backend-snap, fwupd-snap || sunucu/bulut metapaketleri |
ubuntu-server-minimal, ubuntu-cloud-minimal, livecd-rootfs || snap kurucu "deb"leri |
firefox, thunderbird (o=Ubuntu), chromium-browser |Liste hafızadan değil arşivden çıkarıldı; komutu
nosnap.pref'in yorumundaduruyor, sürüm atladıktan sonra tekrar çalıştırabilirsin.
Firefox ve Thunderbird pin'i sürüm dizesine değil kaynağa bağlıdır
(
Pin: release o=Ubuntu): firefox'un epoch'u 1, thunderbird'ünki 2 —sürüm bazlı tek bir pin ikisini birden zaten tutamazdı, üstelik Ubuntu
shim'i
1:1snap2 diye güncellenince de ıskalardı. Mozilla deposuOrigin: Mozilla, Mozilla Team PPA'sı Origin: LP-PPA-mozillateamolduğu için gerçek deb'ler bu engelden etkilenmez.
4.
ubuntu-minimal + ubuntu-standard (ikisi de snapd içermez — doğrulandı).5. Locale, saat dilimi, klavye, hostname,
/etc/hosts, machine-id.6. Kullanıcı (uid 1000) + sudo grubu, parola sorar.
Sonunda kullanıcı ve root parolasını soracak. İkisini de gerçekten gir.
7. Faz 6 — çekirdek, firmware, AMD sürücüleri, zram
Bash:
bash /root/install/phase6-kernel.sh
Önemli nokta:
btrfs-progs initramfs üretilmeden önce kurulur. Aksi haldeinitrd btrfs kökü bağlayamaz ve masaüstü yerine kernel panic alırsın.
CPU mikrokodu ve grafik yığını donanımdan tespit edilir (
CPU_VENDOR,GPU_VENDOR = auto). AMD ve Intel tamamen Mesa ile karşılanır:mesa-libgallium + mesa-vulkan-drivers. (mesa-va-drivers vemesa-vdpau-drivers 26.04'te artık yok — eski rehberlerdeki bu isimlerkurulumu komple durdurur.)
NVIDIA'da tescilli sürücü bilerek kurulmaz; script ne yapman gerektiğini
yazar. Nouveau ile masaüstüne çıkar, sonra
sudo ubuntu-drivers install.8. Faz 7 — GNOME 50 + Yaru, gerçek Firefox, Flatpak
Bash:
bash /root/install/phase7-desktop.sh
ubuntu-desktop-minimal paketini --no-install-recommends ile kurar. Arşivdendoğrulandı:
snapd ve snap-Firefox bu paketin Recommends listesinde,Depends değil — yani gelmezler, ama tam Ubuntu masaüstünü (dock dahil) alırsın.
Snap kütüphaneleri hakkında dürüst tablo. Tüm paket listesinin bağımlılık
kapanışını (1087 paket) arşivden hesapladım. Sonuç:
| Paket | Nereden geliyor | Ne? |
|---|---|---|
|
gir1.2-snapd-2 | ubuntu-desktop-minimal → gnome-shell-ubuntu-extensions | GLib binding ||
libsnapd-glib-2-1 | pipewire → libpipewire-0.3-modules (sert Depends) | GLib binding |İkincisi önemli:
DESKTOP_MODE="pure" yapsan bile libsnapd-glib-2-1 yinegelir, çünkü çalışan bir ses yığını olmadan sistem kullanılmaz ve PipeWire ona
sert bağımlı. Snap kütüphanesiz bir masaüstü 26.04'te mümkün değil.
Ama bunlar
snapd değil: servis yok, /snap bağlantı noktası yok, snapkurulamaz. Kapanış taramasında
snapd'ye giden tek sert yol Ubuntu'nunfirefox kabuğuydu — o da pin'lenip script tarafından açıkça reddediliyor.
"pure" modun gerçek getirisi gir1.2-snapd-2'den kurtulmak; bedeli UbuntuDock ve masaüstü simgelerinin gitmesi.
Dosyanın başındaki üç değişken
Bash:
head -60 /root/install/phase7-desktop.sh
| Değişken | Varsayılan | Diğer seçenek |
|---|---|---|
|
DESKTOP_MODE | "ubuntu" — tam Ubuntu masaüstü, dock dahil | "pure" — bileşenlerden GNOME, dock yok ||
FIREFOX_CHANNEL | "firefox-esr" — yılda bir major, arada güvenlik yaması | "firefox" — rapid release, ~4 haftada bir major ||
INSTALL_THUNDERBIRD | "flatpak" — Flathub'dan kurar | "no" — atla ||
THUNDERBIRD_REF | "org.mozilla.thunderbird_esr" — ESR hattı | "org.mozilla.Thunderbird" — normal uygulama kimliği |Firefox kanalı. İkisi de Mozilla'nın APT deposundan gelir; Ubuntu arşivinde
ikisi de yok (
firefox orada snap kurucusu, firefox-esr hiç yok). VarsayılanESR, çünkü bu kurulumun geri kalanı da kararlılık için optimize edilmiş.
Doğrulanamadı: Mozilla deposununfirefox-esrpaketi taşıyıp taşımadığı
bu script yazılırken kontrol edilemedi —packages.mozilla.orgyazan
makineden erişilemiyordu. Taşımıyorsa script hiçbir tarayıcı kurmaz,
apt policy firefox firefox-esrçıktısını ekrana basar ve seçimi sana
bırakır. İstemediğin bir sürüm kadansına sessizce düşmez.
Bu durumda tek komut yeter:
Kod:bash > sudo apt install firefox >
Firefox
Pin-Priority: 1000 ile packages.mozilla.org kaynağına sabitlenir.Ubuntu'nun
firefox paketini asla kurma.Ağ takılır da script Firefox'u atlarsa (çıktıda söyler), ilk açılıştan sonra
depo zaten hazır olduğu için tek komut yeter:
Bash:
sudo apt update && sudo apt install -y firefox && apt policy firefox
Çıktıda kaynağın
packages.mozilla.org olduğunu ve sürümün 1:1snap1olmadığını gör.
Thunderbird fazın en sonunda Flathub'dan kurulur. Ubuntu'nun
thunderbirddeb'i de
2:1snap1, yani snap kurucusu — pin onu engelliyor. En sona konmasıbilinçli: bu fazın en uzun ağ adımı, koptuğunda üstündeki her şey çoktan
bitmiş oluyor ve maliyeti ilk açılıştan sonra tek komut.
ESR ayrı bir branch değil, ayrı bir uygulama kimliği:
org.mozilla.thunderbird_esr. Bu ayrım önemli, çünkü Flatpak profil dizinikimliğe göre isimlendiriliyor — iki kimlik profil paylaşmaz.
Script kurulumdan hemen önce Flathub'ın gerçekten yayınladığı Thunderbird
ref'lerini listeliyor, kurulumdan sonra da
flatpak info ile ne geldiğinibasıyor. Kimlik değişirse aşağıdaki profil notu da kendini düzeltiyor
(değişkenden türetiliyor).
Profil yolu — Faz 9'dan önce oku. Faz 9 eski profili~/.thunderbird
altına geri getiriyor; deb sürümü oraya bakar, Flatpak sürümü bakmaz.
Varsayılan kimlikle profil şurada:
Kod:> ~/.var/app/org.mozilla.thunderbird_esr/.thunderbird >
Geri yükledikten sonra taşı:
Kod:bash > mkdir -p ~/.var/app/org.mozilla.thunderbird_esr > mv ~/.thunderbird ~/.var/app/org.mozilla.thunderbird_esr/.thunderbird >
Atlarsan Thunderbird boş hesap listesiyle açılır ve geri yükleme çalışmamış
gibi görünür. Script bu notu kendi çıktısında da basıyor.
Snapd GNOME Shell eklentileri
gnome-shell-ubuntu-extensions paketi — ubuntu-desktop-minimal'in sertbağımlılığı — snapd ile konuşmak için var olan iki Shell eklentisi taşıyor ve
Ubuntu bunları varsayılan olarak açık getiriyor:
Kod:
/usr/share/gnome-shell/extensions/[email protected]/
/usr/share/gnome-shell/extensions/[email protected]/
Bunlar snap değil, JavaScript. snapd olmadan hiçbir şey yapmıyorlar — arama
sağlayıcı hiç snap bulmuyor, izin sorucusunun soracağı bir daemon yok. Ama her
oturumda gnome-shell'e yükleniyorlar ve Extension Manager'da görünüyorlar.
Paketi kaldıramazsın: Ubuntu Dock, DING, AppIndicators ve Tiling Assistant da
onunla gider. Faz 7 bunun yerine bir gschema override yazıp ikisini kapatıyor
(
99-nosnap-extensions.gschema.override). Varsayılanı değiştiriyor, yaniistersen Extension Manager'dan yine açabilirsin.
Zaten kurulmuş bir sistemde elle kapatmak istersen:
Bash:
gnome-extensions disable [email protected]
gnome-extensions disable [email protected]
Wayland'de değişikliğin görünmesi için oturumu kapatıp açman gerekir.
9. Faz 8 — GRUB
Bash:
bash /root/install/phase8-bootloader.sh
-
rootflags=subvol=@ açıkça yazılır. GRUB bunu genelde kendi bulur; bulamazsainitramfs btrfs'in en üst seviyesini bağlar,
/sbin/init'i bulamaz, açılış ölür.- initramfs'te btrfs var mı diye kontrol eder, yoksa durur.
- GRUB iki kez kurulur: NVRAM kaydı ve
EFI/BOOT/BOOTX64.EFIyedeği.
-
GRUB_CMDLINE_LINUX_DEFAULT boş bırakılır (quiet splash yok) — ilkaçılışta bütün çekirdek mesajlarını göresin diye. Sorunsuz açıldıktan sonra
istersen
/etc/default/grub içinde "quiet splash" yapıp sudo update-grub çalıştır.-
/etc/resolv.conf symlink'i en sonda yapılır: erken yapılsaydı chrootiçindeki apt'ın DNS'i kırılırdı.
-
apt-btrfs-snapshot kurulur — Faz 2b'den beri duran @snapshotsaltyapısı ilk kez işe yarıyor.
/etc/apt/apt.conf.d/80-btrfs-snapshotiçindeki
DPkg::Pre-Invoke kancası, her dpkg çalışmasından önce @subvolume'ünün snapshot'ını alır. Bozuk bir upgrade artık yeniden kurulum
değil, bir
set-default + reboot meselesi. Kurulum sırası bilinçli:autoremove'dan sonra, çünkü APT apt.conf.d'yi başlangıçta bir kezokur — yani kanca kendi kurulumu sırasında tetiklenmez ve önceki fazlar
chroot içinde boşuna snapshot almaz.
-
--no-install-recommends kalıcı hale getirilir(
/etc/apt/apt.conf.d/99norecommends). Bütün fazlar bu bayrağı komutsatırında geçiyordu, ama o sadece o tek komut için geçerli — ilk açılıştan
sonra
sudo apt install X dediğinde Recommends geri gelirdi. Dosyaautoremove'dan sonra yazılır; daha erken yazılsa kurulum fazlarınınneyi çözdüğünü değiştirirdi. Tek seferlik istisna:
apt install --install-recommends X.10. Yeniden başlatmadan ÖNCE — denetim
Bash:
bash /root/install/verify-before-reboot.sh
Bu, geçen seferki hatanın tekrarını engellemek için yazıldı. 7 başlıkta
kontrol eder: fstab, çekirdek/initramfs, GRUB/ESP, kullanıcı ve parolalar,
servisler ve boot hedefi, snap politikası, locale/zram/DNS.
Tek bir
FAIL varsa yeniden başlatma. Script zaten sıfırdan farklı kodlaçıkar ve ne yapman gerektiğini yazar.
Hepsi
PASS ise chroot'tan çık:
Bash:
exit
Live oturumda,
/mnt içinde durmadığından emin ol ve çöz:
Bash:
cd / && sudo umount -R /mnt
target is busy derse ne tuttuğuna bak ve tekrar dene:
Bash:
sudo fuser -vm /mnt ; sudo umount -R -l /mnt
Bash:
sudo reboot
Kapanırken USB'yi çıkar.
11. İlk açılıştan sonra
Bash:
findmnt /
subvol=/@ ve rw görmelisin. ro görürsen 13. bölüme git.
Bash:
free -h && swapon --show
zram swap görünmeli (~7G).
Bash:
apt policy snapd
Candidate: (none) olmalı.
Bash:
glxinfo -B | grep -E "OpenGL renderer|OpenGL version"
Kartının adı görünmeli —
llvmpipe görüyorsan sürücü yüklenmemiş demektir.
Bash:
sudo findmnt --verify --verbose
Success, no errors or warnings detected olmalı — fstab'da hata varsa burada çıkar.Ev dizinin boş olacak, bu normal:/homeşu an kurulum diskindeki taze
@homesubvolume'ünde. Faz 9 kullanacaksan eski dosyaların hâlâ eski
diskinde duruyor.
Her şey iyiyse
quiet splash'ı açabilirsin:
Bash:
sudo sed -i 's/^GRUB_CMDLINE_LINUX_DEFAULT=""/GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"/' /etc/default/grub && sudo update-grub
Snapshot'lar ve geri dönüş
İlk
apt çalışmasından itibaren her dpkg işleminden önce otomatik snapshotalınır. Listelemek için:
Bash:
sudo apt-btrfs-snapshot list
@apt-snapshot-2026-07-28_14:03:11 gibi isimler göreceksin. Bozuk bir upgradesonrası geri dönmek:
Bash:
sudo apt-btrfs-snapshot set-default @apt-snapshot-2026-07-28_14:03:11
sudo reboot
set-default mevcut @'yı @apt-snapshot-old-root-<tarih> olarak yenidenadlandırıp seçtiğin snapshot'ı
@ yapar. GRUB'un rootflags=subvol=@ ileisme göre boot etmesi (subvolid'ye değil) bunu sorunsuz kılıyor — Faz 8'in
o satırı açıkça yazmasının ikinci faydası.
Bilmen gereken dört şey:
| | |
|---|---|
| Nerede duruyorlar | btrfs'in en üst seviyesinde
@apt-snapshot-* olarak, /.snapshots içinde değil || Ne snapshot'lanıyor | sadece
@ — /home, /var/log, /var/cache, /var/lib/flatpak ayrı subvolume'ler, geri dönüş verini geri almaz || Temizlik | snapshot alınırken otomatik: son 8 saatlik, 7 günlük, 2 haftalık (
/etc/apt/apt.conf.d/81-btrfs-snapshot-retain) || Dokunma |
APT::Snapshots::MaxAge ayarlama. Temizliği atime tabanlı yola çevirir, kök noatime bağlı olduğu için hata verir, üstelik yukarıdaki otomatik temizliği de kapatır |Not: paketin içindeki/etc/cron.weekly/apt-btrfs-snapshotyorumu ayar
anahtarınıAPT::Snapshots::Retain::*(çoğul) diye belgeliyor. Kodun
gerçekte okuduğuAPT::Snapshot::Retain::*(tekil) — çoğul yazım sessizce
hiçbir şey yapmaz. Repodaki dosya doğru olanı kullanıyor.
Snapshot'tan boot menüsü üzerinden dönmek istersen
grub-btrfs gerekiyor;Ubuntu arşivinde yok, elle kurulması lazım. Bu repo onu kapsamıyor.
12. Faz 9 — /home'u ikinci diske taşı (isteğe bağlı)
Bu faz isteğe bağlı ve yalnızca eski bir kurulumun diskini yeni
/homeyapmak istiyorsan gerekli. Tek diskin varsa
MIGRATE_DISK_SERIAL'i boş bırakve bu bölümü atla.
Sistem düzgün açıldıktan sonra. Önce eski dosyaları al:
Bash:
sudo bash /root/install/phase9-migrate-home.sh restore
İstediklerini kopyala (script komutu yazdırıyor).
.config ve .cache'ikomple kopyalama — Debian GNOME ayarlarını GNOME 50'ye taşımak masaüstünü
bozmanın klasik yoludur; ihtiyacın olan uygulamaların klasörlerini tek tek al.
Elindekilerden emin olduktan sonra masaüstünden çık:
Bash:
sudo systemctl isolate multi-user.target
Açılan metin konsoluna
rootolarak giriş yap, normal kullanıcınla
değil. Kendi kullanıcınla girersen ev dizinin/homeüzerinde açık kalır,
script de "processes are using /home" deyip haklı olarak durur. Root
parolasını Faz 4'te belirlemiştin.
Sonra:
Bash:
bash /root/install/phase9-migrate-home.sh migrate
Eski disk silinir,
/home oraya taşınır, fstab güncellenir (yedeği/etc/fstab.bak). Kopyalama sayıları tutmazsa fstab'a dokunmaz.Araç kontrolü.migrateilk iş olarak ihtiyaç duyduğu bütün komutları
kontrol eder ve eksik varsa hiçbir şeye dokunmadan durur, kurulacak
paketleri de yazar:
Kod:> FATAL: missing command(s): sgdisk > Nothing has been touched. Install and re-run: > sudo apt install gdisk >
Bu kontrol sonradan eklendi ve sebebi şu: silme sırasıwipefs -asonra
sgdisk.sgdiskyoksa script ERASE yazdıktan sonra, bölüm tablosu
imzaları çoktan silinmişken patlıyordu. Artık ERASE sorulmadan önce
duruyor.
gdiskFaz 4'te kuruluyor; bu satırdan önce kurulmuş bir sistemde yoksa
sudo apt install gdiskyeterli.
Bash:
sudo reboot
Bash:
findmnt /home
13. Sorun giderme
"Sistem read-only açıldı" — geçen seferki hata
Sebep neredeyse her zaman şunlardan biridir:
1.
/etc/fstab'da kök satırı yok. systemd kökü rw yapmak için fstab'abakar; satır yoksa initramfs'in bıraktığı
ro halde kalır. En sık sebep budur.2. Kök satırında
ro yazıyor.3. btrfs hata verip kendini
ro'ya düşürmüş (disk/kablo sorunu).Adım 1 — önce yazılabilir yap. Bunu yapmadan
/etc/fstab'ı zatendüzenleyemezsin:
Bash:
sudo mount -o remount,rw /
Adım 2 — kök satırı var mı bak:
Bash:
awk '$1 !~ /^#/ && $2=="/" {print}' /etc/fstab
Adım 3 — çıktı boşsa satırı ekle:
Bash:
echo "UUID=$(findmnt -no UUID /) / btrfs rw,noatime,compress=zstd:3,ssd,discard=async,space_cache=v2,subvol=@ 0 0" | sudo tee -a /etc/fstab
Ekledikten sonra doğrula ve yeniden başlat:
Bash:
sudo findmnt --verify --verbose && sudo reboot
btrfs hatası mı diye bak:
Bash:
sudo dmesg | grep -i btrfs | tail -20
forced readonly geçiyorsa dosya sistemi bozulmuş demektir; btrfs checkgerekir, fstab'ın suçu yoktur.
debootstrap "Retrieving InRelease" satırında donuyor
Bu senin ağında gerçekten oluyor — test ederken bizzat karşılaştım.
wgetIPv6 üzerinden
archive.ubuntu.com'a bağlanmaya çalışıp sonsuza kadarbekliyor;
curl'ün aksine IPv4'e düşmüyor. curl çalışıyor olması bir şeykanıtlamaz, debootstrap
wget kullanır.phase3-debootstrap.sh bunu kendisi tespit edip düzeltiyor. Elle yapmangerekirse:
Bash:
printf 'inet4_only = on\ntimeout = 30\ntries = 5\n' | sudo tee -a /etc/wgetrc
Doğrula — anında dönmeli:
Bash:
time wget -q -O /dev/null http://archive.ubuntu.com/ubuntu/dists/resolute/InRelease && echo OK
Kurulum yarıda kaldıysa üstüne devam etme:
/mnt/debootstrap klasörü varsasistem yarım demektir.
phase2b'yi baştan çalıştır (diski yeniden biçimlendirir).phase3 bunu zaten kontrol edip yarım kurulumun üstüne yazmayı reddediyor.Hiç açılmıyor / GRUB gelmiyor
Live USB'den aç, sonra:
Bölümlerin etiketleri var, o yüzden cihaz adı tahmin etmene gerek yok:
Bash:
sudo mount -o subvol=@ /dev/disk/by-label/ubuntu-root /mnt && sudo mount /dev/disk/by-label/EFI /mnt/boot/efi
Bash:
for f in dev proc sys run; do sudo mount --rbind /$f /mnt/$f && sudo mount --make-rslave /mnt/$f; done
Bash:
sudo chroot /mnt /bin/bash
İçeride:
Bash:
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=Ubuntu --recheck && grub-install --target=x86_64-efi --efi-directory=/boot/efi --removable --recheck && update-grub
GRUB var, çekirdek panic ("cannot mount root")
rootflags=subvol=@ eksiktir. GRUB menüsünde e ile satırı düzenle, linuxsatırının sonuna ekle,
Ctrl+X. Açıldıktan sonra kalıcı yap:
Bash:
sudo sed -i 's/^GRUB_CMDLINE_LINUX=.*/GRUB_CMDLINE_LINUX="rootflags=subvol=@"/' /etc/default/grub && sudo update-grub
Metin konsolu geliyor, masaüstü gelmiyor
Bash:
systemctl status gdm3
systemctl get-default
Bash:
sudo systemctl enable gdm3 && sudo systemctl set-default graphical.target
Ağ yok
Bash:
systemctl status NetworkManager
nmcli device status
Bash:
sudo systemctl enable --now NetworkManager
DNS çalışmıyorsa:
Bash:
ls -l /etc/resolv.conf && systemctl status systemd-resolved
apt update && apt full-upgrade snap'i geri getirir mi?
Hayır.
nosnap.pref hiçbir pakete ait olmayan yerel bir dosyadır; APT onugüncelleme sırasında ne siler ne üzerine yazar.
Pin-Priority: -1 "asla kurma,bağımlılık olarak bile" demektir. İleride bir paket
Depends: snapd halinegelirse APT snapd'yi kurmaz, o paketi geri tutar (
kept back) — yani en kötüsenaryo "snap geri geldi" değil, "bir paket güncellenmedi".
Upgrade çıktısında
libsnapd-glib-2-1 ve gir1.2-snapd-2 güncellenirkengörürsen panik yapma: bunlar snapd değil, sadece GLib binding kütüphaneleri
(
libpipewire-0.3-modules bunlara sert bağımlı, 26.04'te kaçınılmaz — 8. bölümebak). Servis yok,
/snap mount yok, snap kurulamaz.Upgrade sonrası denetim:
Bash:
apt policy snapd # Candidate: (none)
dpkg -l snapd 2>/dev/null # boş
ls -d /snap # olmamalı
apt-mark showhold # snapd görünmeli
apt policy firefox # kaynak packages.mozilla.org olmalı
apt policy thunderbird # Ubuntu'nun 2:1snap1'i OLMAMALI
sudo apt-btrfs-snapshot list # upgrade öncesi snapshot alınmış olmalı
Arşiv değişmiş mi diye bakmak istersen — snapd'ye sert bağımlı olup pin'de
adı geçmeyen bir paket var mı:
Bash:
apt-cache rdepends snapd \
| awk '/Reverse Depends:/{f=1;next} f{gsub(/^[ |]+/,""); print $1}' | sort -u \
| while read -r p; do
[ "$(apt-cache policy "$p" | awk '/Candidate:/{print $2}')" = "(none)" ] || echo "$p"
done
Çıktı boşsa her şey yerinde. Bir isim çıkarsa
nosnap.pref'e ekle —snapd zaten -1'de olduğu için o paket kurulamaz, ama eklemek anlaşılmaz
bir bağımlılık hatası yerine temiz bir ret verir.
kept back uyarısı görürsen sebebini apt install -s <paket> ile bul.Asıl dikkat edilecek yer normal upgrade değil, sürüm yükseltmesidir
(
do-release-upgrade): ubuntu-release-upgrader üçüncü parti depoları (Mozilladahil) devre dışı bırakır. Sürüm atladıktan sonra yukarıdaki beş komutu tekrar
çalıştır ve
/etc/apt/sources.list.d/mozilla.sources dosyasının hâlâ etkinolduğunu doğrula.
Thunderbird kurmak istiyorum
sudo apt install thunderbird çalışmaz ve çalışmaması doğru: Ubuntu'nunthunderbird paketi 2:1snap1-0ubuntu5, Pre-Depends: snapd taşıyan bir snapkurucusu.
nosnap.pref onu o=Ubuntu ile engelliyor.Faz 7
INSTALL_THUNDERBIRD="flatpak" ile onu zaten kurmuş olmalı. Kurmadıysa(ağ koptuysa çıktıda söyler):
Bash:
flatpak install flathub org.mozilla.thunderbird_esr
ya da Mozilla'nın APT deposunda
thunderbird paketi varsa (depo Faz 7'deeklendi,
o=Ubuntu pin'i onu etkilemez):
Bash:
apt policy thunderbird # kaynak packages.mozilla.org mu?
sudo apt install thunderbird
Aynısı Chromium için:
chromium-browser engelli, Flathub'danorg.chromium.Chromium kur.Faz 9 eski
~/.thunderbird profilini geri getiriyor; Flatpak sürümü profili~/.var/app/<uygulama-kimliği>/.thunderbird altında arar (varsayılan kimlikle~/.var/app/org.mozilla.thunderbird_esr/), deb sürümü ~/.thunderbirdaltında. 8. bölümdeki taşıma komutuna bak.
Bir şekilde snapd geldi
Bash:
sudo apt purge -y snapd && sudo rm -rf /snap /var/snap /var/lib/snapd && sudo apt-mark hold snapd
Sonra
/etc/apt/preferences.d/nosnap.pref dosyasının durduğunu doğrula.14. Dosyalar
| Dosya | Nerede çalışır |
|---|---|
|
config.sh | Önce bunu doldur — bütün fazlar buradan okur ||
phase2b-partition.sh | Live USB ||
phase3-debootstrap.sh | Live USB ||
phase4-core.sh | chroot ||
phase6-kernel.sh | chroot ||
phase7-desktop.sh | chroot ||
phase8-bootloader.sh | chroot ||
verify-before-reboot.sh | chroot — yeniden başlatmadan önce zorunlu ||
phase9-migrate-home.sh | Açılmış Ubuntu (isteğe bağlı) ||
README.md | Bu dosya ||
INSTALL_NOTES.md | Karar ve donanım özeti (kısa referans kartı) |Faz 3, bu klasörün tamamını
/mnt/root/install/ altına kopyalar; chroot'agirdikten sonra rehber de yanında olur.
15. Kurulum sonrası — ayarlar, eksikler, yapılmaması gerekenler
Debootstrap kurulumu bittiğinde elinde çalışan ama çıplak bir sistem var.
Ubuntu'nun installer'ının senin yerine yaptığı bazı şeyler burada yapılmadı;
--no-install-recommends bilinçli bir tercihti ama bedeli var. Bu bölüm obedeli ve bu donanıma özel ayarları listeliyor.
15.1 Eksik olanlar — muhtemelen isteyeceklerin
--no-install-recommends yüzünden ubuntu-standard'ın Recommends listesihiç kurulmadı. İçinden dördü gerçekten önemli:
| Paket | Neden |
|---|---|
|
apparmor | Kurulu değil. Ubuntu'nun varsayılan zorunlu erişim denetimi. Paketlerin AppArmor profilleri diskte duruyor ama uygulayacak kimse yok. Masaüstünde ilk sıraya koyardım. ||
ufw | Güvenlik duvarı. NAT arkasındaysan hayati değil, yine de bir satır. ||
update-manager-core | Bu olmadan do-release-upgrade komutu yok. Sürüm atlamayı planlıyorsan gerekli. ||
command-not-found | "komut bulunamadı, şu paketi kur" önerisi. Konfor. |
Bash:
sudo apt install apparmor ufw update-manager-core command-not-found
sudo systemctl enable --now apparmor
sudo ufw enable
Güvenlik güncellemelerinin otomatik inmesini istersen (masaüstünde mantıklı;
her apt işleminden önce zaten snapshot alınıyor):
Bash:
sudo apt install unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades
15.2 Bu kuruluma özel — btrfs bakımı
Kök btrfs ve tek disk. İki ayar:
Bash:
sudo apt install btrfsmaintenance
Haftalık
scrub (sessiz veri bozulmasını yakalar, tek diskte tespit ederama onaramaz — yine de bozulmayı fark etmen değerli) ve periyodik
balancezamanlayıcıları kurar. Elle yapmak istersen ayda bir:
Bash:
sudo btrfs scrub start / && sudo btrfs scrub status /
sudo btrfs filesystem usage /
Bilinçli tekrar: fstab'dadiscard=asyncvar vefstrim.timer
etkin. İkisi aynı işi yapıyor. Zararı yok, ama birini seçmek istersen genel
tavsiyediscard=async'i bırakıpsudo systemctl disable fstrim.timer
demek. Bu repo ikisini de bırakıyor çünkü hangisinin bu SSD'de daha iyi
davrandığı ölçmeden bilinmez.
VM imajı, veritabanı ya da büyük torrent dosyası tutacaksan o dizinde CoW'u
kapat — btrfs'te bu dosyalar aksi halde parçalanır:
Bash:
mkdir -p ~/VMs && chattr +C ~/VMs
chattr +C boş dizinde çalışır; içi doluyken uygulamak mevcut dosyalarıetkilemez.
/var/log ayrı subvolume'de ama journald varsayılan olarak dosya sisteminin%10'una kadar büyüyebilir. Sınırlamak istersen:
Bash:
echo -e "[Journal]\nSystemMaxUse=500M" | sudo tee /etc/systemd/journald.conf.d/size.conf
sudo systemctl restart systemd-journald
15.3 Grafik ve zram doğrulaması
AMD ve Intel'de sürücü tarafında yapılacak bir şey yok — Mesa 26 kutudan
çalışıyor. Doğrula:
Bash:
glxinfo -B | grep -E "OpenGL renderer|OpenGL version"
vulkaninfo --summary | head -20
Masaüstü makinesindeysen güç profilini sabitlemek mantıklı (dizüstünde
balanced bırak):
Bash:
powerprofilesctl set performance
powerprofilesctl get
zram zaten ayarlı (
vm.swappiness=180, page-cluster=0 — sıkıştırılmış RAMswap'ı için doğru değerler, diske swap'ın tersi; boyut RAM'in yarısı, 8 GiB
tavanla). Baskı altında ne olduğunu görmek istersen:
Bash:
swapon --show && zramctl
cat /proc/pressure/memory
oomctl | head -20
systemd-oomd etkin ve agresif davranabilir. Bir uygulaman durup dururkenkapanıyorsa suçlu odur:
journalctl -u systemd-oomd -b.VRR monitörün varsa önce Ayarlar → Ekranlar'a bak; orada yoksa GNOME'un
deneysel bayrağı:
Bash:
gsettings set org.gnome.mutter experimental-features "['variable-refresh-rate', 'scale-monitor-framebuffer']"
(İkincisi kesirli ölçekleme içindir; ihtiyacın yoksa listeden çıkar.)
15.4 Yazılım — snap'siz dünyada nereden ne kurulur
| İhtiyaç | Yol |
|---|---|
| Firefox | Zaten kurulu, Mozilla APT deposundan — varsayılan
firefox-esr. apt policy firefox firefox-esr ile kaynağı ve kanalı doğrula || Thunderbird | Faz 7'de Flathub'dan kurulu. Profil yolu için 8. bölümdeki nota bak |
| Chromium | Flathub
org.chromium.Chromium || Steam / oyun | Flathub
com.valvesoftware.Steam || GNOME eklentileri | Extension Manager (kurulu). Tarayıcıdan kurmak istersen
sudo apt install gnome-browser-connector || Mağaza | GNOME Software'de Flathub çalışıyor;
gnome-software-plugin-flatpak kurulu, snap eklentisi kasıtlı olarak yok |İlk açılışta Flathub metadata'sı henüz inmemiş olabilir:
Bash:
flatpak update --appstream
15.5 Ubuntu Pro
Attach edeceksen otomatik servis açmayı kapat —
livepatch snap gerektiriyorve pin yüzünden hata verir:
Bash:
sudo pro attach <TOKEN> --no-auto-enable
sudo pro enable esm-infra esm-apps
livepatch'i hiç açma. Taze bir 26.04'te esm-infra 2031'e kadar boş durur;bugünkü gerçek faydası
esm-apps (universe paketleri için güvenlik desteği).15.6 Yapma — bu sistemi bozan şeyler
| Yapma | Neden |
|---|---|
|
apt install firefox / thunderbird / chromium-browser | Ubuntu arşivindeki üçü de Pre-Depends: snapd taşıyan snap kurucusu. Pin reddedecek ||
pro enable livepatch | canonical-livepatch sadece snap olarak var, apt-get install snapd deneyip hata verir ||
APT::Snapshots::MaxAge ayarlamak | Kök noatime bağlı; atime tabanlı temizlik hata verir ve otomatik temizliği kapatır ||
libsnapd-glib-2-1 / gir1.2-snapd-2 kaldırmak | Bunlar snapd değil, GLib binding'i. libpipewire-0.3-modules sert bağımlı — kaldırırsan sesi öldürürsün ||
/etc/apt/preferences.d/nosnap.pref silmek | Tek koruma katmanı bu ||
EFI/BOOT/BOOTX64.EFI silmek | Anakart NVRAM girdisini unutursa açılışı kurtaran dosya || Rastgele PPA eklemek |
apt policy snapd çıktısını her PPA'dan sonra kontrol et |15.7 Aylık rutin
Bash:
sudo apt update && sudo apt full-upgrade # öncesinde otomatik snapshot alınır
sudo apt-btrfs-snapshot list # snapshot gerçekten alınmış mı
apt policy snapd # Candidate: (none)
sudo btrfs scrub start / # btrfsmaintenance kurduysan gereksiz
flatpak update
Bir upgrade sistemi bozarsa 11. bölümdeki geri dönüş adımları.
Son düzenleme: