UNIX / Linux 시스템에서 커널을 변경할 수 있습니까?


16

예를 들어 Fedora의 Linux 커널을 FreeBSD의 커널로 교체하는 등 커널을 변경할 수 있는지 알고 싶었습니다.

이제 데비안 GNU / 리눅스 가 이미 존재했습니다 . BSD 커널을 포함하도록 Linux 배포판을 사용자 정의 할 수 있습니까?


3
MacOSX는 POSIX 호환 BSD 기반 커널입니다. 그리고 유닉스 시스템이 아니라고 주장하는 리눅스와는 달리, OSX는 유닉스 시스템입니다 (유닉스 상표를 소유 한 Open Group의 인증을 받았습니다). Mac에서는 Linux 응용 프로그램을 실행할 수없고 Intel CPU (기술적으로 AMD64)에서 모두 실행하더라도 Linux에서 Mac 응용 프로그램을 실행할 수 없습니다.
slebetman

답변:


21

아니요, 각 커널은 고유 한 방식으로 자체 기능을 구현합니다. 많은 POSIX 호환성이 있지만 일단 실행 파일이 이미 존재하면 커널 메커니즘으로 컴파일해야합니다. 많은 프로젝트에는 FreeBSD 또는 Linux 용으로 컴파일한다고 명시 적으로 언급 한 경우에만 컴파일되는 소스 코드가 포함되어 있습니다. 이것이 본질적으로 kFreeBSD입니다. 이 도구는 FreeBSD 커널을 지원하지만 컴파일해야합니다.

예를 들어, epoll_createFreeBSD 에서 사용하려고하면 예상대로 작동하지 않습니다.

물론 BSD 시스템 LFS 스타일에서 도구를 크로스 컴파일 할 수 있지만 시간이 오래 걸릴 것입니다. 새로운 커널을 컴파일하는 것만 큼 간단하지는 않습니다.


1
MOOL 커널 에 대한 귀하의 의견을 듣고 싶습니다 . BOSS Linux를 채택한 OS가 이미 있습니다.
Sri Harsha Chilakapati

그것이 오는 것을 보는 것은 흥미로울 것이지만 나는 그것에 대해 지적할만한 것을 충분히 조사하지 않았습니다.
Bratchley

1
GNU 사용자 랜드 기반 BSD 시스템을 만들고 싶다면 BSD 커널에 대한 모든 GNU 소프트웨어를 다시 컴파일해야합니다. 제가 맞습니까?
스위치

1
거의 모든 것이 될 Linux-ism을 사용하는 모든 것. kFreeBSD로 시작하여 더 쉽게 시작할 수 있습니다.
Bratchley

16

FreeBSD는 리눅스 커널을 사용하지 않습니다. 이름에서 알 수 있듯이 BSD 커널을 사용합니다.

Linux 커널을 다른 Linux 커널 (직접 빌드 한 것 또는 배포본에서 추출한 것)로 바꿀 수 있습니다. 배포판의 사용자 공간 프로그램은 컴파일 할 특정 커널 기능에 따라 달라질 수 있으며 이러한 기능없이 빌드 된 커널에서 실행하면 제대로 작동하지 않을 수 있습니다. 예를 들어, 시스템 기반 배포에는 커널에 cgroup이 필요합니다.

예를 들어, 리눅스 배포판이나 BSD 커널을위한 GNU 배포판을 만들 수 있습니다. 많은 경우 #ifdef커널이 동일한 ABI를 광고하더라도 두 프로그램을 위해 컴파일 된 프로그램간에 컴파일 시간 차이 (예 :)가 있습니다. 최소한 C 런타임 라이브러리와 같은 하위 수준 라이브러리는 다른 커널 ABI를 수용해야합니다.


C 런타임 라이브러리 변경을 언급하십시오.
Joshua

2

커널은 독립적 인 부분이며 운영 체제 업데이트 중에 정기적으로 교체됩니다. 일부 독점 드라이버 (NVIDIA 등)에는 드라이버를 커널 소스에 패치하고 해당 커널을 빌드 한 후 현재 커널을이 스크립트로 대체하는 설치 스크립트가 있습니다. 따라서 필요한 모든 기능을 수행 할 수있는 자체 커널 버전을 개발하는 경우 커널을 설치하고 나머지 운영 체제를 그대로 두는 데 큰 문제가되지 않아야합니다. 그러나 가장 자주 이러한 "새 커널"은 최신 공식 버전에서 파생됩니다.

Solaris 커널은 어느 정도 이러한 방식으로 포팅되어 OpenSolaris가 Gnome 환경을 실행합니다.

그러나 인터페이스를 브리지해야하므로 완전히 다른 커널을 배치하는 것이 상당한 노력입니다. 이것은 많은 C 프로그래밍을 요구할 가능성이 높으며 빌드 스크립트에 관한 것이 아닙니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.