普通だったらこんな事せずに、Sambaで終わらせるんだけどこのパソコンは後で別の所に持っていくのでIPアドレスとかなんだりかんだりが変わる可能性があるのでVirtualBoxの共有フォルダ機能を使用した。
ホストOSはWindows10Home、ゲストOSはDebian8(jessie)
仮想マシンにGuest Additionsをインストール
この記事を参考にした。 qiita.com
マシンに仮想ディスクを挿入
自分の場合、起動させたゲストOSのコンソールからデバイス>光学ドライブ>ディスクイメージを選択で、C:\Program Files\Oracle\VirtualBox\VBoxGuestAdditions.iso を選択した。
ゲスト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で共有フォルダを設定
ゲスト側での共有設定
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の共有フォルダの自動マウント化 - どうでもいい日記帳