Takip et

FreeBSD 10.1’de Çekirdeğinizi Özelleştirme ve Yeniden Derleme Rehberi

FreeBSD 10.1’de Çekirdeğinizi Özelleştirme ve Yeniden Derleme Rehberi FreeBSD, güçlü ve esnek bir işletim sistemi olmasının yanı sıra,

FreeBSD 10.1’de Çekirdeğinizi Özelleştirme ve Yeniden Derleme Rehberi

FreeBSD, güçlü ve esnek bir işletim sistemi olmasının yanı sıra, kullanıcılara sistemlerinin en derin katmanlarına kadar inme ve özelleştirme imkanı sunar. Bu özelleştirmelerin başında çekirdek (kernel) derleme gelir. Kendi çekirdeğinizi derlemek, sisteminizin performansını optimize etmek, belirli donanım desteğini eklemek veya kaldırmak, güvenlik özelliklerini güçlendirmek ve hatta hata ayıklama yeteneklerini geliştirmek için güçlü bir yöntemdir. Bu rehberde, FreeBSD 10.1 üzerinde çekirdeğinizi nasıl özelleştireceğinizi ve yeniden derleyeceğinizi adım adım öğreneceksiniz.

Önemli Not: FreeBSD 10.1, 31 Mart 2017 tarihinde kullanım ömrünü (End-of-Life – EOL) tamamlamıştır. Bu, artık bu sürüm için güvenlik güncellemeleri veya hata düzeltmeleri yayınlanmadığı anlamına gelir. Üretim ortamlarında güncel ve desteklenen bir FreeBSD sürümü kullanmanız şiddetle tavsiye edilir. Ancak, bu rehber talebiniz doğrultusunda FreeBSD 10.1 spesifikasyonlarına uygun olarak hazırlanmıştır.

Neden Kendi Çekirdeğinizi Derlemelisiniz?

FreeBSD, varsayılan olarak “GENERIC” adlı bir çekirdek ile gelir. Bu çekirdek, geniş bir donanım yelpazesini desteklemek ve çoğu kullanıcı için “kutudan çıktığı gibi” çalışmak üzere tasarlanmıştır. Ancak, kendi çekirdeğinizi derlemek size şu avantajları sunar:

* Performans Optimizasyonu: Kullanmadığınız sürücüleri ve özellikleri çekirdekten çıkararak çekirdeğin boyutunu küçültebilir ve bellekte daha az yer kaplamasını sağlayabilirsiniz. Bu, özellikle kaynakları kısıtlı sistemlerde veya yüksek performans gerektiren uygulamalarda fark yaratabilir.
* Özel Donanım Desteği: Varsayılan GENERIC çekirdeğinde bulunmayan veya özel ayarlamalar gerektiren belirli bir donanım (örneğin, eski bir ağ kartı, özel bir RAID denetleyici) için destek ekleyebilirsiniz.
* Gelişmiş Güvenlik: İhtiyaç duymadığınız modülleri ve özellikleri devre dışı bırakarak potansiyel güvenlik açıklarının sayısını azaltabilirsiniz.
* Hata Ayıklama Yetenekleri: Çekirdek hata ayıklayıcı (DDB/KDB) gibi özel hata ayıklama seçeneklerini etkinleştirerek sistem sorunlarını daha derinlemesine inceleyebilirsiniz.
* Özel Özellikler: VIMAGE (sanal ağ yığınları), ALTQ (gelişmiş kuyruk yönetimi) gibi özel FreeBSD özelliklerini etkinleştirebilirsiniz.

Hazırlık Aşaması: Gerekli Araçlar ve Ön Gereksinimler

Çekirdek derleme işlemine başlamadan önce, sisteminizin hazır olduğundan emin olmanız gerekir.

1. Sistem Kaynak Kodlarını Edinme

Çekirdeği derlemek için öncelikle FreeBSD kaynak kodlarına ihtiyacınız vardır. Bu kodlar genellikle /usr/src dizininde bulunur. Eğer bu dizin boşsa veya eksikse, kaynak kodlarını indirmeniz gerekecektir. FreeBSD 10.1 için svn (Subversion) kullanmak yaygın bir yöntemdir:

# İlk kez indiriyorsanız:
svn checkout https://svn.freebsd.org/base/release/10.1.0 /usr/src

Eğer daha önce indirdiyseniz ve güncellemek istiyorsanız:

cd /usr/src svn update

Alternatif: Eğer sisteminiz zaten freebsd-update ile düzenli olarak güncelleniyorsa, kaynak kodlarını da bu yolla indirebilirsiniz:

freebsd-update fetch install

Bu komut, /usr/src dizinini sisteminizle eşleşen kaynak kodlarıyla doldurur.

Kaynak kodlarının doğru sürüm olduğundan emin olmak için, indirdikten sonra cat /usr/src/sys/conf/newvers.sh komutu ile kontrol edebilirsiniz. Çıktıda 10.1-RELEASE gibi bir ifade görmelisiniz.

2. Gerekli Derleme Araçları

FreeBSD’nin temel kurulumu genellikle çekirdek derlemek için gerekli tüm araçları (gcc, make, vb.) içerir. Ek bir yazılıma nadiren ihtiyaç duyulur. Ancak emin olmak için pkg install build-essential gibi bir komut (bu sadece Linux’ta var, FreeBSD’de genelde gerekmez) yerine, temel sistemin güncel olduğundan emin olmalısınız.

3. Mevcut Çekirdeği Yedekleme

Herhangi bir sorun yaşamanız durumunda geri dönebileceğiniz bir yol olması kritik öneme sahiptir. FreeBSD, yeni bir çekirdek kurduğunuzda otomatik olarak eski çekirdeği yedekler, ancak manuel bir yedekleme yapmak her zaman iyi bir alışkanlıktır:

cp -R /boot/kernel /boot/kernel.bak

Bu, mevcut çekirdek dizininizi /boot/kernel.bak olarak yedekler. Eğer yeni çekirdeğiniz önyükleme yapmazsa, önyükleyici (boot loader) üzerinden bu yedek çekirdeğe geri dönebilirsiniz.

Çekirdek Yapılandırma Dosyasının Özelleştirilmesi

Çekirdek derlemenin kalbi, yapılandırma dosyasıdır. Bu dosya, çekirdeğinizin hangi özellikleri, sürücüleri ve seçenekleri içereceğini belirler.

1. Yapılandırma Dosyasını Bulma ve Kopyalama

Varsayılan GENERIC çekirdek yapılandırma dosyası, sistem mimarinize (örneğin amd64 veya i386) bağlı olarak /usr/src/sys/ARCH/conf/GENERIC yolunda bulunur.

# Örnek olarak AMD64 mimarisi için:
cd /usr/src/sys/amd64/conf
ls

Çıktıda GENERIC dosyasını görmelisiniz.

Şimdi bu dosyayı kopyalayarak kendi özelleştirilmiş yapılandırma dosyanızı oluşturun. Bu dosyaya anlamlı bir isim verin, örneğin MYKERNEL:

cp GENERIC MYKERNEL

2. Yapılandırma Dosyasını Düzenleme

Şimdi MYKERNEL dosyasını favori metin düzenleyicinizle (örneğin vi veya ee) açın:

vi MYKERNEL

İçinde birçok device, options ve ident satırı göreceksiniz. İşte bazı yaygın düzenleme örnekleri:

* ident Satırı: Bu, çekirdeğinizin adıdır. Varsayılan olarak GENERIC yazar. Kendi çekirdeğiniz olduğunu belirtmek için bunu değiştirebilirsiniz:

ident           MYKERNEL

* CPU Desteği: Sadece kendi işlemcinizin desteğini dahil ederek çekirdek boyutunu azaltabilirsiniz. Örneğin, sadece AMD K8 veya Intel Core 2 işlemci desteği için:

cpu             AMD
    #cpu            INTEL_PPRO
    #cpu            INTEL_CORE2

Veya daha spesifik işlemci türleri için:

#cpu            I486_CPU
    #cpu            I586_CPU
    #cpu            I686_CPU
    cpu             HAMMER # AMD Opteron/Athlon64
    #cpu            K8 # AMD K8 family
    #cpu            CORE2 # Intel Core 2 family

Eğer hangi CPU’ya sahip olduğunuzdan emin değilseniz, sysctl hw.model komutunu kullanabilirsiniz. Genel olarak, GENERIC bırakmak en güvenlisidir.

* Cihaz Sürücülerini Ekleme/Kaldırma (device, nodevice):
* Kullanmadığınız eski donanım sürücülerini kaldırabilirsiniz. Örneğin, eski paralel port veya IDE denetleyicileri:

#device         ppc             # Parallel port
        #device         atp             # ATAPI tape (old, rarely used)
        #device         ata             # ATA/ATAPI disk and CDROM drivers

nodevice kullanarak da bir cihazı kesin olarak dışarıda bırakabilirsiniz:

nodevice        ata             # ATA/ATAPI disk ve CDROM sürücülerini devre dışı bırak

* Özel bir donanım için destek eklemek isteyebilirsiniz. Örneğin, belirli bir Ethernet kartı (em veya igb gibi):

device          em              # Intel PRO/1000 Gigabit Ethernet
        #device         re              # Realtek 8169/8168/8101E/8111/8168/8411/8118

Hangi ağ kartınız olduğunu pciconf -lv komutu ile görebilirsiniz.

* Seçenekleri Ekleme/Kaldırma (options, nooptions):
* Hata Ayıklama: Geliştirme veya sorun giderme için çekirdek hata ayıklayıcıyı (DDB) etkinleştirebilirsiniz:

options         DDB             # Kernel debugger

* Güvenlik: Bazı güvenlik seçeneklerini etkinleştirebilirsiniz:

options         MAC             # Mandatory Access Control framework

* Performans/Özellikler: Örneğin, ALTQ (gelişmiş kuyruk yönetimi) desteği:

options         ALTQ            # Alternative Queueing for bandwidth management
        options         ALTQ_CBQ        # Class Based Queueing
        options         ALTQ_RED        # Random Early Detection
        options         ALTQ_RIO        # RED In/Out
        options         ALTQ_HFSC       # Hierarchical Fair Service Curve
        options         ALTQ_CDNR       # Diffserv Compliant Differentiated Services
        options         ALTQ_PRIQ       # Priority Queueing

* Gereksiz Seçenekleri Kapatma: Örneğin, eski SCSI aygıtları veya disket sürücüleri için seçenekleri kapatabilirsiniz:

#options        SCSI_DELAY      # Delay for SCSI devices to come ready
        #options        FD_DEBUG        # Floppy drive debugging

Yapılandırma dosyasını düzenlerken dikkatli olun. Neyi değiştirdiğinizden emin değilseniz, o satırı yorum satırı yapın (# ile başlatın) veya olduğu gibi bırakın. Başlangıçta sadece ident satırını değiştirmek ve birkaç belirgin, kullanılmayan sürücüyü yorum satırı yapmak iyi bir başlangıç olabilir.

Yeni Çekirdeği Derleme ve Kurma

Yapılandırma dosyanızı özelleştirdikten sonra, yeni çekirdeği derleme ve sisteminize kurma zamanı gelmiştir.

1. Çekirdeği Derleme

root kullanıcısı olarak /usr/src dizinine gidin ve derleme işlemini başlatın:

cd /usr/src
make buildkernel KERNCONF=MYKERNEL

* make buildkernel: Çekirdeği ve modüllerini derler.
* KERNCONF=MYKERNEL: Hangi yapılandırma dosyasını kullanacağınızı belirtir. Kendi dosyanızın adı ne ise onu yazın.

Bu işlem, sisteminizin donanımına ve işlemcinizin gücüne bağlı olarak biraz zaman alabilir (genellikle birkaç dakikadan bir saate kadar). İşlem sırasında birçok derleme çıktısı göreceksiniz. Eğer bir hata oluşursa, çıktı size nerede bir sorun olduğunu gösterecektir.

2. Çekirdeği Kurma

Derleme işlemi başarıyla tamamlandıktan sonra, yeni çekirdeği sisteminize kurabilirsiniz:

make installkernel KERNCONF=MYKERNEL

Bu komut:
* Mevcut /boot/kernel dizinini /boot/kernel.old olarak yedekler.
* Yeni derlenmiş çekirdeği ve modüllerini /boot/kernel dizinine kopyalar.

Kurulum işlemi genellikle hızlıdır.

3. Sistemi Yeniden Başlatma

Yeni çekirdeğinizin etkinleşmesi için sisteminizi yeniden başlatmanız gerekir:

reboot

Sistem yeniden başladıktan sonra, uname -a komutunu kullanarak yeni çekirdeğinizin yüklendiğinden emin olabilirsiniz. Çıktıda MYKERNEL adını görmelisiniz:

uname -a

Örnek çıktı: FreeBSD myhost.example.org 10.1-RELEASE-pXX FreeBSD 10.1-RELEASE-pXX #0: Mon Jan 1 12:00:00 EST 2024 root@myhost.example.org:/usr/src/sys/amd64/compile/MYKERNEL amd64

Sorun Giderme ve İpuçları

Çekirdek derleme işlemi bazen sorunlarla karşılaşabilir. İşte karşılaşabileceğiniz bazı durumlar ve çözümleri:

1. Derleme Hataları

* Eksik Kaynak Kodları: /usr/src dizininin eksik veya bozuk olması. Kaynak kodlarını tekrar indirmeyi veya güncellemeyi deneyin.
* Yapılandırma Dosyası Hataları: MYKERNEL dosyasında yazım hataları veya geçersiz device/options satırları. Hata mesajını dikkatlice okuyun, genellikle hangi satırda sorun olduğunu belirtir.
* Temiz Bir Başlangıç: Bazen önceki derleme artıkları sorunlara neden olabilir. Temiz bir başlangıç için:

cd /usr/src
    make clean
    make cleandepend
    # Sonra tekrar make buildkernel KERNCONF=MYKERNEL

2. Sistem Önyükleme Yapmıyor

Bu, en korkulan senaryodur. Ancak endişelenmeyin, bir çözüm yolu var:

* Önyükleyici Menüsü: Sisteminiz açılırken, genellikle 1-2 saniye süren bir geri sayım görürsünüz. Bu sırada herhangi bir tuşa (genellikle boşluk tuşu) basarak önyükleyici menüsüne girebilirsiniz.
* Eski Çekirdeği Yükleme: Önyükleyici menüsünde, genellikle “Escape to loader prompt” veya “Boot [K]ernel” gibi bir seçenek bulunur. Buradan komut satırına düşerek eski çekirdeği yükleyebilirsiniz:

# loader> komut istemindeyken
    unload
    set kernel="kernel.old"
    boot

Bu komutlar, sistemin /boot/kernel.old dizinindeki yedek çekirdeği kullanarak önyükleme yapmasını sağlayacaktır. Sistem açıldıktan sonra, MYKERNEL dosyanızı tekrar kontrol edebilir ve sorunları giderebilirsiniz.

* Tek Kullanıcılı Mod (Single-User Mode): Önyükleyici menüsünde “Boot Single User” seçeneğini seçerek tek kullanıcılı moda geçebilirsiniz. Burada dosya sistemleri genellikle salt okunur olarak bağlanır. mount -u / ve mount -a -t ufs komutlarıyla yazılabilir hale getirip MYKERNEL dosyanızı düzenleyebilirsiniz.

3. Hangi Sürücüleri Kaldıracağımı Nasıl Bilirim?

* pciconf -lv: PCI aygıtlarınızın listesini ve kullandıkları sürücüleri gösterir.
* dmesg: Önyükleme sırasında çekirdek tarafından tanınan aygıtları ve yüklenen modülleri listeler.
* kenv: Çekirdek ortam değişkenlerini gösterir.
* man : Bir sürücünün manuel sayfasını okuyarak ne işe yaradığını öğrenebilirsiniz.

Başlangıçta, emin olmadığınız hiçbir şeyi kaldırmayın. Yorum satırı yaparak test edin.

Sonuç ve Sıkça Sorulan Sorular (SSS)

Kendi FreeBSD çekirdeğinizi derlemek, sisteminiz üzerinde tam kontrol sağlamanın ve onu özel ihtiyaçlarınıza göre optimize etmenin en etkili yollarından biridir. Bu süreç, ilk başta karmaşık görünse de, adım adım ilerlediğinizde oldukça yönetilebilir olduğunu göreceksiniz. Unutmayın, her zaman bir yedekleme bulundurmak ve değişiklikleri küçük adımlarla yapmak, olası sorunları minimize etmenin anahtarıdır.

Sıkça Sorulan Sorular (SSS)

1. Neden freebsd-update ile çekirdeği güncellemiyorum?
freebsd-update aracı, sisteminize resmi FreeBSD çekirdeğini (genellikle GENERIC) kurar ve sizin özelleştirilmiş çekirdeğinizin üzerine yazar. Eğer özel bir çekirdek kullanıyorsanız, freebsd-update sonrası çekirdeğinizi yeniden derlemeniz ve kurmanız gerekir.

2. Çekirdek derleme ne kadar sürer?
Bu, sisteminizin CPU gücüne, bellek miktarına ve depolama hızına bağlıdır. Modern bir sistemde birkaç dakika sürebilirken, eski veya zayıf bir sistemde bir saatten fazla sürebilir.

3. Hangi CPU seçeneklerini seçmeliyim?
sysctl hw.model komutu size işlemcinizin modelini verecektir. Genellikle cpu AMD veya cpu INTEL gibi daha genel seçenekler yeterlidir. Emin değilseniz, GENERIC dosyasındaki varsayılan ayarları bırakmak en güvenlisidir.

4. Tüm gereksiz sürücüleri kaldırsam ne olur?
Eğer sisteminizin önyükleme yapması için gerekli olan bir sürücüyü kaldırırsanız, sisteminiz önyükleme yapmayabilir. Bu yüzden, başlangıçta sadece emin olduğunuz ve kullanmadığınızı bildiğiniz (örneğin eski IDE veya disket sürücüsü) sürücüleri kaldırmanız önerilir.

5. Çekirdeğimi ne sıklıkla yeniden derlemeliyim?
Genellikle, önemli bir freebsd-update sonrası veya /usr/src dizinini güncelledikten sonra, ya da yeni bir donanım eklediğinizde veya belirli bir özelliği etkinleştirmek istediğinizde çekirdeği yeniden derlemeniz önerilir.

6. Yeni çekirdek önyükleme yapmazsa ne yapmalıyım?
Önyükleyici menüsünden unload, set kernel="kernel.old", boot komutlarını kullanarak eski çekirdeğinize geri dönebilirsiniz. Sistem açıldıktan sonra MYKERNEL dosyanızı kontrol edip hataları düzeltebilirsiniz.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

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

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.