Ubuntu 17.04やUbuntu 17.10など、新しい機能を確認するために、新しいOSのリリースを試してみたいと思います。また、Kubuntu、CentOS、または他のディストリビューション(Windows 11が届いたら?)を確認したり、テスト環境をセットアップしたり、それらを破棄したり、コアマシンに対してこれを実行したくないことを確認します。
メインの開発マシンを危険にさらすことなくこれを行うには、どのような選択肢がありますか?最善の方法についての議論を探しているわけではありませんが、どの選択肢が利用可能かを検討しています。
USBの代替品が適しているのは、
少なくとも2GBのドライブスペースを持つUSBペンドライブを使用して、
liveペンドライブのUbuntuシステム。
USBペンドライブから起動し、起動メニューで「Try Ubuntu」を選択します(他のLinuxディストリビューションと同様のもの)。データを保存する、プログラムをインストールする、またはシステムをライブ(ライブ専用)ドライブに微調整する場合、シャットダウンまたは再起動後もnot存続します。
あなたがしたい場合は
あなたが作成することができます
または 少なくとも16 GBの高速USBペンドライブ を持っている/取得している場合は、
installedUbuntuシステム(内部ドライブにインストールされているが、USBペンドライブにインストールされているような)。
USBドライブにインストールされたシステムは安定しており、柔軟性があり、制限なく最新の状態に保ち、微調整することができます。この方法では、永続的なライブシステムよりも優れています。プロプライエタリなドライバーを避けることができれば、コンピューター間で移植できますが、永続的なライブシステムはより移植可能です。
新しいディストリビューションとOSバージョンをテストする1つの方法は、仮想化を使用することです。追加のPC /キーボード/ビデオ/マウスまたはアダプターが単一のキーボード、ビデオ、マウスで複数のPCを実行するためのスペースを必要としません。必要なのは、1台のPCといくつかの仮想化ソフトウェアのみです。
これは、仮想化が可能なマルチコアCPUと合理的な量のメモリを搭載したマシンがあることを前提としています。少なくとも8GBのメモリと16GBのメモリをお勧めします。
Ubuntuを実行していて、Linuxディストリビューションのみを試してみたい場合(Windowsが動作するとは思わない)、Ubuntuにパッケージされている無料の仮想化ソフトウェアKVMまたはXenを使用できます。どちらも正常に動作し、無料で、さまざまなLinuxディストリビューションを実行できます。ただし、VMを管理するツールはやや不足しています。 Oracleには、VirtualBoxと呼ばれる仮想化ツールの無料バージョンがあり、もちろん市販のVMWare製品が常にあります。 VirtualBoxとVMWareは、Windowsマシンが選択されている場合、Windowsマシン上でUbuntuを実行することもできます。
VMマネージャーを使用すると、新しいディストリビューションが追加されたときに追加し、テストし、新しい機能を試して、新しいリリースが表示されたときに破棄できます。実行されていない場合にのみディスク領域を消費するため、タイトにならない限り廃棄する必要さえありません。 VMマネージャーを使用すると、マシン上の5、10、またはそれ以上のディストリビューションのバランスをとり、必要に応じてそれらを起動および削除できます。 32GBまたは64GBのマシンがあれば、それらをすべて並行して実行することもできます。
sudodus 'answer のより高速なand安価な代替手段として、起動可能なドライブイメージから直接起動できますfile専用(USB)ドライブの代わりに。
少なくともUbuntu ISOイメージ(およびLinux Mintのような派生物)では、次のレシピが機能します。他のディストリビューションでは、さらに調整が必要になる場合があります。
ブータブルドライブイメージをISO形式で保存する1 内部ストレージドライブ上のファイルとしてどこかに2。
Grubの「パーツ」ファイルを追加します。 g。 35_isofiles
、コンテンツ付き
#!/bin/bash
set -e
. /usr/share/grub/grub-mkconfig_lib
shopt -s nullglob
make_iso_menuentry()
{
local isodevice="$(exec "$grub_probe" -t device -- "$1")" || return $?
local isogrub="$(make_system_path_relative_to_its_root "$1")"
local label="${2:-"$1"}"
printf 'menuentry %s {\n' "'${label//\'/\'\\\'\'}'"
printf '\tset isofile=%s\n' "'${isogrub//\'/\'\\\'\'}'"
prepare_grub_to_access_device "$isodevice" | sed -e 's/^/\t/'
printf '\t%s\n' \
'insmod loopback' 'insmod iso9660' 'loopback loop "$isofile"' \
'linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename="$isofile" ro noprompt noeject noplymouth' \
'initrd (loop)/casper/initrd.lz'
printf '}\n\n'
printf 'Found "%s" image: %s\n' "$label" "$1" >&2
}
for iso in /path/to/image.iso # <-- set path to your ISO image here
do
make_iso_menuentry "$iso" "${iso##*/}" || true
done
/etc/grub.d
に追加し、実行可能にします。
必要に応じて、示された行のファイルパスを編集します。必要に応じて、複数のパスやBash globパターンを追加できます。
ファイルを実行可能にします。
Sudo chmod a+x /etc/grub.d/35_isofiles
Grubメニューが有効 であることを確認してください。
Grub構成を更新します。
Sudo update-grub
再起動し、新しく追加されたGrubメニューエントリを選択して、それぞれのイメージファイルから起動します。
1 他のファイルシステムタイプも可能ですが、他のGrubコマンドとブートパラメータの調整が必要になる場合があります。
2 Grubのユーティリティライブラリのおかげで、LVM、RAID、および暗号化されたファイルシステムは動作するはずですが、テストしませんでした。
仮想化は非常に簡単です。
ただし、ここには2つの異なるユースケースがあり、それぞれ異なるソリューションがあります
配布は、基本的にパッケージ化されたアプリケーションとユーザー空間環境によって決定されます(例:SystemD
vs init
for boot)
別のディストリビューションのUIXを定性的に「評価」したい場合は、OS全体をインストールし、その使いやすさを評価する本格的な仮想化をお勧めします。これについては、他の回答で十分に説明されています。
テストのためにユーザースペース環境が必要なだけなら、読み進めてください。
コンテナ化、つまりカーネルを使用してサンドボックス環境を作成する軽量仮想化の形式を使用する方が、簡単で、安価で、高速です。
コンテナはカーネルリソースをホストと共有しますが、それ以外の場合は独自のルートファイルシステム、ユーザースペース、ネットワークスタックなどを持ちます。概念的にはステロイドのchroot
と考えることができます。ただし、カーネルは共有されているため、仮想化は「シン」であり、ほとんどの実際的な目的では、ホストOSと同じ速度で実行されます。
docker
という一般的に使用されるコンテナシステムがあります。 Dockerは、希望するほぼすべてのLinuxディストリビューションのイメージを標準化していますand Windows上で実行します(ただし、WindowsイメージはWindows上でのみ動作し、Linuxイメージは両方で動作します)。スペースとパフォーマンスを節約する追加の便利な機能があります。
LXC
(カーネルに組み込まれています!)のようなLinuxのネイティブオープンソースの代替もあります。これは、ほぼ同じものに使用できます(ただし、より多くの構成が必要です)。
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
文字通り何百もの他の使用パターンがありますが、スクリプトのような画像定義、拡張可能な画像、およびコマンドラインの使用は、開発、テスト、さらには展開環境にとっても非常に魅力的です
ドライブに個別のパーティションを保持します(できれば20GB以上を推奨します)。
テストしたいOSをそのパーティションにインストールし、再起動することができます。
すべてがうまく機能していれば、元のOSパーティションを廃止し、最終的には再利用できます。
しかし、新しいOSがうまく機能していない場合(ドライバーの問題、利用できないソフトウェア)、単純に古いOSに再起動して、感謝することができます私はまだ持っていること!
ノート:
これにより、実際にハードウェアで新しいOSをテストできるようになるため、ドライバーの問題を検出できます。
しかし、新しいOSがどのように感じられるかを体験したいだけであれば、他の仮想化ソリューションの1つがおそらくより速く、簡単で安全です。
私は/home
を大きな個別のパーティションに保持しているため、2つのOSに依存しません。 (誤ってそのパーティションを再フォーマットしないでください!)
ただし、テスト中は共有/home
パーティションを使用しないしないことをお勧めします。 2つのOSのソフトウェアバージョンが大幅に異なる場合、アプリケーションは他のOSに適さない方法で構成ファイルを変更する場合があります。したがって、いずれかのOSにコミットするまで、OSごとに個別の構成ファイルを保持します。 (*) 下記参照
2番目のスワップパーティションを作成する必要はありません。両方のOSに同じスワップパーティションを使用できます。
もちろん、注意する必要がありますどのパーティションをフォーマット/インストールするか。新しいOSをインストールする前に、バックアップを行い、パーティションIDとサイズ(parted、p、q)を書き留めてください。
2つのOS間でデュアルブートを行うには、grubで両方を検出する必要があります。私の経験では、grubはこれを常に自動的に行ってきました。 (しかし、liloは以前は別の話でした!)
多くの場合、1つのOSから他のOSにいる間にソフトウェアを実行することが可能です。私はSudo chroot /mnt/original_os
を使用してそれを管理しましたが、それは セットアップするフィドル でした:/dev
と/proc
をバインドマウントする必要がありました。
私の記録は、1台のマシンに4台のLinux OS、1台のWindows XPでした。速度と楽しみのためにGentooを起動していましたが、信頼できるDebian OSへのchrootで webserverとmailserverを実行 しました。
(*)
/etc/passwd
を編集して、OSごとに異なるホームフォルダーを構成できます。ホームを/home/you/Arch-test
に設定し、/etc/fstab
の共有ホームパーティションをターゲットにして、再起動します。いくつかのドットファイルをシンボリックリンクして両方のOSで共有し、他のドットファイルをOS固有のままにすることができます。
基本的には、仮想化(VirtualBoxまたはDocker)、ブート可能なフラッシュドライブ(ライブCDの最新の代替)、またはパーティションからのデュアルブートの3つのオプションがあります。 3つのどちらを選択するかは、ニーズ、ハードウェア、および経験によって異なります。他の回答のいくつかは、特定のアプローチについてより詳細に説明しますが、それらを決定するためのフレームワークを提供するための高レベルの比較を次に示します。
長所:
短所:
長所:
短所:
長所:
短所:
QEMU
QEMUは、安価でシンプルというこの質問の要件を理論的に解決する仮想化ソリューションです。
LinuxまたはWindowsホスト内でオペレーティングシステムのisoファイルをドラッグアンドドロップで起動できます。
また、ホストシステム内でライブUSBハードドライブを起動でき、使用可能な場合は永続性を使用します。
VBoxのように仮想ハードディスクを構築する必要はありません。
QEMUは、Linux、Windows、およびその他のOSのコマンドラインアプリとして利用できます。 GUIとしても利用可能で、MultiBootUSBLinuxおよびWindowsバージョン http://multibootusb.org/ に含まれています。
QEMUはVirtual Machine Managerからも実行できます。これはMBUSBよりも高速ですが、ドラッグアンドドロップではありません。
Sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils
Sudo apt-get install virt-manager
長期間のOSテストでは、VirtualBoxがインストールされたシステムが優れています。
最も簡単で簡単な方法は、仮想化を使用することです。 VirtualBox(オープンソース)をダウンロードして、任意のオペレーティングシステムをインストールできます。また、最初に実行する前にスナップショットを作成することをお勧めします。これにより、設定や構成の変更などを間違えた場合に以前の状態にフォールバックできます。
この方法でいくつかのOSを使用してテストしています。非常にシンプルで迅速です。さらに、仮想化を使用してMSDOSとWindows 3.1を使用しました。 ChromeOS(わずかな作業で)、またはWindowsやLinuxのどのバージョンでも、デスクトップのフレーバーは関係ありません。
過去3年間、USBドライブからUbuntuのフルインストールを正常に起動しました。 USB 2.0は古い3G SATA HD(7200 rpm 16 MBキャッシュ)よりも少し遅くなりましたが、USB 3.0は3G SATAインターフェースのSSDから数秒以内です。