Suppose you want to create and run virtual machines (VMs) on VirtualBox. However, a host machine does not support X11 environment, or you only have access to a terminal on a remote host machine. Then how can you create and run VMs on such a host machine without VirtualBox GUI? This can be a common situation for servers where VMs are managed from remotely.

In fact, VirtualBox comes with a suite of command line utilities, and you can use the VirtualBox command line interfaces (CLIs) to manage VMs on a remote headless server. In this tutorial, I will show you how to create and start a VM without VirtualBox GUI.
Prerequisite for starting VirtualBox VM without GUI

First,
you need to install VirtualBox Extension Pack. The Extension Pack is
needed to run a VRDE remote desktop server used to access headless VMs.
Its binary is available for free. To download and install VirtualBox
Extension Pack:
$ wget http://download.virtualbox.org/virtualbox/4.2.12/Oracle_VM_VirtualBox_Extension_Pack-4.2.12-84980.vbox-extpack
$ sudo VBoxManage extpack install ./Oracle_VM_VirtualBox_Extension_Pack-4.2.12-84980.vbox-extpack

Verify that the Extension Pack is successfully installed, by using the following command.
$ VBoxManage list extpacks

Extension Packs: 1
Pack no. 0:   Oracle VM VirtualBox Extension Pack
Version:      4.2.12
Revision:     84980
Edition:
Description:  USB 2.0 Host Controller, VirtualBox RDP, PXE ROM with E1000 support.
VRDE Module:  VBoxVRDP
Usable:       true
Why unusable:

Create a VirtualBox VM from the command line

I assume that the VirtualBox' VM directory is located in "~/VirtualBox\ VMs".

First create a VM. The name of the VM is "testvm" in this example.
$ VBoxManage createvm --basefolder /opt/vm --name "testvm" --register

Specify the hardware configurations of the VM (e.g., Ubuntu OS type, 1024MB memory, bridged networking, DVD booting).
$ VBoxManage modifyvm "testvm" --memory 1024 --acpi on --boot1 dvd --nic1 bridged --bridgeadapter1 eth0 --ostype Ubuntu

Create
a disk image (with size of 10000 MB). Optionally, you can specify disk
image format by using "--format [VDI|VMDK|VHD]" option. Without this
option, VDI image format will be used by default.
$ VBoxManage createvdi --filename ~/VirtualBox\ VMs/testvm/testvm-disk01.vdi --size 10000

Add an IDE controller to the VM.
$ VBoxManage storagectl "testvm" --name "IDE Controller" --add ide

Attach
the previously created disk image as well as CD/DVD drive to the IDE
controller. Ubuntu installation ISO image (found in
/iso/ubuntu-12.04.1-server-i386.iso) is then inserted to the CD/DVD
drive.
$ VBoxManage storageattach "testvm" --storagectl "IDE
Controller" --port 0 --device 0 --type hdd --medium ~/VirtualBox\
VMs/testvm/testvm-disk01.vdi
$ VBoxManage storageattach "testvm"
--storagectl "IDE Controller" --port 1 --device 0 --type dvddrive
--medium /iso/ubuntu-12.04.1-server-i386.iso
Start VirtualBox VM from the command line

Once a new VM is created, you can start the VM headless (i.e., without VirtualBox console GUI) as follows.
$ VBoxHeadless --startvm "testvm" &

The
above command will launch the VM, as well as VRDE remote desktop
server. The remote desktop server is needed to access the headless VM's
console.

By default, the VRDE server is listening on TCP port
3389. If you want to change the default port number, use "-e" option as
follows.
$ VBoxHeadless --startvm "testvm" -e "TCP/Ports=4444" &

If you don't need remote desktop support, launch a VM with "--vrde off" option.
$ VBoxHeadless --startvm "testvm" --vrde off &

Connect to headless VirtualBox VM via remote desktop

Once
a VM is launched with remote desktop support, you can access the VM's
console via any remote desktop client (e.g., rdesktop).

To install rdesktop on Ubuntu or Debian:
$ sudo apt-get install rdesktop

To install rdesktop on CentOS, RHEL or Fedora, configure Repoforge on your system, and then run the following.
$ sudo yum install rdesktop

To access a headless VM on a remote host machine, run the following.
$ rdesktop -a 16 <IP_address_host_machine>

If you use a custom port number for a remote desktop server, run the following instead.
$ rdesktop -a 16 <IP_address_host_machine:port_number>

Once rdesktop is successfully connected to the VM via remote desktop, you will see the initial installation screen.

How to create and start VirtualBox VM without GUI的更多相关文章

  1. How to start a VirtualBox VM headless in Windows 10

    If you wanted to start a VirtualBox VM headless (no UI) in the past, you needed additional tools.  I ...

  2. VirtualBox VM 空间瘦身记(vmdk)

    本文地址:https://www.ebpf.top/post/shrink_vbox_vmdk_size 在使用 VirtualBox( VMDK 模式)管理虚拟机的时候,我们经常会遇到一些编译安装场 ...

  3. VirtualBox VM启用3D加速

    默认情况下,是不支持 DX3D的, 我们运行 dxdiag 看到的情况如下: 安装时也提示需要安全模式下才能安装 VirtualBox 必须在Windows安全模式下才能成功安装3D加速驱动。 重启系 ...

  4. vagrant virtualbox VM inaccessible解决办法

    vagrant无法访问的提示:Please open VirtualBox and clear out your inaccessible virtual machines or find a way ...

  5. Create Virtual Network with VirtualBox on Mint 14

    VirtualBox version: VirtualBox-4.2.18-88780-Linux_x86.run Host OS: Linux Mint 14 Xfce Setup Network ...

  6. VirtualBox 磁盘容量调整

    起因 此前用VBox,初始时动态或固定分配的磁盘容量用完了就再重新建一个磁盘,但是有个虚拟机的系统分区容量不够了,把整个磁盘都分成系统盘仍然不够,于是研究了下磁盘容量调整问题. 正文 1,从当前虚拟机 ...

  7. VirtualBox上安装Debian10个人备忘笔记

    准备 VirtualBox 下载链接:Downloads – Oracle VM VirtualBox,下载完成后安装即可. Debian 下载链接:通过 HTTP/FTP 下载 Debian CD/ ...

  8. Azure PowerShell (12) 通过Azure PowerShell创建SSH登录的Linux VM

    <Windows Azure Platform 系列文章目录> 本章将介绍如何使用Azure PowerShell,创建SSH登录的Linux VM 前提要求: 1.安装Azure Pow ...

  9. Windows Azure Virtual Machine 之用程序控制Azure VM

    我们在很多时候可能会需要用程序来控制VM的创建,删除工作. 而在这些工作之中,用程序创建一个VM将会是一个非常复杂的过程,因为他涉及到很多步骤. 具体步骤如下 1 创建一个Hosted cloud s ...

随机推荐

  1. 学习笔记-nodejs报错

    端口被占用 解决办法:打开控制管理器关掉node.exe进程 如果找不到可以使用命令行:netstat -ano | findstr 8000 找到进程的pid,然后到控制管理器找到进程杀掉. net ...

  2. Codeforces 842A Kirill And The Game【暴力,水】

    A. Kirill And The Game time limit per test:2 seconds memory limit per test:256 megabytes input:stand ...

  3. Codeforces 834D The Bakery【dp+线段树维护+lazy】

    D. The Bakery time limit per test:2.5 seconds memory limit per test:256 megabytes input:standard inp ...

  4. [51nod1462]树据结构

    题面: 给一颗以1为根的树. 每个点有两个权值:vi, ti,一开始全部是零. Q次操作: 读入o, u, d o = 1 对u到根上所有点的vi += d  o = 2 对u到根上所有点的ti += ...

  5. a*b(mod m)的实现过程

    /*a*b (mod m) 的实现过程*/ /*当a,b很大的时候mod m就会产生溢出, 故运用乘法原理转换为加法求解*/ LL multi(LL a, LL b, LL m) { LL exp = ...

  6. C语言缓冲区(缓存)详解

    缓冲区又称为缓存,它是内存空间的一部分.也就是说,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,这部分预留的空间就叫做缓冲区.缓冲区根据其对应的是输入设备还是输出设备,分为输 ...

  7. [国嵌攻略][106][Linux内存管理子系统]

    内存管理子系统 1.虚拟地址与物理地址的映射 2.物理内存的分配 Linux虚拟地址空间分布 设备最后访问的一定是物理地址,但Linux系统中使用的都是虚拟地址.虚拟地址简单的来说就是程序中使用的地址 ...

  8. Spider_Man_3 の selenium

    一:介绍 selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决requests无法直接执行JavaScript代码的问题 selenium本质是通过驱动浏览器,完全模拟浏览器的操作, ...

  9. node中定时器, process.nextTick(), setImediate()的区别与联系

    1.定时器 setTimeout()和setInterval()与浏览器中的API是一致的,定时器的问题在于,他并非精确的(在容忍范围内).尽管事件循环十分快,但是如果某一次循环占用的时间较多,那么下 ...

  10. Version 1.7.0_80 of the JVM is not suitable for this product.Version: 1.8 or greater is required.

    Eclipse启动失败,设置eclipse启动jdk有2种方法 第一种: 直接安装eclipse对应的jdk版本,并设置环境变量 第二种: 修改eclipse配置文件eclipse.ini 在plug ...