3流プログラマのメモ書き

元開発職→社内SE→派遣で営業支援の三流プログラマのIT技術メモ書き。 このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。(jehupc.exblog.jpから移転中)

(Linux)Fedora18にVirtualBoxをインストール

WindowsVirtualBoxを使ってたんですが、それをFedoraで動いているLinux機に移行しました。 その時のメモです。

ます、https://www.virtualbox.org/wiki/Linux_Downloadsからディストリビューションに合ったパッケージファイルをダウンロードしインストールします。

# rpm -ihv VirtualBox-4.2-4.2.8_83876_fedora18-1.x86_64.rpm
警告: VirtualBox-4.2-4.2.8_83876_fedora18-1.x86_64.rpm: ヘッダー V4 DSA/SHA1 Signature、鍵 ID xxxxxxx: NOKEY
準備しています...              ################################# [100%]
更新中 / インストール中...
   1:VirtualBox-4.2-4.2.8_83876_fedora################################# [100%]

Creating group 'vboxusers'. VM users must be member of that group!

No precompiled module for this kernel found -- trying to build one. Messages
emitted during module compilation will be logged to /var/log/vbox-install.log.

Stopping VirtualBox kernel modules                         [  OK  ]
Recompiling VirtualBox kernel modules                      [  OK  ]
Starting VirtualBox kernel modules                         [  OK  ]

それから、Windows側のVirtualBox仮想マシンフォルダーをSambaやFTPを使ってLinux側にコピーします。
仮想マシンフォルダは、VirtualBoxの[ファイル]→[環境設定]→[一般]→[デフォルトの仮想マシンフォルダー]になります。
デフォルトだと、C:\Documents and Settings\ユーザ名\VirtualBox VMs になっていると思います。

VirtualBoxマネージャに表示される仮想マシンのリストの設定はWindowsだと、C:\Documents and Settings\ユーザ名.VirtualBox\VirtualBox.xml に、Linuxだと、/home/ユーザ名/.VirtualBox/VirtualBox.xml にあります。
中身はXMLファイルなので、テキストエディタWindows側の設定をLinux側に追加します。
仮想マシンに関する情報は MachineEntry ノードになるようです。

ただ、パスがWindowsLinuxでは異なるのでこれは以下のように手で治す必要があります。

    <MachineRegistry>
      <MachineEntry uuid="{6169c01d-7bea-4857-8477-5f31f6d32dd0}" src="C:\Documents and Settings\ユーザ名\VirtualBox VMs\Windows XP SP&#x7121;&#x3057;\Windows XP SP&#x7121;&#x3057;.vbox""/>
      <MachineEntry uuid="{bf9bda58-f8d1-4a1e-804b-5514f0d04c18}" src="C:\Documents and Settings\ユーザ名\VirtualBox VMs\Windows XP SP2\Windows XP SP2.vbox"/>
    </MachineRegistry>

    <MachineRegistry>
      <MachineEntry uuid="{2e0b8a56-da69-48e5-998b-4fcbf2f57304}" src="/home/ユーザ名/VirtualBox VMs/Windows XP SP&#x7121;&#x3057;/Windows XP SP&#x7121;&#x3057;.vbox"/>
      <MachineEntry uuid="{bf9bda58-f8d1-4a1e-804b-5514f0d04c18}" src="/home/ユーザ名/VirtualBox VMs/Windows XP SP2/Windows XP SP2.vbox"/>
    </MachineRegistry>

これでLinux側のVirtualBoxマネージャを起動すれば仮想マシンのリストが表示されました。 スナップショットを含む環境でもうまく移行できた。 いちいちエクスポートとかしなくて環境移行できるのはいいですね。

(Linux)Fedora18でVNCの設定にハマった

(Linux)Fedora16でVNCを入れると同様の手順で、tigervnc-serverをインストールしたんですが、クライアントからなぜか接続出来ません。

Fedora18側で、以下のようにvncクライアントを入れて、自身に接続するとリモートできます。

# yum install vnc  ←vncクライアントインストール
# vncviewer localhost:1   ←自身をリモート

最初ファイアウォールかと思い、以下コマンドでiptablesを停止、スタートアップさせないようにしました。

# systemctl stop iptables.service
# systemctl disable iptables.service

しかし、これでもクライアントからはつながりません。

tcpdumpでポート5901を見る限りはクライアントからのパケットは飛んでいるようですが、サーバ側からパケットが出てないようです。

かなり悩んでFedora18についてググっているとITPro:新デスクトップ環境が加わったFedora 18に気になる情報が。。。
Fedora18で、ファイアウォールのサービス 「iptables」が「FirewallD(firewalld.service)」に変更された。FirewallDはファイアウォールを動作させながら iptablesのポリシールールを変更できるようにするデーモン。これまで、iptablesの設定のあと、再起動時にファイアウォールが一時的に停止状態になっていた。FirewallDではGUIの設定ツール「firewall-config」もあり、再設定の際にもパラメーターを覚えておかなくてよいため、楽になった。 とあります。

コイツかー! 以下のように、firewalldのサービスを止めるとクライアントからVNCリモートができるようになりました。

# systemctl stop firewalld.service
# systemctl disable firewalld.service
rm '/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service'
rm '/etc/systemd/system/basic.target.wants/firewalld.service'

しかし、VNCでつなげたと思ったら今度は「あれ!何かがおかしいです。」というエラーが。。
ユーモラスなメッセージですねw

さて、対応方法ですが、うつ病けんけんのFedora/Linuxのまとめ日記:【解決済み】Fedora18のVNC(Tigervnce)にログインすると、あれっ!何かがおかしいです。問題が発生して、システムの復旧ができません。ログアウトして再度試してください。にどんぴしゃな答えが書いてありました。ありがたや。
GNOMEのバージョンアップにtigervncが追いついていないようですね。
サーバ側のコンソールにGUIで[システム設定]→[詳細]→[グラフィック]→[強制フォールバックモード]をオンにすればいいようです。

サーバが手元になくて操作できない場合は以下の方法で出来ます。

方法1

sshでログインし、sudo yum install fluxbox でGnome以外のデスクトップ環境、もしくはウィンドウマネージャーをインストール。 対象ユーザになる。

$ mv ~/.vnc/xstartup  ~/.vnc/xstatup.bak
$ touch ~/.vnc/xstartup 
$ vi ~/.vnc/xstartup 

~/.vnc/xstartup の中身は以下
-----------------
gnome-terminal &
fluxbox &
-----------------

$ su -
# systemctl restart vncserver@:1.service

これでクライアントからVNC接続し、gnome-termianl端末が上がってるので、gnome-control-center と入力。

システム設定のウィンドウが開くので、ここからフォールバックモードに切り替え。

$ rm ~/.vnc/xstartup  
$ mv ~/.vnc/xstartup.bak  ~/.vnc/xstatup

これでVNCを再起動し繋ぐと古いgnomeで表示できます。

方法2

# yum -y install switchdesk
# yum -y groupinstall Xfce
# su - vnc設定ユーザ
$ switchdesk xfce  ← XFCE に切り替え
# systemctl restart vncserver@:1.service

これでVNCでリモートすると、Xfaceになっているので、デスクトップ右クリックからターミナルを立ち上げgnome-control-center と入力。 システム設定のウィンドウが開くので、ここからフォールバックモードに切り替え。

設定が終われば以下のようにしてgnomeに戻す。

$ switchdesk gnome

これでVNCを再起動し繋ぐと古いgnomeで表示できます。

まさかファイアウォールのパッケージが変わっているとは思いにもよりませんでした。。。