Віртуалізація на сьогоднішній день найпростіша.
Однак у вас є 2 окремі випадки використання, які матимуть різні рішення
1. Спробуйте нові дистрибутиви
Поширення в основному визначаються упакованими програмами та середовищем користувача (наприклад, SystemD
порівняно з vsinit
для завантаження)
Якщо ви хочете якісно "оцінити" UIX іншої дистрибуції, я б рекомендував повномасштабну віртуалізацію, де ви встановите ОС у повному обсязі та оціните її зручність використання. Це адекватно висвітлено в інших відповідях.
Якщо вам просто потрібне середовище простору користувачів для тестування, читайте далі.
2. Тестування та «викидання екземплярів» у різних середовищах
Простіше, дешевше і швидше використовувати контейнеризацію, форму легкої віртуалізації, яка використовує ядро для створення середовищ з пісочним середовищем.
Контейнер ділиться ресурсами ядра з Host, але в іншому випадку має власну кореневу файлову систему, користувальницький простір, мережевий стек тощо. Це можна вважати концептуально як chroot
стероїди. Однак оскільки ядро поділяється, віртуалізація є "тонкою", що означає, що для більшості практичних цілей воно працює з тією ж швидкістю, що і хост ОС.
Існує поширена система контейнерів під назвою docker
. Docker має стандартизовані зображення практично для кожного Linux-дистрибутиву, який ви хочете, і він працює на windows (однак, зображення Windows працюють лише на Windows, зображення Linux працюють на обох). Він має додаткові корисні функції для економії місця та продуктивності.
Існують також нативні альтернативи з відкритим кодом для linux типу LXC
(яка вбудована в ядро!), Яка може використовуватися для того ж самого (але з необхідною більшою конфігурацією).
Спрощений приклад тестування або середовища побудови в docker
# Dockerfile
FROM ubuntu:17.10
RUN apt-get update && apt-get install -y build-essential
WORKDIR /workdir
docker build --tag my-builder .
Потім з командного рядка складіть проект чи тести в цьому середовищі різними способами
"увійти" та компілювати всередині середовища, запустити тести і т.д.
$ docker run -v "$PWD:/workdir" --rm -it my-builder /bin/bash
# echo "Now in docker container"
# make
...
# build/test/my-test
...
# exit
$ echo "Build artifacts are now on your host OS Directory :) "
Використовувати як разову
$ docker run -v "$PWD:/workdir" --rm my-builder make
Ви навіть можете передавати змінні середовища
$ docker run -e "CROSS_COMPILE=arm-linux-gnueabi" -v "$PWD:/workdir" --rm my-builder make
Або запустіть стійкий екземпляр і скопіюйте в нього явні файли
$ Start our instance in background
$ docker run --name my-builder-inst -d my-builder
$ echo "Copy files to instance"
$ docker cp /my/source/dir my-builder-inst:/workdir
$ echo "run project build"
$ docker exec my-builder-inst make
$ echo "copy build artifacts"
$ docker cp my-builder-inst:/workdir/build /my/output/dir
$ echo "destroy and delete container"
$ docker rm -f my-builder-inst
Існує буквально сотні інших шаблонів використання, однак визначення зображення, схоже на сценарій, зображення, що розширюється, та використання командного рядка робить його надзвичайно привабливим для середовищ розробки, тестування та навіть розгортання.