Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 22 Apr 2010 15:43:43 +0900
From:      "Daisuke Aoyama" <aoyama@peach.ne.jp>
To:        <freebsd-emulation@freebsd.org>
Subject:   [PATCH] VirtualBox headless VNC support by LibVNCServer (20100421)
Message-ID:  <A1B0291015C54DD29B0BEA47741F55B2@artemis>

next in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format.

------=_NextPart_000_002F_01CAE232.968E70C0
Content-Type: text/plain; format=flowed; charset="iso-2022-jp";
	reply-type=original
Content-Transfer-Encoding: 7bit

Hi all,

First, thank you for porting great software and thank you for using my
patch.

This archive contains an individual patch files and a modified Makefile for
virtualbox-ose 3.1.6_3. Please select an options you want before building.
And make it by normal way.

I tested the binary on FreeNAS 0.7.1 stable (FreeBSD 7.2-RELEASE-p7
amd64/i386 kernel) and FreeNAS 0.7.2 devel (FreeBSD 7.3-RELEASE amd64/i386
kernel).

What's new?
-----------
Fix some bugs.
Add modifier hook such as AltGr.
Add the ability to parse non-US keymaps.
(the code is referred to Hubert Tournier's patch)

How to use
----------
# cd /usr/ports/emulators/virtualbox-ose
# tar xvf /path/to/vboxvnc-20100421.tar.gz
# tar xvf /path/to/vboxint18-20100310.tar.gz      (optional)
# make config
# make

It provides an internal VNC server for guest OS console access in
VBoxHeadless frontend.
Supported Options:
   -v, -vnc, --vnc on|off                Enable (default) or disable the VNC
Server
   -a, -vncaddress, --vncaddress <ip>    IP address the VNC server will bind
to
   -p, -vncport, --vncport <port>        Port number the VNC server will
bind to
   -k, -vnckeymap, --vnckeymap <keymap>  Keyboard mapfile (default: builtin
US)
   -S, -vncsecret, --vncsecret <secret>  VNC Authentication secret

three options at one line is an equivalent option, for example:
"-v on", "-vnc on", "--vnc on" are same feature.

-v option specify whether VNC server starts in the machine.
default is on (enable).

-a and -p options specify IP address and port number of VNC server.
default IP is wildcard, port is 5900. If you have multiple IPs(NICs)
in your system, you can select the listen address of the server.

-k option specify the keyboard layout convert from VNC keys to Scancodes.
default is US standard 101keys. (I tested only US 101 keyboard)
If you want another keyboard, you can spcify the path of kbdmap(5).
In the standard installation of FreeBSD, it's located in
/usr/share/syscons/keymaps/.
for example, "-k /usr/share/syscons/keymaps/jp.106.kbd" uses JP 106
keyboard.

-S option specify the password of the VNC server.
However, it have security risk in common server. It assumed used with
FreeNAS (limited user environment). Please consider the risk by using
command line.

When starting the VM, the proctitle is changed like below (you can see
by "ps axww"):
VBoxHeadless: VM: TestVM4 Port: 5900 Auth: off (VBoxHeadless)


vboxint18-20100310.tar.gz (optional patch):
[PATCH] VirtualBox INT18 patch for gPXE iSCSI boot/install
http://lists.freebsd.org/pipermail/freebsd-emulation/2010-March/007540.html

-- 
Regards,
Daisuke Aoyama

------=_NextPart_000_002F_01CAE232.968E70C0
Content-Type: application/octet-stream;
	name="vboxvnc-20100421.tar.gz"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
	filename="vboxvnc-20100421.tar.gz"

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

------=_NextPart_000_002F_01CAE232.968E70C0--




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?A1B0291015C54DD29B0BEA47741F55B2>