はじめに
PCを買い換えたので、これまで使っていたLinux仮想環境を新しいPCで利用したい。
実施した内容と、見舞われたトラブルを残しておく。
(参考)旧PCからの移行ではなく一から環境を構築する場合は、
の記事を参照。移行元で環境をエクスポートする
Vagrantfile
のあるフォルダで、package
コマンドを実行し、package.box
ファイルを作成する。
> vagrant package
新しいPCにデータを移動させる
USBメモリなどで以下の3つの情報を移動させる。
package.box
Vagrantfile
- 仮想環境とローカルで共有していたフォルダ
- 私の場合は、
./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の環境は、構築作業に時間がかかっていたのと動作が重かったので、乗り換えました。今のところ快適です。