Bir önceki yazıda Ubuntu sunucusu için otomatik kurulum ISO’su oluşturmuştuk. Bu yazıda, oluşturduğumuz bu ISO’yu ağ üzerinden (PXE Boot ile) nasıl boot edebileceğimizin adımlarını detaylandıracağız.
PXE Boot Nedir?
PXE (Preboot Execution Environment) Boot, bilgisayarların sabit disk veya CD/DVD gibi depolama birimlerine ihtiyaç duymadan, ağ kartı üzerinden açılmasını sağlayan bir protokoldür.
Kısaca çalışma prensibi şöyledir:
- İstek Gönderme: PXE destekli bir bilgisayar (istemci) açıldığında, ağ üzerinden bir DHCP sunucusuna (genellikle aynı zamanda PXE sunucusu da olan) bir önyükleme isteği gönderir.
- Bilgi Alma: DHCP sunucusu, istemciye bir IP adresi ve önyükleme dosyasının (genellikle bir işletim sistemi kurulumu veya özel bir önyükleme ortamı) konumunu (TFTP sunucusu adresi ve dosya adı) içeren bir yanıt gönderir.
- Dosya İndirme: İstemci, bu bilgilerle TFTP sunucusuna bağlanır ve önyükleme dosyasını (Network Boot Program – NBP) indirir.
- Önyükleme: İndirilen bu dosya istemcinin belleğine yüklenir ve çalıştırılır. Bu sayede bilgisayar, yerel bir depolama birimi olmadan ağ üzerinden önyükleme yapar ve gerekli işlemleri (örneğin işletim sistemi kurulumu) gerçekleştirir.
PXE Boot, özellikle büyük kurumsal ağlarda, birçok bilgisayara aynı anda işletim sistemi kurmak veya bakım yapmak gibi işlemler için pratik ve hızlı bir yöntemdir.
Gerekli Paketlerin Kurulması
PXE Boot ortamını hazırlamak için aşağıdaki paketleri sunucunuza kurmanız gerekiyor:
sudo apt update
sudo apt install apache2 tftpd-hpa syslinux-efiDikkat
Bu çalışmada DHCP sunucusu olarak FortiGate kullanacağım. Eğer ağınızda bir DHCP sunucunuz yoksa veya FortiGate kullanmıyorsanız, isc-dhcp-server paketini kurup yapılandırabilirsiniz.
ISO’yu Apache ile Yayınlama
Oluşturduğunuz otomatik kurulum ISO’sunu HTTP üzerinden ulaşılabilir hale getirmeliyiz. Bunun için Apache web sunucusunu kullanacağız.
Öncelikle, /var/www/html dizini altına ISO’larınız için bir dizin oluşturun ve ISO dosyanızı bu dizine kopyalayın:
mkdir -p /var/www/html/iso
cp ubuntu2404Server-autoinstall.iso /var/www/html/iso/Apache servisinin etkin ve çalışır durumda olduğundan emin olun:
systemctl enable --now apache2Tarayıcınızdan ISO dosyasının indirilebilir olduğunu kontrol edin. Server-IP kısmını kendi sunucunuzun IP adresiyle değiştirin:
http://Server-IP/iso/ubuntu2404Server-autoinstall.isoTFTP Konfigürasyonu
TFTP sunucusu, PXE istemcilerine önyükleme dosyalarını sağlamak için kullanılır.
TFTP yapılandırma dosyasını düzenleyelim:
sudo nano /etc/default/tftpd-hpaDosyanın içeriğini aşağıdaki gibi güncelleyin:
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/srv/tftp"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="--secure --verbose"Bu yapılandırma, TFTP sunucusunun 69 numaralı porttan gelen istekleri dinleyeceğini ve dosyaları /srv/tftp dizini içerisinden sunacağını belirtir.
Yaptığınız değişikliklerden sonra TFTP servisini yeniden başlatmayı unutmayın:
sudo systemctl restart tftpd-hpa.serviceISO’dan Kernel ve Initrd Dosyalarını Alma
Otomatik kurulum için gerekli olan kernel ve initrd dosyalarını ISO’dan çıkarıp TFTP dizinine kopyalamamız gerekiyor.
Öncelikle ISO dosyasını bağlayın (mount edin):
mkdir /mnt/iso
sudo mount -o loop ubuntu2404Server-autoinstall.iso /mnt/iso/Şimdi grub dosyalarını TFTP dizinine taşıyın ve gerekli yazma iznini verin:
sudo cp -r /mnt/iso/boot/grub/ /srv/tftp/
sudo chmod -R u+w /srv/tftp/grub/ # Yazma izni olmayabilir, bu komutla verin.Sırada kernel dosyaları var. Bunları casper dizininin içerisine atın:
sudo mkdir -p /srv/tftp/casper
sudo cp /mnt/iso/casper/initrd /srv/tftp/casper/
sudo cp /mnt/iso/casper/vmlinuz /srv/tftp/casper/Son olarak, Grub EFI dosyasını ana TFTP dizinine kopyalayalım:
sudo cp /usr/lib/grub/x86_64-efi-signed/grubnetx64.efi.signed /srv/tftp/grubx64.efiEğer grubnetx64.efi.signed dosyasını bulamazsanız, önce grub-efi-amd64-bin paketini kurmanız gerekebilir:
sudo apt install grub-efi-amd64-binUser-Data ve Meta-Data Dosyalarını Apache ile Paylaşma
Otomatik kurulum senaryosunda, user-data ve meta-data dosyalarını da Apache üzerinden paylaşmamız gerekecek.
sudo mkdir -p /var/www/html/autoinstall/ubuntuserver2404
sudo cp /mnt/iso/nocloud/user-data /var/www/html/autoinstall/ubuntuserver2404/
sudo cp /mnt/iso/nocloud/meta-data /var/www/html/autoinstall/ubuntuserver2404/Tarayıcınızdan bu dosyaların erişilebilirliğini kontrol edin:
http://Server-IP/autoinstall/ubuntuserver2404/user-dataGRUB Konfigürasyonunu Oluşturma
PXE istemcileri için GRUB menüsünü yapılandırmamız gerekiyor. /srv/tftp/grub/grub.cfg dosyasını oluşturun veya düzenleyin:
sudo nano /srv/tftp/grub/grub.cfgDosyanın içeriği aşağıdaki gibi olmalı:
Kod snippet’i
set timeout=15
set default="Ubuntu 24.04 Auto Install"
set timeout_style=menu
loadfont unicode
set menu_color_normal=white/black
set menu_color_highlight=black/light-gray
menuentry "Ubuntu 24.04 Auto Install" {
set gfxpayload=keep
linux /casper/vmlinuz ip=dhcp url=http://Server-IP/iso/ubuntu2404Server-autoinstall.iso autoinstall ds=nocloud\;s=http://Server-IP/autoinstall/ubuntuserver2404/ ---
initrd /casper/initrd
}Yukarıdaki konfigürasyonda özellikle şu üç satır önemli:
set timeout=15: Menü seçmek için 15 saniye bekler.set default="Ubuntu 24.04 Auto Install": 15 saniye sonunda otomatik olarak bu menüyü seçer.set timeout_style=menu: Zaman aşımı süresi dolduğunda menü gösterim stilini belirler.
Tüm bu işlemlerden sonra TFTP servisini tekrar başlatmayı unutmayın:
sudo systemctl restart tftpd-hpa.serviceDHCP Ayarları
Bu yazıda DHCP sunucusu olarak FortiGate kullanacağım. FortiGate üzerinde DHCP havuzuna next-server (PXE sunucusunun IP adresi) ve paylaşılacak grub dosyasının adını (filename) eklememiz gerekiyor.
Öncelikle, hangi DHCP konfigürasyonunu kullandığınızı kontrol edin:
show system dhcp serverDiyelim ki id‘si 22 olan DHCP sunucusunda yapılandırma yapacaksınız. Komut satırında aşağıdaki değişiklikleri yapın:
config system dhcp server
edit 22
set tftp-server "Server-IP" # PXE sunucunuzun IP adresi
set filename "grubx64.efi" # PXE istemcisine sunulacak önyükleme dosyası
set next-server Server-IP # PXE sunucunuzun IP adresi
endLog Takibi
PXE boot işlemlerindeki olası sorunları gidermek için TFTP ve diğer servislerin loglarını takip etmek önemlidir. TFTP ile ilgili loglara /var/log/syslog dosyasından bakabilirsiniz:
tail -f /var/log/syslog | grep -i tftpBu adımlarla Ubuntu otomatik kurulum ISO’sunu PXE boot üzerinden başarıyla kurabilmeniz gerekiyor.
