[NASIL] Kurulu Arch...
 
Bildirimler
Tümünü temizle

[Sabit] [NASIL] Kurulu Arch Linux tabanlı dağıtımları çalışan ISO haline getirme

1 Gönderiler
1 Üyeler
0 Reactions
426 Görüntüleme
(@alicavus)
Üye Admin
Katılım : 2 yıl önce
Gönderiler: 2
Konu başlatıcı  

Bu belgede bilgisayarımıza kurulu Arch Linux tabanlı dağıtımın çalışan ISO ortamı haline getirilmesi anlatılacaktır. Söz konusu işlem tamamen "amatör" diyebileceğimiz, yani resmi dağıtım yapımı sürecini kapsamayan kendi kullanımımıza yönelik çalışmayı kapsamaktadır. Bu belge hiç bir şekilde resmi veya gayrı resmi mesuliyet isnadı kabul etmez, herhangi garantisi tahakkukunda bulunmaz. Kendin yap (DIY, "Do It Yourself") mantığına uygun olarak çıkabilecek sorunlarla söz konusu kullanıcının az buçuk çözüm süreçlerine hakim olmalıdırlar.

Yöntem tarafımca denenmiştir.

0. Gerekli ortam:

  • En son Arch Linux kurulum ISO ortamı
  • Sabit diskimizde gerekli alan
  • rsync
  • squashfs-tools
  • git
  • libisoburn
  • qemu, virtualbox, vmware gibi sanallaştırma yazılımı
  • bolca sabır, zaman + kahve

$ işareti normal kullanıcıyı # ise yetkili kullanıcıyı temsil etmektedir.

1. İlkönce çalışma dizinlerimizi oluşturalım:

$ mkdir -p ~/workdir/{iso,myinstall}

2. Güncel Arch Linux ISO ortamını açalım:

$ bsdtar -xf archlinux-2022.11.01-x86_64.iso -C ~/workdir/iso
$ find ~/workdir/iso -type d -exec chmod 0755 {} \;
$ find ~/workdir/iso -type f -exec chmod 0644 {} \;

3. Kurulu sistemimizi çalışma dizinine kopyalayalım:

$ sudo rsync -av /* ~/workdir/myinstall --exclude=dev/*  --exclude=home/$USER/* --exclude=media/* --exclude=mnt/* --exclude=proc/* --exclude=sys/* --exclude=tmp/* --exclude=var/cache/pacman/pkg/* --exclude=var/lib/pacman/sync* --exclude=var/tmp/*

4. Çalışma dizinindeki sisteme arch-install-scripts, mkinitcpio-archiso paketlerini kuralım:

$ sudo pacman -S arch-install-scripts mkinitcpio-archiso -r ~/workdir/myinstall/

5. Kullanıcı dizinindeki ayar dosyalarını (.config, .cinnamon, .mozilla, .bashrc, .pam_environment, .bash_profile, .xinitrc vs...) ~/workdir/myinstall/home/$USER dizinine kopyalayım.

$ cp -av ~/.{config,cinnamon,mozilla,{ba,z}shrc,pam_environment,{bash_,z}profile,xinitrc} ~/workdir/myinstall/home/$USER

6. ~/workdir/myinstall/etc/mkinitcpio.conf dosyasına archiso ve archiso_loop_mnt kancalarını ekleyelim.

Not: Eğer söz konusu ayar dosyasında udev yerine systemd eklediysek eski haline çevirmeliyiz (systemd silip udev ekliyoruz), archiso malesef systemd ile düzgün çalışmıyor.

7. ISO ortamımız için initramfs dosyasını oluşturalım:

$ sudo ~/workdir/myinstall/usr/bin/arch-chroot ~/workdir/myinstall mkinitcpio -P
$ sudo cp ~/workdir/myinstall/boot/vmlinuz-linux* ~/workdir/myinstall/boot/initramfs-linux*.img ~/workdir/iso/arch/boot/x86_64/
$ sudo rm -f ~/workdir/iso/boot/arch/x86_64/*fallback*

Not: Kullandığımız çekirdeğe(-klere) göre ~/workdir/myinstall/boot dizininde oluşan dosyaların isimleri farklılık gösterebilir (örn. vmlinuz-linux-lts, vmlinuz-linux-zen gibi), bunları ~/workdir/iso/arch/boot/x86_64/ dizinine kopyalayınca önyükleyici ayarlarına düzgün biçimde eklemeliyiz.

8. ISO ortamımız için güncel paket listesini ekleyelim:

$ pacman -Q -r ~/workdir/myinstall > ~/workdir/iso/arch/pkglist.x86_64.txt 

9. Gereksiz dosya ve dizinleri temizleyelim

~/workdir/myinstall dizininde:

    • /var/cache, /var/log, /var/spool, /var/db/sudo/lectured dizinlerinde gereksiz dosyaları siler ya da içeriğini sıfırlayabiliriz.
    • /home dizininde diğer yerel kullanıcılara ait dizinleri silmeliyiz:
$ sudo ~/workdir/myinstall/usr/bin/arch-chroot ~/workdir/myinstall userdel -fr kullanici
    • /etc dizininde kişisel verileri silmeliyiz (örn. Ağ şifreleri), gereksiz systemd servislerini devre dışı bırakmalıyız.
    • /etc/fstab dosyasını sıfırlamalıyız, varsa /etc/crypttab silmeliyiz:
$ sudo truncate -s 0 ~/workdir/myinstall/etc/fstab
  • /boot dizininin içeriğini silmeliyiz:
$ sudo rm -rfv ~/workdir/myinstall/boot/*

~/workdir/iso dizininde eski önyükleyici yapılandırmalarını kaldırmalıyız:

$ rm -rfv ~/workdir/iso/{syslinux,EFI,arch/grubenv}

10. Sistem airootfs imajı ve sağlama dosyası oluşturma:

$ rm ~/workdir/iso/arch/x86_64/airootfs.*
$ sudo mksquashfs ~/workdir/myinstall ~/workdir/iso/arch/x86_64/airootfs.sfs -b 1M -comp xz -Xbcj x86 -Xdict-size 1M
$ cd ~/workdir/iso/arch/x86_64/
$ sha512sum airootfs.sfs > airootfs.sha512 

11. ~/workdir/iso dizini erişimleri ayarlama:

$ sudo find ~/workdir/iso -exec chown $USER:$USER {} \;
$ sudo find ~/workdir/iso -type d -exec chmod 0755 {} \;
$ sudo find ~/workdir/iso -type f -exec chmod 0644 {} \;

12. Önyükleyici kurma ve ayarlama:

$ git clone  https://github.com/limine-bootloader/limine.git  --branch=v4.x-branch-binary --depth=1 ~/workdir/limine-bin
$ cp ~/workdir/limine-bin/limine*{sys,bin} ~/workdir/iso
$ cat << EOF > ~/workdir/iso/limine.cfg
DEFAULT_ENTRY=1
TIMEOUT=30
VERBOSE=yes
INTERFACE_BRANDING=My Custom Arch ISO
INTERFACE_BRANDING_COLOUR=2
TERM_BACKGROUND=88000000
:Custom Arch ISO
    COMMENT=Boot custom Archiso
    PROTOCOL=linux
    KERNEL_PATH=boot:///arch/boot/x86_64/vmlinuz-linux
    MODULE_PATH=boot:///arch/boot/intel-ucode.img
    MODULE_PATH=boot:///arch/boot/x86_64/initramfs-linux.img
    CMDLINE=archisobasedir=arch archisolabel=CUSTOMISO
:UEFI shell (UEFI only)
    COMMENT=Run UEFI shell
    PROTOCOL=chainload
    IMAGE_PATH=boot:///shellx64.efi
:Boot next
    COMMENT=Boot next available boot option
    PROTOCOL=chainload_next
EOF

Farklı çekirdekler için yeni girdiler ekleyebilir veya mevcut olanı düzenleyebilirsiniz.

Not: limine önyükleyicisi 4 GiB ve üzeri ISO dosyalarını çalıştıramaz.

13. ISO kalıbı oluşturma:

$ xorriso -as mkisofs -eltorito-boot limine-cd.bin -no-emul-boot -boot-load-size 4 -boot-info-table --efi-boot limine-cd-efi.bin -iso-level 3 -full-iso9660-filenames -joliet -joliet-long -rational-rock -volid CUSTOMISO -output ~/workdir/mycustom.iso ~/workdir/iso

Çalışma dizininde mycustom.iso oluştulunca, sanallaştırma yazılımıyla test edebiliriz:

$ qemu-system-x86_64 -drive file=~/workdir/mycustom.iso,format=raw,media=cdrom -m 4G -accel kvm -cpu host 

İşlem başarıyla bittiğinde ISO dosyamızı taşıyıp çalışma dizini ~/workdir komple kaldırabiliriz:

$ sudo rm -rf ~/workdir

   
Alıntı
Paylaş: