UNIX / Linux sistemindeki çekirdeği değiştirmek mümkün müdür?


16

Ö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ü?


3
MacOSX, POSIX uyumlu BSD tabanlı bir çekirdektir. Unix sistemi olmadığını iddia eden Linux'un aksine, OSX bir Unix sistemidir (Unix ticari markasının sahibi The Open Group tarafından onaylanmıştır). Linux uygulamalarını Mac üzerinde çalıştıramazsınız ve her ikisi de Intel CPU'larda çalışmasına rağmen Mac uygulamalarını Linux'ta çalıştıramazsınız (teknik olarak AMD64)
slebetman

Yanıtlar:


21

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_createFreeBSD ü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.


1
MOOL çekirdeği hakkındaki görüşünüzü duymak istiyorum , onu uyarlayan bir işletim sistemi var, BOSS linux.
Sri Harsha Chilakapati

Ne olduğunu görmek ilginç olacak, ancak bu konuda akıllıca bir şey söyleyecek kadar bakmadım.
Bratchley

1
Yani, söylediğiniz şey, eğer GNU kullanıcı tabanlı bir BSD sistemi oluşturmak istiyorsam, BSD çekirdeği için tüm GNU yazılımlarını yeniden derlemeliyim. Doğrumuyum?
Anahtarı

1
Hemen hemen her şey olacak olan Linux-isms kullanan her şey. KFreeBSD ile başlamak ve oradan gitmek daha kolay olabilir.
Bratchley

16

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.


C Çalışma Zamanı Kitaplığı'nın değiştiğinden bahsedin.
Joshua

2

Ç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.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.