Arch Linux kurulumu sonrası adımlar

Esenlikler

Uzun zamandır böyle bir rehber yazmak aklımdaydı. Linux hakkında Türkçe kaynakların artmasına katkı sağlamak istiyordum ama bir türlü fırsat bulamamıştım. Son zamanlarda forumda rehberlerin çoğalmasıyla birlikte, benim de katkım olsun diyerek bu rehberi yazmaya karar verdim. İlk rehberim olduğu için biraz kötü olabilir, mazur görün. Amacım, yeni Arch Linux kullanıcılarına kurulum sonrasında yapmaları gerekenleri anlaşılır bir şekilde aktarmak. Tabii, böyle söyleyince biraz emrivaki gibi oldu, ama amacım sadece bildiklerimi paylaşmak :smile:

Rehbere geçmeden önce, Arch Linux’u BTRFS dosya sistemiyle kurmanın daha iyi olacağını belirtmek istiyorum. Eğer henüz kuruluma başlamadıysanız, kurulum sırasında BTRFS dosya sistemini seçmeyi unutmayın.

Neden BTRFS?

BTRFS seçmemizin nedeni Ext4 gibi eski sistemlere kıyasla daha modern olması ve özellikle snapshot (anlık görüntü) alma özelliği. Bu sayede sistemde herhangi bir değişiklikten önce anlık görüntü alarak gerekirse rollback yapabilirsiniz. Zaten yedekleme konusuna geldiğimizde BTRFS’ten bol bol bahsedeceğiz.

1. Opsiyonel Repolar, AUR ve Chaotic AUR

Arch Linux’ta AUR, olmazsa olmazdır. Hatta benim Arch Linux’a geçme sebeplerimden biri de AUR (Arch User Repository). Adından da anlaşılacağı üzere AUR, topluluk tarafından paylaşılan paketleri barındırır. Ancak AUR’dan indirilen bazı paketler sisteminizde otomatik olarak derlenir, ki bu işlem bazen uzun sürebilir. İşte burada devreye Chaotic AUR giriyor. Chaotic AUR, AUR’daki paketlerin önceden derlenmiş versiyonlarını barındırır; böylece derlenmemiş paketleri doğrudan derlenmiş şekilde indirebilirsiniz. Bununla birlikte, opsiyonel repoları da etkinleştirmenizi öneriyorum; bazen sorun çıkarsalar da (çözümlerini az sonra anlatacağım) bazen ihtiyaç duyulabiliyor.

I. multilib reposunu etkinleştirmek

multilib reposunu etkinleştirmek için /etc/pacman.conf içerisindeki şu satırları yorum satırı olmaktan çıkarın:

[multilib]
Include = /etc/pacman.d/mirrorlist

Yani yapmanız gereken bu satırların başında eğer # varsa onları silmek. Ardından sistemi güncelleyin; sudo pacman -Syu

II. yay AUR yardımcısını kurmak

AUR’dan bir paket indirmek için bir AUR yardımcısına ihtiyacınız var. Bu yüzden AUR’dan bir paket indirmek için önce yay kurmanız lazım:

sudo pacman -S --needed base-devel git
git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -si

Bu işlemlerden sonra artık AUR’dan bir paket indirebilirsiniz. İşte temel yay komutları:

1. Paket arama: AUR’da bir paket aramak için: yay -Ss paket-adi
2. Paket kurmak: AUR’dan bir paket kurmak için: yay -S paket-adi
3. Paket kaldırma: AUR’dan yüklediğiniz bir paketi kaldırmak için: yay -R paket-adi
4. Bağımlılıklarıyla birlikte kaldırmak: AUR’dan yüklediğiniz bir paketi bağımlılıklarıyla beraber kaldırmak için: yay -Rns paket-adi (ayrıca o paketin config dosyalarını da silmek istiyorsanız -Rnsc kullanabilirsiniz)
5. Paket detaylarını görüntüleme: Bir paketin detaylarını görüntülemek için: yay -Si paket-adi

III. Chaotic AUR repolarını etkinleştirmek

Eğer sisteminiz iyiyse, Chaotic AUR’u etkinleştirmeniz şart değil. Çünkü zaten sisteminiz iyi olduğu için paketler hızlı bir şekilde derlenecektir. Bunu söylememin nedeni, Chaotic AUR repolarının hızının bazen =<500 KB/s kadar düşebilmesi. Bu benim şahsi deneyimim, belki de benim bir hatam vardır, fakat forumlarda buna benzer sorunları yaşayan birçok kişi olduğu için bunun bir ‘skill issue’ olduğunu düşünmüyorum. Tabii, bu genellikle sık karşılaşılan bir durum değil; eğer güncelleme geldiği anda güncelleme yapmıyorsanız (ki öyle olmasını da önermem zaten, eğer paketlerde bir hata varsa bundan etkilenirsiniz çünkü.), böyle bir sorunla pek karşılaşmazsınız. Yine de Chaotic AUR’u etkinleştirmek için:

sudo pacman-key --recv-key 3056513887B78AEB --keyserver keyserver.ubuntu.com
sudo pacman-key --lsign-key 3056513887B78AEB
sudo pacman -U 'https://cdn-mirror.chaotic.cx/chaotic-aur/chaotic-keyring.pkg.tar.zst'
sudo pacman -U 'https://cdn-mirror.chaotic.cx/chaotic-aur/chaotic-mirrorlist.pkg.tar.zst'

Ardından /etc/pacman.conf dosyasına şu satırları ekleyin:

[chaotic-aur]
Include = /etc/pacman.d/chaotic-mirrorlist

bunu da yaptıktan sonra dosyayı kaydedip sudo pacman -Syu komutuyla repoları güncelleyebilirsiniz.

2. Snapper ve yedekleme

Arch kurulumu sonrası, muhtemelen en önemli kısım burasıdır. Son zamanlarda daha az yaşansa da, bazen güncelleme ile paketler bozulabiliyor; hatta güncelleme sonrası sisteminiz açılmayacak hale bile gelebiliyor. İşte tam bu noktada yukarıda bahsettiğim BTRFS’in önemi devreye giriyor.

I. Snapper kurulumu

Yedek almak için kullanacağımız araç snapper. Snapper, oldukça detaylı bir araç, ancak size kısaca nasıl kullanıldığını özetleyeceğim. Öncelikle nasıl kuracağımızdan başlayalım. Snapper’i kurmak için:

sudo pacman -S snapper

II. Configleri oluşturmak

BTRFS’de yedekler root ve home olarak ayrı ayrı dizinlerde bulunur. Rehberin daha fazla uzamaması için bunu detaylıca anlatmayacağım, fakat izlemediyseniz, Yusuf abinin “BTRFS ile saniyeler içerisinde yedek alın” başlıklı videosunu izlemenizi öneriyorum.

1. Root configini oluşturmak için:

sudo snapper -c root create-config /

2. Home configini oluşturmak için:

sudo snapper -c home create-config /home

III. Temel snapper komutları

Az sonra anlatacağım paketler sayesinde, sizin manuel olarak snapshot oluşturmanıza pek gerek kalmayacak. Fakat yine de bu komutları bilmeniz gerektiğini düşünüyorum.

1. Snapshot alma: Snapshot almak için sudo snapper -c config_adi create komutunu kullanabilirsiniz. Opsiyonel olarak açıklama belirtmek için --description="" ekleyebilirsiniz.

Örnek: sudo snapper -c root create --description="ilk root snapshotu"
Bu komut / dizininin anlık snapshotunu almanızı sağlar. ( / dizini = tüm sistem de diyebiliriz. Dolayısıyla sisteminizin anlık snapshotunu almanızı sağlar )

2. Snapshot’a dönme: Herhangi bir snapshot’a dönmek için 2 seçeneğiniz var. Eğer bir root snapshotuna geri alma işlemi uygulayacaksanız, snapper-rollback paketini kullanmanız gerekiyor, bunun için, Arch tabanlı dağıtımlarda snapshot rollback rehberini okuyup oradaki adımları takip edin.

Fakat eğer root olmayan bir snapshota dönmek istiyorsanız undochange yöntemini kullanabilirsiniz.

sudo snapper -c home undochange ID..ID

Bu komut 2 farklı snapshot arasındaki değişiklikleri geri alacaktır. Zaten ID’yi nasıl bulacağınızı üstte anlattığım için bunu tekrar etmeye lüzum yok. Aynı yöntemi burada da kullanacaksınız.

3. Snapshot silme: Herhangi bir sebepten olabilir, snapshot silmek istiyorsanız sudo snapper -c config_adi rm ID kullanabilirsiniz.
Örnek: 877 ID’li snapshotu silmek için: sudo snapper -c root rm 877 komutunu kullanmam gerekiyor. Fakat eğer 870 ile 877 arasındaki tüm snapshotları silmek istiyorsam, sudo snapper -c root rm 870-877 komutunu kullanmam gerek.

IV. Opsiyonel paketler

grub-btrfs: Bu paket, BTRFS snapshot’larına GRUB menüsünden erişebilmenizi sağlar. Böylece, eğer sistemi açamıyorsanız bile GRUB menüsünden sisteminizi bir snapshota boot edebilirsiniz.

snap-pac: Bu paket, paket yöneticiniz ile bir paket yüklemeden, silmeden ya da güncellemeden önce otomatik olarak snapshot alır. Böylece sisteminizi bozabilecek bir güncellemeden önce sizin yerinize bir snapshot oluşturmuş olur.

snap-pac-grub (AUR): Eğer grub-btrfs kullanıyorsanız, her yeni snapshot oluşturulduğunda bu snapshot’un GRUB menüsünde görünmesi için GRUB’ın grub-mkconfig ile yeniden oluşturulması gerekiyor. Ancak, snap-pac ile yedek alındıktan sonra, bu paket sayesinde snapshot’lar otomatik olarak GRUB’a eklenir.

3. Swap alanı oluşturma

Eğer swap alanı oluşturmazsanız, RAM dolduğunda sistem takılabilir ve yeniden başlatmanız gerekebilir. Özellikle 16 GB’den az RAM’e sahipseniz, swap alanı oluşturmanız önemlidir. Kısacası, swap, Windows’taki pagefile.sys işlevini görür; RAM’de birikmiş ve bir süredir kullanılmayan verileri diske yazarak RAM’in yükünü azaltır. Şimdi swap alanını nasıl oluşturacağımıza geçelim.

I. BTRFS kullanıcıları için Swap alanı oluşturma

Eğer BTRFS kullanıyorsanız swap alanını oluşturmadan önce snapshot’u alınmamış bir subvolume oluşturun

btrfs subvolume create /swap

ardından swap alanını oluşturabilirsiniz

btrfs filesystem mkswapfile --size 4g --uuid clear /swap/swapfile

Burada 4G, 4GB ediyor. Yani eğer daha fazla ya da daha az alan ayırmak istiyorsanız, sayıyı değiştirebilirsiniz. Swap alanını oluşturduktan sonra, sistemin açılışında otomatik olarak swap alanını etkinleştirmek gerekir. Bunun için /etc/fstab dosyasını düzenleyeceğiz.

sudo nano /etc/fstab

Şunu ekleyin:

/swap/swapfile none swap defaults 0 0

Ardından CTRL+X ile dosyayı kaydedin. Bunu yapsanız bile, yeniden başlatmadan swap alanı aktif olmayacaktır. Bu yüzden sudo swapon /swap/swapfile komutuyla swap alanını etkinleştirin. Böylece yeniden başlatmanıza gerek kalmaz.

II. Diğer dosya sistemlerinde swap alanı oluşturma

Eğer EXT4 ya da diğer dosya sistemlerini kullanıyorsanız swap alanını şu komutlarla oluşturmanız gerek:

sudo mkswap -U clear --size 4G --file /swapfile

Ardından, az önce size anlattığım gibi swap dosyasını aktif edip, fstab’a eklemeniz gerek.

4. Ekran kartı sürücüleri (Sadece NVIDIA kullanıcıları için)

Öncelikle bütün bu işlemlerden önce bir root yedeği almanızı öneriyorum. Nasıl alacağımızı üstte anlatmıştık zaten.

Ekran kartınız çok yeni değilse, varsayılan olarak kurulu gelen nouveau sürücüsü işinizi görebilir. Ancak, özellikle RTX serisi gibi daha yeni nesil bir NVIDIA ekran kartınız varsa kapalı kaynak sürücüleri kullanmanızı öneriyorum. Nasıl kuracağınızı anlatmadan önce şuna değinmek istiyorum, Bazı kullanıcılar ekran kartı sürücülerini NVIDIA’nın sitesinden kuruyorlar. Bu asla yapmamanız gereken bir şey dostlar. Çünkü böyle yaptığınızda ekran kartını manuel olarak güncellemeniz gerekecek. Ayrıca repolardan indirdiğinizden farklı olarak bazı config dosyalarını da ellemeniz gerekebilir. Bu yüzden, asla NVIDIA’nın sitesinden ekran kartı sürücülerini kurmayın. Paket yöneticisi hem daha kolay, hem de daha sağlıklı bir yöntem. Şimdi nasıl kuracağımıza geçelim.

I. Ekran kartınızın hangi aileden olduğunu öğrenmek

Öncelikle ekran kartınızın hangi seriden olduğuna bakmanız gerek. Bunun için şu komutu kullanın:

lspci -k | grep -A 2 -E "(VGA|3D)"

Ardından ekran kartınızı bu listeden bulun ve hangi aileye ait olduğunu öğrenin. Ardından aşağıdaki tabloya göre size uygun sürücüyü indireceksiniz:

II. Uygun sürücüyü kurmak

GPU ailesi Sürücü Durum
Turing (NV160/TUXXX) ve sonrası linux kerneli için nvidia-open, herhangi bir kernel için nvidia-dkms Önerilir, Güncel, destekleniyor
Maxwell (NV110/GMXXX) ila Ada Lovelace (NV190/ADXXX) linux için nvidia, herhangi bir kernel için nvidia-dkms, linux-lts için nvidia-lts Güncel, destekleniyor
Kepler (NVE0/GKXXX) nvidia-470xx-dkmsAUR Eski, desteklenmiyor
Fermi (NVC0/GF1XX) nvidia-390xx-dkmsAUR Eski, desteklenmiyor
Tesla (NV50/G80-90-GT2XX) nvidia-340xx-dkmsAUR Eski, desteklenmiyor
Curie (NV40/G70) ve öncesi Artık paketlenmiyor Eski, desteklenmiyor

Mesela benim ekran kartım Maxwell serisinden yeni olduğu için nvidia sürücüsünü, OpenGL için de nvidia-utils paketini kurmam gerekiyor. Fakat eğer siz linux-zen gibi farklı bir kernel kullanıyorsanız, nvidia-dkms sürücüsünü kurmanız gerekir.

yay -S nvidia nvidia-utils lib32-nvidia-utils nvidia-settings 

Ayrıca, OpenGL desteği için kuracağınız paketin yanına ek olarak Multilib deposundan lib32 paketini de kurmanız gerekiyor. Yani nvidia-utils ile birlikte lib32-nvidia-utils paketini de kuracaksınız. Tüm sürücülerde durum aynı, başına lib32- ekleyeceksiniz sadece. Tabloya sığmadığı için koyamadım :confused:

III. DRM ayarını etkinleştirmek

NVIDIA otomatik KMS geç yüklemeyi desteklemediğinden, Wayland kompozitörlerinin düzgün çalışması için DRM (Direct Rendering Manager) çekirdek modu ayarının etkinleştirilmesi gerekir.

nvidia-utils 560.35.03-5 sürümünden itibaren DRM varsayılan olarak etkin durumdadır.[1] Daha eski sürücüler için nvidia_drm modülü için modeset=1 çekirdek modülü parametresini ayarlayın.
Arch Wiki

DRM’in etkin olup olmadığını öğrenmek için aşağıdaki komutu kullanabilirsiniz:

sudo cat /sys/module/nvidia_drm/parameters/modeset

Eğer bu komut, sonuç olarak Y döndürüyorsa, DRM etkin demektir. Eğer DRM etkin değilse aşağıdaki gibi modeset=1 çekirdek modülü parametresini GRUB’a ekleyin:

sudo nano /etc/default/grub

ardından GRUB_CMDLINE_LINUX_DEFAULT ile başlayan satırı bulun:

GRUB_DEFAULT=0
GRUB_TIMEOUT='5'
GRUB_CMDLINE_LINUX_DEFAULT="GRUB_CMDLINE_LINUX_DEFAULT='nowatchdog nvme_load=YES loglevel=3'"
GRUB_CMDLINE_LINUX="""

Ardından iki tırnak içerisine nvidia_drm.modeset=1 parametresini ekleyin. Eğer 6.11 ve daha yeni bir kernel sürümü kullanıyorsanız, aynı şekilde nvidia_drm.fbdev=1 paramteresini de eklemeniz gerekiyor.

Örneğin 6.10 ve ya daha eski bir kernel kullanıyorsanız:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nvidia-drm.modeset=1"

6.11 ve ya daha yeni bir kernel kullanıyorsanız:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nvidia-drm.modeset=1 nvidia-drm.fbdev=1"

IV. Erken yükleme

Temel işlevsellik için sadece kernel parametresini eklemek yeterli olacaktır. Mümkün olan en erken zamanda yüklenmesini sağlamak istiyorsanız veya başlangıç sorunları fark ediyorsanız (nvidia çekirdek modülünün görüntü yöneticisinden sonra yüklenmesi gibi) initramfs’ye nvidia, nvidia_modeset, nvidia_uvm ve nvidia_drm ekleyebilirsiniz.

mkinitcpio kullanıyorsanız

Önce mkinitcpio.conf dosyasını düzenleyin:

sudo nano /etc/mkinitcpio.conf

ardından MODULES= ile başlayan satırı bulun ve parantez içerisine üstteki parametreleri ekleyin ve dosyayı kaydedin. Initramfs’e ekledikten sonra, her nvidia sürücü güncellemesinde mkinitcpio’yu çalıştırmayı unutmayın.

sudo mkinitcpio -P

Bu adımları otomatikleştirmek için bir pacman hook oluşturmanız gerekiyor.

sudo nano /etc/pacman.d/hooks/nvidia.hook
[Trigger]
Operation=Install
Operation=Upgrade
Operation=Remove
Type=Package

# Yüklü olan NVIDIA paketinin yorumunu kaldırın
Target=nvidia
#Target=nvidia-open
#Target=nvidia-lts

# If running a different kernel, modify below to match
Target=linux

[Action]
Description=Updating NVIDIA module in initcpio
Depends=mkinitcpio
When=PostTransaction
NeedsTargets
Exec=/bin/sh -c 'while read -r trg; do case $trg in linux*) exit 0; esac; done; /usr/bin/mkinitcpio -P'

Uyarı: Bu satırları, yüklü olan NVIDIA paketinize ve kullandığınız kernel’e göre değiştirmeyi unutmayın.

Booster kullanıyorsanız

Önce /etc/booster.yaml dosyasını düzenleyin:

sudo nano /etc/booster.yaml

modules_force_load ile başlayan satırı bulup, parametreleri ekleyin ve dosyayı kaydedin:

modules_force_load: nvidia nvidia_modeset nvidia_uvm nvidia_drm

Booster imajınızı yenileyin:

booster build booster-foo.img

Dracut kullanıyorsanız

Önce /etc/dracut.conf.d/myflags.conf dosyasını düzenleyin:

sudo nano /etc/dracut.conf.d/myflags.conf

force_drivers ile başlayan satırı bulup, parametreleri ekleyin ve kaydedin:

# ...
force_drivers+=" nvidia nvidia_modeset nvidia_uvm nvidia_drm "
# ...

bunları yaptıktan sonra CTRL+X kombinasyonu ile dosyayı kaydedip kapatın ve ardından GRUB’ı güncelleyin: sudo grub-mkconfig -o /boot/grub/grub.cfg

5. Asla yapmamanız gerekenler

  1. sudo pacman -Sy kullanmayın, onun yerine sudo pacman -Syu kullanın. Bu bağımlılık sorunlarına neden olabilir. Daha fazla bilgi için: System maintenance - ArchWiki
  2. AUR paketlerini kullanırken dikkatli olun. Bazı AUR paketleri zararlı olabilir. [1] [2]
  3. testing repolarını etkinleştirmeyin. (Official repositories - ArchWiki)

Buraya daha bir çok şey eklenebilir fakat aklıma gelmedi. Yine de yapmamanız gereken adımları belirtmek için bu başlığı açtım.

Eğer eklemek istediğiniz bir şeyler varsa lütfen çekinmeden paylaşın. Türkçe kaynakların artması için herkesin desteğini bekliyorum. Böylece Linux’u ülkemizde daha fazla yayabileceğimize inanıyorum.

Son düzenleyen: @linuxmint 2024-11-17T17:26:40Z

12 Likes

açıklayıcı bir yazı olmuş, eline sağlık :clap:

2 Likes

Bunu neden asla yapmıyoruz :smiley:

Teşekkür ederim hocam. Aslında size teşekkür etmek lazım; rehber yazma gibi bir fikrim yoktu, siz ilham kaynağı oldunuz. :smiley:

Bağımlılık sorunları yaşayabilirsiniz çünkü. System maintenance - ArchWiki

1 Like

yani tüm sistemi güncellemeden tek bir paketi güncellemek sıkıntılı olabilir.
rehberden okuyunca aklımda bu sorunla karşılaşmamak için olduğu anlaşılmıyor ama öyle bir problem var.

1 Like

Onu unutmuşum :confused: Teşekkürler hatırlattığınız için.

2 Likes

Harika bilgilerle dolu bir yazı olmuş ellerinize sağlık.

1 Like