Örneğin Fedora'nın Linux çekirdeğini FreeBSD'lerin yerine değiştirmenin mümkün olup olmadığını bilmek istedim.
Şimdi, Debian GNU / kFreeBSD zaten vardı . Bir Linux dağıtımını BSD çekirdeği içerecek şekilde özelleştirmem mümkün mü?
Örneğin Fedora'nın Linux çekirdeğini FreeBSD'lerin yerine değiştirmenin mümkün olup olmadığını bilmek istedim.
Şimdi, Debian GNU / kFreeBSD zaten vardı . Bir Linux dağıtımını BSD çekirdeği içerecek şekilde özelleştirmem mümkün mü?
Yanıtlar:
Hayır, her çekirdek kendi özelliklerini kendi yöntemiyle uygular. Çok sayıda POSIX uyumluluğu var, ancak bundan çıktıktan sonra yürütülebilir dosyaların zaten yürürlükte olan çekirdek mekanizmalarıyla derlenmesi gerekiyor. Birçok proje, yalnızca FreeBSD veya Linux için derlediğinizi açıkça belirtirseniz derlenen kaynak kodunu içerir. Aslında kFreeBSD budur. Araçlar FreeBSD çekirdeğini destekler ancak bunun için derlenmeleri gerekir.
Örneğin, epoll_create
FreeBSD üzerinde kullanmaya çalışırsanız işler beklendiği gibi çalışmaz.
Tabii ki, bir BSD sistemi LFS tarzı araçları çapraz derleyebilirsiniz, ancak bu sonsuza kadar sürer. Yeni bir çekirdeği derlemek kadar basit değil.
FreeBSD bir Linux çekirdeği kullanmaz - adından da anlaşılacağı gibi bir BSD çekirdeği kullanır.
Bir Linux çekirdeğini farklı bir Linux çekirdeği ile değiştirmek mümkündür (kendiniz oluşturduğunuz veya bir dağıtımdan çıkardığınız). Dağıtımınızdaki kullanıcı-alanı programlarının derlenecek belirli çekirdek özelliklerine bağlı olabileceğini ve bu özellikler olmadan oluşturulmuş bir çekirdek üzerinde çalıştırırsanız düzgün çalışmayabileceğini unutmayın. Örneğin, sistemd tabanlı bir dağıtım, çekirdekte gruplar gerektirir.
Bahsettiğiniz örnek için evet, bir Linux çekirdeği veya bir BSD çekirdeği için bir GNU dağıtımı oluşturulabilir. Birçok durumda, #ifdef
çekirdekler aynı ABI'yi tanıtsa bile, ikisi için derlenen programlar arasında derleme zamanı farklılıkları vardır (örn. ). En azından, C Çalışma Zamanı Kütüphanesi gibi düşük seviyeli kütüphanelerin farklı çekirdek ABI'lerini barındırması gerekir.
Çekirdek bağımsız bölümdür ve işletim sistemi güncelleştirmeleri sırasında rutin olarak değiştirilir. Bazı tescilli sürücüler (NVIDIA, vb.) Sürücüyü çekirdek kaynağına bağlayan, bu çekirdeği oluşturan ve geçerli çekirdeği onunla değiştiren yükleme komut dosyalarına sahiptir. Bu nedenle, gerekli tüm işlevleri gerçekleştirebilen kendi çekirdek sürümünüzü geliştirirseniz, onu yerleştirmek ve işletim sisteminin geri kalanını bırakmak büyük bir sorun olmamalıdır. Ancak çoğu zaman böyle bir "yeni çekirdek" son resmi versiyondan türetilir.
Solaris çekirdeği bir dereceye kadar bu şekilde taşınarak OpenSolaris'in Gnome ortamını çalıştırmasına neden oldu.
Yine de, arayüzlerin köprülenmesi gerektiğinden, tamamen farklı bir çekirdeği koymak önemli bir çabadır. Bu büyük olasılıkla C programlama gerektirir ve sadece derleme betiği ile ilgili değildir.