다른 Linux / Unix 커널은 서로 바꿔 사용할 수 있습니까?


14

Linux 커널을 가져 와서 FreeBSD와 함께 사용할 수 있습니까 (또는 그 반대) (FreeBSD 커널, 데비안)? 보편적 인 답변이 있습니까? 한계는 무엇입니까? 장애물은 무엇입니까?


5
아뇨, 절대 아닙니다 좋은 운동은 그것을 시도하고 그것이 어떻게 부서 지는지를 보는 것입니다. Linux 커널을 훨씬 더 오래된 Linux 커널로 안정적으로 교체 할 수도 없습니다. 그래도 userland 도구를 교체하는 것이 가능합니다 (다시 컴파일 된 경우).
Kusalananda


@Kusalananda는 BSD에서 Linux 로의 사용자 랜드 툴 교체와 관련하여 고통 스러울 수 있습니다. 일부 BSD 툴은 비 BSD 시스템에서 빌드하기가 매우 어렵습니다 ... 그러나 사소하지 않은 것으로 판명되었습니다 :-/.
Stephen Kitt

1
@StephenKitt 그 반대의 경우도 마찬가지입니다.-) 특히 소프트웨어가 /proc다른 Linux 관련 종과 휘파람 에 액세스 할 수 있다는 가정이있을 때 특히 그렇습니다 .
Kusalananda

당신이 할 수있는 일은 x86_64 (linux) 커널을 가져 와서 i386 32 비트 배포판에 강제 설치하는 것입니다 (64 비트 인텔 CPU를 가정하고 컴파일 된 32 비트 바이너리를 가정). 이것은 꽤 잘 알려져 있지만 즉시 명백하지는 않습니다.
Radovan Garabík

답변:


39

아닙니다. 서로 다른 Unix 스타일 운영 체제 구현의 커널은 서로 호환되지 않습니다. 특히 나머지 시스템 (사용자 공간) (시스템 호출 ( ioctl특정 포함 ), 사용하는 다양한 가상 파일 시스템)에 대해 서로 다른 인터페이스를 제공하기 때문입니다. ..

소스 레벨에서 어느 정도 교환 할 수있는 것은 커널과 C 라이브러리 또는 커널과 라이브러리가 노출하는 사용자 레벨 API의 조합입니다 (본질적으로 POSIX에 의해 기술 된 계층에서의 관점). 그것은 여부를 고려하고 있다 ) 실제로 POSIX. 그 예로는 FreeBSD 커널 위에 데비안 시스템을 구축하는 Debian GNU / kFreeBSDHurd 위에 데비안 시스템을 구축하는 Debian GNU / Hurd가 있습니다.

이것은 커널 상호 호환성 수준은 아니지만 일반적인 응용 프로그램 이진 인터페이스를 표준화하여 재 컴파일하지 않고도 다양한 시스템에서 이진을 사용할 수 있도록 시도했습니다. 예를 들어 , Intel Binary Compatibility Standard 는 iBCS 2 레이어가있는 이전 버전의 Linux를 포함하여이를 준수하는 바이너리가이를 구현하는 모든 Unix 시스템에서 실행될 수 있도록합니다. 나는 이것을 90 년대 후반에 Linux에서 WordPerfect를 실행하기 위해 사용했습니다.

Linux 내부에서 FreeBSD chroot를 빌드하는 방법 도 참조하십시오 .


1
어떤 사람들은 커널과 사용자 API를 동기화하는 것이 얼마나 중요한지에 대해 매우 강한 의견 을 가지고 있습니다. :)
tonysdg

4
실제로 @tonysdg, 그리고 나를 믿습니다. 나는 그것에 대해 모두 알고 있습니다 :-/.
Stephen Kitt

@tonysdg 링크에 페이지가 없습니다. (그것이 농담이 아닌 한 내가 빠졌습니까?)
mbrig

1
: - : @mbrig 여기에 보관 된 버전의 어제까지,이 있었다 web.archive.org/web/20171102142621/http://...이
tonysdg

@StephenKitt : Ouch :( 죄송합니다 !!하지만 커널에 코드를 작성하는 것까지도 큰 도움이됩니다!
tonysdg

4

일부 커널은 바이너리 호환성을 가지고있어 사용자 공간 프로그램을 다른 ABI와 혼합 할 수 있습니다 (예 : freebsd는 리눅스 바이너리와 어느 정도 작동 할 수 있습니다)-핵심 바이너리 (예 : init 프로그램, 모듈 로더, 장치 드라이버 설정 도구, C 라이브러리 , 파일 시스템을 설정하는 데 필요한 도구는 실제로 외부 커널을 사용하여 시스템을 부팅하기 위해 커널 수준 인터페이스에 대해 알아야 할 것이 너무 많습니다.

또한 파일 시스템이 호환되어야합니다. 또한 바이너리 호환성 옵션은 커널에 "하드"컴파일해야합니다. 모듈 로더를 실행할 수 없기 때문에 커널 모듈로 구현 된 모든 항목은 실패합니다.

언급했듯이 사용자 환경은 freebsd 기반 데비안 시스템과 같이 재 컴파일하거나 Linux에서 netbsd pkgsrc 시스템을 설정하려는 경우 다소 이식성이 좋은 경향이 있습니다 (절대적이지 않지만 지원 및 가능합니다!).

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