web-dev-qa-db-ja.com

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

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

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

20
Ted Cahall

USBの代替

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

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

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

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

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


あなたがしたい場合は

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

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

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

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

  • installedUbuntuシステム(内部ドライブにインストールされているが、USBペンドライブにインストールされているような)。

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

リンク集


26
sudodus

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

15
Ted Cahall

sudodus 'answer のより高速なand安価な代替手段として、起動可能なドライブイメージから直接起動できますfile専用(USB)ドライブの代わりに。

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

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

  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パターンを追加できます。

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

    Sudo chmod a+x /etc/grub.d/35_isofiles
    
  4. Grubメニューが有効 であることを確認してください。

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

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


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

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

12
David Foerster

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

ただし、ここには2つの異なるユースケースがあり、それぞれ異なるソリューションがあります

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

配布は、基本的にパッケージ化されたアプリケーションとユーザー空間環境によって決定されます(例:SystemD vs init for boot)

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

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

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

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

コンテナはカーネルリソースをホストと共有しますが、それ以外の場合は独自のルートファイルシステム、ユーザースペース、ネットワークスタックなどを持ちます。概念的にはステロイドの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

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

9
crasic

ドライブに個別のパーティションを保持します(できれば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固有のままにすることができます。

3
joeytwiddle

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

1.仮想化

長所

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

短所

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

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

長所

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

短所

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

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

長所

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

短所

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

QEMU

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

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

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

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

QEMUは、Linux、Windows、およびその他のOSのコマンドラインアプリとして利用できます。 GUIとしても利用可能で、MultiBootUSBLinuxおよび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
C.S.Cameron

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

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

2
Luis Arriojas

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

1
CSharpQuestions