Binfmt různé - Binfmt misc
binfmt_misc (Různé binární formáty) je schopnost Linuxové jádro což umožňuje libovolné formáty spustitelných souborů být uznán a předán jistému uživatelský prostor aplikace, jako např emulátory a virtuální stroje.[1] Je to jeden z řady obslužných programů binárního formátu v jádře, které se podílejí na přípravě spuštění programu v uživatelském prostoru.[2]
Spustitelné formáty jsou registrovány prostřednictvím speciální souborový systém binfmt_misc
rozhraní systému souborů (obvykle připojeno pod částí / proc ). To se provádí buď přímo zasláním speciálních sekvencí do Registrovat
soubor procfs nebo pomocí obálky jako Debian -založené distribuce podpora binfmt balík[3] nebo systemd je systemd-binfmt.service
.[4][5]
Registrace
The Registrovat
soubor obsahuje řádky, které definují spustitelné typy, které mají být zpracovány. Každý řádek má tvar:
: name: type: offset: magic: mask: interpreter: flags
název
je název binárního formátu.typ
je buďE
neboM
- Pokud to je
E
, formát spustitelného souboru je identifikován jeho přípona souboru:kouzlo
je přípona souboru, která má být přidružena k binárnímu formátu;offset
amaska
jsou ignorovány. - Pokud to je
M
, formát je označenkouzlo
číslo absolutněoffset
(výchozí nastavení0
) v souboru amaska
je bitová maska (výchozí pro všechny0x FF
) označující, které bity v počtu jsou významné.
- Pokud to je
tlumočník
je program, který má být spuštěn s odpovídajícím souborem jako argumentem.vlajky
(nepovinné) je řetězec písmen, z nichž každý ovládá určitý aspekttlumočník
vyvolání:P
zachovat původní název programu zadaný uživatelem v příkazovém řádku - přidáním tohoto názvu doargv
; thetlumočník
musí si toho být vědom, aby mohl správně předat tento další parametr interpretovanému programu jako svůjargv [0]
.Ó
otevřít programový soubor a předat jeho deskriptor souboru dotlumočník
aby mohl přečíst jinak nečitelný soubor (pro který uživatel nemá „Číst“ povolení ).C
určit nové pověření procesu spíše na základě souboru programu nežtlumočník
soubor (viz setuid ); naznačujeÓ
vlajka.F
aby jádro otevřelo binární soubor v době konfigurace místo líně v době spuštění, aby bylo k dispozici i v jiných jmenných prostorech mount a chroots.
Každý formát má v souboru odpovídající záznam / proc / sys / fs / binfmt_misc
adresář, který lze číst a získat informace o daném formátu souboru.
Běžné použití
binfmt_misc umožňuje Jáva programy, které mají být předány přímo Virtuální stroj Java.[6]
Dalším běžným používáním je provádění Spustitelné soubory PE (sestaveno pro MS-DOS nebo Microsoft Windows ) přes Víno. Například následující řádek spustí DOS a Windows EXE soubory (označené „MZ“ typový kód ) použitím Víno:
: DOSWin: M :: MZ :: / usr / bin / víno:
Spuštění souborů EXE (.NET) pomocí Mono:[7][8]: CLR: M :: MZ :: / usr / bin / mono:
binfmt_misc lze také kombinovat s QEMU spouštět programy pro jiné architektury procesorů, jako by šlo o nativní binární soubory.[9]
binfmt_misc lze použít pro Go jako skriptovací jazyk.[10]
Viz také
Reference
- ^ Podpora jádra pro různé binární formáty (binfmt_misc) Dokumentace k jádru Linuxu
- ^ Jak se programy spouštějí, 28. ledna 2015, autor David Drysdale, LWN.net
- ^ Podrobnosti balíčku binfmt-support v sid, Debian
- ^ systemd-binfmt.service, freedesktop.org
- ^ binfmt.d, freedesktop.org
- ^ Java (tm) Binary Kernel Support for Linux v1.03 Dokumentace k jádru Linuxu
- ^ Mono (tm) podpora binárního jádra pro Linux Dokumentace k jádru Linuxu
- ^ Průvodce: Spuštění mono aplikací
- ^ Oficiální QEMU zrcadlo, QEMU
- ^ Používání Go jako skriptovacího jazyka v Linuxu, Cloudflare, 2018-02-20, vyvoláno 2019-05-05
externí odkazy
- Domovská stránka projektu Archivovány na archive.org