VirtualBox (Oracle): Difference between revisions

From Andreida
 
(17 intermediate revisions by the same user not shown)
Line 1: Line 1:
== command line ==
https://www.oracle.com/technical-resources/articles/it-infrastructure/admin-manage-vbox-cli.html

=== setup ===
Find "VBoxManage.exe" and either put it into the PATH variable or make sure your calls see the .exe.
If you just plan to create some scripts, you should not need to modify the PATH variable, but if you really want to work with the command line with VirtualBox, then you really should put it into your path.

=== start a virtual machine without starting the GUI "VirtualBox Manager" ===
* list your VMs
VBoxManage list vms
* right click on your desktop: New shortcut...
* browse to VBoxManage.exe (location of the item)
* Next
* Name: "Start v-dev" or whatever makes sense for the VM you will be starting
* Finish
* Right click the new link / Properties
* in the "Target" line behind the .exe insert a space and give as parameters "startvm <name from 'list vms'>"
D:\tools\system\VirtualBox\VBoxManage.exe startvm v-dev
* OK

Now you can start your VM with double click on the new link. If your VM has a weird name, put it into quotes.

=== shutdown a virtual machine ===
* Do the same as for when you start a virtual machine.
* Do not append startvm but instead add
controlvm <name from "list vms"> acpipowerbutton

== Misc ==

=== ssh (port forwarding) ===
=== ssh (port forwarding) ===
If you do not want to have the machine attackable in the normal network you will set the network as NAT.
If you do not want to have the machine attackable in the normal network you will set the network as NAT.
Line 8: Line 37:




{| class="wikitable"
{|
|+ Example for ssh
|+ Example for ssh
|-
|-
Line 27: Line 56:
|}
|}


Now you can ssh to localhost at port 40022.


In this context, should you have problems with X11 programs, consider to install [https://sourceforge.net/projects/vcxsrv/ the X-Server VcXsrv] and check [[Ssh#DISPLAY of VM via ssh | DISPLAY of VM via ssh]].

=== http example for Redmine (port forwarding) ===
machine/Settings/Network/Advanced/Port Forwarding


{| class="wikitable"
|+ http
|-
! Name
! Protocol
! Host IP
! Host Port
! Guest IP
! Guest Port
|-
| http
| TCP
|
| 40082
|
| 80
|-
|}

Now open c:\Windows\System32\drivers\etc\hosts as admin so you can edit it and find the line
127.0.0.1 localhost
You add something like v-redmine.local.net so you'll have now:
127.0.0.1 localhost v-redmine.local.net

It is IMPORTANT that you use the correct domain and subdomain here.
You will perhaps NOT have "local.net" but something else which you decided when you installed your virtual server. In doubt, check the 'hosts' file of the virtual machine.

I am not sure if you need to boot but you will probably have to restart your browser.

Then you can access
http://v-redmine.local.net:40082/my/page
and work with redmine as usual.

You'll probably want shortcuts with
C:\Tools\System\VirtualBox\VBoxManage.exe startvm v-redmine
and
C:\Tools\System\VirtualBox\VBoxManage.exe controlvm v-redmine acpipowerbutton

=== Windows Remote Desktop Connection RDP (port forwarding) ===
If you do not want to have the machine attackable in the normal network you will set the network as NAT.
If you now want to connect to services of the machine, you'd have to know the current IP.
You can circumvent this problem.

machine/Settings/Network/Advanced/Port Forwarding



{| class="wikitable"
|+ Example for RDP
|-
! Name
! Protocol
! Host IP
! Host Port
! Guest IP
! Guest Port
|-
| RDP (TCP)
| TCP
| (empty)
| 43389
| (empty)
| 3389
|-
| RDP (UDP)
| UDP
| (empty)
| 43389
| (empty)
| 3389
|-
|}

* Now allow RDP connections to the guest machine via "Remote Desktop Settings"
* Now you open a RDP connection from the host to the guest via localhost:43389


=== Headless start ===
=== Headless start ===
Line 44: Line 155:




In the .vbox search for
In the .vbox search for (can be there multiple times, find the right one or do them all)
<Clipboard/>
<Clipboard/>
<GuestProperties>
<GuestProperties>
Line 57: Line 168:
The exact spot is not important. What is important is that the entry has this level.
The exact spot is not important. What is important is that the entry has this level.


== command line ==
https://www.oracle.com/technical-resources/articles/it-infrastructure/admin-manage-vbox-cli.html

== Misc ==
=== Guest Addition, Debian ===
=== Guest Addition, Debian ===
* In Settings/Storage/Controller:IDE
* In Settings/Storage/Controller:IDE
** Choose Virtual Optical Disk File
** Choose Virtual Optical Disk File from the folder where you installed VirtualBox
* C:\Program Files\Oracle\VirtualBox\VBoxGuestAdditions.iso
* C:\Program Files\Oracle\VirtualBox\VBoxGuestAdditions.iso
* In der Console in Debian
* In der Console in Debian
sudo apt-get install gcc make perl
sudo apt-get install 'linux-headers-'`uname -r`
sudo apt-get install 'linux-headers-'`uname -r`
** cd /media/cdrom
** cd /media/cdrom
** sudo sh VBoxLinuxAdditions.run
** sudo sh VBoxLinuxAdditions.run
* Debian booten (System/Shutdown.../Restart)
* Debian booten (System/Shutdown.../Restart)


If the simple mount of the VirtualBox\VBoxGuestAdditions.iso does not work:
* look at the system
lsblk -f
* mount manually (depending on the output of the previous command, /dev would not be shown for sr0 for example
cd /media
mount /dev/sr0 cdrom

=== Linked clone versus full clone ===
* You can later change the linked clone to a full clone
* the linked clone only saves the difference
* When a linked clone is created, a snapshot is created in the base image
* Without the base image the linked clone can't operate
* example:
** debian console installation: 3 GB
** linked clone directly after cloning: 2 MB (yes, that is no error, MB!)

=== After cloning a Debian machine, what to change ===
* /etc/hostname
* /etc/hosts (normally two changes in this file)
* [[VirtualBox_(Oracle)#ssh_(port_forwarding)|Ports you forward]]

Latest revision as of 08:38, 14 May 2024

command line

https://www.oracle.com/technical-resources/articles/it-infrastructure/admin-manage-vbox-cli.html

setup

Find "VBoxManage.exe" and either put it into the PATH variable or make sure your calls see the .exe. If you just plan to create some scripts, you should not need to modify the PATH variable, but if you really want to work with the command line with VirtualBox, then you really should put it into your path.

start a virtual machine without starting the GUI "VirtualBox Manager"

  • list your VMs
VBoxManage list vms
  • right click on your desktop: New shortcut...
  • browse to VBoxManage.exe (location of the item)
  • Next
  • Name: "Start v-dev" or whatever makes sense for the VM you will be starting
  • Finish
  • Right click the new link / Properties
  • in the "Target" line behind the .exe insert a space and give as parameters "startvm <name from 'list vms'>"
D:\tools\system\VirtualBox\VBoxManage.exe startvm v-dev
  • OK

Now you can start your VM with double click on the new link. If your VM has a weird name, put it into quotes.

shutdown a virtual machine

  • Do the same as for when you start a virtual machine.
  • Do not append startvm but instead add
 controlvm <name from "list vms">  acpipowerbutton

Misc

ssh (port forwarding)

If you do not want to have the machine attackable in the normal network you will set the network as NAT. If you now want to connect to services of the machine, you'd have to know the current IP. You can circumvent this problem.

machine/Settings/Network/Advanced/Port Forwarding


Example for ssh
Name Protocol Host IP Host Port Guest IP Guest Port
ssh TCP 127.0.0.1 40022 (empty) 22

Now you can ssh to localhost at port 40022.

In this context, should you have problems with X11 programs, consider to install the X-Server VcXsrv and check DISPLAY of VM via ssh.

http example for Redmine (port forwarding)

machine/Settings/Network/Advanced/Port Forwarding


http
Name Protocol Host IP Host Port Guest IP Guest Port
http TCP 40082 80

Now open c:\Windows\System32\drivers\etc\hosts as admin so you can edit it and find the line

127.0.0.1       localhost

You add something like v-redmine.local.net so you'll have now:

127.0.0.1       localhost   v-redmine.local.net

It is IMPORTANT that you use the correct domain and subdomain here. You will perhaps NOT have "local.net" but something else which you decided when you installed your virtual server. In doubt, check the 'hosts' file of the virtual machine.

I am not sure if you need to boot but you will probably have to restart your browser.

Then you can access

http://v-redmine.local.net:40082/my/page

and work with redmine as usual.

You'll probably want shortcuts with

C:\Tools\System\VirtualBox\VBoxManage.exe startvm v-redmine

and

C:\Tools\System\VirtualBox\VBoxManage.exe controlvm v-redmine acpipowerbutton

Windows Remote Desktop Connection RDP (port forwarding)

If you do not want to have the machine attackable in the normal network you will set the network as NAT. If you now want to connect to services of the machine, you'd have to know the current IP. You can circumvent this problem.

machine/Settings/Network/Advanced/Port Forwarding


Example for RDP
Name Protocol Host IP Host Port Guest IP Guest Port
RDP (TCP) TCP (empty) 43389 (empty) 3389
RDP (UDP) UDP (empty) 43389 (empty) 3389
  • Now allow RDP connections to the guest machine via "Remote Desktop Settings"
  • Now you open a RDP connection from the host to the guest via localhost:43389

Headless start

When you don't want to use the machine via the view opened by VirtualBox but instead with RDP or ssh, then you don't want an extra window to be opened when you start a VM. Headless start (selectable with the combo of the "play" button) can be set as the default, so you don't have to select "headless" in the list each time you start a VM.


  • You set a directory for your VMs.
  • There you will find a .vbox for each VM.
  • Close all virtual machines
  • close VirtualBox GUI
  • do the following changes
  • BOOT


In the .vbox search for (can be there multiple times, find the right one or do them all)

<Clipboard/>
<GuestProperties>

Add <Frontend> like in the following sample:

<Clipboard/>
<Frontend>
  <Default type="headless"/>
</Frontend>
<GuestProperties>

The exact spot is not important. What is important is that the entry has this level.

Guest Addition, Debian

  • In Settings/Storage/Controller:IDE
    • Choose Virtual Optical Disk File from the folder where you installed VirtualBox
  • C:\Program Files\Oracle\VirtualBox\VBoxGuestAdditions.iso
  • In der Console in Debian
sudo apt-get install gcc make perl
sudo apt-get install 'linux-headers-'`uname -r`
    • cd /media/cdrom
    • sudo sh VBoxLinuxAdditions.run
  • Debian booten (System/Shutdown.../Restart)


If the simple mount of the VirtualBox\VBoxGuestAdditions.iso does not work:

  • look at the system
lsblk -f
  • mount manually (depending on the output of the previous command, /dev would not be shown for sr0 for example
cd /media
mount /dev/sr0 cdrom

Linked clone versus full clone

  • You can later change the linked clone to a full clone
  • the linked clone only saves the difference
  • When a linked clone is created, a snapshot is created in the base image
  • Without the base image the linked clone can't operate
  • example:
    • debian console installation: 3 GB
    • linked clone directly after cloning: 2 MB (yes, that is no error, MB!)

After cloning a Debian machine, what to change