Difference between revisions of "VirtualBox (日本語)"

From ArchWiki
Jump to: navigation, search
m
m
Line 38: Line 38:
 
=== ホストでカスタムカーネルを使っている場合 ===
 
=== ホストでカスタムカーネルを使っている場合 ===
  
VirtualBox works just fine with custom kernels such as [[Linux-ck]] ''without'' the need to keep any of the official ARCH kernel packages on the system. The trick to keeping pacman from bringing down the ARCH kernel packages is to install virtualbox with the {{Pkg|virtualbox-host-source}} package, which contains the source for the virtualbox kernel modules. See {{Bug|26721}} for further explanations.
+
公式の Arch カーネルパッケージをシステムで''保持する必要がない限り''、[[Linux-ck]] などのカスタムカーネルを使っていても VirtualBox は問題なく動作します。pacman から Arch カーネルパッケージを外し続けるには virtualbox {{Pkg|virtualbox-host-source}} (virtualbox カーネルモジュールのソースが含まれています) と一緒にインストールします。詳しい説明は {{Bug|26721}} を見て下さい。
  
Once {{Pkg|virtualbox-host-source}} is installed, simply generate the kernel modules for your custom kernel by running:
+
{{Pkg|virtualbox-host-source}} をインストールしたら、カスタムカーネルのためのカーネルモジュールを生成するために次を実行してください:
  
 
  # dkms install vboxhost/<virtualbox-host-source version> -k <your custom kernel's version>/<your architecture>
 
  # dkms install vboxhost/<virtualbox-host-source version> -k <your custom kernel's version>/<your architecture>
  
Which for the lazy is the command:
+
入力するのが億劫な場合は次のコマンドを使って下さい:
  
 
  # dkms install vboxhost/$(pacman -Q virtualbox|awk {'print $2'}|sed 's/\-.\+//') -k $(uname -rm|sed 's/\ /\//')
 
  # dkms install vboxhost/$(pacman -Q virtualbox|awk {'print $2'}|sed 's/\-.\+//') -k $(uname -rm|sed 's/\ /\//')
  
and load it:
+
それからモジュールをロードします:
  
 
  # modprobe vboxdrv
 
  # modprobe vboxdrv
Line 56: Line 56:
 
==== カーネルのアップデート毎に自動で virtualbox モジュールをリコンパイルする ====
 
==== カーネルのアップデート毎に自動で virtualbox モジュールをリコンパイルする ====
  
This is possible thanks to {{AUR|virtualbox-hook}} from the [[AUR]]. In '''virtualbox-hook''', the 'automatic re-compilation' functionality is done by a '''vbox hook''' on [[mkinitcpio]] after forcing to update the '''linux-headers''' package. You will need to add 'vbox' to the HOOKS array in /etc/mkinitcpio.conf, as well as 'linux-headers' and your custom kernel(s) headers to the SyncFirst array in /etc/pacman.conf for this to work.
+
[[AUR]] にある {{AUR|virtualbox-hook}} によってこれを行うことができます。'''virtualbox-hook''' では、'''linux-headers''' パッケージがアップデートされた後に [[mkinitcpio]] '''vbox hook''' を使って'自動リコンパイル'が行われます。動かすために、/etc/mkinitcpio.conf の HOOKS 行に 'vbox' を追加して、'linux-headers' とあなたのカスタムカーネルのヘッダを /etc/pacman.conf の SyncFirst 行に追加する必要があります。
  
The hook will call the '''dkms''' command to update the virtualbox modules for the version of your new kernel.
+
このフックは '''dkms''' コマンドを使ってあなたのカーネルバージョンにあわせて virtualbox モジュールをアップデートします。
  
 
{{Note|If you are using this functionality it's '''important''' to look at the installation process of the linux (or any other kernel) package. vbox hook will tell you if anything goes wrong.}}
 
{{Note|If you are using this functionality it's '''important''' to look at the installation process of the linux (or any other kernel) package. vbox hook will tell you if anything goes wrong.}}
Line 69: Line 69:
  
 
=== カーネルモジュールのロード ===
 
=== カーネルモジュールのロード ===
Linux 上で VirtualBox を動作させると[[kernel modules|カーネルモジュール]]が使われますが、その中には '''vboxdrv''' と呼ばれる必須モジュールがあり、仮想マシンを起動する前にロードする必要があります。Arch Linux 起動時に自動でロードすることも、必要なときだけ手動でロードすることもできます。
+
Linux 上で VirtualBox を動作させると[[Kernel modules (日本語)|カーネルモジュール]]が使われますが、その中には '''vboxdrv''' と呼ばれる必須モジュールがあり、仮想マシンを起動する前にロードする必要があります。Arch Linux 起動時に自動でロードすることも、必要なときだけ手動でロードすることもできます。
  
起動時に VirtualBox ドライバをロードする場合、{{ic|/etc/[[Kernel_modules#Loading|modules-load.d]]}} ディレクトリに "vboxdrv" を読み込む {{ic|*.conf}} ファイル (例: ''virtualbox.conf'') を追加してください:
+
起動時に VirtualBox ドライバをロードする場合、{{ic|/etc/[[Kernel modules (日本語)#ロード|modules-load.d]]}} ディレクトリに "vboxdrv" を読み込む {{ic|*.conf}} ファイル (例: ''virtualbox.conf'') を追加してください:
  
 
  # tee /etc/modules-load.d/virtualbox.conf <<< "vboxdrv"
 
  # tee /etc/modules-load.d/virtualbox.conf <<< "vboxdrv"

Revision as of 16:22, 31 December 2012

概要 help replacing me
VirtualBox の基本的な使い方について。Arch をホストにして VirtualBox を動かす方法と、VirtualBox 仮想マシンの中でゲストとして Arch を動かす方法の両方を説明します。
ソフトウェア
VirtualBox
関連項目
VirtualBox Extras
PhpVirtualBox
VirtualBox Arch Linux Guest On Physical Drive
Advanced VirtualBox Networking
Installing Arch Linux from VirtualBox
Moving an existing install into (or out of) a virtual machine

VirtualBoxVMware に似た仮想 PC エミュレータです。継続的に開発が行われており、新しい機能が日夜追加されています。例えば、バージョン 2.2 では Linux と Solaris をゲストにした OpenGL 3D アクセラレーションがサポートされました。VirtualBox には仮想マシンを管理するために Qt による GUI インターフェースや、SDL によるコマンドラインツールが用意されています。ゲスト OS によっては guest additions を使って、ファイルやクリップボードの共有・ビデオアクセラレーション・"シームレス"なウィンドウ統合モードなどのゲスト・ホストを統合する機能を使うことができます。

Template:Wikipedia

ホストとしてインストール

GPL ライセンス版の VirtualBox のセットは公式リポジトリにある virtualbox パッケージでインストールできます。virtualbox パッケージでインストールしない場合、Arch Linux カーネル向けにコンパイル済みのモジュールを含んだ virtualbox-host-modules を別途インストールする必要があります。カスタムカーネルを使う場合、下のセクションを読んで下さい。

Qt による、グラフィカルインターフェース (VirtualBox コマンド) を使うには、qt パッケージもインストールしてください。シンプルな SDL の GUI (VBoxSDL コマンド) や VBoxHeadless コマンドを使う場合 qt は必要ありません。

linux-lts カーネルを使っている時は virtualbox-host-modules-lts パッケージもインストールしたほうがよいでしょう。

ホストでカスタムカーネルを使っている場合

公式の Arch カーネルパッケージをシステムで保持する必要がない限りLinux-ck などのカスタムカーネルを使っていても VirtualBox は問題なく動作します。pacman から Arch カーネルパッケージを外し続けるには virtualbox を virtualbox-host-source (virtualbox カーネルモジュールのソースが含まれています) と一緒にインストールします。詳しい説明は FS#26721 を見て下さい。

virtualbox-host-source をインストールしたら、カスタムカーネルのためのカーネルモジュールを生成するために次を実行してください:

# dkms install vboxhost/<virtualbox-host-source version> -k <your custom kernel's version>/<your architecture>

入力するのが億劫な場合は次のコマンドを使って下さい:

# dkms install vboxhost/$(pacman -Q virtualbox|awk {'print $2'}|sed 's/\-.\+//') -k $(uname -rm|sed 's/\ /\//')

それからモジュールをロードします:

# modprobe vboxdrv
Note: (Not working currently) To load/compile virtualbox modules automatically at startup you can install and add dkms in your DAEMONS array.

カーネルのアップデート毎に自動で virtualbox モジュールをリコンパイルする

AUR にある virtualbox-hookAUR によってこれを行うことができます。virtualbox-hook では、linux-headers パッケージがアップデートされた後に mkinitcpiovbox hook を使って'自動リコンパイル'が行われます。動かすために、/etc/mkinitcpio.conf の HOOKS 行に 'vbox' を追加して、'linux-headers' とあなたのカスタムカーネルのヘッダを /etc/pacman.conf の SyncFirst 行に追加する必要があります。

このフックは dkms コマンドを使ってあなたのカーネルバージョンにあわせて virtualbox モジュールをアップデートします。

Note: If you are using this functionality it's important to look at the installation process of the linux (or any other kernel) package. vbox hook will tell you if anything goes wrong.

セットアップ

利用するユーザー名を vboxusers グループに追加してください。追加しなくても問題なく動作しますが、共有フォルダなどの任意機能を動かすためには必要です。新しいグループは自動では現在のセッションに適用されません; ユーザーは一度ログインしなおすか newgrpsudo -u username -s などのコマンドで新しい環境を始める必要があります。

# gpasswd -a username vboxusers

カーネルモジュールのロード

Linux 上で VirtualBox を動作させるとカーネルモジュールが使われますが、その中には vboxdrv と呼ばれる必須モジュールがあり、仮想マシンを起動する前にロードする必要があります。Arch Linux 起動時に自動でロードすることも、必要なときだけ手動でロードすることもできます。

起動時に VirtualBox ドライバをロードする場合、/etc/modules-load.d ディレクトリに "vboxdrv" を読み込む *.conf ファイル (例: virtualbox.conf) を追加してください:

# tee /etc/modules-load.d/virtualbox.conf <<< "vboxdrv"
Note: vboxdrv ロード時に 'no such file or directory' エラーが出る場合、カーネルモジュールデータベースをアップデートする必要があります。次を実行してください: depmod -a

手動でモジュールをロード:

# modprobe vboxdrv

VirtualBox グラフィカルマネージャを起動:

$ VirtualBox

Guest additions ディスク

virtualbox パッケージは VirtualBox を動かすホスト側 (Arch Linux) に、virtualbox-guest-iso もインストールすることを提案します。これはゲスト OS に guest additions をインストールするために使われるディスクイメージです。これを(動作中の)ゲストで利用するには Devices に行き "Install Guest Additions... Host+D" をクリックしてください。それからゲスト側で guest additions インストールを行います。

live ディスクの起動

'New' ボタンをクリックすることで新しい仮想環境を作ることができます。まず適当な名前をつけ、オペレーティングシステムのタイプとバージョンを選んで下さい。それからベースメモリーサイズを選択します(注意: ほとんどの OS は正しく動作させるのに少なくとも 512MB 必要です)。そして新しいハードディスクイメージを作成します(ハードディスクイメージとは OS のファイルシステムとファイルが含まれるファイルのことです)。

新しいイメージが作成されたら、'Settings' をクリックし、次に CD/DVD-ROM をクリック、'Mount CD/DVD Drive' をチェックして ISO イメージを選びます。

高度なセットアップ

高度な設定については VirtualBox Extras を見て下さい。

Arch Linux をゲストにする

VirtualBox の下で Arch をインストールするのは簡単です、pacman を使って additions をインストールしてください (VirtualBox の "Install Guest Additions" や、マウントした ISO イメージを使わないでください)。

Guest Additions をインストール

virtualbox-guest-utils パッケージをインストールします:

# pacman -S virtualbox-guest-utils

手動でモジュールをロードします:

# modprobe -a vboxguest vboxsf vboxvideo

以下の内容を持つ *.conf ファイル (例: virtualbox.conf) を /etc/modules-load.d/ に作成します:

/etc/modules-load.d/virtualbox.conf
vboxguest
vboxsf
vboxvideo

共有サービスの起動

上記の通り virtualbox-guest-utils をインストールした後、VBoxClient-all を使ってクリップボード共有、画面リサイズなどのサービスを起動してください。

  • GNOME や KDE など、/etc/xdg/autostart/vboxclient.desktop を実行するものを使っている場合、なにもなさらなくて結構です。
  • .xinitrc を使って実行する場合、.xinitrc で WM を起動する前に次の行を追加してください。
# VBoxClient-all &

USB ウェブカメラ/マイクロフォン を使う

Note: 以下の作業をする前に VirtualBox 拡張パックをインストールする必要があります。詳しくは VirtualBox_Extras#Extension_pack を見て下さい。
  1. 仮想マシンを止め、ウェブカメラ/マイクロフォンが使われていないのを確認します。
  2. メイン VirtualBox ウィンドウを立ち上げ Arch マシンの設定に行き、USB セクションを見ます。
  3. "Enable USB Controller" を選択します。それから "Enable USB 2.0 (EHCI) Controller" を選択します。
  4. "Add filter from device" ボタンをクリック ('+' アイコンとケーブル)。
  5. リストから USB ウェブカメラ/マイクロフォンデバイスを選択する。
  6. OK をクリックして VM を起動。

Virtualbox の EFI モードで Arch を使う

My experience with this configuration was pretty terrible, but it does work.

First, efibootmgr does *not* work. It will appear to work, but all changes it makes appear to be overwritten on reboot. After performing a standard UEFI/GPT installation, reboot and you should get dumped to the EFI shell. Type exit and you will get a menu. Select the Boot Management Manager, Boot Options, Add Boot Option. Use the file browser to find the grub efi file and select it. Add a label if you want. Afterwards, select Change Boot Order from the menu, use arrow keys to select your Arch option, and + to move it up to the top. GRUB should boot by default now.

Note: Another useful way to get back to the EFI menu after autobooting is working is to press the Template:Keypress key inside GRUB and type exit. Obviously, this will only work with grub-efi, not grub-bios.
Regenerating the grub.cfg file may also be required to fix broken UUIDs. Check with the lsblk -f command that they match.

ゲスト側の Arch Linux の共有フォルダ

共有フォルダはホスト側にある VirtualBox によって管理されます。共有フォルダが追加されると、自動でマウントされ読み込み専用になります。 VirtualBox から共有フォルダを作成すると /media/sf_SHAREDFOLDERNAME の中にとフォルダが設置されます。この時、ゲスト側の Arch の中のフォルダを使うには設定が必要になります。ゲスト側の Arch に共有フォルダを作成するには、pacman で Guest Additions パッケージをインストールした後、コマンドラインで以下を実行してください:

# groupadd vboxsf
# gpasswd -a $USER vboxsf

If you wish, a symbolic link may be made to another folder in your home directory for easy access. As an example, if a shared folder named "Dropbox" was created in the VirtualBox program on the host machine, then /media/sf_Dropbox is automatically created in the guest so this could be done:

$ ln -s /media/sf_Dropbox/* ~/dropbox

The .run script provided in the Guest Additions iso does this for you, however, Arch does not recommend using that script so this step must be done manually. The instructions for it were found here: (pastebin: [1]) .

If shared folders are not auto-mounted, try manually mount or read the next section.

To prevent startup problems when you're using systemd, you should add comment=systemd.automount to your /etc/fstab. This way, they are mounted only when you access those mountpoints and not during startup. Otherwise your system might become unusable after a kernel upgrade (if you install your guest additions manually).

desktop   /media/desktop    vboxsf  uid=user,gid=group,rw,dmode=700,fmode=600,comment=systemd.automount 0 0

Don't waste your time to test the nofail option. mount.vboxsf is not able to handle this (2012-08-20).

desktop   /media/desktop    vboxsf  uid=user,gid=group,rw,dmode=700,fmode=600,nofail 0 0

ゲストの時刻をホストに同期させる

時刻を同期させるには、まずホスト側に virtualbox-guest-utils をインストールする必要があります(前のセクションを見て下さい)。それから次を実行して次のブート時にサービスを有効にします

# systemctl enable vboxservice.service

今すぐサービスを開始するには

# systemctl start vboxservice.service

共有フォルダの自動マウント機能を使うときにもこのデーモンを起動する必要があります。

トラブルシューティング

USB サブシステムがホスト側もしくはゲスト側で動かない

時々 usb サブシステムが自動で検知されずホスト側の USB ドライブが表示されなかったりエラーが出ることがあります。これはユーザーが vboxusers グループになっていても起こります。詳しくは [2] を見て下さい。

Note: Linux 3.5 から usbfs は失くなりました。/etc/fstab を使う方法はすでに使えません。USB サブシステムを使う方法を取って下さい。

fstab

/etc/fstab にエントリを加えることで問題を解決できます:

none  /proc/bus/usb  usbfs  auto,busgid=108,busmode=0775,devgid=108,devmode=664  0  0

USB サブシステム

~/.bashrc に以下を加え再起動するか新しいインスタンスを開始すれば USB サブシステムが動作します。

VBOX_USB=usbfs

ホストオンリーのネットワークインターフェースを作成できない

Host-Only Network Adapter や Bridged Network Adapter を作るためには、カーネルモジュールの vboxnetadpvboxnetflt をロードする必要があります。これらのカーネルモジュールを手動でロードするには:

# modprobe -a vboxnetadp vboxnetflt

起動時に自動でロードするには /etc/modules-load.d/virtualbox.conf にモジュール毎に新しい行を追加してください:

vboxdrv
vboxnetadp
vboxnetflt
Note: These used to be added to the MODULES array in /etc/rc.conf. This is now deprecated.

このトピックについて詳しい情報がここにあります。

WinXP: ビット深度を 16 より上げることができない

16-ビット色深度で動作させている場合、アイコンの見た目が毛羽立ったりむらがでるかもしれません。しかし、色深度をもっと高く変えようとすると、システムの解像度が低くなってしまったり、もしくは全く深度が変えられないかもしれません。これを修正するには、regedit を起動し次のキーをゲスト側の Windows XP レジストリに追加します:

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services]
"ColorDepth"=dword:00000004

それからデスクトップのプロパティウィンドウから色深度を変えてください。何も怒らない場合、強制的に画面を再描写させてください(つまり、Template:Keypress で再描写するか、フルスクリーンにしてください)。

.vdi イメージのマウント

以下の方法では静的なサイズの vdi イメージしか動きません!動的なサイズのイメージは簡単にはマウントできません!まず .vdi イメージの情報が必要です:

$ VBoxManage internalcommands dumphdinfo Arch_64min.vdi |grep offData
Header: offBlocks=4096 offData=69632

ここで、offData に 32256 を加算してください。例: 32256 + 69632 = 101888

そして vdi イメージをマウントします:

# mount -t ext4 -o rw,noatime,noexec,loop,offset=101888 Arch_64min.vdi /mnt/

マウント失敗によるスタートアップ時の問題

カーネルをアップグレードした後、systemd (日本語) セットアップで問題が発生したら、システムを起動するときに init=/bin/bash (緊急シェルが動かない場合) を付ける必要があります。

root=/dev/mapper/vg_main-lv_root ro vga=792 resume=/dev/mapper/vg_main-lv_swap init=/bin/bash

それから root-ファイルシステムを書き込み権限付きでマウントします:

# mount / -o remount,rw

#ゲスト側の Arch Linux の共有フォルダ に合わせて /etc/fstab を変更します。そして bash シェルから systemd を exec します:

# exec /bin/systemd

ゲスト側の Arch Linux でコピーアンドペーストが機能しない

virtualbox-guest-additions がバージョン 4.2.0-2 にアップデートされてからホスト OS からゲスト側の Arch Linux へのコピーアンドペーストができなくなりました。VBoxClient-allroot 権限が必要なったためだと思われます。以前のバージョンでは VBoxClient-all &~/.xinitrc に追加しておけばコピーアンドペーストが機能していました。~/.xinitrcsudo VBoxClient-all & にして , NOPASSWD: /usr/bin/VBoxClient-all を sudoers ファイルのあなたのユーザ名のところに追加してください。これでまた動くはずです。sudoers ファイルの行はこのようになるはずです:

 # Allow sudo for user 'you' and let him run VBoxClient-all without requiring a password
 you ALL = PASSWD: ALL, NOPASSWD: /usr/bin/VBoxClient-all
Note: sudoers を編集する時は visudo を使って下さい。保存するときに構文エラーをチェックします。

時々ランダムにマウス位置が (0,0) にリセットされる

xorg bug 54353 (関連するバグも報告されています) によって VirtualBox のマウスの位置が画面の左上に頻繁に戻ってしまうことがあります。

バグディスカッションで提案されている解決方法は、/etc/X11/xinit/xinitrc.d に次のスクリプトを加えることです:

 for Z in $(xinput list | sed '/\(master\|slave \) \<pointer\>/!d;s/.*id=\([0-9]\+\).*/\1/'); do
   xinput set-prop $Z "Coordinate Transformation Matrix" 0.500000, 0.000000, 0.000000, 0.000000, 0.500000, 0.000000, 0.000000, 0.000000, 0.500000
   xinput set-prop $Z "Coordinate Transformation Matrix" 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
 done

matrix を一度変化させ、次に元の値に戻すことで、バグが回避されます。

外部リンク