Benim kurulum adımlarım şöyle:
Öncelikle BIOS veya UEFI kipte mi kuracağımızı belirlememiz lazım. Sanal makineye kuruyorsak vmx dosyasının içinde firmware="efi" satırının olmasına dikkat etmek lazım.
Zamanla değişmekle birlikte bugünlerlde Archlinux CD'si (veya USB) ile boot edilen bir makinede BIOS kipinde aşağıdaki gibi bir açılış ekranı karşılar bizi.
UEFI kipinde açılan bir makinede ise Archlinux'un açılış ekranı aşağıdaki gibi olur.
Açtıktan sonra UEFI modda olup olmadığını doğrulamak için [1]
cat /sys/firmware/efi/fw_platform_size
ya da şu yazıda belirtilen yöntemler kullanılabilir. Bu satır 64 dönüyorsa sistemimiz şu anda 64 bitlik UEFI ile açılmıştır. 32 dönüyorsa 32 bitlik UEFI ile açılmıştır. Dosya bulunamadı hatası alıyorsak sistemimiz BIOS kipinde açılmıştır.
ISO dosyasınız (veya USB) ile sistemi açtıktan sonra Türkçe klavye alışkanlıkları olan birisi için öncelik klavye düzenini alışık olduğumuz düzene ayarlamaksa çalıştırmamız gereken komut şu:
loadkeys trq
Bu komut sonunda ş ve ğ gibi karakterler doğru görüntülenmeyecektir ama en azından nokta, virgül ve / karakterleri alışık olduğumuz yerlerde olacaktır.
İlk iş disk bölümlendirmesi. Önce diskimiz ne şekilde algılanmış bakmak için
lsblk
kullanabiliriz. Eski SATA bağlantılı (SSD'ler dahil) diskler sda veya sdb gibi, NVMe diskler de nvme0n1 veya nvme0d2 gibi görüntülenir. Disk bölümlendirmesi için fdisk, gdisk veya cfdisk kullanılabilir. Ben 4 bölümden oluşan şöyle bir yapı kullanacağım (NVMe diskler için bu isimleri uygun karşılıkları ile değiştirerek diğer adımları aynen uygulayabiliriz):
sda1 EFS 512 MB EF00 fat32
sda2 swap 1xRAM veya 2xRAM 8200 swap
sda3 boot 1 GB 8300 ext4, btrfs, xfs, jfs
sda4 root isteğe göre 8300 ext4, btrfs, xfs, jfs
3. sütundaki değerler EFS ve boot gibi bölümler için önerilen asgari boyutlar. Swap için eski alışkanlık 2xRAM gibi bir değerdi. Ama NVMe disklerin çıkışıyla birlikte bunu 1xRAM gibi bir düzeye indirebileceğimizden bahsedilmiş. 4. sütundaki değerler daha önce bahsettiğim gibi bölüm kodları. Bir EFI bölümünün kodu EF00 olmazsa bazı linux dağıtımları kabul etmiyor.
Bu bölümlendirmeyi oluşturduktan sonra biçimlendirmeye geçelim. EFS (EFI system partition) fat olmalı.
mkfs.vfat -F32 /dev/sda1
Sırayla gidelim, swap bölümü için mkfs değil mkswap kullanmalıyız:
mkswap /dev/sda2
Boot bölümü ext4 olabilir:
mkfs.ext4 /dev/sda3
Root bölümü de ext4 olabilir.
mkfs.ext4 /dev/sda4
Şimdi bu bölümleri bağlayalım. Disk yapısını oluşturmak için arada mkdir ile gereken klasörleri oluşturuyorum:
mount /dev/sda4 /mnt
mkdir /mnt/boot
mount /dev/sda3 /mnt/boot
mkdir /mnt/boot/efi
mount /dev/sda1 /mnt/boot/efi
swapon /dev/sda2
Şimdi bir Archlinux kurulumu yapmak için gereken temel paketleri kuracağız. Bunu yapmak için Archlinux'a özel pacstrap komutunu kullanacağız.
pacstrap -K /mnt base linux linux-firmware
[1]'de temel kurulum için bu 3 paketin yeterli olduğu belirtilmiş. Bu paketlerin toplamı yaklaşık 500 MB civarında olduğu için biraz zaman alacak. (Sanal makine kurulumlarında linux-firmware paketine gerek yok, bu durumda boyut 200+ düşer) Bu komuttaki -K anahtarı linux anahtarlarını ayarlamak için. Bir sebeple bu adım atlarnırsa veya sorun olursa
pacman-key --init
pacman-key --populate
ile anahtarlar yeniden ayarlanabilir. Oluşturulan disk bölümlerimiz ile ilgili bilgiyi fstab dosyasına yazmak için şu komutu kullanabiliriz:
genfstab -U -p /mnt >> /mnt/etc/fstab
Hedef sistemimiz artık /mnt altında oluştuğu için buradaki fstab dosyasına yazıyoruz. Buradaki -U anahtarı fstab dosyasına disk bölümlerini yazarken UUID'ler ile yazmasını, -p ise pseudo bağlantı noktalarını hariç bırakmasını belirtmek için. Ancak -p anahtarının varsayılan olduğu ve açıkca belirtilmesine gerek olmadığı söylenimş [2].
Bu aşamadan sonra canlı linux ortamından hedef Archlinux kurulumuna ait diğer ayarları yapabilmek için arch-chroot ile ortamımızı değiştireceğiz.
arch-chroot /mnt
Burada yapmak isteyeceğimiz işlemlerden biri hedef sistemin zaman dilimini değiştirmek. Varsayılan kurulumlarda ABD zaman dilimleri geliyor. Bunu Türkiye zaman dilimine göre ayarlamak için /usr/share/zoneinfo/ konumundaki zaman dilimlerinden birine sembolik link oluşturmamız gerek.
ln -sf /usr/share/zoneinfo/Turkey /etc/localtime
-s sembolik link (diğer seçenek hard link), -f ise /etc/localtime varsa üzerine yazmak istediğimizi belirtiyor. Hangi koşullarda tam bilmiyorum, ama bazen bu dosya olabiliyor.
Linux'ta genel kural donanım saati UTC (merkezi saat) olarak ayarlanır. Eğer değilse bunu ayarlamak için
hwclock --systohc --utc
kullanabiliriz. Bu aşamadan sonra bazı yerelleştirme ayarları ile devam edebiliriz. Ama kullanacağımız editörü henüz yüklemedik. Seçeneklerimiz nano, vi, vim veya neovim. Birini yükleyelim. Ben neovim ile devam ediyorum:
pacman -S neovim
Yerel ayarlarımızı Türkiye'ye göre ayarlamak için /etc/locale.gen dosyasının içindeki tr_TR ile başlayan (uygun görülen) satırların başındaki # karekterini silmemiz gerek. Ben sadece
# tr_TR.UTF-8
satırını
tr_TR.UTF-8'e
dönüştürüyorum. Sonrasında
locale-gen
çalıştırmak gerek. Benzer şekilde /etc/locale.conf dosyasına da bir satır ekleyelim:
echo LANG=tr_TR.UTF-8 > /etc/locale.conf
Bir de yeni bir ortam değişkeni oluşturalım.
export LANG=tr_TR.UTF-8
Bu son 3 adımın her birinin gerekliliğini bilmiyorum, ama [1]'de yazılmış.
Bir sonraki adımımız makine ismimizi belirlemek.
echo "archbox" > /etc/hostname
Eğer istenirse ağ yöneticisi olarak network manager kurulabilir (ayrıca [4])
pacman -S networkmanager nm-connection-manager network-manager-applet
Kurulmadıysa aşağıdaki kurulum sonrası adımlarda bazı yöntemler var.
Hedef sistemimizdeki root kullanıcısının parolasını belirleyelim:
passwd
2 kez aynı parolayı yazmayı isteyecek. Kendimize yeni bir kullanıcı da oluşturalım. Genel eğilim, bu kullanıcının da yetkili bir kullanıcı (wheel grubu üyesi) olması. Bu amaçla aşağıdaki gibi bir komuta ihtiyacımız olacak
useradd -mg users -G wheel,power,storage -s /bin/bash metin
ve bu kullanının şifresini belirleyip (belirlemezek kullanıcı devre dışı gelir) şifre süresini sınırsız yapalım (kötü bir örnek mi?). Linux kullanıcı yönetimi için tıklayın.
passwd metin
chage -d 0 metin
Henüz sudo kurmadık. Bunun yanı sıra ihitiyaç duyulabilecek birkaç paket daha kuralım:
pacman -S sudo grub efibootmgr intel-ucode os-prober zsh
Şimdi wheel grubuna yetkilerini verelim. Önce visudo komutunun ihtiyaç duyduğu varsayılan editörü belirleyelim:
export EDITOR=nvim
sonra
visudo
komutunu çalıştırarak gelen ekranda
#%wheel ALL=(ALL:ALL) ALL
satırının başındaki # işaretini silerek dosyayı kadedip çıkalım.
Son adımlara geldik. Önce grub'ı ayarlayalım:
grub-install --target=x86_64-efi --efi-directory=/boot/efi
Sonra grub.cfg dosyalarını oluşturalım. Gerçek yeri neresi, tam bilemiyorum ama 2 konum için de ayrı ayrı oluşturmayı tercih ediyorum.
grub-mkconfig -o /boot/grub/grub.cfg
grub-mkconfig -o /boot/efi/EFI/arch/grub.cfg
Son adım, initramfs dosyasının oluşturulması. Bunu mkinitcpio ile yapacağız. Ama bunun için bir preset'e ihtiyacımız var. pacstrap ile kurduğumuz linux paketi bize /etc/mkinitcpio.d klasörünün atında linux.preset dosyasını verdi. Bunu -p linux yazarak, veya sadece -P (bütün presetler için oluştur) diyerek yapabiliryoruz. Her rehberde bahsedildiği için bunu yapmaya alışmışım. Ama aslında initramfs dosyasının oluşturulması zaten pacstrap ile kurulan her çekirdek paketinden sonra otomatik yapıldığı için aşağıdaki adım gerekli değil.
mkinicpio -p linux
İşlem tamam. arch-chroot ortamından çıkalım.
exit
Tüm bağladığımız disk bölümlerinin bağlantılarını keselim.
umount -R /mnt
ve sistemi tekrar başlatalım.
reboot
Tekrar başlayınca oluşturduğum metin kullanıcısıyla oturum açabileceğim. Ama henüz bir masaüstü ortamı yüklemedik. Bu da başka bir yazıya kalsın.
Kurulum Sonrası adımlar
Kurulumdan sonra eğer Network Manager gibi bir ağ yöneticisi kurulmadıysa bilgisayar otomatik IP almayabilir. Bu durumda /etc/systemd/network klasörünün altında
20-wired.network
25-wireless.network
dosyaları içine DHCP için
[Match]
Name=wlp2s0
[Network]
DHCP=yes
IgnoreCarrierLoss=3s
sabit IP için
[Match]
Name=enp1s0
[Network]
Address=10.1.10.9/24
Gateway=10.1.10.1
DNS=10.1.10.1
satırları eklenebilir [3].
zsh kurduk, ama ayarlamadık. Aslında zsh kurulumunu useradd adımından önce yaparsak useradd adımında /bin/bash yerine /bin/zsh diyerek bunu doğrudan devreye alabiliriz. Ama yapmadıysak da şu yazımdaki adımlarla yapılabilir.
Tekrar başlattıkan sonra
grub>
gibi bir ekranda kalıyorsa grub.cfg dosyasını bulamıyor olabilir. CD/USB ile canlı ortamda açarak grub-mkconfig adımını tekrarlamak gerek. UEFI sistemlerde bile /boot/grub/grub.cfg olmasına dikkat etmek gerek.
Kurulan sistemdeki klaveye düzeni Türkçe olmazsa Türkçeleştirmek için
localectl set-keymap trq
kullanılabilir.
Network Manager kurduktan sonra systemd-networkd hizmetini devre dışı bırakmak gerek. dhcpcd ve systemd-resolved hizmetleri de aynı anda çalışmamalıdır [4].
---
[1] https://wiki.archlinux.org/title/installation_guide
[2] https://man.archlinux.org/man/genfstab.8
[3] https://wiki.archlinux.org/title/Systemd-networkd
[4] https://ejmastnak.com/tutorials/arch/network-manager/