ISO dosyasının yazdırılması
Link adresinden ISO dosyası indirilir.
lsblk
ile bağlanılan usb bellek tespit edilerek /dev/sd[a|b|c] ISO
dosyası belleğe yazdırılır.
# dd bs=4M if=archlinux-version-x86_64.iso of=/dev/sdx conv=fsync oflag=direct status=progress && sync
UEFI Ayarları
Bilgisayar açılırken F13 tuşuna bir kaç kere basarak UEFI/BIOS ayarlarına giriyoruz.
Security
kategorisi altında öncelikle Supervisr Password
tanımlıyoruz.
Her sistem başladığında BIOS/UEFI parolası girmeyip kolayca Evil Maid
lenmek
istiyorsanız bunu yapmayınız.
Yine aynı şekilde Security
kategorisi altında Secure Boot
aktifleştirip
bütün kayıtlı secure boot key’lerini sildikten sonra Setup mode
açılır.
Ayarlar kayıt edilip çıkışş yapılır.
Boot Me Babe
Sistem yeniden başlarken yine F13 tuşuna basılarak sistemin bellek üzerinden açılması sağlanır. Umarım UEFI parolanızı hatırlayabilmişsinizdir :).
Grub gelince “Arch Linux install medium …” (en üstteki) seçilerek devam edilir.
Bir sürü yazı şekil hack filmlerinde kullanılamayacak kadar gerçekçi akan yazılardan
sonra bir adet root@archiso
prompt’u gelir ve aksiyonumuz başlar.
Bu aşamada karınca duası okumak istemeyenler font değiştirmek isteyebilir
setfont /usr/share/kbd/consolefonts/ter-132n.psf.gz # Tembel olun TAB kullanın
Ethernet girişi/kablosu yok, WiFi’dan çözelim
iwctl ile WiFi bağlantısı yapmak daha kolay :)
iwctl
device list # Powered on :)
station wlan0 scan
station wlan0 get-networks
station wlan0 connect $SSID
# Bir takım gereksiz parola soruları
exit
Bakalım olmuşmu hem dns hem internet erişim kontrolü için ICMP is da way.
ip a # IP adresinin öğrenilmesi SSH atacaklar için önemli bir detay
ping -c 1 archlinux.org # Internet ve DNS paketlerinin çalıştığının kontrol edilmesi
TTY sıktı SSH geç
Internet bağlantısı sağladıktan sonra cihaza SSH bağlantısı sağlayabilmek
için passwd
ile parola değiştiriyoruz.
Başka bir sistem üzerinden ssh root@192.168.x.x
ile artık kuruluma devam edilebilir.
Partitioning
lsblk
ile daha hiç mount edilmemiş diski tespit ediyorum. Ben nvme bir diske sahip
olduğum için bu disk bende nvme0n1
olarak gözüküyor. bu noktada kendinize göre disk
adını ayarlamanız gerekmekte.
Diskin üzerinden tertemiz bir geçiş yapıyorum. ( Kısa bir süre de olsa yapmanızı öneririm)
dd if=/dev/urandom of=/dev/nvme0n1
Artık lsblk
yapıldığında nvme altında partition görmüyorum.
Diski 2 partition’dan daha fazla bölmeyi uygun bulmuyorum. Boot ve ROOT için partitionları oluşturucam.
gdisk /dev/nvme0n1
# Bu aşamada MBR buldum düzelteyim mi diye sorarsa Enter ile geçilir
# Command (? for help): # gdisk için bu prompt anlamına gelmekte
o # GPT tablo oluştur.
y # Evet oluştur son kararım
# /boot
n
1
<Enter>
+200M
EF00
# /
n
<Enter>
<Enter>
<Enter>
<Enter>
w # kayıt ediyoruz
Y # Evet şu aşamada tüm disk tablosunu uçurduğumun farkındayım
# The operation has completed successfully.
LUKS
Şimdi cryptsetup ile diski şifreleyeceğiz fakat bu aşama tamamen size kalmış.
İstenirse direkt olarak cryptsetup -v -y luksFormat /dev/nvme0n1p2
devam edilebilir.
Acı çekmek isteyenler için eklemeler
cryptsetup --help
ile en alt satırda varsayılan parametreler göz önünde tutulur.
cryptsetup benchmark
ile diskten beklenen yazma hızları ve desteklenen algoritmalar çıkartılır.
Beğenilen parametreler aşağıdaki örnekteki yerleri ile değiştirilerek passphrase tanımlanır.
cryptsetup --type luks2 --cipher aes-xts-plain64 --hash sha256 --iter-time 2000 --key-size 256 --pbkdf argon2id --use-urandom --verify-passphrase luksFormat /dev/nvme0n1p2
YES # Köprüden önce son çıkış devamında passphrase girilerek devam edilir.
Bu aşama biraz vakit alabilir.
Format aşaması karışmaması için bu disk tekrardan açılarak mount edilir.
cryptsetup open /dev/nvme0n1p2 luks
Format Partitions
Partitionlar istenen dosya sistemiyle formatlanır. Boot için fat32 ideal.
mkfs.vfat -F32 /dev/nvme0n1p1
mkfs.btrfs /dev/mapper/luks
BTRFS subvolumeleri oluşturularak unmount edilir.
mount /dev/mapper/luks /mnt
btrfs sub create /mnt/@
btrfs sub create /mnt/@home
umount /mnt
BTRFS subvolumelerı kullanılarak tekrardan mount edilir.
mount -o noatime,nodiratime,compress=zstd:1,space_cache,ssd,subvol=@ /dev/mapper/luks /mnt
# cannot disable free space tree diye ağlarsa
# btrfs check --clear-space-cache v2 /dev/mapper/luks
# sonrasında 1. adımı tekrar et
mkdir -p /mnt/{boot,home}
mount -o noatime,nodiratime,compress=zstd:1,space_cache,ssd,subvol=@home /dev/mapper/luks /mnt/home
mount /dev/nvme0n1p1 /mnt/boot
Pacstrap
Gerekli olan araçları indirmeden önce biraz yeni özellikleri kullanalım.
vim /etc/pacman.conf
içerisinde [options]
altındaki satırı ParallelDownloads = 42
olarak düzeltiyoruz. Biraz fazla olabilir 17’de fena bir sayı değil :) .
pacstrap /mnt linux-hardened{,-headers} linux-firmware base base-devel btrfs-progs intel-ucode vim
machine-id oluşturalım ;)
echo b08dfa6083e7567a1921a715000001fb > /mnt/etc/machine-id
Chroot Time
Artık chroot atarak sanki boot etmiş gibi sistemimiz düzenleyebiliriz.
arch-chroot /mnt/
Reboot sonrası giriş yapmak isteyebiliriz bu sebeple root parolasını passwd
ile değiştiriyoruz.
Kullanıcımızı oluşturup temel ayarları yapalım.
useradd -mG wheel user
passwd user
visudo # %wheel ALL=(ALL) ALL
Standart sistem ayarlarını yapalım
echo host > /etc/hostname
echo en_US.UTF-8 UTF-8 >> /etc/locale.gen
locale-gen
ln -sf /usr/share/zoneinfo/UTC /etc/localtime # 3 saat ekleyin temel matematik
hwclock --systohc
/etc/hosts
127.0.0.1 localhost
::1 localhost
127.0.1.1 <YOUR-HOSTNAME>.localdomain <YOUR-HOSTNAME>
/etc/pacman.conf
Color
CheckSpace
VerbosePkgLists
ILoveCandy
ParallelDownloads = 17
vim /etc/mkinitcpio.conf # Sadece değişecek satırları yazıyorum
MODULES=(btrfs)
HOOKS=(base udev systemd autodetect keyboard modconf block sd-encrypt filesystems)
mkinitcpio -P
ile tüm kernel initramfs’lerimizi oluşturalım.
Temel userspace paketlerini de kuralım.
pacman -S alsa-utils apparmor dialog dosfstools fish git mtools networkmanager pipewire pipewire-alsa pipewire-pulse sbctl hyprland wpa_supplicant xdg-user-dirs xdg-utils
Bir süre pacman videosu izlenir ve indirilen servisler aktifleştirilir.
systemctl enable NetworkManager apparmor
Bootloader (systemd-boot)
Kurulumu basit ve hızlı çalışan systemd-boot kullanıyorum. (no hate grub)
bootctl --path=/boot install
ile kurulumu gerçekleştiriyorum.
Konfigürasyonunda UUID kullanacağım için elle yazmamak için önceden dosya içerisine atıyorum.
blkid -s UUID -o value /dev/nvme0n1p2 > /boot/loader/entries/arch.conf
vim /boot/loader/entries/arch.conf
title Arch Linux
linux /vmlinuz-linux-hardened
initrd /intel-ucode.img
initrd /initramfs-linux-hardened.img
options rd.luks.name=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX=luks root=/dev/mapper/luks rootflags=subvol=@ rd.luks.options=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX=discard rw quiet lsm=lockdown,yama,apparmor,bpf
vim /boot/loader/loader.conf
default arch.conf
editor no
Secureboot
Secure boot için gereken araçları daha önceden indirdik.
sbctl status
ile duruma bakabiliriz. 3 tane çarpı ile yolumuzu ayırmış olmamız gerekiyor.
Installed: ✗ Sbctl is not installed
Setup Mode: ✗ Enabled
Secure Boot: ✗ Disabled
Öncelikle secureboot anahtarlarımızı oluşturup yazalım.
sbctl create-keys
sbctl enroll-keys
sbctl status
Oluşturduğumuz kernel imajlarını imzalayalım.
sbctl sign /boot/EFI/BOOT/BOOTX64.EFI
sbctl sign /boot/EFI/systemd/systemd-bootx64.efi
sbctl sign /boot/vmlinuz-linux-hardened
Tüm imajlar imzalanmış olmalı.
sbctl verify
Final Touch
Tek atımlık kurşunumuzu test etme zamanı. Chroottan çıkıp diskleri unmount edip yeniden başlatıyoruz.
exit
umount -a
reboot