CachyOS LVM on LUKS Kurulumu
Selamlar, uzun zamandır aktif değilim. Ancak geri döndüm ve elimizde büyük bir problem var. Yaklaşık 2 senedir bilgisayarıma format atmadım ve artık bazı işlemleri yapmak istemediği için yapmıyor (Veya 10 ay önce kurduğum rastgele bir paketten dolayı). Sistemimi çok dağınık kullanıyorum. Yeni bir sistem kurmanın vaktinin geldiğini düşünüyorum ve Arch Linux’ten ayrılmanın da vakti geldi galiba.

Neden CachyOS?#
Öncelikle AUR reposuna bayılıyorum ve alışkanlıklarını kolay bırakabilen bir insan değilim. Kullanacağım herhangi bir dağıtımın Arch tabanlı olmasını kesinlikle tercih ederim. Pacman ve genel sistem yapısına diğer distrolara göre daha aşinayım ve ayarlamak, bir şeyleri düzeltmek çok çok daha kolay oluyor.
Arch Wiki’nin ne kadar güzel bir rehber olduğunu da saatlerce açıklayabilirim sanırım.
E o zaman Arch kurasana??#
İşlemci mimarime göre optimize edilmiş paketleri kullanmak istiyorum.
Oyun oynayacağım zaman direkt olarak hazır paketlerin gelmesini ve tüm paketlerin otomatik ayarlanmasını istiyorum.
Yeey daha optimize kernel.
Yeni bir şeyler denemek de istiyorum.
Yaşlandım galiba.
CachyOS Kurma denemeleri#
İlk deneme: Graphical Installer#
Şimdi geliyoruz eğlenceli kısıma. Ben Arch Linux kurulumumu da zaten kolay yapamıyordum. Sistemi LVM on Luks olarak kullanıyorum ve archinstall gibi otomatik kurulum uygulamalarını kullanma şansım yok. Her şeyi elle konfigüre etmem gerekiyor.
İlk aşamada bu kadar zaman geçtikten sonra kolayca grafik arayüzünden bunu yapabileceğimi düşünüyordum. Test ortamı olarak virt-manager’da kendi bilgisayarıma çok yakın olacak şekilde bir VM açtım (efi). İlk aşamada direkt olarak calamares‘i (Grafiksel kurulum uygulaması) başlatıp direkt olarak partitionları ayarlamaya koyuldum. Ancak bilin bakalım calamares LVM on LUKS yapmaya çalıştığınızda nasıl davranıyor.

Evet, 6 senedir düzelmeyen bir hatamız var. Bazı kullanıcılar direkt olarak partitionları elle dışarıdan yapılandırıp yapabileceğinizi anlatan rehberler hazırlamışlar. Ancak hiçbir şekilde çalışmıyor. Defalarca farklı farklı şekillerde yapmaya çalıştım ancak hiçbir şekilde çözüm bulamadım. Kısacası grafiksel bir kurulum şansımız yok şimdilik. Elimizdeki diğer seçeneği deneyelim.
İkinci Deneme: CachyOS CLI Installer#
Aynı yöntemi CachyOS’in CLI installer’ı üzerinde de denedim. Anladığım kadarıyla uygulama çok yeni geliştiriliyor ve çoğu fonksiyonu zaten çalışmıyor. Üstüne üstlük hiç olmadık bir yerde tuhaf bir şekilde takılma ve tüm işlemin kapanması gibi bir sorunla karşılaşabilirsiniz. Hikayenin başından beri bir son kullanıcı gibi (isteklerimin aşırı olduğunun ve uygulamaların bunun için geliştirilmediğinin farkındayım.) kurabileceğimi düşünmüştüm ancak başladığımız yere geri dönüyoruz.
Son Çare: Kuruluma normal bir Arch kurulumu gibi devam edeceğiz#
Sıra geldi başarılı olduğum ve yapmayı en istemediğim kurulum yöntemine. (Sadece kolayca kurabilmek istemiştim…)
Öncelikle isteklerime gelelim:
Tüm diskin boot bölümü ile birlikte tamamen şifrelenmesini istiyorum. Bunu yapabileceğimiz tek bootloader GRUB olduğundan onu tercih edeceğiz.
Gerçekten olabilecek en yakın CachyOS deneyimine sahip olmak istiyorum. FDE benim için bir ihtiyaç ancak tüm optimizasyonlarım da olmalı.
Normal kurulumdaki yapılar ve uygulamalar tamamen korunmalı, paketlerim normal kurulumla aynı olmalı.
EFI bölümü haricindeki tüm bölümler LVM’in içinde olmalı.
Diskimi ise şu şekilde bölümlendireceğim:
retake@thinkpad:~ > lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
nvme1n1 259:0 0 238.5G 0 disk
├─nvme1n1p1 259:1 0 1G 0 part /boot/efi
└─nvme1n1p2 259:2 0 237.5G 0 part
└─cryptlvm 253:0 0 237.5G 0 crypt
├─vg-swap 253:1 0 8G 0 lvm [SWAP]
├─vg-root 253:2 0 100G 0 lvm /
└─vg-home 253:3 0 129.5G 0 lvm /home
Gereksinimlerimiz#
Her şeyden önce normal bir CachyOS kurulumunda kritik sahip olmamız gereken paketleri bilmemiz gerekiyor. Bunu calamares’in kaynak kodundan bulabiliriz.
https://raw.githubusercontent.com/CachyOS/cachyos-calamares/cachyos-dev/src/modules/netinstall/netinstall.yaml
İlk aşamada buradan istediğim şeyleri elle ekleyip düzenlemeyi düşündüm ancak çok güzel bir makaleye denk geldim.
Makaledeki script normal kurulumda seçtiğim paketlerin isimlerini bana topluca veriyor.
get_names.py Help
Usage: get_names.py [OPTIONS] [--<group-flag> ...]
Prints a list of packages for different CachyOS desktop environments and optional extras.
The following base groups are always included:
- Base-devel + Common packages
- CPU specific Microcode update packages
- CachyOS Packages
- CachyOS required (hidden)
- CachyOS shell configuration
Options:
-h, --help Show this help message and exit
--refresh Re-download the package list from GitHub (ignores cache)
--sort Sort the output package list alphabetically
Optional package groups:
--kde-desktop KDE-Plasma Desktop - Simple by default, powerful when needed.
--gnome-desktop GNOME desktop environment - designed to put you in control and get things
done.
--xfce4 Xfce is a lightweight desktop environment for UNIX-like operating systems.
It aims to be fast and low on system resources, while still being visually
appealing and user friendly.
--bspwm bspwm is a tiling window manager that represents windows as the leaves of a
full binary tree. bspwm supports multiple monitors and is configured and
controlled through messages.
--budgie-desktop Budgie - an independent, familiar, and modern desktop.
--cinnamon Linux desktop which provides advanced innovative features and a traditional
user experience.
--cosmic Linux desktop, which provides an environment that features advanced
functionality and a responsive design.
--i3-window-manager i3 tiling window manager, primarily targeted at developers and advanced
users.
--hyprland Hyprland is a highly customizable dynamic tiling Wayland compositor that
doesn't sacrifice on its looks.
--niri A scrollable-tiling Wayland compositor.
--lxde-desktop The Lightweight Desktop Environment.
--lxqt-desktop The Lightweight Qt Desktop Environment.
--mate-desktop MATE Desktop - the continuation of GNOME 2
--openbox Openbox is a highly configurable, floating window manager with extensive
standards support.
--qtile Qtile is a X11 window manager that is configured with the Python
programming language.
--sway Sway is a tiling Wayland compositor and a drop-in replacement for the i3
window manager for X11. It works with your existing i3 configuration and
supports most of i3's features, plus a few extras.
--ukui It is a lightweight desktop environment, which consumes few resources and
works with older computers. It has been developed with GTK and Qt
technologies. Its visual appearance is similar to Windows 7, making it
easier for new users of Linux.
--wayfire Wayfire is a wayland compositor based on wlroots. It aims to create a
customizable, extendable and lightweight environment without sacrificing
its appearance.
--firefox-and-language-package Add firefox and language pack if possible
--printing-support Support for printing (Cups)
--support-for-hp-printer-scanner Extra Packages for HP Printer/Scanner
--accessibility-tools Screen reader and mouse tweaks (impaired vision)
Şimdi istediğim paketleri seçiyorum. İleride buna ihtiyacım olacak. Ben de seçimimi yapıp listeyi kopyalıyorum. Birazdan kurulum aşamasında bu paket listesine ihtiyacımız olacak.
retake@thinkpad:/tmp > python3 get_names.py --kde-desktop --firefox-and-language-package --printing-support --support-for-hp-printer-scanner --accessibility-tools | tr '\n' ' '
Using cached file: /tmp/netinstall.yaml
cachyos-hooks cachyos-keyring cachyos-mirrorlist cachyos-v3-mirrorlist cachyos-v4-mirrorlist cachyos-rate-mirrors linux-cachyos linux-cachyos-headers linux-cachyos-lts linux-cachyos-lts-headers chwd cachyos-hello cachyos-kernel-manager cachyos-packageinstaller cachyos-settings cachyos-micro-settings cachyos-wallpapers cachyos-fish-config cachyos-zsh-config dnsmasq dnsutils ethtool iwd modemmanager networkmanager networkmanager-openvpn nss-mdns usb_modeswitch wpa_supplicant wireless-regdb xl2tpd ufw bluez bluez-hid2hci bluez-libs bluez-utils bluez-obex pacman-contrib pkgfile rebuild-detector reflector paru octopi accountsservice bash-completion ffmpegthumbnailer gst-libav gst-plugin-pipewire gst-plugins-bad gst-plugins-ugly libdvdcss libgsf libopenraw plocate poppler-glib vlc-plugins-all xdg-user-dirs xdg-utils efitools nfs-utils nilfs-utils smartmontools unrar unzip awesome-terminal-fonts noto-fonts-emoji cantarell-fonts noto-fonts ttf-bitstream-vera ttf-dejavu ttf-liberation ttf-opensans ttf-meslo-nerd noto-fonts-cjk alsa-firmware alsa-plugins alsa-utils pavucontrol pipewire-pulse wireplumber pipewire-alsa dmidecode dmraid hdparm hwdetect linux-firmware lsscsi mesa-utils mtools sg3_utils sof-firmware cpupower power-profiles-daemon upower alacritty btop duf fsarchiver git glances hwinfo meld nano-syntax-highlighting fastfetch pv python-defusedxml python-packaging rsync wget ripgrep micro nano vim openssh amd-ucode intel-ucode ark bluedevil breeze-gtk cachyos-emerald-kde-theme-git cachyos-iridescent-kde cachyos-kde-settings cachyos-nord-kde-theme-git cachyos-themes-sddm char-white dolphin ffmpegthumbs filelight fwupd gwenview haruna kate kcalc kde-gtk-config kdeconnect kdegraphics-thumbnailers kdeplasma-addons kdialog kinfocenter kio-admin konsole kscreen kwallet-pam kwalletmanager partitionmanager phonon-qt6-vlc plasma-browser-integration plasma-desktop plasma-firewall plasma-nm plasma-pa plasma-systemmonitor plasma-thunderbolt plymouth-kcm powerdevil plasma-login-manager spectacle xsettingsd firefox firefox-i18n-$LOCALE cups cups-filters cups-pdf foomatic-db foomatic-db-engine foomatic-db-gutenprint-ppds foomatic-db-nonfree foomatic-db-nonfree-ppds foomatic-db-ppds ghostscript gsfonts gutenprint splix system-config-printer hplip python-pyqt5 python-reportlab cups cups-filters cups-pdf espeak-ng mousetweaks orca
Bir de Normal Arch kurulumundan farklı olarak ufwve ananicy-cpp‘yi aktive edeceğiz. Son aşamada komutlarımız şunlar olacak:
systemctl enable NetworkManager sddm ufw ananicy-cpp
ufw default deny incoming
ufw default allow outgoing
Son olarak pacman ayarlarımızın birebir cachyos kurulumu ile aynı olmasını istiyoruz. Live ISO’da şu ayarları yapmamız gerekiyor. Şimdilik not olarak burada kalsınlar. Vakti gelince kullanacağım zaten.
# Calamares'in scriptini kullanarak mimarimize uygun mirror ayarlarını alıyoruz.
/etc/calamares/scripts/detect-architecture
# Optimize pacman configimizi hedef sistemimize yazıyoruz. Aynı şekilde kurulum diskimize de yazacağız.
cp /etc/pacman-target.conf /etc/pacman.conf
cp /etc/pacman-target.conf /mnt/etc/pacman.conf
Kurulum#
Çok detaylı bir rehber olamayacak. Direkt olarak CachyOS ISO’sunu indirdiğinizi ve bootlanabilir bir cihaza yazdırıp açtığınızı varsayıyorum. Aşama aşama ilerleyeceğiz.
Başlamadan önce mevcut ISO’muzu güncelleyip mirrorları istediğimiz gibi ayarlıyoruz.
# root olarak giriş yapalım
sudo su
# Calamares'in scriptini kullanarak mimarimize uygun mirror ayarlarını alıyoruz.
/etc/calamares/scripts/detect-architecture
# Optimize pacman configimizi hedef sistemimize yazıyoruz. Aynı şekilde kurulum diskimize de yazacağız.
cp /etc/pacman-target.conf /etc/pacman.conf
# Listeleri tamamen güncelleyelim
pacman -Syyy

1. Diski Bölümlendirme#
Yukarıda zaten diskimi nasıl bölümlendireceğimi açıklamıştım. Şimdi aşama aşama diskimizi bölümlendiriyoruz.
VM’de olduğumdan dolayı tüm yapıyı 20GB’a göre ayarladım. Boyutları kendi disk boyutunuza göre değiştirmeyi unutmayın!!
Disk ismini de düzenlemeyi unutmayın!
# 1. Diski Temizleme ve Bölümlendirme
# Öncelikle tüm diski temizliyoruz.
sgdisk --zap-all /dev/sda
# Hemen ardından 512mb'lik bir EFI bölümü oluşturuyoruz.
sgdisk -n 1:0:+512M -t 1:ef00 -c 1:"ESP" /dev/sda
# LUKS için de bir partition oluşturuyoruz ve diskin kalan bölümünü LUKS'a ayırıyoruz.
sgdisk -n 2:0:0 -t 2:8309 -c 2:"LUKS" /dev/sda
# Değişikliklerimizi diske kaydediyoruz.
partprobe /dev/sda
Bu aşamada EFI ve LUKS bölümlerimizi oluşturduk. Sıra LUKS’u ayarlamakta:
## 2. LUKS bölümünü ayarlama
# Öncelikle diskimizi formatlıyoruz. pbkdf ayarı çok önemli çünkü hala LUKS2'nin GRUB'da argon2id desteği mevcut değil.
cryptsetup luksFormat --pbkdf pbkdf2 /dev/sda2
# Oluşturduğumuz Disk'i açıyoruz.
cryptsetup luksOpen /dev/sda2 cryptlvm
Sıra geldi LVM bölümlerini ayarlamaya:
# 3. LVM Yapısını (VG ve LV) Oluşturma
pvcreate /dev/mapper/cryptlvm
vgcreate vg /dev/mapper/cryptlvm
# LVM'in partitionlarını boyutlandırma 11GB root / 512mb swap / kalan home
lvcreate -L 13G vg -n root
lvcreate -L 512M vg -n swap
lvcreate -l 100%FREE vg -n home
LVM bölümlerini de oluşturduktan sonra dosya sistemlerimizi oluşturmamız gerekiyor.
# 4. Dosya Sistemlerini Oluşturma
# EFI partition FAT32 olmalı
mkfs.fat -F32 /dev/sda1
mkswap /dev/vg/swap
# Ben xfs tercih ediyorum. ext4 de tercih edebilirsiniz.
mkfs.xfs -f /dev/vg/root
mkfs.xfs -f /dev/vg/home
Son olarak tüm bölümlerimizi doğru bir şekilde bağlıyoruz.
# 5. Kurulum Öncesi Mount
mount /dev/vg/root /mnt
mkdir -p /mnt/home
mount /dev/vg/home /mnt/home
mkdir -p /mnt/boot/efi
mount /dev/sda1 /mnt/boot/efi
swapon /dev/vg/swap
Son durumda diskiniz şöyle görünmeli:

2. Temel İşletim Sistemi Kurulumu#
Gereksinimlerimizden aldığımız paketleri burada kullanıyoruz. Ancak en başına şu paketleri de ekleyeceğiz.
base base-devel mkinitcpio lvm2 cryptsetup grub efibootmgr sudo nano git wget curl xfsprogs pciutils usbutils
Not: Eğer firefox’u da seçtiyseniz firefox paketi firefox-i18n-$LOCALE şeklinde geldiğinden dolayı hata veriyor. bu kısmı firefox-i18n-tr veya firefox-i18n-en-us olarak değiştirebilirsiniz.
# Tüm paketlerimizi indiriyoruz.
pacstrap -K /mnt \
cachyos-hooks base base-devel mkinitcpio lvm2 cryptsetup grub efibootmgr sudo nano git wget curl xfsprogs pciutils usbutils cachyos-keyring cachyos-mirrorlist cachyos-v3-mirrorlist cachyos-v4-mirrorlist cachyos-rate-mirrors linux-cachyos linux-cachyos-headers linux-cachyos-lts linux-cachyos-lts-headers chwd cachyos-hello cachyos-kernel-manager cachyos-packageinstaller cachyos-settings cachyos-micro-settings cachyos-wallpapers cachyos-fish-config cachyos-zsh-config dnsmasq dnsutils ethtool iwd modemmanager networkmanager networkmanager-openvpn nss-mdns usb_modeswitch wpa_supplicant wireless-regdb xl2tpd ufw bluez bluez-hid2hci bluez-libs bluez-utils bluez-obex pacman-contrib pkgfile rebuild-detector reflector paru octopi accountsservice bash-completion ffmpegthumbnailer gst-libav gst-plugin-pipewire gst-plugins-bad gst-plugins-ugly libdvdcss libgsf libopenraw plocate poppler-glib vlc-plugins-all xdg-user-dirs xdg-utils efitools nfs-utils nilfs-utils smartmontools unrar unzip awesome-terminal-fonts noto-fonts-emoji cantarell-fonts noto-fonts ttf-bitstream-vera ttf-dejavu ttf-liberation ttf-opensans ttf-meslo-nerd noto-fonts-cjk alsa-firmware alsa-plugins alsa-utils pavucontrol pipewire-pulse wireplumber pipewire-alsa dmidecode dmraid hdparm hwdetect linux-firmware lsscsi mesa-utils mtools sg3_utils sof-firmware cpupower power-profiles-daemon upower alacritty btop duf fsarchiver git glances hwinfo meld nano-syntax-highlighting fastfetch pv python-defusedxml python-packaging rsync wget ripgrep micro nano vim openssh amd-ucode intel-ucode ark bluedevil breeze-gtk cachyos-emerald-kde-theme-git cachyos-iridescent-kde cachyos-kde-settings cachyos-nord-kde-theme-git cachyos-themes-sddm char-white dolphin ffmpegthumbs filelight fwupd gwenview haruna kate kcalc kde-gtk-config kdeconnect kdegraphics-thumbnailers kdeplasma-addons kdialog kinfocenter kio-admin konsole kscreen kwallet-pam kwalletmanager partitionmanager phonon-qt6-vlc plasma-browser-integration plasma-desktop plasma-firewall plasma-nm plasma-pa plasma-systemmonitor plasma-thunderbolt plymouth-kcm powerdevil plasma-login-manager spectacle xsettingsd firefox firefox-i18n-en-us cups cups-filters cups-pdf foomatic-db foomatic-db-engine foomatic-db-gutenprint-ppds foomatic-db-nonfree foomatic-db-nonfree-ppds foomatic-db-ppds ghostscript gsfonts gutenprint splix system-config-printer hplip python-pyqt5 python-reportlab cups cups-filters cups-pdf espeak-ng mousetweaks orca
# vconsole ayarımızı da yapıyoruz. (Bir sonraki aşamamızda mkinitcpio'nun hata vermemesi için)
echo "KEYMAP=trq" > /mnt/etc/vconsole.conf
# Optimize pacman configimizi de hedef sistemimize yazıyoruz.
cp /etc/pacman-target.conf /mnt/etc/pacman.conf
Kurulumumuz tamamen bittikten sonra fstab’ı da yazdırıp chroot’a giriş yapıyoruz.
genfstab -U /mnt >> /mnt/etc/fstab
arch-chroot /mnt
3. Sistem Ayarları#
Şimdi sıra temel sistem ayarlarımızı yapmakta:
# Tarih ve saat bilgimizi ayarlıyoruz
ln -sf /usr/share/zoneinfo/Europe/Istanbul /etc/localtime
hwclock --systohc
# Locale bilgilerimizi ayarlıyoruz.
sed -i 's/#en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen
locale-gen
echo "LANG=en_US.UTF-8" > /etc/locale.conf
# Hostname'imizi yazıyoruz.
echo "arch" > /etc/hostname
Yeni bir sudo kullanıcısı da oluşturalım.
# Yeni kullanıcı oluşturuyoruz.
useradd -m -G wheel -s /bin/bash retake
# Kullanıcımıza şifre koyuyoruz
passwd retake
# wheel grubuna sudo yetkilerini veriyoruz.
echo "%wheel ALL=(ALL:ALL) ALL" > /etc/sudoers.d/wheel
chmod 0440 /etc/sudoers.d/wheel
4. Bootloader Kurulumu#
mkinitcpio#
Şimdi sıra geldi zorlayıcı kısma. İlk aşamada /etc/mkinitcpio.conf‘te bulunan ramdisk ayarlarımızı düzenlememiz gerekiyor. Normal CachyOS kurulumu systemd‘yi kullanıyor ancak ben udev tercih edeceğim. systemd kullanarak başarılı olamadım. Mevcut olan HOOKS satırınızın başına # ekleyip yorum satırı haline getirin. Hemen ardından buradan kopyaladığınız yeni satırı ekleyin.
HOOKS=(base udev autodetect microcode modconf kms keyboard keymap consolefont block encrypt lvm2 filesystems fsck)
Yeni ayarlarımızı ekledikten sonra tekrar ramdisk oluşturuyoruz.
mkinitcpio -P
GRUB#
Şimdi GRUB ayarlarımızı yapmaya geldi.
# İlk olarak LUKS bölümümüzün UUID değerini alıyoruz.
blkid -s UUID -o value /dev/sda2
# Daha sonra grub dosyamızı düzenliyoruz.
nano /etc/default/grub
# Buraya UUID gelecek kısmına UUID'nizi yazın.
GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 quiet cryptdevice=UUID=BURAYA_UUID_GELECEK:cryptlvm root=/dev/vg/root"
# Bunun hemen ardından aynı dosyadaki
# `# GRUB_ENABLE_CRYPTODISK=y`
# Satırının önündeki `#`'i kaldırın.
# Grub kurulumunuzu yapın.
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=cachyOS --recheck
# Son olarak configimizi üretelim.
grub-mkconfig -o /boot/grub/grub.cfg
5. CachyOS Post-Install Optimizasyonları ve Servisler#
Son aşamada servislerimizi açıp kurulumumuzu tamamlayalım.
# Servisleri aktif edelim.
systemctl enable NetworkManager sddm ufw ananicy-cpp
# Calamares'in loglarında gördüğümüz o UFW ayarı (Gelenleri engelle, gidenlere izin ver)
ufw default deny incoming
ufw default allow outgoing
# Karışıklık ve sorun olmasın diye pacman'in keyringlerini temizleyelim.
sudo pacman -Sy archlinux-keyring cachyos-keyring
sudo pacman-key --populate
sudo pacman -Syy
# Son olarak root şifresini belirleyelim.
passwd
Kurulumumuz tamamlandı! Kurulum diskini çıkartıp bilgisayarınızı yeniden başlatabilirsiniz.

Bonus: Çift şifre yerine tek şifre girmek#
Sistemimizi tamamen kurduktan ve açtıktan sonra initramfs’in tekrar şifre sorunu ile karşılaşıyoruz. Bu problemi çok basit bir yöntemle çözebiliriz.
Öncelikli olarak sistemimizi açmaya çalıştığımızda ne olduğunu anlayalım:
1. [ BIOS ] -> BIOS GRUB'ı çağırır. Şifre girme ekranı gelir. (Enter passphrase...)
|
v
2. [ GRUB ] -> Şifre girilir ve Grub tüm diskleri açar. (LVM ile birlikte) - Hemen ardından kernel seçilir ve initramfs yüklenir.
|
v
3. [ KERNEL ] -> Belleğe yüklenir ve Initramfs'i çalıştırır.
|
v
4. [INITRAMFS] -> Initramfs ikinci defa sistemi kendisi bağlayacağından dolayı tekrar şifre sorar.
|
v
5. [ SİSTEM ] -> /sbin/init (Systemd) başlar.
Öncelikle grafikte de gördüğümüz gibi zaten ilk şifre girdiğimizde tüm root diskimiz açılıyor. Ancak initramfs tekrardan tüm diskleri bağlamak için şifre soruyor sistemlerin grub’da bağlanıp bağlanmamasını önemsemeden.
Ancak elimizde çok temel bir güç var. Initramfs zaten şifreli olan /boot bölümümüzün içinde çalışıyor. Biz ise initramfs’e direkt olarak şifreyi gömüp sorunu kalıcı olarak çözeceğiz.
Bu işlemleri iki defa şifre girerek açtığımız sistemde yapıyoruz.
1. Rastgele Bir Anahtar Dosyası Oluştur#
Öncelikle /etc/cryptsetup-keys.d dizininde rastgele bir dosya oluşturuyoruz ve sadece root’un okuyabileceği şekilde izinlerini kısıtlıyoruz:
dd if=/dev/urandom of=/etc/cryptsetup-keys.d/crypto_keyfile.bin bs=512 count=4
chmod 400 /etc/cryptsetup-keys.d/crypto_keyfile.bin
2. Anahtarı LUKS’a Ekle#
Oluşturduğumuz bu dosyayı LUKS diskine yeni bir anahtar olarak ekliyoruz.
cryptsetup luksAddKey /dev/sda2 /etc/cryptsetup-keys.d/crypto_keyfile.bin
3. Anahtarı Initramfs İçine Gömme#
Şimdi bu dosyayı çekirdeğin boot aşamasında okuyabilmesi için initramfs’e dahil etmeliyiz.
nano /etc/mkinitcpio.conf
Dosyanın içindeki FILES=() satırına kendi dosyamızın tam dizinini ekliyoruz.
FILES=(/etc/cryptsetup-keys.d/crypto_keyfile.bin)
4. GRUB’a Anahtar Parametrelerini Ekleme#
GRUB’ın parametrelerini, encrypt hook’unun bu dosyayı kullanması gerektiği şeklinde güncelliyoruz:
nano /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="..." satırımızın içine cryptkey=rootfs:/etc/cryptsetup-keys.d/crypto_keyfile.bin parametresini ekleyeceğiz. Önceki mesajdaki UUID ve mapper yapımızla birleştiğinde satırın tam olarak şuna benzemesi gerekiyor:
GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 quiet cryptdevice=UUID=LUKS_UUID:cryptlvm cryptkey=rootfs:/etc/cryptsetup-keys.d/crypto_keyfile.bin root=/dev/mapper/vg-root"
5. İmajları ve Bootloader’ı Yeniden Oluşturma#
Son aşamada tüm değişikliklerimizi uygulamak için hem kernel’i hem de grub configini tekrardan oluşturuyoruz.
mkinitcpio -P
grub-mkconfig -o /boot/grub/grub.cfg
Artık şifremizi yalnızca bir defa girip giriş yapabileceğiz.
Son Sözler#
Öncelikle grafik kurulumlarında hala bu tarz gelişmiş kurulumu yapamamamız benim için çok büyük bir hayal kırıklığı oluyor. Bir distro denerken en zor yollardan yapmak zorunda olmam hoş değil.
Sizin de bu tarz bir kuruluma girmeden önce dokümantasyon hazırlamanızı ve sanal makinede kurulum yapmayı deneyip daha sonra kurulum yapmanızı şiddetle öneriyorum. Eğer sistemimi direkt olarak böyle bir riske atsaydım muhtemelen minimum 3-5 gün kadar tekrardan kurulum yapmaya vakit ayıracaktım.
Günün sonunda yaptığım son kurulumdan memnunum. Sistem son halinde istediğim bölümlendirme ve güvenlikle native CachyOS deneyimini sunuyor ve şu ana kadar bir problem yaşamadım.
Kurulum eskirse veya güncelleme gerekirse sitedeki iletişim bölümünden bana mail atabilirsiniz. Elimden geldiğince güncellemeye çalışırım.
Buraya kadar geldiyseniz ve başarılı olduysanız hem tebrik ediyor hem de iyi günler diliyorum.