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-efi
Dikkat
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 apache2
Tarayı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.iso
TFTP 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-hpa
Dosyanı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.service
ISO’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.efi
Eğer grubnetx64.efi.signed
dosyasını bulamazsanız, önce grub-efi-amd64-bin
paketini kurmanız gerekebilir:
sudo apt install grub-efi-amd64-bin
User-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-data
GRUB 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.cfg
Dosyanı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.service
DHCP 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 server
Diyelim 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
end
Log 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 tftp
Bu adımlarla Ubuntu otomatik kurulum ISO’sunu PXE boot üzerinden başarıyla kurabilmeniz gerekiyor.