gen2
Megapat
- Katılım
- 7 Aralık 2019
- Mesajlar
- 9.544
- Makaleler
- 1
- Çözümler
- 66
Merhaba bugün Linux üzerinde kendi kernelinizi nasıl konfigüre eder ve derlersiniz bunu anlatacağım, verdiğim bilgiler yıllar içinde çeşitli kaynaklardan edindiğim bilgiler ve deneyimlerimden oluşmaktadır ve isteyen herkes her türlü amaçla kullanabilir. Şimdi fazla uzatmadan Gentoo üzerinde nasıl yapılacağını anlatmaya başlıyorum. Anlattıklarımı deneyimli kullanıcılar kolayca kendi dağıtımlarına uyarlayabileceklerdir. Kendi kernelimizi ve kernel konfigürasyonumuzu oluşturma sebebimiz genelde sağladığı performans kazancı, kernel derleme süresini düşürmek, kernelin ve modüllerin kapladığı alanı küçültmek olur.
Örneğimizi Xanmod kernel üzerinde göstermek istiyorum. İlk olarak Releases - XanMod Kernel sitesine girip resimde gösterdiğim kaynak download kısmından istediğimiz kaynağın GitHub adresine giderek indiriyoruz. Ben örnek olarak 5.10.4-xanmod1-cacule versiyonunu kullanacağım. Bu versiyonun özelliği FreeBSD'nin ULE Scheduler'ından esinlenilmiş Cacule scheduler yamalarıyla yamalanmış olması. Sunduğu şey interaktivite puanı tabanlı işlem planlamasıdır ve masaüstü sistemlerin daha hızlı tepki vermesini sağlamayı amaçlamaktadır. Kaynağın GitHub sayfasına girip Linux-5.10.4-xanmod1-cacule. ZIP isimli dosyayı indiriyoruz.
İndirme tamamlandıktan sonra terminalimizi açıp
Kernel konfigürasyonunda önemli olan zorunlu kalmadıkça modülleri M olarak yani dış modül olarak eklemektir. Bu kernelin boyutunu ve kullandığı RAM miktarını azaltır. Kısaca özetleyecek olursak, General setup sayfasında kernel ile alakalı genel konfigürasyon ayarları bulunuyor, bunlar kernel sıkıştırma yöntemi, on kabul, kontrol grupları, planlayıcı seçenekleri, ramdisk desteği ve sıkıştırma yöntemi gibi seçenekler barındırıyor. Bu sayfayı açıp seçeneklerin yardım sayfalarını okuyarak ihtiyacımız olduğu çekilde konfigüre ediyoruz. Özellikle Cacule Scheduler'ın aktive edildiğine emin olalım ve diğer konfigürasyonları ayarlayalım.
Exit seçeneğine tıklayıp çıkalım. Ardından Processor type and features sayfasını açıyoruz. Bu sayfada işlemci tipinizi ve işlemci ile alakalı opsiyonlar bulunuyor. Bu sayfada özellikle dikkat etmemiz gereken opsiyonlar Processor family ve timer Frequency olacak. İşlemcinizden tam performans almak için Processor family seçeneğini native optimizations autodetected by gcc olarak belirliyoruz. Timer Frequency ise isteğe bağlı düşük frekanslar 100Hz düşük güç tüketimi, server ortamları ve çıkış potansiyeline yönelik iken 300Hz+ seçenekleri masaüstü çabukluğu için uygun seçenekler olacaktır, ancak daha fazla güç tüketimine sebep olacaktır. Ben kendime en uygun olarak 300Hz seçeneğini görüyorum çünkü laptop kullanıcısıyım.
Konfigurasyonumuzu yapıp exit ile sayfadan çıkıyoruz. Power management and ACPI options sayfasına girip sistemimizin gerekli güç ayarlarını yapıyoruz. Benim için gerekli kısımlar hibernate ve suspend özelliklerinin bulunması ve CPU Frequency scaling sayfasından ayarlanan öntanımlı işlemci valisinin powerasave olması.
Sıra geldi Bus options (PCI etc.) sayfasına burada yapabileceğimiz fazla bir şey yok eğer ISA Bus bulunan bir bilgisayar kullanıyorsanız ise ki bu çok geçmişte kaldı, desteğini açabilirsiniz ayrıca eğer deferred Console takeover özelliği istiyorsak yani Boot esnasında OEM logosunun görünmesini istiyorsak Mark VGA/VBE/EFI FB as generic System framebuffer desteğini işaretlemiyoruz.
Sırada Binary Emulations sayfası var burada 64 Bit için X32 abisi kullanacaksak ve 32-Bit programlar kullanmayı düşünüyorsak IA32 Emulation ve X32 ABI for 64-Bit mode seçeneklerini aktive ediyoruz.
Firmware Drivers sayfası. Burada önemli kısımlar eğer UEFI kurulum kullanıyorsak EFI (Extensible Firmware Interface) Support sayfasında bulunan EFI Variable Support VIA sysfs seçeneğinin aktif olması ve EFI Runtime Configuration Interface Table Version 2 Support seçeneğinin aktif olması.
Virtualization sayfası. Burada eğer VirtualBox gibi emülatörler kullanmak istiyorsak gerekli modülleri kernelimize eklememiz gerekiyor.
General architecture-dependent options sayfası. Burada mimariye bağlı seçeneklerin konfigüre edildiği sayfa buradaki önemli kısımlar, performans için Optimize Very unlikely/likely branches seçeneği ve buffer overflow ataklarına karşı bir koruma mekanizması olan Stack Protector buffer overflow detection seçeneklerinin aktif olması. Ayrıca diğer seçenekleri de yardım sayfalarını okuduktan sonra konfigüre etmelisiniz.
Enable loadable module Support sayfası. Burada yüklenebilir modüller için yapabileceğiniz konfigürasyon ayarları bulunuyor. Burada tavsiyem Module unloading, Forced module unloading ve NVIDIA proprietary sürücüleri için gereken Enable unused/obsolete exported symbols seçeneklerinin aktif olması. Tabii ki diğer seçeneklere de göz atıp ihtiyacınız olanları aktive ediniz.
Enable the block layer sayfası. Burada blok katmanı ile ilgili seçenekler yani depolama alanları seçenekleri bulunuyor. Burada önemli olan Multiqueue writeback throttling ve Partition Types sayfasında ihtiyacımız olan bölümleme desteklerinin aktif edilmesi.
IO Schedulers sayfası. Bu sayfada giriş çıkış planlayıcı seçenekleri bulunuyor. Burada tavsiye edilen SSD diskler için Multiqueue Deadline, ekstra çabukluk ve çoklubaşlık için BFQ seçeneğinin kernele eklenmesi.
Executable file formats sayfası. Bu sayfada seçenek yardım sayfalarını okuyarak ihtiyacımız olan konfigürasyonu yapabiliriz.
Memory Management options sayfası. Hafıza yönetim seçenekleri bulunur, buradan Transparent Hugepages, Cleancache, ZRAM, ZSWAP gibi özellikleri kernele ekleyebiliriz. Yine yardım sayfalarına göz atıp ihtiyacınız olan seçenekleri seçin. Dikkat edin bu sayfada yapacağınız ayarlar Boot sürenizi ve RAM kullanımınızı pozitif veya negatif şekilde etkileyebilir.
Networking Support sayfası. Burada TCP/IP Bluetooth protokolleri ve buna benzer ayarlar vardır. İHtiyacınız olan protkolleri ve IPTables seçeneklerini yardım sayfalarından esinlenerek düzenleyin.
Device Drivers sayfası. Burası en karmaşık kısım olacaktır. Burada bilgisayarınızda bilgisayarınızda bulunan donanımların ve gelecekte bilgisayarınıza ekleme ihtiyacınız olabilecek donanımların sürücülerini kernele ekliyoruz. Tavsiyem IDE, SATA gibi cihazların sürücülerini ve Hardware monitöring seçeneklerini kernele * olan internal module şeklinde eklemeniz bu sayede bir initramfs yani ramdisk kullanmadan sisteminizi rahatça Boot edebilirsiniz. Diğer bütün cihazları modül yani M olarak eklemenizi tavsiye ederim. Modüler kerneller daha az hafıza kullanırlar.
File systems sayfası. Bu kullandığınız veya ileride kullanmak isteyenceğiniz dosya sistemlerini ve disk protokollerinin konfigüre edildiği sayfa burada genellikle * işareti koyarak ekleme yapın ki ramdisk ihtiyacınız olmasın bu sayede Boot sürenizi birkaç saniye azaltabilirsiniz.
Security options sayfası. Bu sayfada kernel güvenliği ile ilgili onlarca seçenek bulunmaktadır SELinux, AppArmor, Yama, Tomoyo gibi. Burada kernelinizi istediğiniz kadar sertleştirebilirsiniz. Ancak uyarayım performans ve RAM kullanımı üzerine en büyük etkisi olan seçenekler bu sayfadadır. Güvenlik arttıkça RAM kullanımı artar ve performans düşer, yine ihtiyacınıza göre konfigüre edin.
Cryptographic API sayfası. Bu sayfada Crypto makine ve algoritma seçenekleri bulunacak. Sık kullanılanlar zaten kendiliğinden ekli olacaktır, ekstra ihtiyaçlarınızı belirleyip M yani module olarak ekleyin. Yardım sayfalarını okuyarak hangilerine ihtiyacınız olduğuna karar verin.
Library routines sayfası. Bu sayfada her şeyden bir parça bulacaksınız. Örnek olarak sıkıştırma algoritmaları, Data bütünlüğü doğrulama algoritmaları ve konsol fontları seçimi gibi. İhtiyaçlarınıza göre konfigüre edin.
Kernel Hacking sayfası. Burası kernel ile ilgili genel ince ayarları içerir. Debugging, Unwinder, Tracing burada bizi ilgilendiren çok fazla bir şey yok. Performans amaçlı konfigüre ettiğinizi düşünürsek ORC Unwinder seçmeli ve Kernel Debugging işaretini kaldırmalısınız.
Sonunda bitirebildik. Konfigürasyonumuzu. Config adıyla kaydediyoruz ve exit ile çıkıyoruz. Sıra kerneli derlemekte, şimdi nproc+1 olacak şekilde başlık sayısını seçiyoruz. Unutmayın başlık başına tavsiye edilen Memory miktarı 2 GB'dır. Kullandığım işlemci i5-8300H olduğu ve 16 GB RAM'im olduğu için ben
Şimdi
Kernel kurulumumuz bitti. Şimdi eğer grub kullanıyorsak
Örneğimizi Xanmod kernel üzerinde göstermek istiyorum. İlk olarak Releases - XanMod Kernel sitesine girip resimde gösterdiğim kaynak download kısmından istediğimiz kaynağın GitHub adresine giderek indiriyoruz. Ben örnek olarak 5.10.4-xanmod1-cacule versiyonunu kullanacağım. Bu versiyonun özelliği FreeBSD'nin ULE Scheduler'ından esinlenilmiş Cacule scheduler yamalarıyla yamalanmış olması. Sunduğu şey interaktivite puanı tabanlı işlem planlamasıdır ve masaüstü sistemlerin daha hızlı tepki vermesini sağlamayı amaçlamaktadır. Kaynağın GitHub sayfasına girip Linux-5.10.4-xanmod1-cacule. ZIP isimli dosyayı indiriyoruz.
İndirme tamamlandıktan sonra terminalimizi açıp
sudo unzip ~/Downloads/linux-5.10.4-xanmod1-cacule.zip -d /usr/src
komutunu girerek kaynağı gerekli klasöre kopyalıyoruz. Kaynağımız gerekli klasöre açıldıktan sonra root oluyoruz sudo su
klasöre giriş yapıyoruz.cd /usr/src/linux-5.10.4-xanmod1-cacule
Ardından make menuconfig
kernel konfigürasyon menüsünü açıyoruz.Kernel konfigürasyonunda önemli olan zorunlu kalmadıkça modülleri M olarak yani dış modül olarak eklemektir. Bu kernelin boyutunu ve kullandığı RAM miktarını azaltır. Kısaca özetleyecek olursak, General setup sayfasında kernel ile alakalı genel konfigürasyon ayarları bulunuyor, bunlar kernel sıkıştırma yöntemi, on kabul, kontrol grupları, planlayıcı seçenekleri, ramdisk desteği ve sıkıştırma yöntemi gibi seçenekler barındırıyor. Bu sayfayı açıp seçeneklerin yardım sayfalarını okuyarak ihtiyacımız olduğu çekilde konfigüre ediyoruz. Özellikle Cacule Scheduler'ın aktive edildiğine emin olalım ve diğer konfigürasyonları ayarlayalım.
Exit seçeneğine tıklayıp çıkalım. Ardından Processor type and features sayfasını açıyoruz. Bu sayfada işlemci tipinizi ve işlemci ile alakalı opsiyonlar bulunuyor. Bu sayfada özellikle dikkat etmemiz gereken opsiyonlar Processor family ve timer Frequency olacak. İşlemcinizden tam performans almak için Processor family seçeneğini native optimizations autodetected by gcc olarak belirliyoruz. Timer Frequency ise isteğe bağlı düşük frekanslar 100Hz düşük güç tüketimi, server ortamları ve çıkış potansiyeline yönelik iken 300Hz+ seçenekleri masaüstü çabukluğu için uygun seçenekler olacaktır, ancak daha fazla güç tüketimine sebep olacaktır. Ben kendime en uygun olarak 300Hz seçeneğini görüyorum çünkü laptop kullanıcısıyım.
Konfigurasyonumuzu yapıp exit ile sayfadan çıkıyoruz. Power management and ACPI options sayfasına girip sistemimizin gerekli güç ayarlarını yapıyoruz. Benim için gerekli kısımlar hibernate ve suspend özelliklerinin bulunması ve CPU Frequency scaling sayfasından ayarlanan öntanımlı işlemci valisinin powerasave olması.
Sıra geldi Bus options (PCI etc.) sayfasına burada yapabileceğimiz fazla bir şey yok eğer ISA Bus bulunan bir bilgisayar kullanıyorsanız ise ki bu çok geçmişte kaldı, desteğini açabilirsiniz ayrıca eğer deferred Console takeover özelliği istiyorsak yani Boot esnasında OEM logosunun görünmesini istiyorsak Mark VGA/VBE/EFI FB as generic System framebuffer desteğini işaretlemiyoruz.
Sırada Binary Emulations sayfası var burada 64 Bit için X32 abisi kullanacaksak ve 32-Bit programlar kullanmayı düşünüyorsak IA32 Emulation ve X32 ABI for 64-Bit mode seçeneklerini aktive ediyoruz.
Firmware Drivers sayfası. Burada önemli kısımlar eğer UEFI kurulum kullanıyorsak EFI (Extensible Firmware Interface) Support sayfasında bulunan EFI Variable Support VIA sysfs seçeneğinin aktif olması ve EFI Runtime Configuration Interface Table Version 2 Support seçeneğinin aktif olması.
Virtualization sayfası. Burada eğer VirtualBox gibi emülatörler kullanmak istiyorsak gerekli modülleri kernelimize eklememiz gerekiyor.
General architecture-dependent options sayfası. Burada mimariye bağlı seçeneklerin konfigüre edildiği sayfa buradaki önemli kısımlar, performans için Optimize Very unlikely/likely branches seçeneği ve buffer overflow ataklarına karşı bir koruma mekanizması olan Stack Protector buffer overflow detection seçeneklerinin aktif olması. Ayrıca diğer seçenekleri de yardım sayfalarını okuduktan sonra konfigüre etmelisiniz.
Enable loadable module Support sayfası. Burada yüklenebilir modüller için yapabileceğiniz konfigürasyon ayarları bulunuyor. Burada tavsiyem Module unloading, Forced module unloading ve NVIDIA proprietary sürücüleri için gereken Enable unused/obsolete exported symbols seçeneklerinin aktif olması. Tabii ki diğer seçeneklere de göz atıp ihtiyacınız olanları aktive ediniz.
Enable the block layer sayfası. Burada blok katmanı ile ilgili seçenekler yani depolama alanları seçenekleri bulunuyor. Burada önemli olan Multiqueue writeback throttling ve Partition Types sayfasında ihtiyacımız olan bölümleme desteklerinin aktif edilmesi.
IO Schedulers sayfası. Bu sayfada giriş çıkış planlayıcı seçenekleri bulunuyor. Burada tavsiye edilen SSD diskler için Multiqueue Deadline, ekstra çabukluk ve çoklubaşlık için BFQ seçeneğinin kernele eklenmesi.
Executable file formats sayfası. Bu sayfada seçenek yardım sayfalarını okuyarak ihtiyacımız olan konfigürasyonu yapabiliriz.
Memory Management options sayfası. Hafıza yönetim seçenekleri bulunur, buradan Transparent Hugepages, Cleancache, ZRAM, ZSWAP gibi özellikleri kernele ekleyebiliriz. Yine yardım sayfalarına göz atıp ihtiyacınız olan seçenekleri seçin. Dikkat edin bu sayfada yapacağınız ayarlar Boot sürenizi ve RAM kullanımınızı pozitif veya negatif şekilde etkileyebilir.
Networking Support sayfası. Burada TCP/IP Bluetooth protokolleri ve buna benzer ayarlar vardır. İHtiyacınız olan protkolleri ve IPTables seçeneklerini yardım sayfalarından esinlenerek düzenleyin.
Device Drivers sayfası. Burası en karmaşık kısım olacaktır. Burada bilgisayarınızda bilgisayarınızda bulunan donanımların ve gelecekte bilgisayarınıza ekleme ihtiyacınız olabilecek donanımların sürücülerini kernele ekliyoruz. Tavsiyem IDE, SATA gibi cihazların sürücülerini ve Hardware monitöring seçeneklerini kernele * olan internal module şeklinde eklemeniz bu sayede bir initramfs yani ramdisk kullanmadan sisteminizi rahatça Boot edebilirsiniz. Diğer bütün cihazları modül yani M olarak eklemenizi tavsiye ederim. Modüler kerneller daha az hafıza kullanırlar.
File systems sayfası. Bu kullandığınız veya ileride kullanmak isteyenceğiniz dosya sistemlerini ve disk protokollerinin konfigüre edildiği sayfa burada genellikle * işareti koyarak ekleme yapın ki ramdisk ihtiyacınız olmasın bu sayede Boot sürenizi birkaç saniye azaltabilirsiniz.
Security options sayfası. Bu sayfada kernel güvenliği ile ilgili onlarca seçenek bulunmaktadır SELinux, AppArmor, Yama, Tomoyo gibi. Burada kernelinizi istediğiniz kadar sertleştirebilirsiniz. Ancak uyarayım performans ve RAM kullanımı üzerine en büyük etkisi olan seçenekler bu sayfadadır. Güvenlik arttıkça RAM kullanımı artar ve performans düşer, yine ihtiyacınıza göre konfigüre edin.
Cryptographic API sayfası. Bu sayfada Crypto makine ve algoritma seçenekleri bulunacak. Sık kullanılanlar zaten kendiliğinden ekli olacaktır, ekstra ihtiyaçlarınızı belirleyip M yani module olarak ekleyin. Yardım sayfalarını okuyarak hangilerine ihtiyacınız olduğuna karar verin.
Library routines sayfası. Bu sayfada her şeyden bir parça bulacaksınız. Örnek olarak sıkıştırma algoritmaları, Data bütünlüğü doğrulama algoritmaları ve konsol fontları seçimi gibi. İhtiyaçlarınıza göre konfigüre edin.
Kernel Hacking sayfası. Burası kernel ile ilgili genel ince ayarları içerir. Debugging, Unwinder, Tracing burada bizi ilgilendiren çok fazla bir şey yok. Performans amaçlı konfigüre ettiğinizi düşünürsek ORC Unwinder seçmeli ve Kernel Debugging işaretini kaldırmalısınız.
Sonunda bitirebildik. Konfigürasyonumuzu. Config adıyla kaydediyoruz ve exit ile çıkıyoruz. Sıra kerneli derlemekte, şimdi nproc+1 olacak şekilde başlık sayısını seçiyoruz. Unutmayın başlık başına tavsiye edilen Memory miktarı 2 GB'dır. Kullandığım işlemci i5-8300H olduğu ve 16 GB RAM'im olduğu için ben
make -j8
komutunu girip derlemeyi başlatıyorum. Kernel konfigürasyonunuzun karmaşıklığına, işlemci çekirdek sayısı ve hızına göre bu işlem 5 dakika ile 12 saat arası değişebilir. Bilgisayarımın sabit donanımlı bir laptop olmasının ve deneyimim sayesinde hazırladığım konfigürayonun derlenmesi 4 dakika 12 saniye sürdü.Şimdi
make modules_install
ve sonrasında make install
komutları ile modülleri kuruyoruz ve kerneli /Boot klasörüne kopyalıyoruz.Kernel kurulumumuz bitti. Şimdi eğer grub kullanıyorsak
grub-mkconfig -o /boot/grub/grub.cfg
komutuyla kernelimizi grub menümüze ekliyoruz. Systemdboot kullanıyorsak /boot/loader/entries/
klasörünün içine konfigürasyon dosyamızı ekliyoruz ve reboot atıyoruz. Bu kadar arkadaşlar yeni kerneliniz kullanıma hazır. DKMS kullanan dağıtımlar için gerekli DKMS komutlarını çalıştırmanız gerekebilir.Dosya Ekleri
Son düzenleme: