ПредишенСледващото

Работа с приложения на FreeBSD. Linux бинарна съвместимост

14.5.1. Как действа тя?
FreeBSD поддържа абстракция, наречена "изпълним клас товарач", който всъщност е първият етап от execve системата повикване (2).

В действителност, FreeBSD има няколко товарачи вместо един, който, в случай на повреда, програмата ще изпълнява скрипта (скрипт).

Исторически погледнато, само зареждане на UNIX системи, проверка на "магическото число" (обикновено през първите 4 или 8 байта на файла), за да се определи дали един изпълним система файлов формат е известен, и ако е така, обадете се на подходяща буутлоудъра.

Ако файлът не идентифицира в системата като изпълним, execve (2) върна грешка, и текущата командния интерпретатор започна да изпълнява файла като скрипт.

По-късно, ш (1) е бил променен, така че да се покажат първите два знака във файла, и ако те се озоваха. файла се управлява като сценарий за CSH (1) (посочва, че SCO е първият, който направи тази модификация).

FreeBSD се държи по различен начин: в списъка работи на програми за изтегляне, включително и специална #! товарач, че е желано или преводач / хамбар / од, ако намери подходящ.

FreeBSD изпълним файл с формат определя като "магическо число". На този етап все още не е широко, за които операционната система е файл (Linux, Solaris, или всеки друг, с помощта на изпълнимите файлове ELF формат).

Съответно, Linux програма трябва да бъде "маркиран" за Linux (например, чрез brandelf полезност (1)):

# Brandelf -t Linux файл

Когато ELF-товарач е "марка" Linux, той замества указател в структурата на Proc. Всички системи повиквания са индексирани по този указател (в традиционен UNIX система, масив sysent [], съдържащ система повиквания). Някои изключения и системни функции се управляват от специален модул подкрепа Linux ядро.

Плюс това, Linux емулатор динамично "промяна корен" на файловата система, когато търсят файлове (в действителност, прави същото като опция за обединение, когато монтаж файлови системи (да не се бърка с unionfs!)). На първо място, файлът се търси в директорията / COMPAT / Linux / оригинал-пътека, и едва след това, ако това не помогне, да / оригинал-пътека. Това позволява на Linux програми, които да изпълняват отбор FreeBSD, ако няма да има съответните Linux команди. Например, копиране FreeBSD uname (1) до директорията / COMPAT / Linux / хамбар /, можете да "получи" Linux програми съобщават, че те се движат при FreeBSD.

Каква е разликата между Linux системни обаждания и FreeBSD? Всъщност не. Единствената разлика (за момента и в бъдеще, всичко може и най-вероятно ще се промени), може би в това, че функциите на защита FreeBSD система призовава към ядрото, така и за Linux, те могат да бъдат или в ядрото или в динамично зареждаеми модули.

Можем ли да наречем този емулация? Не. Като такива, емулатор (или симулатора) отсъства. В такъв случай, защо те казват "Linux емулация"? За да "дразни" FreeBSD. 8-). В действителност, това е въпрос на терминология: не съществуват думи, които точно описва този процес. Не можем да кажем, че FreeBSD работи на Linux приложения (без прекомпилиране или да заредите съответния модул на ядрото). След това, и въвежда термина "Linux емулация".

Свързани статии

Подкрепете проекта - споделете линка, благодаря!