Взаимозаменяемы ли разные ядра Linux / Unix?

Лучший способ (наименьшее количество нажатий клавиш) -

d E

Удаляет весь текст с текущей позиции до следующего пробела. Из справки (: h E )

                                                        E
E                       Forward to the end of WORD [count] inclusive.
                        Does not stop in an empty line.
...
                                                        WORD
A WORD consists of a sequence of non-blank characters, separated with white
space.  An empty line is also considered to be a WORD.

14
22.03.2018, 20:11
2 ответа

Нет, ядра из разных реализаций операционных систем в стиле Unix -не являются взаимозаменяемыми, в частности потому, что все они представляют разные интерфейсы для остальной части системного (пользовательского пространства )— их системные вызовы (, включая ioctlособенности ), различные виртуальные файловые системы, которые они используют...

То, что до некоторой степени взаимозаменяемо, на уровне исходного кода является комбинацией ядра и библиотеки C, или, скорее, API пользовательского -уровня, которые ядро ​​и библиотеки предоставляют (, по сути, представление на уровень, описанный POSIX, без учета того, является ли он на самом деле POSIX ). Примеры этого включают Debian GNU/kFreeBSD , который строит систему Debian поверх ядра FreeBSD, и Debian GNU/Hurd , который строит систему Debian поверх Hurd.

Это не совсем на уровне взаимозаменяемости ядра, но были попытки стандартизировать общий двоичный интерфейс приложений, чтобы разрешить использование двоичных файлов в различных системах без необходимости перекомпиляции. Одним из примеров является стандарт Intel Binary Compatibility Standard , который позволяет запускать соответствующие ему двоичные файлы в любой системе Unix, реализующей его, включая более старые версии Linux с уровнем iBCS 2. Я использовал это в конце 90-х для запуска WordPerfect в Linux.

См. также Как создать chroot FreeBSD внутри Linux .

39
27.01.2020, 19:50

Некоторые ядра имеют бинарную совместимость, позволяющую смешивать программы пользовательского пространства с разными ABI (, например, freebsd может в определенной степени работать с бинарными файлами linux )-, однако бинарные файлы ядра (, например, программа инициализации, загрузчик модулей, инструменты настройки драйверов устройств, библиотека C, инструменты, необходимые для настройки файловых систем... )на практике будет слишком много необходимости -до -знать об интерфейсах уровня ядра для успешной загрузки системы с чужим ядром.

Кроме того, файловые системы должны быть совместимы. Кроме того, параметры бинарной совместимости должны быть жестко скомпилированы в ядро ​​-все, что реализовано в виде модуля ядра, может потерпеть неудачу, потому что вы не можете запустить загрузчик модуля.

Как уже упоминалось, пользовательские среды, как правило, несколько переносимы, если вы хотите перекомпилировать -например, системы debian на базе freebsd -или настроить систему netbsd pkgsrc на linux (абсолютно нетривиально, но поддерживается и возможно! ).

4
27.01.2020, 19:50

Теги

Похожие вопросы