コミットせずに新しいOSリリースを試す方法


20

Ubuntu 17.04やUbuntu 17.10など、新しい機能を確認するために、新しいOSのリリースを試してみたいと思います。また、Kubuntu、CentOS、または他のディストリビューション(Windows 11が届いたら?)を確認したり、テスト環境をセットアップしたりします。

メインの開発マシンを危険にさらすことなくこれを行うには、どのような選択肢がありますか?最善の方法についての議論を探しているわけではありませんが、どの選択肢が利用可能かを検討しています。


2
私は主に仮想マシンでそれを行います。参照ガイドのため、この質問にあなたがあなたの答えににリンクすることにVirtualBoxを使用して信じられないほど高速かつ簡単にセットアップします。
Takkat

1
個人的には、dockerコンテナがわかりやすいスクリプトで定義されているために使用しています。ベースイメージとインストールするものを完全に制御できます。ホストファイルとデバイスの共有、コンテナーの仮想ネットワークの作成、コマンドライン引数を使用したポートの選択的公開、コンテナーシェルへのコマンドの直接送信、コンテナーコンテキスト内でのアプリケーションの実行が簡単です。たとえば、1 docker run -it centos /bin/bash
行でCentos

8
「ライブCD」は以前は大きなものでした。最近では、ライブUSBドライブになります。
user253751

1
Windows 10の更新モデルを考えると、「Windows 11」が存在することはまずありません。OSの大幅な再構築があったとしても、Microsoftはおそらくそれを別のものと呼ぶでしょう。
停止ハーミングモニカ

3
基本的に3つのオプションがあります:仮想マシン(VirtualBoxまたはDocker)、ブート可能なフラッシュドライブ(ライブCDに代わる現代の代替品)、またはデュアルブート。3つのどちらを選択するかは、ニーズ、ハードウェア、および経験によって異なります。
ショーン・ザ・ビーン

回答:


26

USBの代替

USBの代替品が適しているのは、

  • パフォーマンスをテストする(ベアメタルで)
  • コンピューターは、仮想マシンでシステムを実行するのに十分なほど強力ではありません

少なくとも2GBのドライブスペースを持つUSBペンドライブを使用して、

  • ペンドライブ内のライブ Ubuntuシステム。

    USBペンドライブから起動し、起動メニューで「Try Ubuntu」を選択します(他のLinuxディストリビューションと同様のもの)。データを保存したり、プログラムをインストールしたり、ライブ(ライブ専用)ドライブでシステムを微調整した場合、シャットダウンまたは再起動して存続しません


あなたがしたい場合は

  • より高度な方法でUbuntuを試すか、
  • データの保存、プログラムのインストール、またはシステムの調整
  • 少なくとも4 GBの高速USBペンドライブを持っている/入手する、

あなたが作成することができます

  • 永続的なライブ Ubuntuシステム

または、少なくとも16 GBの高速USBペンドライブを所有/取得している場合は、

  • インストール Ubuntuシステム(内部ドライブではなく、USBのペンドライブにインストールように)。

    USBドライブにインストールされたシステムは安定しており、柔軟性があり、最新の状態に保ち、制限なく調整できます。この方法では、永続的なライブシステムよりも優れています。プロプライエタリなドライバーを避けることができれば、コンピューター間で移植できますが、永続的なライブシステムはより移植可能です。

リンク集



2
ポスターには実行中のUbuntu(?)インストールがあるため、ハードディスクからISOを直接起動することも可能です。(新しい)ISOへのリンクを設定し、grubのリンク(/etc/grub.d/40_customに追加)を使用し、casper-rwファイル(PERSISTENCE_PATHを使用して特定するためのディレクトリ)を持つFATパーティションを作成します)。「toram」を追加すると、ISOブートパフォーマンスは通常のハードディスクインストールと同等(またはさらに高速)になります。
ubfan1

2
はい、@ ubfan1の代替は良いです、私はそれを数回使用しました。USBペンドライブを作成するよりもセットアップが少し複雑かもしれませんが、一度手に入れるとうまく機能します:-)このリンク、help.ubuntu.com
community /

2
新しいOSリリースが実際にハードウェアでどのように動作するかをテストする場合は、別のストレージデバイスにインストールするのが最適な方法です。
pa4080

これは絶対に正しい答えです。現在のOSで仮想化の層(またはDocker、禁止)を介してOSをテストすることは、現在の車の後ろのトレーラーでけん引して「テストドライブ」のために新しい車に乗るようなものです。それどのように見えますが、パフォーマンスについてはまったくわかりません。
AC

USB3では、これはおそらく大丈夫でしょう。USB2を搭載した古いマシンを使用している場合、おそらくロードに著しく長い時間がかかります。
ショーン・ザ・ビーン

15

新しいディストリビューションと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のマシンがあれば、それらをすべて並行して実行することもできます。


2
WindowsはVM内で実行できます。ただし、新しいバージョンは非常に重いため、使用するにはかなり高速なマルチコアが必要です。
レイヴリー

仮想環境もそのOSのサポートに依存しています。新しいWindowsリリースでは、それをサポートするために仮想マシンソフトウェアを変更する必要があります。私は彼らが新しいリリースの準備をすることを期待するでしょう;-)
リンツウィンド

ええ-テストのために、最近のOSリリースを起動できるようにするには、仮想化ソリューションを最新のリリースにアップグレードする必要があります。
Takkat

2
KVMはWindows 10および7を正常に実行します。XenがCitrics Xen Serverを参照している場合、Windows 10および7も実行されます。
Robby1212

1
@EricDuminilこれらは、Windowsが一般的に使用するのと同じくらい使いやすいものでした。:)
マイケルハンプトン

12

sudodusの答えのさらに高速安価な代替手段として、専用(USB)ドライブの代わりに、起動可能なドライブイメージファイルから直接起動できます。

少なくともUbuntu ISOイメージ(およびLinux Mintのような派生物)では、次のレシピが機能します。他のディストリビューションでは、さらに調整が必要になる場合があります。

  1. ブート可能なドライブイメージをISO形式1で内部ストレージドライブ2のファイルとしてどこかに保存します。

  2. Grubの「パーツ」ファイルを、たとえば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パターンを追加できます。

  3. ファイルを実行可能にします。

    sudo chmod a+x /etc/grub.d/35_isofiles
    
  4. Grubメニューが有効になっていることを確認します

  5. Grub構成を更新します。

    sudo update-grub
    
  6. 再起動し、新しく追加されたGrubメニューエントリを選択して、それぞれのイメージファイルから起動します。


1他のファイルシステムタイプも可能ですが、他のGrubコマンドとブートパラメータの調整が必要になる場合があります。

2 LVM、RAID、および暗号化されたファイルシステムは、Grubのユーティリティライブラリのおかげで動作するはずですが、私はそれらをテストしませんでした。


2
うわー !なんてスクリプト!/etc/grub.d/40_customにエントリを追加し、適切なパラメーターを見つけるだけで、同じことを手動で行いました。wiki.archlinux.org/index.php/で
solsTiCe

9

仮想化は非常に簡単です。

ただし、ここには2つの別々のユースケースがあり、異なる解決策があります

1.新しいディストリビューションを試す

ディストリビューションは、基本的にはパッケージ・アプリケーションによって決定され、ユーザ空間の環境(例えばされているSystemDinitブート用)

別のディストリビューションのUIXを定性的に「評価」したい場合は、OSを完全にインストールして使いやすさを評価する本格的な仮想化をお勧めします。これについては、他の回答で十分に説明されています。

テストのために単にユーザースペース環境が必要な場合は、読み進めてください。

2.さまざまな環境でのテストと「スローアウェイインスタンス」

コンテナ化、つまりカーネルを使用してサンドボックス環境を作成する軽量仮想化の形式を使用する方が、簡単で、安価で、高速です。

コンテナはカーネルリソースをホストと共有しますが、それ以外の場合は独自のルートファイルシステム、ユーザースペース、ネットワークスタックなどを持ちchrootます。概念的にはステロイドと考えることができます。ただし、カーネルは共有されているため、仮想化は「シン」であり、ほとんどの実用的な目的では、ホストOSと同じ速度で実行されます。

と呼ばれる一般的に使用されるコンテナシステムがありdockerます。ドッキングウィンドウは、あなたが希望の実質的にすべてのLinuxディストリビューションのための画像を標準化している、そしてそれは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 :) "

1回限りの使用

$ 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

文字通り何百もの他の使用パターンがありますが、スクリプトのような画像定義、拡張可能な画像、およびコマンドラインの使用は、開発、テスト、さらには展開環境にとっても非常に魅力的です


1
システムコンテナーが必要な場合は、Docker(アプリケーションコンテナー向けに設計されている)ではなく、LXD(従来のLXCユーザー空間ツールよりもはるかにシンプル)を検討する必要があります。とはいえ、どちらもカーネルLXC / cgroupsサポートの上に構築されます。参照してくださいunix.stackexchange.com/questions/254956/...を
ボブ・

3

ドライブに別のパーティションを保持します(最小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、およびWindows XPでした。以前は速度と楽しみのためにGentooを起動していましたが、信頼されたDebian OSへのchrootでウェブサーバーとメールサーバーを実行しました。

(*)を編集して、OSごとに異なるホームフォルダーを構成できます/etc/passwd。ホームを設定してから/home/you/arch-test、共有ホームパーティションをターゲットにし/etc/fstab、再起動します。いくつかのドットファイルをシンボリックリンクして両方のOSで共有し、他のドットファイルをOS固有のままにすることができます。


1
インストールスクリプトを本当に信頼する必要がある
.....-mckenzm

はい、この方法にはさらなるリスクが伴います。本当に注意深い人なら、最初に仮想化を試し、次にパーティションのインストールを試して、それが機能する場合にのみ元のインストールを放棄することができます。
-joeytwiddle

私はこれを二度としないでしょう。私はかつて、あいまいなdiバグに遭遇しました。これは、要求されたインストールの一部ではないものも含め、すべての暗号化されたパーティションを吹き飛ばしました。私の知る限り、このバグは修正されていません。
マイケルハンプトン

3

基本的には、仮想化(VirtualBoxまたはDocker)、ブート可能なフラッシュドライブ(ライブCDの最新の代替)、またはパーティションからのデュアルブートの3つのオプションがあります。3つのどちらを選択するかは、ニーズ、ハードウェア、および経験によって異なります。他の回答のいくつかは、特定のアプローチについてより詳細に説明しますが、それらを決定するためのフレームワークを提供するための高レベルの比較を次に示します。

1.仮想化

長所

  • 設定がとても簡単
  • プライマリ開発環境には影響しません
  • ハードドライブのスペースがあれば、必要な数だけ簡単にセットアップできます。大きな変更を加える前にスナップショットを作成し、作業が完了したらスナップショットを削除することもできます。

短所

  • 2つ以上のOSを同時に実行するには、まともなハードウェアが必要です
  • パフォーマンスはVMに割り当てられたリソースによって制限されるため、テストしているOSバージョンがプライマリOSとどのように比較されているかを正確に把握することはできません。
  • ハードウェアはすべて仮想化されているため、ドライバーの可用性/互換性の正確な感覚も得られません

2.起動可能なフラッシュドライブ

長所

  • 設定がやや簡単
  • プライマリ開発環境には影響しません
  • USB3フラッシュドライブのパフォーマンスは一般的に良好ですが、フラッシュドライブの品質に応じて多少のばらつきがあります(USB2は遅くなります-この目的のためにそれを避けます)
  • (ストレージデバイス以外の)実際のハードウェアを使用するため、ドライバーやその他のデバイスでどの程度うまく再生できるかを確認できます。
  • 十分な数のフラッシュドライブがあれば、必要な数だけ簡単にセットアップできます(他のことを試してみたい場合は、簡単に再フォーマットできます)

短所

  • この目的専用の1つ(または複数)のフラッシュドライブが必要です。
  • パフォーマンスは、使用するフラッシュドライブの品質に依存します

3.パーティションからのデュアルブート

長所

  • プライマリOSとまったく同じハードウェアで実行されているため、パフォーマンス、ドライバーの互換性などの最良のアイデアを提供します。
  • ハードドライブのスペースがある限り、一度に複数のセットアップが可能です(各パーティションに個別のパーティションをセットアップする必要があります)

短所

  • 適切にセットアップするには、いくつかの低レベルのノウハウが必要です
  • ハードドライブのパーティションとブートローダーをいじることは、常に現在の設定を混乱させる可能性があります(起動する前に、起動可能なフラッシュドライブまたはライブCDが手元にあることを確認してください)

投稿でDockerの代替案を仮想化とは別のものとして分割した場合、すべての代替案を網羅する答えとして喜んでマークします。私見ですが、本当のフルinitシステムとフルカーネルを実行していないため、コンテナは本当の仮想化ではないと感じています。コンテナ(などドッキングウィンドウ、LXC)完全仮想化(など)と比較して、リソースの詳細軽量で...
テッド・カホール

2

QEMU

QEMUは、安価でシンプルというこの質問の要件を理論的に解決する仮想化ソリューションです。

LinuxまたはWindowsホスト内でオペレーティングシステムのisoファイルをドラッグアンドドロップで起動できます。

また、ホストシステム内でライブUSBハードドライブを起動でき、使用可能な場合は永続性を使用します。

VBoxのように仮想ハードディスクを構築する必要はありません。

QEMUは、Linux、Windows、およびその他のOSのコマンドラインアプリとして利用できます。GUIとしても利用可能で、MultiBootUSB LinuxおよびWindowsバージョンhttp://multibootusb.org/に含まれています。

QEMU

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がインストールされたシステムが優れています。


ありがとうございました!このオプションについて聞いたことがありませんでした。それを見ていきます。
テッドキャホール

2

最も簡単で簡単な方法は、仮想化を使用することです。VirtualBox(オープンソース)をダウンロードして、任意のオペレーティングシステムをインストールできます。また、最初に実行する前にスナップショットを作成することをお勧めします。これにより、設定や設定の変更などを間違えた場合に以前の状態にフォールバックできます。

この方法でいくつかのOSを使用してテストしています。非常にシンプルで迅速です。さらに、仮想化を使用してMSDOSとWindows 3.1を使用しました。ChromeOS(わずかな作業で)でも、WindowsやLinuxのどのバージョンでも、デスクトップのフレーバーは関係ありません。


1

過去3年間、USBドライブからUbuntuのフルインストールを正常に起動しました。USB 2.0は古い3G SATA HD(7200 rpm 16 MBキャッシュ)よりも少し遅くなりましたが、USB 3.0は3G SATAインターフェイスのSSDから数秒以内です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.