Linux에서 실행되는 가장 오래된 바이너리는 무엇입니까?

Linux에서 실행되는 가장 오래된 바이너리는 무엇입니까?

안에Linux 커널 및 GUI ABI 이전 버전과의 호환성에 대한 토론, Alan Cox는 다음과 같이 지적합니다.내 3.6rc 커널은 1992년에 구축된 Rogue 바이너리를 계속 실행합니다. X는 Linux보다 오래된 응용 프로그램과 역호환됩니다."

Linux는 이전 버전과 얼마나 호환됩니까?애플리케이션 바이너리 인터페이스?

사실, 몇 년 전에 작성되고 컴파일되었으며 현대의 범용 Linux 배포판에서 여전히 실행되는 가장 오래된 바이너리 실행 파일은 무엇입니까?

나는 이 단어들이 모두 설명될 수 있다고 확신한다. 내 주된 생각은 에뮬레이터나 특수한 가상 머신 또는 바이너리 변환기를 통해 실행하는 것이 공정하지 않을 것이라는 것입니다. 그러나 이와 같은 것이 일부 최신 배포판에 내장될 수 있으며 이것이 여기서 재미의 일부라는 것을 아는 것입니다.

하드웨어 아키텍처의 차이점,실행 파일 형식, 언어 및 주요 라이브러리에 대한 종속성을 동적으로 로드하는 것도 흥미롭습니다.

다음은 규칙이 완화된 경우에 대한 추가 예입니다. 2002년 웹페이지최신 Red Hat Linux에서 a.out 실행 파일 실행사용에 대해 이야기진짜이전 Linux ELF 이전 a.out-format 실행 파일이 실행되고 modprobe binfmt_aout 가져옵니다. /lib/ld.so이는 libc.so.4 다시 이 질문에 대한 주변 관심 사항이지만 더 깊이 파고들 때 포함될 수 있는 다양한 사항을 보여줍니다.

고쳐 쓰다BSD 팬이라면 이전 Xenix 애플리케이션(예: 1990년의 zork/dungeon-2.5.6)과 SCO OpenServer 5.0.x 애플리케이션, 그리고 최근에는 NetBSD 4.0.1(2008)에 대한 iBCS2 지원을 확인하는 것이 좋습니다.iBCS2와 NetBSD 가상화의 즐거움 |. 그러나 NetBSD 5.0.x에서도 같은 문제가 발생하는 것 같습니다.

업데이트 2: 1년이 지난 지금, 이 질문에 대해 '아나운서' 배지를 획득한 후에도 저는 여전히 답을 찾고 있습니다. 명확히 하자면, 이는 API에 관한 것이므로 최소한 원래 방식으로 작동하는 "실제" 바이너리(길이가 0이 아닌)여야 합니다.

답변1

/bin/true가 가장 오래된 작업인 것 같아요..

그렇다면 0바이트 파일을 바이너리 파일이라고 부를 수 있습니까?

touch /tmp/old_true
chmod 755 /tmp/old_true
/tmp/old_true
echo $?

답변2

그렇다면 Linux 애플리케이션 바이너리 인터페이스의 이전 버전과의 호환성은 정확히 무엇입니까?

Linux 커널 ABI 분석 보고서를 살펴볼 수 있습니다.여기(버전 2.6.36-4.4.5):

여기에 이미지 설명을 입력하세요.

여러 Linux 기본 라이브러리에 대한 동일한 보고서를 다음에서 찾을 수 있습니다.이 페이지(Glibc, Qt, 카이로...). 각 버전의 이전 버전 바이너리 호환성은 백분율로 추정되므로 각 라이브러리의 전체 ABI 호환성에 대한 결론을 도출할 수 있습니다.

여기에 이미지 설명을 입력하세요.

약 700개의 Linux 라이브러리에 대한 추가 보고서를 보려면 다음을 참조하세요.upstream.rosalinux.ru. 이 리소스는 더 이상 지원되지 않습니다(사용abi 추적기대신) 이전 리포지토리에 대한 보고서를 볼 수 있습니다.

관련 정보