
はじめに
PCを買い換えたので、これまで使っていたLinux仮想環境を新しいPCで利用したい。
実施した内容と、見舞われたトラブルを残しておく。
(参考)旧PCからの移行ではなく一から環境を構築する場合は、
の記事を参照。移行元で環境をエクスポートする
Vagrantfileのあるフォルダで、packageコマンドを実行し、package.boxファイルを作成する。
> vagrant package新しいPCにデータを移動させる
USBメモリなどで以下の3つの情報を移動させる。
package.boxVagrantfile- 仮想環境とローカルで共有していたフォルダ
- 私の場合は、
./myblog./workspace
- 私の場合は、
これらの情報の移動先として、移行先PCにフォルダを作成する。
mkdir ~/vagrant/ubuntu64_18フォルダ名は何でもよい。
ここでは、ubuntu64_18とした。移行元PCのフォルダ名(当時、VirtualBoxのバージョン18.04をインストールした際に設定した)と合わせたため。
移行先PCにVagrantとVirtualBoxをインストールする
やりかたは
を参照。boxをリストに追加する
boxは仮想環境起動時のテンプレートのようなもの。
移行元のpackage.boxを追加する。
vagrant box add ubuntu/bionic64 package.boxボックス名(addの第一引数)は任意だが、ubuntu/bionic64としている。
ここでつけたボックス名はVagrantfileの中に
config.vm.box = "ubuntu/bionic64"のように入ってくることになる。
myboxなどと適当な名前にして、
config.vm.box = "mybox"のようになるよりは、移行元のVagrantfileの記載と同じになるようにネーミングしたほうが良いと考えた。
boxのリストを確認する。
> vagrant box list
ubuntu/bionic64 (virtualbox, 0)Vagrantfileを作成する
box名を指定して、vagrant initを実行する。
> vagrant init ubuntu/bionic64【注意】コピーしてきたVagrantfileが存在すると
`Vagrantfile` already exists in this directory. Remove it before
running `vagrant init`.といったエラーが発生するため、いったんどこかに退避しておく。
作成したVagrantfileは、移行元のVagrantfileに中身を書き換えておく。
参考:私の環境のVagrantfile
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/bionic64"
config.vm.network "forwarded_port", guest: 8000, host: 8000
config.vm.network "forwarded_port", guest: 3000, host: 3000
config.vm.network "forwarded_port", guest: 9000, host: 9000
config.vm.synced_folder "./workspace", "/home/vagrant/workspace"
config.vm.synced_folder "./myblog", "/home/vagrant/gatsby/gatsby-starter-blog/myblog"
config.vm.provider :virtualbox do |vb|
vb.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/home/vagrant/workspace","1"]
end
config.vm.provider "virtualbox" do |vb|
vb.memory = "4096"
vb.customize ['modifyvm', :id, '--cableconnected1', 'on']
end
end仮想環境を起動する
Vagrantfileができたので、
> vagrant upを実行し、仮想環境を立ち上げる。
パスが見つからないエラーが発生した場合
以下のエラーが発生し、起動できない場合がある。
There was an error while executing `VBoxManage`, a CLI used by Vagrant
for controlling VirtualBox. The command and stderr is shown below.
Command: ["startvm", "7ce1dfcb-c97d-4db0-8ecd-195acbc12bb5", "--type", "headless"]
Stderr: VBoxManage.exe: error: RawFile#0 failed to create the raw output file C:/Users/{移行前のPCのユーザ名}/vagrant/ubuntu64_18/ubuntu-bionic-18.04-cloudimg-console.log (VERR_PATH_NOT_FOUND)VBoxManage.exe: error: Details: code E_FAIL (0x80004005), component ConsoleWrap, interface IConsoleエラー解消方法:シリアルポートの設定を変更する
Oracle VM VirtualBox マネージャーの「設定」⇒シリアルポート⇒パス/アドレスに、フォルダの絶対パスが記載されていました。
このパスに「移行元のユーザ名」が含まれており、エラーとなっていたようでした。
移行先のユーザ名を含めたパスに変更します。
再度起動し、状態を確認する。
修正が終わったら
> vagrant upを実行する。
ステータスを確認すると、実行(running)になっていた。
> vagrant status
default running (virtualbox)参考:タイムアウトが出る場合
こちらの記事も参考にしてください。
SSH接続してみる
SSH接続してみる。
> vagrant ssh移行元のPCで作成したフォルダやファイルを参照することができた。
vagrant@ubuntu-bionic:~$ ls
aws gatsby tmp workspaceまとめ
旧PCから新PCに仮想環境ごと移行することができた。
追記
2022/10月
WindowsPCでLinux環境を使いたいときは、WSL2を使うことにしました。
VirtualBox・Vagrantの環境は、構築作業に時間がかかっていたのと動作が重かったので、乗り換えました。今のところ快適です。




