Arch Linuxをゲストマシンにインストールしている場合に、VirtualBoxの共有フォルダーを利用する方法を説明します。
VirtualBoxでは、ゲストマシンにGuest Additionsをインストールすることで、ホストマシンのフォルダーをゲストマシンと共有できます。Guest AdditionsのインストールはArch Linuxの場合、次の2種類の方法があります。
- Guest Additions CDイメージの挿入
- pacmanで、virtualbox-guest-utilsまたはvirtualbox-guest-utils-noxパッケージをインストール
Guest Additions CDイメージの挿入では、Guest AdditionsのバージョンがVirtualBox本体に常に対応していることが利点になります。私は、こちら方法で正常に共有フォルダーが使えるようになりました。
pacmanを使う場合のインストール方法は、Arch Wikiに記載されています。ただし私は、こちらの方法では共有フォルダーは使えませんでした。
そこで、Guest Additions CDイメージの挿入からインストールします。
ホストマシンでの共有フォルダーの設定
ホストマシンでVirtualBoxの画面から、共有フォルダーを設定してください。
- VirtualBoxマネージャーを起動します。VirtualBoxマネージャーの画面が表示されます
- 共有フォルダーを設定したいゲストマシンを選択します。
- [設定]をクリックします。選択したゲストマシンの設定画面が開きます。
- [共有フォルダー]タブをクリックします。共有フォルダーの項目が表示されます。
- [+]をクリックします。追加する共有フォルダーを設定する画面が開きます
- 追加する共有フォルダーを設定します
- [フォルダーのパス]で共有したいフォルダーを選択します
- [フォルダー名]を入力します。この名前は、ゲストマシンでマウントする場合などに使います。ここでは、hogeとします
- [読み込み専用]は、必要に応じてチェックを入れます。チェックを入れた場合、共有フォルダーへのゲストマシンからの書き込みはできなくなります。
- [自動マウント]はチェックを入れないままにします
- [永続化する]はチェックを入れます。入れない場合は一時的な共有フォルダーとなり、ゲストマシンのシャットダウン時に設定が無効になります
- [OK]をクリックします。ゲストマシンの設定画面に戻ります
- [OK]をクリックします。ホストマシン側で共有フォルダーが設定され、VirtualBoxマネージャーの画面に戻ります
必要なパッケージのインストール
Guest Additionsをインストールするためには、ゲストマシンにbase-develグループのパッケージと、linux-headersパッケージが必要です。これらのパッケージをpacmanでインストールします。以下、ゲストマシンでの作業はrootユーザーとして行います。
[root@archlinux ~]# pacman -S linux-headers
[root@archlinux ~]# pacman -S base-devel --needed
Guest Additions CDイメージの挿入
ホストマシンで、VirtualBoxゲストマシンのウィンドウのメニューバーから[デバイス-Guest Additions CDイメージの挿入]を選択します。
Guest Additions CDイメージがゲストマシンに挿入されます。
CDイメージのマウント
ゲストマシンでCDイメージをマウントします。ここでは、/mnt/dvdrom
をマウント先にします。
[root@archlinux ~]# mount
CD-ROMのデバイス名の確認
lablkコマンドで、CD-ROMのデバイス名を確認します。
[root@archlinux ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 8G 0 disk
|-sda1 8:1 0 511M 0 part /boot
`-sda2 8:2 0 7.5G 0 part /
sr0 11:0 1 55.3M 0 rom
この場合は、sr0
がCD-ROMのデバイス名です。
マウント先ディレクトリーの作成
マウント先のディレクトリーがない場合は作成します。
[root@archlinux ~]# mkdir /mnt/dvdrom
マウントの実行
mountコマンドにCD-ROMのデバイス名とマウント先を指定し、マウントを実行します。
[root@archlinux ~]# mount /dev/sr0 /mnt/dvdrom
mount: /mnt/dvdrom: WARNING: device write-protected, mounted read-only.
マウントの確認
lsコマンドで、マウントが正常にできたかを確認します。
[root@archlinux ~]# ls /mnt/dvdrom
32Bit TRANS.TBL VBoxWindowsAdditions-x86.exe runasroot.sh
64Bit VBoxLinuxAdditions.run VBoxWindowsAdditions.exe
AUTORUN.INF VBoxSolarisAdditions.pkg autorun.sh
OS2 VBoxWindowsAdditions-amd64.exe cert
Guest Additionsの実行
Linux用のGuest Additionsインストール実行ファイルであるVBoxLinuxAdditions.run
を実行します。
[root@archlinux ~]# sh /mnt/dvdrom/VBoxLinuxAdditions.run
Verifying archive integrity... All good.
Uncompressing VirtualBox 5.2.20 Guest Additions for Linux........
VirtualBox Guest Additions installer
Removing installed version 5.2.20 of VirtualBox Guest Additions...
Copying additional installer modules ...
Installing additional modules ...
VirtualBox Guest Additions: Building the VirtualBox Guest Additions kernel modules. This may take a while.
VirtualBox[Guest^Additions: Running kernel modules will not be replaced until the system is restarted
VirtualBox Guest Additions: Starting.
VirtualBox Guest Additions: modprobe vboxsf failed
最終行の「VirtualBox Guest Additions: modprobe vboxsf failed」は正常にインストールが完了した場合でも表示されるようです。
ゲストマシンの再起動
インストールが完了したら、ゲストマシンを再起動します。
[root@archlinux ~]# reboot
フォルダーの共有
vboxadd-serviceの状態確認
コンピューターの再起動後、vboxadd-serviceの状態を確認します。
[root@archlinux ~]# systemctl status vboxadd-service
vboxadd-service.service
Loaded: loaded (/opt/VBoxGuestAdditions-5.2.20/init/vboxadd-service; enabled; vendor preset: dis...
Active: active (running) since Tue 2018-10-23 08:24:34 UTC; 1min 32s ago
Process: 329 ExecStart=/opt/VBoxGuestAdditions-5.2.20/init/vboxadd-service start (code=exited, st...
Tasks: 8 (limit: 1140)
Memory: 1.9M
CGroup: /system.slice/vboxadd-service.service
`-340 /usr/sbin/VBoxService --pidfile /var/run/vboxadd-service.sh
Oct 23 08:24:34 archlinux systemd[1]: Starting vboxadd-service.service...
Oct 23 08:24:34 archlinux vboxadd-service[329]: vboxadd-service.sh: Starting VirtualBox Guest Addit...
Oct 23 08:24:34 archlinux vboxadd-service.sh[332]: Starting VirtualBox Guest Addition service
Oct 23 08:24:34 archlinux vboxadd-service.sh[339]: VirtualBox Guest Addition service started
Oct 23 08:24:34 archlinux systemd[1]: Started vboxadd-service.service
Active: active (running)
と表示される場合は、vboxadd-serviceが正常に動作しています。
マウント先ディレクトリーの作成
ここでは、/mnt/vbox
をマウント先のディレクトリーにします。マウント先のディレクトリーがない場合は作成します。
[root@archlinux ~]# mkdir /mnt/vbox
マウントの実行
mountコマンドにCD-ROMのデバイス名とマウント先を指定し、マウントを実行します。hogeは、ホストマシンでの共有フォルダーの設定で[フォルダー名]に入力した値です。また、オプションでファイルの所有者IDや所有グループIDを指定できます。指定しない場合、所有者と所有グループはrootになります。
[root@archlinux ~]# mount.vbox hoge /mnt/vbox -o uid=1000,gid=1000
マウントの確認
lsコマンドで、マウントが正常にできたかを確認します。
[root@archlinux ~]# ls /mnt/vbox
正常にマウントできた場合、共有フォルダーにあるファイルやフォルダーが表示されます。
自動マウントの設定
Arch Linux起動時に共有フォルダーが自動でマウントされるようにするには、/etc/fstab
に次の記述を追加します。
# VBox Share Folder
hoge /mnt/vbox vboxsf nofail,uid=1000,gid=1000 0 0
hoge
はホストマシンでの共有フォルダーの設定で[フォルダー名]に入力した値、/mnt/vbox
はマウント先のディレクトリーです。
nofail
は、共有フォルダーをマウントできない場合には無視することを意味します。この指定がないと、共有フォルダーがマウントできない場合にArch Linuxが正常に起動できなくなります。私の場合、VirtualBoxのバージョンアップ時にGuest Additionsが起動できなくなり、Arch Linuxが起動できなくなったことがありました。
まとめ
VirtualBoxでは、Guest Additions CDイメージの挿入からGuest Additionsをゲストマシンにインストールすることでホストマシンとファイル共有できます。