tohokuaikiのチラシの裏

技術的ネタとか。

VirtualBoxに共有フォルダを作成する方法のメモ

普通だったらこんな事せずに、Sambaで終わらせるんだけどこのパソコンは後で別の所に持っていくのでIPアドレスとかなんだりかんだりが変わる可能性があるのでVirtualBoxの共有フォルダ機能を使用した。

ホストOSはWindows10Home、ゲストOSはDebian8(jessie)

仮想マシンにGuest Additionsをインストール

この記事を参考にした。 qiita.com

マシンに仮想ディスクを挿入

自分の場合、起動させたゲストOSのコンソールからデバイス光学ドライブ>ディスクイメージを選択で、C:\Program Files\Oracle\VirtualBox\VBoxGuestAdditions.iso を選択した。

f:id:tohokuaiki:20181112122236p:plain

ゲストOSでインストールスクリプトを実行

…の前にこのインストールスクリプトはmake, gcc, kernel-packageが必要なので

apt-get install -y gcc make kernel-package

をしてから

mkdir -p /mnt/cdrom
mount -r /dev/cdrom /mnt/cdrom
sh /mnt/cdrom/VBoxLinuxAdditions.run

としても、なんかエラーで引っかかる…

# sh /mnt/cdrom/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.

This system is currently not set up to build kernel modules.
Please install the Linux kernel "header" files matching the current kernel
for adding new hardware support to the system.
The distribution packages containing the headers are probably:
    linux-headers-686-pae linux-headers-3.16.0-6-686-pae
update-initramfs: Generating /boot/initrd.img-3.16.0-6-686-pae
VirtualBox Guest Additions: Starting.
VirtualBox Guest Additions: Building the VirtualBox Guest Additions kernel modules.  This may take a while.

This system is currently not set up to build kernel modules.
Please install the Linux kernel "header" files matching the current kernel
for adding new hardware support to the system.
The distribution packages containing the headers are probably:
    linux-headers-686-pae linux-headers-3.16.0-6-686-pae
update-initramfs: Generating /boot/initrd.img-3.16.0-6-686-pae

linux-headersが必要な様子。apt-cache search linux-headersをするとlinux-headers-686-paeとlinux-headers-3.16.0-6-686-paeってのがあったので、これを入れておけばいいのかな?

apt-get install -y linux-headers-686-pae linux-headers-3.16.0-6-686-pae

としてから sh /mnt/cdrom/VBoxLinuxAdditions.run をするとどうやらうまく進行してくれた。

共有フォルダをVirtualBoxで作成

ゲストOSをシャットダウンしてからVirtualBoxで共有フォルダを設定

f:id:tohokuaiki:20181112122829p:plain

ゲスト側での共有設定

mount -t vboxsf share_folder_name /home/user/sample

で、毎回起動時にマウントするように /etc/rc.local に記載しておく。

これをやらなくても、VirtualBoxで設定しただけで自動的にマウントするようになった。

→ 以下の問題を解決するためにはVirtualBoxから自動起動ではなく、ゲストOSからの自動起動が必要になってしまう。

が、作成されるファイル・フォルダに問題が…

ホストからでもゲストからでもファイル・フォルダを作成すると、オーナーがrootでグループがvboxsfになり、パーミッションが770になってしまう。 あまりうれしくない。

gpasswd -a XXXXXX vboxsf

してやると、ゲストOS側で使用するユーザーXXXXXXもこの共有ファイルを触れるけど、ん~~~。イマイチ。だいたいApacheでこのファイルを覗けないというのはどうなんだろうという気もするし、いや、apacheユーザーをvboxsfに入れればいいじゃんって思うけど、さすがにapacheの作成するファイルがrootオーナーってどうなんだろうという。

しかも、フォルダの位置がゲストOSから見ると、/media/sf_{VirtualBoxで設定した共有フォルダ名} となる。うーん、sambaみたいにできないものだろうか…

ということで、この記事を見ながら編集。 giraffydev.hatenablog.com

-oオプションで、マウントするオーナーとグループの設定

自分のuid,gidを知る。

id xXXXXX
uid=1000(XXXXXX) gid=1000(XXXXXX)

とあるので、両方とも1000なので、

-o uid=1000,gid=1000 

とする。

-oオプションで、マウントする時のファイルとディレクトリのデフォルトモードを設定

-o fmode=0664,dmode=0755

で結局のマウントコマンドは

mount -t vboxsf share_folder_name /home/user/sample -o uid=1000,gid=1000,fmode=0664,dmode=0755

となる。

地味にアンマウントができなくて汗る。

-t オプションと -i オプションが必要らしい。 qiita.com

sudo umount -t vboxsf -i /home/user/sample

とする。

自動設定

VirtualBoxで設定した自動起動だとこういうところは上手くやってくれない。

/etc/rc.localにさっきのマウントコマンドを記載してもいいけど、なんとなく/etc/fstabに記載したくなった。

デバイス名(share_folder_name)        マウントポイント(/home/users/sample)       vboxsf  uid=1000,gid=1000,fmode=0664,dmode=0755    0    0

/etc/modulesにvboxsfを食わないと起動時にミスするっていう記載があったけど、なんか問題なくいった。新しいOSで対応されたのかもしれない。 VirtualBoxの共有フォルダの自動マウント化 - どうでもいい日記帳