3

Мне было интересно, если кто-нибудь был в состоянии использовать chroot на OSX для запуска другой ОС (Ubuntu, Centos). Я знаю, что они очень разные, но почти все, для чего я хочу использовать это, ни о чем не заботятся на уровне ядра, поэтому я надеялся, что найдется способ сделать это без использования виртуальной машины.

Исходя из моих поисков в Google, я вижу, что этот вопрос задают, но нет реального ответа, кроме как "попробовать ВМ". Хотелось бы сделать это без ВМ, хотя.

2 ответа2

6

К сожалению, большинство программ заботиться о ядре как непосредственно, так и нет.

Различные операционные системы имеют существенные различия даже в самых распространенных функциях (epoll против inotify против kqueue, клон против vfork против rfork ...).

Даже если программа придерживается минимальных функций, которые выглядят одинаково для пользовательского пространства (например, stdio, базовый доступ к файлам), ей (или, скорее, libc) все равно нужно знать, как вызывать эти функции в ядре, что в Linux совершенно отличается (простые старые системные вызовы) и OS X (смесь системных вызовов и Mach IPC).

И это при условии, что вы можете заставить ядро начать выполнение программы в первую очередь - ядро OS X не понимает формат ELF, только Mach-O (плюс все виды устаревших Mac OS).

Существуют различные эмуляторы - например, FreeBSD имеет эмуляцию Linux, а Wine запускает программы Windows в Unixes, и, похоже, существует эмулятор OS X для Linux - но я не смог найти ни одного, который бы запускал программы Linux в OS X.

Вот описание того, как основные функции Linux эмулируются во FreeBSD.

4

chroot изменяет корневой каталог; он не меняет формат исполняемого файла, двоичный интерфейс приложения и т. д., все они различаются в OS X и Linux. Запуск другой ОС требует больше, чем chroot; это занимает ВМ.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .