LoginSignup
7
9

More than 5 years have passed since last update.

Ubuntu Server 14.04.1 + VirtualBox Headless(GUIなし)でWindows7を使う

Last updated at Posted at 2014-12-29

はじめに

我が家のWindowsを撤廃してしまおうと思い、メインのサーバをUbuntu Serverにしました。
ところが、これまでWindows上で使っていたモノはほぼUbuntu上で実現できたものの、どうしてもWindowsでしか使えないモノが残ってしまいました。しかし、それはごく稀に必要になるだけです。

そこで、Ubuntuにインストール済みのVirtualBoxでWindowsを動かします。
ただし、UbuntuにはXを入れていないので、GUI操作はできません。
なので、下記のように環境を構築しました。

  1. GUI操作できる環境下のVirtualBox上で、Windows7をインストールしたイメージファイルを作成する
  2. Windows7をインストールしたイメージファイルからVagrant Boxを作成する
  3. Ubuntu Server上でWindowsを起動する
  4. Remote Desktop経由でWindowsにログインする

Windows7をvagrant upするのはUbuntu Server上で、そのインスタンスは1個だけ(自分が使うだけ)です。

必要になる機材、ソフトウェアなど

必要になる機材というか、こういう環境下で動かしたかったというだけなんですが…。

  • MacBook Air with Yosemite
  • Ubuntu Server 14.04.1 LTS

上記マシンそれぞれにインストールするVirtualBoxとvagrantのバージョンは揃えました。また、ここで使用するvagrant plugin、vagrant-windowsがサポートするWindowsのバージョンに制限があるので、ここに記載されているバージョン以外の組み合わせで試す際にはご注意ください。

  • VirtualBox 4.3.10
  • vagrant 1.6.5
  • vagrant-windows plugin 1.6.0

構築手順

GUI操作できる環境下のVirtualBox上で、Windows7をインストールしたイメージファイルを作成する

ここの手順はMacで行いました。
VirtualBoxを使ったWindows7インストール手順については、普通にGUI操作するだけなので、詳細は省きます。ここでのキモは、WinRMの設定です。

  1. ここからVirtualBoxをダウンロードしてインストールする。
  2. VirtualBoxマネージャ(GUI)を起動して、Windows7を新規インストールする。仮想マシンの名前を、ここでは仮にespresso_win7とする。
  3. Windows7に、VirtualBox Guest Additionをインストールする。(後で入れるのは面倒なので…)
  4. Windows7のリモートデスクトップ機能を有効化する。
  5. 後でWindowsをリモート操作するため、vagrant-windows pluginのreadmeを参考に、Windows7のコマンドプロンプト上で下記のようにWinRMを設定する。

    configure_winrm
    winrm quickconfig -q
    winrm set winrm/config/winrs @{MaxMemoryPerShellMB="512"}
    winrm set winrm/config @{MaxTimeoutms="1800000"}
    winrm set winrm/config/service @{AllowUnencrypted="true"}
    winrm set winrm/config/service/auth @{Basic="true"}
    sc config WinRM start= auto
    
  6. 設定が一通り完了したら、Windowsの電源を落とす。

Windowsをインストールしたイメージファイルからvagrant boxを作成する

ここの手順もMacで行いました。
MacとUbuntuとでvagrantのバージョンを揃えるため、公式サイトからインストールパッケージをダウンロードして手動でインストールしていきます。

  1. ここからvagrantをダウンロード、インストールする。
  2. vagrant-windows pluginをインストールする。

    plugin_install
    $ sudo vagrant plugin install vagrant-windows
    
  3. boxファイルを作成する。ここで--baseオプション引数に指定している文字列には、VirtualBoxで作成した仮想マシンの名前を指定する。--outputオプション引数に指定しているboxファイル名は適当でよい。

    package
    $ vagrant package --base "espresso_win7" --output espress_win7_20141223.box
    
  4. 作成したboxファイルをUbuntu Server側に転送する。ここでは仮にvagrantユーザのhome下とする。

    scp
    $ scp espress_win7_20141223.box ubuntu_server.local.net:/home/vagrant/boxes/
    

Ubuntu Server上でWindowsを起動する

ここの手順はUbuntu Server上で行います。

  1. ここからVirtualBoxをダウンロードしてインストールする。
  2. VirtualBoxのExtention Packをインストールする。

    install_extpack
    $ sudo VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-4.3.10-93012.vbox-extpack
    
  3. Vagrantfileを作成する。ここでは/home/vagrant/win7/下にする。

    create_vagrantfile
    $ mkdir -p /home/vagrant/win7
    $ vi /home/vagrant/win7/Vagrantfile
    
    Vagrantfile
    # -*- mode: ruby -*-
    # vi: set ft=ruby :
    
    # Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
    VAGRANTFILE_API_VERSION = "2"
    
    Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
        # Configure base box parameters
        config.vm.box = "vagrant-windows7sp1"
        config.vm.box_url = "/home/vagrant/boxes/espress_win7_20141223.box"
        config.vm.guest = :windows
    
        # Ensure that all networks are set to private
        config.windows.set_work_network = true
    
        # Port forward WinRM and RDP
        config.vm.network :forwarded_port, guest: 3389, host: 3389
        config.vm.network :forwarded_port, guest: 5985, host: 5985, id: "winrm", auto_correct: true
    end
    
  4. Windows7を起動する。

    boot_win7
    $ cd /home/vagrant/win7/
    $ vagrant up
    Bringing machine 'default' up with 'virtualbox' provider...
    [default] Clearing any previously set forwarded ports...
    [default] Clearing any previously set network interfaces...
    [default] Preparing network interfaces based on configuration...
    [default] Forwarding ports...
    [default] -- 22 => 2222 (adapter 1)
    [default] -- 3389 => 3389 (adapter 1)
    [default] -- 5985 => 5985 (adapter 1)
    [default] Booting VM...
    [default] Waiting for machine to boot. This may take a few minutes...
    [default] Machine booted and ready!
    Sorry, don't know how to check guest version of Virtualbox Guest Additions on this platform. Stopping installation.
    [default] Mounting shared folders...
    [default] -- /vagrant
    [default] VM already provisioned. Run `vagrant provision` or use `--provision` to force it
    

    Remote Desktop経由でWindowsにログインする

ここの手順はMacで行います。

  1. Microsoft Remote Desktopをインストールして起動し、Windows接続用の設定を新規作成する。
    スクリーンショット 2014-12-29 11.18.30.png
  2. 接続する。
    スクリーンショット 2014-12-29 11.29.34.png
  3. あとは普通に操作できる。 スクリーンショット 2014-12-29 11.23.23.png

おまけ

VagrantfileのVagrant.configure(VAGRANTFILE_API_VERSION) do |config|スコープ内に以下のコードを追加すると、bridgeタイプのNICを仮想マシンに追加することができます。

Vagrantfile
    # Local networking
    config.vm.provider :virtualbox do |vb|
        vb.customize ["modifyvm", :id, "--nic2", "bridged"]
        vb.customize ["modifyvm", :id, "--nictype2", "82540EM"]
        vb.customize ["modifyvm", :id, "--nicpromisc2", "allow-all"]
        vb.customize ["modifyvm", :id, "--cableconnected2", "on"]
        vb.customize ["modifyvm", :id, "--bridgeadapter2", "eth0"]
    end

同様に、Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|スコープ内に以下のコードを追加すると、仮想マシンにpass throughする形でホストマシンの光学ドライブを追加できます。
これで、例えば仮想マシン上でBDを焼くことも可能になります。

Vagrantfile
    # Directly mount the host drive.
    config.vm.provider :virtualbox do |vb|
        vb.customize ["storageattach", :id, "--storagectl", "SATA", "--port", "1", "--type", "dvddrive", "--medium", "host:/dev/sr0", "--passthrough", "on"]
    end

これらのコマンド、オプションについての詳細は、VirtualBoxのVBoxManageコマンドヘルプに記載されています。他にもいろいろできそう。

参考文献

7
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
9