예를 들어 Fedora의 Linux 커널을 FreeBSD의 커널로 교체하는 등 커널을 변경할 수 있는지 알고 싶었습니다.
이제 데비안 GNU / 리눅스 가 이미 존재했습니다 . BSD 커널을 포함하도록 Linux 배포판을 사용자 정의 할 수 있습니까?
예를 들어 Fedora의 Linux 커널을 FreeBSD의 커널로 교체하는 등 커널을 변경할 수 있는지 알고 싶었습니다.
이제 데비안 GNU / 리눅스 가 이미 존재했습니다 . BSD 커널을 포함하도록 Linux 배포판을 사용자 정의 할 수 있습니까?
답변:
아니요, 각 커널은 고유 한 방식으로 자체 기능을 구현합니다. 많은 POSIX 호환성이 있지만 일단 실행 파일이 이미 존재하면 커널 메커니즘으로 컴파일해야합니다. 많은 프로젝트에는 FreeBSD 또는 Linux 용으로 컴파일한다고 명시 적으로 언급 한 경우에만 컴파일되는 소스 코드가 포함되어 있습니다. 이것이 본질적으로 kFreeBSD입니다. 이 도구는 FreeBSD 커널을 지원하지만 컴파일해야합니다.
예를 들어, epoll_create
FreeBSD 에서 사용하려고하면 예상대로 작동하지 않습니다.
물론 BSD 시스템 LFS 스타일에서 도구를 크로스 컴파일 할 수 있지만 시간이 오래 걸릴 것입니다. 새로운 커널을 컴파일하는 것만 큼 간단하지는 않습니다.
FreeBSD는 리눅스 커널을 사용하지 않습니다. 이름에서 알 수 있듯이 BSD 커널을 사용합니다.
Linux 커널을 다른 Linux 커널 (직접 빌드 한 것 또는 배포본에서 추출한 것)로 바꿀 수 있습니다. 배포판의 사용자 공간 프로그램은 컴파일 할 특정 커널 기능에 따라 달라질 수 있으며 이러한 기능없이 빌드 된 커널에서 실행하면 제대로 작동하지 않을 수 있습니다. 예를 들어, 시스템 기반 배포에는 커널에 cgroup이 필요합니다.
예를 들어, 리눅스 배포판이나 BSD 커널을위한 GNU 배포판을 만들 수 있습니다. 많은 경우 #ifdef
커널이 동일한 ABI를 광고하더라도 두 프로그램을 위해 컴파일 된 프로그램간에 컴파일 시간 차이 (예 :)가 있습니다. 최소한 C 런타임 라이브러리와 같은 하위 수준 라이브러리는 다른 커널 ABI를 수용해야합니다.
커널은 독립적 인 부분이며 운영 체제 업데이트 중에 정기적으로 교체됩니다. 일부 독점 드라이버 (NVIDIA 등)에는 드라이버를 커널 소스에 패치하고 해당 커널을 빌드 한 후 현재 커널을이 스크립트로 대체하는 설치 스크립트가 있습니다. 따라서 필요한 모든 기능을 수행 할 수있는 자체 커널 버전을 개발하는 경우 커널을 설치하고 나머지 운영 체제를 그대로 두는 데 큰 문제가되지 않아야합니다. 그러나 가장 자주 이러한 "새 커널"은 최신 공식 버전에서 파생됩니다.
Solaris 커널은 어느 정도 이러한 방식으로 포팅되어 OpenSolaris가 Gnome 환경을 실행합니다.
그러나 인터페이스를 브리지해야하므로 완전히 다른 커널을 배치하는 것이 상당한 노력입니다. 이것은 많은 C 프로그래밍을 요구할 가능성이 높으며 빌드 스크립트에 관한 것이 아닙니다.