Довольно простой вопрос. Я работаю над проектом по установке нескольких операционных систем (все Linux) на одной машине с использованием подтомов btrfs, чтобы пользователь мог загрузить среду, в которой ему удобно. Поскольку все они используют ядро Linux, можно ли скомпилировать и использовать единое ядро для всех операционных систем на машине? Есть ли что-то специфичное для ОС, и если да, то требуются ли ОС только модули ядра или это глубже?
В настоящее время я предполагаю, что ядро совершенно независимо от ОС и что до тех пор, пока все модули для обеих ОС включены в одно общее ядро, они обе могут совместно использовать ядро и, следовательно, совместно использовать обновления и изменения, внесенные в ядро.
решение1
OpenVZделает именно то, что вы просите.
Он создает контейнеры, которые на 100% независимы друг от друга, но используют одно и то же модифицированное ядро.
Единственным недостатком по сравнению с полной виртуализацией является то, что при использовании контейнеров невозможно установить ничего, кроме Linux.
решение2
OpenVZ великолепен и обеспечивает безопасное, стабильное и простое в использовании решение для контейнеров. Однако есть также Linux Containers, которые встроены в Linux, и в последних выпусках ядра был достигнут большой прогресс.
Контейнеры Linux имеют множество утилит пользовательского пространства, которые вы можете использовать, включая lxc, vzctl (из OpenVZ), libvirt и docker.
Контейнеры Linux позволяют запускать процессы (и пользователей, если вы используете пользовательские пространства имен) в отдельных пространствах имен. Это создает ощущение отдельной системы, работающей на том же ядре, и позволяет добавлять ограничения к ресурсам с помощью cgroups. Контейнеры Linux чрезвычайно легковесны по сравнению с аппаратными виртуальными машинами, такими как Xen, Qemu/KVM или VMWare.