binfmt_misc
binfmt_miscbinfmt_misc(기타 이진 형식)는 임의의 실행 파일 형식을 인식하여 에뮬레이터 및 가상 [1]시스템 등의 특정 사용자 공간 애플리케이션에 전달할 수 있는 Linux 커널의 기능입니다.실행할 [2]사용자 공간 프로그램 준비에 관여하는 커널의 여러 바이너리 형식 핸들러 중 하나입니다.
실행 가능한 형식은 특수 목적 파일 시스템을 통해 등록됩니다. binfmt_misc
파일 시스템인터페이스(통상은 /filename의 일부에 마운트 됩니다).이것은, 특별한 시퀀스를 직접 송신하는 것에 의해서 행해집니다.register
procfs 파일 또는 Debian 기반 배포 binfmt-support[3] 패키지 또는 systemd와 같은 래퍼를 사용합니다.systemd-binfmt.service
를 클릭합니다.[4][5]
등록.
그register
파일에는 처리할 실행 파일유형을 정의하는 행이 포함되어 있습니다.각 행은 다음 형식입니다.
:name:type:offset:magic:mask:interpreter:flags
name
는 바이너리 형식의 이름입니다.type
어느 쪽인가E
또는M
interpreter
는 일치하는 파일을 인수로 실행하는 프로그램입니다.flags
(선택사항)은 문자열로, 각 문자는 특정 측면을 제어합니다.interpreter
호출:P
사용자가 명령줄에 입력한 원래 프로그램 이름을 보존하려면 이 이름을 에 추가합니다.argv
; 그interpreter
이 점을 인식해야 합니다.그러면 이 추가 파라미터를 해석된 프로그램에 올바르게 전달할 수 있습니다.argv[0]
.O
프로그램 파일을 열고 파일 설명자를interpreter
읽을 수 없는 파일을 읽을 수 있습니다(사용자에게 "읽기" 권한이 없음).C
프로그램 파일을 기반으로 새 프로세스 인증 정보를 결정하려면interpreter
파일(setuid 참조).의미O
플래그를 설정합니다.F
커널이 시작 시 느릿느릿한 시간이 아닌 구성 시 바이너리를 열도록 함으로써 다른 마운트 네임스페이스 및 chroot 내부에서도 사용할 수 있도록 합니다.
각 형식에는 대응하는 파일엔트리가 있습니다/proc/sys/fs/binfmt_misc
특정 파일 형식에 대한 정보를 얻기 위해 읽을 수 있는 디렉토리입니다.
등록 해제
$ echo - 1 > / sys / fs / binfmt _ misc / status #모든 엔트리 $echo - 1 > / sys / fs / binfmt _ misc / qemu - xtensa #단일 엔트리
일반적인 사용법
binfmt_misc를 사용하면 Java 프로그램을 Java 가상 [6]머신에 직접 전달할 수 있습니다.
또 다른 일반적인 사용법은 Wine을 통해 PE 실행 파일(MS-DOS 또는 Microsoft Windows용으로 컴파일됨)을 실행하는 것입니다.예를 들어, 다음 행에서는 Wine을 사용하여 DOS 및 Windows EXE 파일("MZ" 유형 코드로 식별됨)을 실행합니다.
:DOSWin:M::MZ::/usr/bin/wine:
EXE(.)를 실행하려면NET) 파일([7][8]Mono): :CLR:M::MZ::/usr/bin/mono:
binfmt_misc는 QEMU 또는 Box86과 조합하여 [9]네이티브 바이너리인 것처럼 다른 프로세서아키텍처용 프로그램을 실행할 수도 있습니다.
스크립트 [10]언어로서 Go 에 binfmt_misc 를 사용할 수 있습니다.
「 」를 참조해 주세요.
레퍼런스
- ^ 기타 바이너리 포맷에 대한 커널 지원(binfmt_misc)Linux 커널 매뉴얼
- ^ 프로그램 운영 방법, 2015년 1월 28일, David Drysdale, LWN.net
- ^ 패키지 binfmt-support in sid, Debian 상세
- ^ systemd-binfmt.service, freedesktop.org
- ^ binfmt.d, freedesktop.org
- ^ Java(tm) Linux v1.03용 바이너리 커널 지원 Linux 커널 매뉴얼
- ^ Mono(tm) Linux용 바이너리 커널 지원 Linux 커널 매뉴얼
- ^ 가이드: 모노 어플리케이션 실행
- ^ Official QEMU mirror, QEMU
- ^ Using Go as a scripting language in Linux, Cloudflare, 2018-02-20, retrieved 2019-05-05
외부 링크
- 프로젝트 홈페이지 archive.org에 아카이브