Ubuntu Auto Install Hazırlama Rehberi

Ubuntu Server 24.04 üzerinde otomatik kurulum (autoinstall) yapmak isteyenler için kapsamlı bir rehber hazırladım. Bu yazıda, Ubuntu Server 24.04 Live Server ISO dosyasını kullanarak kendi autoinstall ISO’nuzu nasıl oluşturacağınızı adım adım anlatacağım.

1. Ortam Hazırlığı ve Gerekli Paketler

Autoinstall sürecine başlamadan önce, host sunucunuzun Ubuntu Server 24.04 olduğundan emin olun. Daha sonra, ISO dosyasını düzenlemek ve yeni bir ISO oluşturmak için gerekli olan paketleri yüklemelisiniz:

sudo apt update
sudo apt install -y xorriso isolinux grub-pc-bin grub-efi-amd64-bin

2. ISO Dosyasını Hazırlama

Ubuntu Server ISO dosyasını sisteminize indirdikten sonra, içeriğini kolayca erişebileceğiniz bir dizine kopyalamamız gerekiyor.

ISO Dosyasını Bağlama (Mount Etme)

Öncelikle, ISO dosyasını geçici bir dizine bağlayın:

mkdir -p /mnt/iso
sudo mount -o loop ubuntu-24.04.2-live-server-amd64.iso /mnt/iso

Not: ubuntu-24.04.2-live-server-amd64.iso dosyasının adını indirdiğiniz ISO dosyasına göre güncellemeyi unutmayın.

Dosyaları Kopyalama

Şimdi, bağladığınız ISO içeriğini çalışacağımız ana dizine kopyalayalım:

mkdir -p /home/poc/ubuntu2404/iso
rsync -a /mnt/iso/ /home/poc/ubuntu2404/iso
sudo umount /mnt/iso

Bu komutlar, ISO içeriğini /home/poc/ubuntu2404/iso dizinine kopyalayacak ve ardından geçici bağlama noktasını kaldıracaktır.


3. Auto Install Dosyalarını Yapılandırma

Otomatik kurulumun anahtarı, nocloud dizini altında yer alacak meta-data ve user-data dosyalarıdır. Bu dosyalar, Ubuntu’nun kurulum sırasında ne yapması gerektiğini belirtir.

Nocloud Dizinini Oluşturma

İlk olarak, kopyaladığınız ISO içeriğinin bulunduğu dizinde nocloud adında bir dizin oluşturun:

mkdir -p /home/poc/ubuntu2404/iso/nocloud

Meta-data Dosyası

meta-data dosyası, genellikle cloud-init ile birlikte çalışan ve kurulacak sunucu hakkında temel bilgileri sağlayan dosyadır. Basit bir instance-id ile oluşturabiliriz:

echo "instance-id: iid-local01" > /home/poc/ubuntu2404/iso/nocloud/meta-data

User-Data Dosyası

user-data dosyası, otomatik kurulumun beynidir. Kullanıcı oluşturma, paket yükleme, komut çalıştırma, disk bölümlendirme, ağ ayarları gibi tüm detaylı yapılandırmaları içerir. Ubuntu’nun autoinstall yapılandırması genellikle bu dosyanın içine YAML formatında yazılır. İşte bir örnek user-data yapılandırması:

#cloud-config
autoinstall:
  version: 1
  identity:
    hostname: ubuntu24
    username: poc
    password: "$6$rounds=4096$psZlLS/DU$D.r8wJzwKXj/1oBW7XMHYr13vLUQcndur57PeoDQO5n86KeVM5axw11HzHXb6a2KpRY21.i/0veqjZTtmDdl5/"
  locale: en_US
  keyboard:
    layout: us
  ssh:
    install-server: true
  storage:
    swap:
      size: 0
    grub:
      efi: true
      devices: [ /dev/sda ]
    config:
      - type: disk
        id: disk
        ptable: gpt
        path: /dev/sda
        wipe: superblock-recursive
        preserver: false
      - type: partition
        id: efi-part
        device: disk
        size: 1073741824
        flag: boot
        wipe: superblock
        preserver: false
        grub_device: true
      - type: format
        id: efi-format
        volume: efi-part
        fstype: fat32
      - type: mount
        id: efi-mount
        path: /boot/efi
        device: efi-format
      - type: partition
        id: root-part
        device: disk
        size: 134217728000
      - type: format
        id: root-format
        volume: root-part
        fstype: ext4
      - type: mount
        id: root-mount
        path: /
        device: root-format
      - type: partition
        id: kiosk-part
        device: disk
        size: -1
      - type: format
        id: kiosk-format
        volume: kiosk-part
        fstype: ext4
      - type: mount
        id: kiosk-mount
        path: /kiosk
        device: kiosk-format

Buradaki yapılandırmaya göre disk yapısı şöyle oluşacak:

Önemli Notlar:

  • Şifre Oluşturma: Yukarıdaki password alanı hashlenmiş bir şifre içerir. Kendi şifrenizi oluşturmak için aşağıdaki komutu kullanabilirsiniz: mkpasswd --method=SHA-512
  • Girinti (Indentation): YAML dosyalarında girintiler kritik öneme sahiptir. Yanlış girinti hatalara yol açabilir. Boşluklara dikkat ettiğinizden emin olun. Girintileri kontrol etmek için cat -A user-data komutunu kullanabilirsiniz.
  • Dosya Tipi: user-data dosyasının çıktısı file user-data komutuyla user-data: ASCII text olmalıdır.

Yukarıdaki user-data yapılandırmasının adım adım ne işe yaradığına göz atalım:

#cloud-config                         # Bu satır, dosyanın bir cloud-init yapılandırma dosyası olduğunu belirtir.
autoinstall:                          # Bu bölüm, Ubuntu'nun autoinstall sürecine özgü yapılandırmaları içerir.
  version: 1                          # Autoinstall yapılandırma dosyasının sürümünü belirtir. Genellikle '1'dir.
  identity:                           # Yeni kurulacak sistemin kimlik bilgilerini tanımlar.
    hostname: ubuntu24                # Sistemin ana bilgisayar adını 'ubuntu24' olarak ayarlar.
    username: poc                     # Sistemin kullanıcı adını 'poc' olarak ayarlar.
    password: "$6$rounds=4096$..."    # Hashlenmiş kullanıcı şifresi.
  locale: en_US                       # Sistemin yerel ayarlarını (dil, tarih/saat) 'en_US' olarak ayarlar.
  keyboard:                           # Klavye düzeni ayarlarını içerir.
    layout: us                        # Sistem klavye düzenini US olarak ayarlar.
  ssh:
    install-server: true              # SSH sunucusunun kurulmasını sağlar.
  storage:                            # Depolama aygıtlarının (diskler ve bölümler) yapılandırmasını içerir.
    swap:                             # Takas alanı ayarı.
      size: 0                         # Takas alanı boyutunu 0 olarak ayarlar (kullanılmaz).
    grub:                             # GRUB önyükleyici ayarları.
      efi: true                       # UEFI kurulumu olacağı için EFI desteğini etkinleştirir.
      devices: [ /dev/sda ]           # GRUB'un kurulacağı disk.
    config:
      - type: disk                    # Bu öğenin bir disk olduğunu belirtir.
        id: disk                      # Diskin benzersiz kimliğini belirtir.
        ptable: gpt                   # Diskin GPT bölümleme tablosunu kullanacağını belirtir.
        path: /dev/sda                # İşlem yapılacak disk yolu.
        wipe: superblock-recursive    # Diskteki mevcut süperblokları siler (temiz kurulum için).
        preserver: false              # Mevcut disk içeriğinin korunmayacağını belirtir.
      - type: partition               # EFI bölümü tanımı.
        id: efi-part
        device: disk
        size: 1073741824              # Bölüm boyutunu bayt cinsinden belirtir (yaklaşık 1 GB).
        flag: boot                    # Bu bölümün önyüklenebilir (EFI) olduğunu belirtir.
        wipe: superblock
        preserver: false
        grub_device: true
      - type: format                  # EFI bölümünü biçimlendirme.
        id: efi-format
        volume: efi-part
        fstype: fat32                 # Bölümün FAT32 dosya sistemiyle biçimlendirileceğini belirtir (EFI için standart).
      - type: mount                   # EFI bölümünü bağlama.
        id: efi-mount
        path: /boot/efi
        device: efi-format
      - type: partition               # Kök (root) bölümü tanımı.
        id: root-part
        device: disk
        size: 134217728000            # Bölüm boyutu (yaklaşık 125 GB).
      - type: format                  # Kök bölümünü biçimlendirme.
        id: root-format
        volume: root-part
        fstype: ext4
      - type: mount                   # Kök bölümünü bağlama.
        id: root-mount
        path: /
        device: root-format
      - type: partition               # Kiosk (ikincil) bölüm tanımı.
        id: kiosk-part
        device: disk
        size: -1                      # Kalan tüm alanı kullanır.
      - type: format                  # Kiosk bölümünü biçimlendirme.
        id: kiosk-format
        volume: kiosk-part
        fstype: ext4
      - type: mount                   # Kiosk bölümünü bağlama.
        id: kiosk-mount
        path: /kiosk
        device: kiosk-format

4. Boot Parametrelerini Güncelleme

Yeni oluşturduğumuz nocloud dizinini ve user-data dosyasını kurulum sırasında tanıyabilmesi için GRUB menüsüne ekleme yapmalıyız.

Aşağıdaki dosyayı bir metin düzenleyici ile açın:

sudo nano /home/poc/ubuntu2404/iso/boot/grub/grub.cfg

Bu dosyanın içinde, linux ile başlayan satırın sonuna aşağıdaki parametreyi ekleyin:

autoinstall ds=nocloud\;s=/cdrom/nocloud/ ---

Ekledikten sonra satır şöyle görünmelidir (örnek):

linux /casper/vmlinuz --- autoinstall ds=nocloud\;s=/cdrom/nocloud/ ---

5. Yeni ISO Dosyasını Oluşturma

Tüm düzenlemeleri yaptıktan sonra, otomatik kurulumu destekleyen yeni ISO dosyamızı oluşturabiliriz.

Önemli: Aşağıdaki komutu, daha önce rsync ile kopyaladığınız ISO içeriğinin bulunduğu dizinde çalıştırmalısınız. Benim örneğimde bu dizin /home/poc/ubuntu2404/iso idi.

cd /home/poc/ubuntu2404/iso
sudo xorriso -as mkisofs -r \
-V 'Ubuntu-Server 24.04.2 LTS amd64' \
--modification-date='2025021622492200' \
--grub2-mbr --interval:local_fs:0s-15s:zero_mbrpt,zero_gpt:'/home/poc/ubuntu2404/ubuntu-24.04.2-live-server-amd64.iso' \
--protective-msdos-label \
-partition_cyl_align off \
-partition_offset 16 \
--mbr-force-bootable \
-append_partition 2 0xef --interval:local_fs:6264708d-6274851d::'/home/poc/ubuntu2404/ubuntu-24.04.2-live-server-amd64.iso' \
-part_like_isohybrid \
-c '/boot.catalog' \
-b '/boot/grub/i386-pc/eltorito.img' \
-no-emul-boot \
-boot-load-size 4 \
-boot-info-table \
--grub2-boot-info \
-eltorito-alt-boot \
-e '--interval:appended_partition_2_start_1566177s_size_10144d:all::' \
-no-emul-boot \
-boot-load-size 10144 \
-isohybrid-gpt-basdat \
. \
-o /root/AutoInstall/UbuntuServer2404/ubuntu24-autoinstall.iso

Dikkat Edilmesi Gereken Yerler:

  1. --interval:local_fs:0s-15s:zero_mbrpt,zero_gpt:'/home/poc/ubuntu2404/ubuntu-24.04.2-live-server-amd64.iso'
  2. -append_partition 2 0xef --interval:local_fs:6264708d-6274851d::'/home/poc/ubuntu2404/ubuntu-24.04.2-live-server-amd64.iso'

Yukarıdaki iki satırda orijinal ISO dosyasının tam yolunu (/home/poc/ubuntu2404/ubuntu-24.04.2-live-server-amd64.iso) doğru bir şekilde belirttiğinizden emin olun.

  1. -o /root/AutoInstall/UbuntuServer2404/ubuntu24-autoinstall.iso

Bu son satırda ise yeni oluşturulacak ISO dosyasının çıkış yolunu ve adını belirtebilirsiniz.

Bu adımları tamamladıktan sonra, artık otomatik kurulum yeteneğine sahip kendi Ubuntu Server 24.04 ISO dosyanız hazır olacaktır. Bu ISO’yu sanal makinelerinizde veya fiziksel sunucularınızda kullanarak hızlı ve standartlaştırılmış kurulumlar yapabilirsiniz.

Leave a Reply

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir