Qnix

Üstün
Katılım
31 Mart 2024
Mesajlar
640
Makaleler
4
Çözümler
48
Beğeniler
663
Merhabalar, bu rehberde istediğiniz bir taban için nasıl kendinize göre özelleştirebileceğiniz bir installer yazabileceğinizi anlatacağım.

Gereksinimler:

- Çalışır vaziyette bir linux dağıtımı (Eğer Debian için yapıyorsanız, rehberde kullanacağımız debootstrap aracı çoğu dağıtımın ana deposunda mevcut. Fakat Arch için kullanacağımız pacstrap aracı diğer dağıtımların ana depolarında yok. Bu yüzden Arch için mecburen Arch tabanlı bir dağıtım kullanmalısınız. Fedora, OpenSUSE gibi başka dağıtımlar için yapacaksanız da bu geçerli.)

- Minimum düzeyde shell scripting bilgisi (Zorunlu değil, ama olması çok iyi olur.)

- Daha önceden manuel olarak bir dağıtım kurma deneyimi. (Bu da aynı şekilde, ama olması sizin için çok iyi olur. Ben kesinlikle tavsiye ediyorum.)

-----------------------------

İlk öncelikle Debian için yapacaksanız çoğu dağıtımın deposunda debootstrap olduğundan elinizde hali hazırda çalışan dağıtımı kullanabilirsiniz.

Debian / Ubuntu için: apt install debootstrap
Arch için: pacman -S debootstrap
Fedora için: dnf install debootstrap
OpenSUSE için: zypper install debootstrap

Başka bir dağıtım kullanıyorsanız yüksek ihtimal o dağıtımın ana depolarında da vardır.

Eğer Arch için yapacaksanız, pacstrap diğer dağıtımların ana deposunda olmadığı için maalesef sabit diske kurulmuş bir Arch tabanlı bir dağıtımı, livecdsini ya da kendi özelleştirilmiş iso kalıbınızı kullanmanız zorunlu (bunun için de rehber gelecek).

Bunlardan farklı olarak, fedora ve opensuse için de anlatacağım. Bu iki arkadaşın paket yöneticilerinin kendisinde bu özellik direk olarak var. (Fedora üzerinde zypper, OpenSUSE üzerinde de dnf kullanılabildiğini hatırlatayim.)

1723895887996.webp


1723895934316.webp

Bu araçlara "bootstrap" adı veriliyor. (CSS kütüphanesi olan bootstrap ile karıştırmayın :)). Linux üzerinde live olarak çalışan dağıtımların sabit diskinize kurulum yapılabilmesi için installerların bu paketlere ihtiyacı var. Installerlar'da bootstrap ya da benzer işlev görecek komutlar kullanılmaması ihtimali yok. Daha önceden Manuel olarak Arch kurduysanız pacstrap paketini görmemiş olma ihtimaliniz yoktur.

Eğer kurulum işlemini livecd üzerinden gerçekleştirecekseniz, bu paketleri şu anlık kurmanıza gerek yok. Test aşamasına geçtiğimizde gerekecekler. Sanal makine üzerinden yapacaksanız da sanal makineye kurarsınız. Zaten Arch için yapıyorsanız pacstrap kurmanıza da gerek yok.

Şimdi touch installer.sh diyerek bir shell script oluşturalım. İsmi farketmez. Şimdi favori metin / kod editörünüzde dosyayı açma zamanı!

1723897032169.webp

(Windows üzerinden anlatmama çok takmayın 😀)

Şimdi dosyanın başına #!/bin/bash ekleyelim. Shell scripting geçmişsiniz varsa zaten nedenini biliyorsunuzdur. Yine de bu tür şeyleri not düşeceğim.

1723897270272.webp


Şimdi çalıştırılacak komutları satır satır girmemiz gerekiyor. Daha önceden manuel olarak bir dağıtım kurduysanız aslında bu komutları az çok tahmin edebilirsiniz. Ben şu an Arch üzerinden örnek göstereceğim.

İlk olarak, disk biçimlendirmesi ve mount işlemlerinin gerçekleştirilmesi gerekiyor. Ardından bootstrap, chroot ortamında çalıştırılacak komutlar, ardından eklemek istedikleriniz ve tamamdır.

Şöyle başlayalım: benim root diskim /dev/sda4, boot diskim /dev/sda5 konumunda olacak, swap diski olmayacak. Şöyle yapalım:

1723897958215.webp


Mount işlemini yaptıralım:

1723898109587.webp


Şimdi bootstrap işlemini gerçekleştireceğiz. Bu kısımda "özelleştirilebilirlik"ten yararlanabiliriz. Paketlerin yazıldığı kısıma bir boşluk bırakıp başka kurmak istediğiniz paketler varsa yazabilirsiniz. Gereken komutları şöyle paylaşayim:

Arch için: pacstrap -K /mnt base base-devel linux linux-headers linux-firmware python python-pip efibootmgr grub os-prober networkmanager -> paketleri özelleştirebilirsiniz.

Debian için: debootstrap --arch amd64 --variant=minbase --include=python3,python3-pip,build-essential,doas /mnt http://deb.debian.org/debian/ -> ekstra paket kuracaksanız bir virgül bırakıp devam yazabilirsiniz. Ayrıca bu şekilde Ubuntu kurma şansınız da var. Bunun için Index of /debian yerine Index of /ubuntu yazabilirsiniz.

OpenSUSE için:
Kod:
zypper --root /mnt ar --refresh https://download.opensuse.org/tumbleweed/repo/oss/ oss
zypper --root /mnt in kernel-default grub2 zypper bash man vim shadow util-linux
zypper --root /mnt in --no-recommends NetworkManager

Fedora için: dnf install -releasever=40 --installroot=/mnt groupinstall core grub2-common
Bundan sonra fedora için şu linkten örnek almanızı tavsiye ediyorum:

1723900537797.webp

Devam edelim. Şimdi son aşamamız olan chroot ortamında yapılacak işlemlere geldik. Şimdi arch-chroot /mnt... Hayır Tabikide!

Evet arch-chroot aracını kullanacağız, ama shell scripting ile bunu direk yapamıyoruz. Bunun birden fazla çözümü var, ama ben en pratik değil de en kolayını söyliyeyim: aracı arch-chroot /mnt komutadı şeklinde kullanmak.

Yapılacak işlemleri düşünecek olursam: Arch kurulumu yapıyorum, pacman.conf dosyasını düzenlemek, sistem dilini ayarlamak, systemd servislerini aktif etmek ve bootloader kurulumu var. O zaman sırayla şu komutlar girilmeli:

Öncelikle elinizde pacman.conf dosyanızın bir kopyası bulunsun, installer ile de aynı dizinde bulunsun. Bunun için chroot ortamına gerek yok. Şu şekilde yapabiliriz:

cp -r /path/to/conf/pacman.conf /mnt/etc/pacman.conf

Şimdi ise benim tek aktif etmem gereken servisin networkmanager olduğu için:
arch-chroot /mnt systemctl enable NetworkManager

Dil kısmını atlıyorum, kendinize göre ekleyebilirsiniz.

1723902619609.webp


Şimdi ise bootloader kurulumu var:
arch-chroot /mnt grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=Nexus
arch-chroot /mnt grub-mkconfig -o /boot/grub/grub.cfg

UEFI için örnek gösterdim.

1723902979940.webp


Ekstra olarak, kullanıcı da eklemek istiyorum. Şu şekilde ekleyebilirim:
Kod:
arch-chroot /mnt useradd -m -g users -G storage,power,audio,video,network,wheel -s /bin/bash nexus
arch-chroot /mnt passwd nexus
arch-chroot /mnt passwd root

# Kullanıcı adını örnek verdim.
# passwd promptunu es geçmek isterseniz şu komutu da kullanabilirsiniz:

arch-chroot /mnt usermod --password $(echo 123456 | openssl passwd -1 -stdin) root
arch-chroot /mnt usermod --password $(echo 123456 | openssl passwd -1 -stdin) nexus

# Bu şekilde şifremizi prompt olmadan 123456 yapmış oluyoruz.

1723903618239.webp


Son olarak, kullanıcımızı sudoers'e eklememiz gerek. Bunu da echo komutu ile gerçekleştireceğiz:


arch-chroot /mnt echo "nexus ALL=(ALL:ALL) ALL" >> /etc/sudoers
Doas kullanıyor olabilirsiniz, onu da kendinize göre yaparsınız.

1723903903232.webp


Bir de kurulumun bittiğine dair bir mesaj ekleyelim:

echo Kurulum Tamamlandı!

1723904287138.webp


Evet, temel olarak her şey bu kadar. Yalnız installer şu an çok "base" duruyor, bundan sonra da siz devreye giriyorsunuz. İsteğinize bağlı olarak if - else, function methodlarını kullanarak ve kullanıcıdan girdi - çıktı alarak ve bir front end kütüphanesi kullanarak bu installerı çok daha iyi bir hale getirebilirsiniz, birden fazla masaüstü ortamı kurulumu için birkaç fonksiyon yazabilirsiniz. Front-End için Python kullanacaksanız pyqt öneriyorum.



Rehberimi okuduğunuz için teşekkür ederim.
 

Dosya Ekleri

  • 1723904261805.webp
    1723904261805.webp
    35,9 KB · Görüntüleme: 73
Son düzenleme: