标签 VirtualBox 下的文章

本教程将指导你在 Ubuntu 18.04 LTS 无头服务器上,一步一步地安装 Oracle VirtualBox。同时,本教程也将介绍如何使用 phpVirtualBox 去管理安装在无头服务器上的 VirtualBox 实例。phpVirtualBox 是 VirtualBox 的一个基于 Web 的前端工具。这个教程也可以工作在 Debian 和其它 Ubuntu 衍生版本上,如 Linux Mint。现在,我们开始。

前提条件

在安装 Oracle VirtualBox 之前,我们的 Ubuntu 18.04 LTS 服务器上需要满足如下的前提条件。

首先,逐个运行如下的命令来更新 Ubuntu 服务器。

$ sudo apt update
$ sudo apt upgrade
$ sudo apt dist-upgrade

接下来,安装如下的必需的包:

$ sudo apt install build-essential dkms unzip wget

安装完成所有的更新和必需的包之后,重启动 Ubuntu 服务器。

$ sudo reboot

在 Ubuntu 18.04 LTS 服务器上安装 VirtualBox

添加 Oracle VirtualBox 官方仓库。为此你需要去编辑 /etc/apt/sources.list 文件:

$ sudo nano /etc/apt/sources.list

添加下列的行。

在这里,我将使用 Ubuntu 18.04 LTS,因此我添加下列的仓库。

deb http://download.virtualbox.org/virtualbox/debian bionic contrib

用你的 Ubuntu 发行版的代码名字替换关键字 ‘bionic’,比如,‘xenial’、‘vivid’、‘utopic’、‘trusty’、‘raring’、‘quantal’、‘precise’、‘lucid’、‘jessie’、‘wheezy’、或 ‘squeeze‘。

然后,运行下列的命令去添加 Oracle 公钥:

$ wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add -

对于 VirtualBox 的老版本,添加如下的公钥:

$ wget -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | sudo apt-key add -

接下来,使用如下的命令去更新软件源:

$ sudo apt update

最后,使用如下的命令去安装最新版本的 Oracle VirtualBox:

$ sudo apt install virtualbox-5.2

添加用户到 VirtualBox 组

我们需要去创建并添加我们的系统用户到 vboxusers 组中。你也可以单独创建用户,然后将它分配到 vboxusers 组中,也可以使用已有的用户。我不想去创建新用户,因此,我添加已存在的用户到这个组中。请注意,如果你为 virtualbox 使用一个单独的用户,那么你必须注销当前用户,并使用那个特定的用户去登入,来完成剩余的步骤。

我使用的是我的用户名 sk,因此,我运行如下的命令将它添加到 vboxusers 组中。

$ sudo usermod -aG vboxusers sk

现在,运行如下的命令去检查 virtualbox 内核模块是否已加载。

$ sudo systemctl status vboxdrv

正如你在上面的截屏中所看到的,vboxdrv 模块已加载,并且是已运行的状态!

对于老的 Ubuntu 版本,运行:

$ sudo /etc/init.d/vboxdrv status

如果 virtualbox 模块没有启动,运行如下的命令去启动它。

$ sudo /etc/init.d/vboxdrv setup

很好!我们已经成功安装了 VirtualBox 并启动了 virtualbox 模块。现在,我们继续来安装 Oracle VirtualBox 的扩展包。

安装 VirtualBox 扩展包

VirtualBox 扩展包为 VirtualBox 访客系统提供了如下的功能。

  • 虚拟的 USB 2.0 (EHCI) 驱动
  • VirtualBox 远程桌面协议(VRDP)支持
  • 宿主机网络摄像头直通
  • Intel PXE 引导 ROM
  • 对 Linux 宿主机上的 PCI 直通提供支持

这里为 VirtualBox 5.2.x 下载最新版的扩展包。

$ wget https://download.virtualbox.org/virtualbox/5.2.14/Oracle_VM_VirtualBox_Extension_Pack-5.2.14.vbox-extpack

使用如下的命令去安装扩展包:

$ sudo VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-5.2.14.vbox-extpack

恭喜!我们已经成功地在 Ubuntu 18.04 LTS 服务器上安装了 Oracle VirtualBox 的扩展包。现在已经可以去部署虚拟机了。参考 virtualbox 官方指南,在命令行中开始创建和管理虚拟机。

然而,并不是每个人都擅长使用命令行。有些人可能希望在图形界面中去创建和使用虚拟机。不用担心!下面我们为你带来非常好用的 phpVirtualBox 工具!

关于 phpVirtualBox

phpVirtualBox 是一个免费的、基于 web 的 Oracle VirtualBox 后端。它是使用 PHP 开发的。用 phpVirtualBox 我们可以通过 web 浏览器从网络上的任意一个系统上,很轻松地创建、删除、管理、和执行虚拟机。

在 Ubuntu 18.04 LTS 上安装 phpVirtualBox

由于它是基于 web 的工具,我们需要安装 Apache web 服务器、PHP 和一些 php 模块。

为此,运行如下命令:

$ sudo apt install apache2 php php-mysql libapache2-mod-php php-soap php-xml

然后,从 下载页面 上下载 phpVirtualBox 5.2.x 版。请注意,由于我们已经安装了 VirtualBox 5.2 版,因此,同样的我们必须去安装 phpVirtualBox 的 5.2 版本。

运行如下的命令去下载它:

$ wget https://github.com/phpvirtualbox/phpvirtualbox/archive/5.2-0.zip

使用如下命令解压下载的安装包:

$ unzip 5.2-0.zip

这个命令将解压 5.2.0.zip 文件的内容到一个名为 phpvirtualbox-5.2-0 的文件夹中。现在,复制或移动这个文件夹的内容到你的 apache web 服务器的根文件夹中。

$ sudo mv phpvirtualbox-5.2-0/ /var/www/html/phpvirtualbox

给 phpvirtualbox 文件夹分配适当的权限。

$ sudo chmod 777 /var/www/html/phpvirtualbox/

接下来,我们开始配置 phpVirtualBox。

像下面这样复制示例配置文件。

$ sudo cp /var/www/html/phpvirtualbox/config.php-example /var/www/html/phpvirtualbox/config.php

编辑 phpVirtualBox 的 config.php 文件:

$ sudo nano /var/www/html/phpvirtualbox/config.php

找到下列行,并且用你的系统用户名和密码去替换它(就是前面的“添加用户到 VirtualBox 组中”节中使用的用户名)。

在我的案例中,我的 Ubuntu 系统用户名是 sk ,它的密码是 ubuntu

var $username = 'sk';
var $password = 'ubuntu';

保存并关闭这个文件。

接下来,创建一个名为 /etc/default/virtualbox 的新文件:

$ sudo nano /etc/default/virtualbox

添加下列行。用你自己的系统用户替换 sk

VBOXWEB_USER=sk

最后,重引导你的系统或重启下列服务去完成整个配置工作。

$ sudo systemctl restart vboxweb-service
$ sudo systemctl restart vboxdrv
$ sudo systemctl restart apache2

调整防火墙允许连接 Apache web 服务器

如果你在 Ubuntu 18.04 LTS 上启用了 UFW,那么在默认情况下,apache web 服务器是不能被任何远程系统访问的。你必须通过下列的步骤让 http 和 https 流量允许通过 UFW。

首先,我们使用如下的命令来查看在策略中已经安装了哪些应用:

$ sudo ufw app list
Available applications:
Apache
Apache Full
Apache Secure
OpenSSH

正如你所见,Apache 和 OpenSSH 应该已经在 UFW 的策略文件中安装了。

如果你在策略中看到的是 Apache Full,说明它允许流量到达 80 和 443 端口:

$ sudo ufw app info "Apache Full"
Profile: Apache Full
Title: Web Server (HTTP,HTTPS)
Description: Apache v2 is the next generation of the omnipresent Apache web
server.

Ports:
80,443/tcp

现在,运行如下的命令去启用这个策略中的 HTTP 和 HTTPS 的入站流量:

$ sudo ufw allow in "Apache Full"
Rules updated
Rules updated (v6)

如果你希望允许 https 流量,但是仅是 http (80) 的流量,运行如下的命令:

$ sudo ufw app info "Apache"

访问 phpVirtualBox 的 Web 控制台

现在,用任意一台远程系统的 web 浏览器来访问。

在地址栏中,输入:http://IP-address-of-virtualbox-headless-server/phpvirtualbox

在我的案例中,我导航到这个链接 – http://192.168.225.22/phpvirtualbox

你将看到如下的屏幕输出。输入 phpVirtualBox 管理员用户凭据。

phpVirtualBox 的默认管理员用户名和密码是 admin / admin

恭喜!你现在已经进入了 phpVirtualBox 管理面板了。

现在,你可以从 phpvirtualbox 的管理面板上,开始去创建你的 VM 了。正如我在前面提到的,你可以从同一网络上的任意一台系统上访问 phpVirtualBox 了,而所需要的仅仅是一个 web 浏览器和 phpVirtualBox 的用户名和密码。

如果在你的宿主机系统(不是访客机)的 BIOS 中没有启用虚拟化支持,phpVirtualBox 将只允许你去创建 32 位的访客系统。要安装 64 位的访客系统,你必须在你的宿主机的 BIOS 中启用虚拟化支持。在你的宿主机的 BIOS 中你可以找到一些类似于 “virtualization” 或 “hypervisor” 字眼的选项,然后确保它是启用的。

本文到此结束了,希望能帮到你。如果你找到了更有用的指南,共享出来吧。

还有一大波更好玩的东西即将到来,请继续关注!


via: https://www.ostechnix.com/install-oracle-virtualbox-ubuntu-16-04-headless-server/

作者:SK 选题:lujun9972 译者:qhwdw 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

如果你正在开发 Android 应用,也许会遇到小麻烦。诚然,ios 移动开发有 macOS 系统平台为其提供友好便利性, Android 开发仅有支持少部分 Android 系统(其中还包括可穿戴设备系统)的 Android Studio 工具。

毋庸置疑,所有的二进制工具、SDK 工具、开发框架工具以及调试器都会产生大量日志和其他各种文件,使得你的文件系统很混乱。一个有效的解决方法就是在 VirtualBox 中安装 Android 系统,这样还解决了 Android 开发中最为棘手问题之一 —— 设备模拟器。你可以在该虚拟机里测试应用程序,也可以使用 Android 的内部功能。因此,让我们迫不及待的开始吧!

准备工作

首先,你需要在你的系统上安装 VirtualBox,可从这里下载 Windows 版本、macOS 版本或者各种 Linux 版本的 VitualBox。然后,你需要一个能在 x86 平台运行的 Android 镜像,因为 VirtualBox 为虚拟机提供运行 x86 或者 x86\_64(即 AMD64)平台的功能。

虽然大部分 Android 设备都在 ARM 上运行,但我们依然可以从 Android on x86 项目 中获得帮助。这些优秀的开发者已经将 Android 移植到 x86 平台上运行(包括实体机和虚拟机),我们可以下载最新版本的 Android 7.1。你也可以用之前更为稳定的版本,本文写作时最新稳定版是 Android 6.0。

创建 VM 虚拟机

打开 VirtualBox,单击左上角的 “新建” 按钮,在弹出的窗口中选择 “类型:Linux” ,然后根据下载的 ISO 镜像来确定版本,x86 对应 “32-bit”,x86\_64 对应 “64-bit”,此处选择 “Linux 2.6 / 3.x / 4.x (64-bit)”。

RAM 大小设置为 2 GB 到你系统能提供的最大内存之间。如果你想模拟真实的使用环境你可以设置 6 GB RAM 和 32 GB ROM。

创建完成后,你还需要做一些设置,添加更多的处理器核心,提高开机显示内存。在 VM 上打开设置选项,“设置 -> 系统 -> 处理器”,如果硬件条件允许,可以多分配一些处理器。

在 “设置 -> 显示 -> 显存大小” 中,你可以分配一大块内存并开启 3D 加速功能。

现在我们可以启动 VM 虚拟机了。

安装 Android

首次启动 VM 虚拟机,VirtualBox 会提示你需要提供启动媒介,选择之前下载好的Android 镜像。

下一步,如果想长时间使用 Android,选择 “Installation” 选项,你也可以选择 Live 模式体验 Android 环境。

按回车键。

分区

分区是通过文本界面操作,并没有友好的 GUI 界面,所以每个操作都需要小心对待。例如,在第一屏中还没有创建分区并且只检测到原始(虚拟)硬盘时显示如下。

红色字母 CD 表明 C 开头选项可以创建或者修改分区,D 开头选项可以检测设备。你可以选择 D 开头选项,然后它就会检测硬盘,也可不进行这步操作,因为在启动的时候它会自动检测。

我们选择 C 开头选项,在虚拟盘中创建分区。官方不推荐使用 GPT 格式,所以我们选择 “No” 并按回车键。

现在你被引导到 fdisk 工具页面。

为了简洁起见,我们就只创建一个较大的分区,使用方向键来选择 “New” ,然后选择 “Primary”,按回车键以确认。

分区大小系统已经为你计算好了,按回车键确认。

这个分区就是 Android 系统所在的分区,所以需要它是可启动的。选择 “Bootable”,然后按回车键(上方表格中 “Flags” 标志下面会出现 “boot” 标志),进一步,选择 “Write” 选项,保存刚才的操作记录并写入分区表。

现在你可以选择退出分区工具,然后继续安装过程。

文件系统格式化为 EXT4 并安装 Android

在“Choose Partition”分区页面上会出现一个刚刚我们创建的分区,选择它并点击“OK”进入。

在下一个菜单中选择 Ext4 作为实际的文件系统,在下一页中选择 “Yes” 然后格式化开始。会提示是否安装 GRUB 引导工具以及是否允许在目录 /system 进行读写,都选择 “Yes” 。现在,安装进程开始。

安装完成后,当系统提示可以重启的时候你可以安全地重启系统。在重启之前,你可以先关机,然后在 VitualBox 的 “设置 -> 存储” 中检查 Android iso 镜像是否还连接在虚拟机上,如果在,将它移除。

移除安装媒介并保存修改,再去启动 VM 虚拟机。

运行 Android

在 GRUB 引导界面,有调试模式和普通模式的选项。我们选择默认选项,如下图所示。

如果一切正常,你将会看到如下界面:

如今的 Android 系统使用触摸交互而不是鼠标。不过 Android-x86 平台提供了鼠标操作支持,但开始时可能需要方向键来辅助操作。

移动到”let’s go“按钮并按下回车键。选择 “Set up as new” 选项,回车确认。

在提示用谷歌账户登陆之前,系统检查更新并检测设备信息。你可以跳过这一步,直接去设置日期和时间、用户名等。

还有一些其他的选项,和让你设置一个新的 Android 设备类似。选择 “I Agree” 选项同意有关更新、服务等的相应的选项,当然谷歌的服务条款是不得不同意的。

在这之后,因为它是个虚拟机,所以可能需要添加额外的 email 账户来设置 “On-body detection”,大部分的选项对我们来说都没有多大作用,因此可以选择 ”All Set“。

接下来,它会提示你选择主屏应用,这个根据个人需求选择。现在我们进入了一个虚拟的 Android 系统。

如果你需要在 VM 做一些交互测试,有个可触摸屏幕会提供很大的方便,因为那样才更接近真实使用环境。

希望这篇教程会给你带来帮助。


via: https://linuxhint.com/install_android_virtualbox/

作者:Ranvir Singh 选题:lujun9972 译者:jrglinux 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Vagrant 对于虚拟机来说是一个强大的工具,在这里我们将研究如何在 Ubuntu 上设置和使用 Virtualbox 和 Vagrant 来提供可复制的虚拟机。

虚拟机,并不复杂

多年来,开发人员一直使用虚拟机作为其工作流程的一部分,允许他们交换和更改运行软件的环境,这通常是为了防止项目之间的冲突,例如需要 php 5.3 的项目 A 和需要 php 5.4 的项目 B。

并且使用虚拟机意味着你只需要你正在使用的计算机就行,而不需要专用硬件来镜像你的生产环境。

当多个开发人员在一个项目上工作时,它也很方便,他们都可以运行一个包含所有需求的环境,但是维护多台机器并确保所有的需求都具有相同的版本是非常困难的,这时 Vagrant 就能派上用场了。

使用虚拟机的好处

  • 你的虚拟机与主机环境是分开的
  • 你可以根据你代码的要求裁剪一个定制虚拟机
  • 不会影响其他虚拟机
  • 可以运行在你的主机上无法运行的程序,例如在 Ubuntu 中运行一些只能在 Windows 运行的软件

什么是 Vagrant

简而言之,这是一个与虚拟机一起工作的工具,可以让你自动创建和删除虚拟机。

它围绕一个名为 VagrantFile 的配置文件而工作,这个配置文件告诉 Vagrant 你想要安装的操作系统,以及一些其他选项,如 IP 和目录同步。 你还可以在虚拟机上添加一个命令的配置脚本。

通过共享这个 VagrantFile,项目的所有开发人员全可以使用完全相同的虚拟机。

安装要求

安装 VirtualBox

VirtualBox 是运行虚拟机的程序,它可以从 Ubuntu 仓库中安装。

sudo apt-get install virtualbox

安装 Vagrant

对于 Vagrant 本身,你要前往 https://www.vagrantup.com/downloads.html 查看适用于你的操作系统的安装软件包。

安装增强功能

如果你打算与虚拟机共享任何文件夹,则需要安装以下插件。

vagrant plugin install vagrant-vbguest

配置 Vagrant

首先我们需要为 Vagrant 创建一个文件夹。

mkdir ~/Vagrant/test-vm
cd ~/Vagrant/test-vm

创建 VagrantFile:

vagrant init

开启虚拟机:

vagrant up

登录机器:

vagrant-ssh

此时,你将拥有一个基本的 vagrant 机器,以及一个名为 VagrantFile 的文件。

定制

在上面的步骤中创建的 VagrantFile 看起来类似于以下内容

VagrantFile:

# -*- mode: ruby -*-
# vi: set ft=ruby :
# All Vagrant configuration is done below. The "2" in Vagrant.configure
# configures the configuration version (we support older styles for
# backwards compatibility). Please don't change it unless you know what
# you're doing.
Vagrant.configure("2") do |config|
    # The most common configuration options are documented and commented below.
    # For a complete reference, please see the online documentation at
    # https://docs.vagrantup.com.

    # Every Vagrant development environment requires a box. You can search for
    # boxes at https://vagrantcloud.com/search.
    config.vm.box = "base"

    # Disable automatic box update checking. If you disable this, then
    # boxes will only be checked for updates when the user runs
    # `vagrant box outdated`. This is not recommended.
    # config.vm.box_check_update = false

    # Create a forwarded port mapping which allows access to a specific port
    # within the machine from a port on the host machine. In the example below,
    # accessing "localhost:8080" will access port 80 on the guest machine.
    # NOTE: This will enable public access to the opened port
    # config.vm.network "forwarded_port", guest: 80, host: 8080

    # Create a forwarded port mapping which allows access to a specific port
    # within the machine from a port on the host machine and only allow access
    # via 127.0.0.1 to disable public access
    # config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1"

    # Create a private network, which allows host-only access to the machine
    # using a specific IP.
    # config.vm.network "private_network", ip: "192.168.33.10"

    # Create a public network, which generally matched to bridged network.
    # Bridged networks make the machine appear as another physical device on
    # your network.
    # config.vm.network "public_network"

    # Share an additional folder to the guest VM. The first argument is
    # the path on the host to the actual folder. The second argument is
    # the path on the guest to mount the folder. And the optional third
    # argument is a set of non-required options.
    # config.vm.synced_folder "../data", "/vagrant_data"

    # Provider-specific configuration so you can fine-tune various
    # backing providers for Vagrant. These expose provider-specific options.
    # Example for VirtualBox:
    #
    # config.vm.provider "virtualbox" do |vb|
    #   # Display the VirtualBox GUI when booting the machine
    #   vb.gui = true
    #
    #   # Customize the amount of memory on the VM:
    #   vb.memory = "1024"
    # end
    #
    # View the documentation for the provider you are using for more
    # information on available options.

    # Enable provisioning with a shell script. Additional provisioners such as
    # Puppet, Chef, Ansible, Salt, and Docker are also available. Please see the
    # documentation for more information about their specific syntax and use.
    # config.vm.provision "shell", inline: <<-SHELL
    #   apt-get update
    #   apt-get install -y apache2
    # SHELL
end

现在这个 VagrantFile 将创建基本的虚拟机。但 Vagrant 背后的理念是让虚拟机为我们的特定任务而配置,所以我们删除注释和调整配置。

VagrantFile:

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure("2") do |config|
  # Set the Linux Version to Debian Jessie
  config.vm.box = "debian/jessie64"
  # Set the IP of the Box
  config.vm.network "private_network", ip: "192.168.33.10"
  # Sync Our Projects Directory with the WWW directory 
  config.vm.synced_folder "~/Projects", "/var/www/"
  # Run the following to Provision
  config.vm.provision "shell", path: "install.sh"
end

现在我们有一个简单的 VagrantFile,它将 Linux 版本设置为 debian jessie,设置一个 IP 给我们使用,同步我们感兴趣的文件夹,并最后运行 install.sh,这是我们可以运行 shell 命令的地方。

install.sh:

#! /usr/bin/env bash
# Variables
DBHOST=localhost
DBNAME=dbname
DBUSER=dbuser
DBPASSWD=test123

echo "[ Provisioning machine ]"
echo "1) Update APT..."
apt-get -qq update

echo "1) Install Utilities..."
apt-get install -y tidy pdftk curl xpdf imagemagick openssl vim git

echo "2) Installing Apache..."
apt-get install -y apache2

echo "3) Installing PHP and packages..."
apt-get install -y php5 libapache2-mod-php5 libssh2-php php-pear php5-cli php5-common php5-curl php5-dev php5-gd php5-imagick php5-imap php5-intl php5-mcrypt php5-memcached php5-mysql php5-pspell php5-xdebug php5-xmlrpc
#php5-suhosin-extension, php5-mysqlnd

echo "4) Installing MySQL..."
debconf-set-selections <<< "mysql-server mysql-server/root_password password secret"
debconf-set-selections <<< "mysql-server mysql-server/root_password_again password secret"
apt-get install -y mysql-server
mysql -uroot -p$DBPASSWD -e "CREATE DATABASE $DBNAME"
mysql -uroot -p$DBPASSWD -e "grant all privileges on $DBNAME.* to '$DBUSER'@'localhost' identified by '$DBPASSWD'"

echo "5) Generating self signed certificate..."
mkdir -p /etc/ssl/localcerts
openssl req -new -x509 -days 365 -nodes -subj "/C=US/ST=Denial/L=Springfield/O=Dis/CN=www.example.com" -out /etc/ssl/localcerts/apache.pem -keyout /etc/ssl/localcerts/apache.key
chmod 600 /etc/ssl/localcerts/apache*

echo "6) Setup Apache..."
a2enmod rewrite
> /etc/apache2/sites-enabled/000-default.conf
echo "
<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

" >> /etc/apache2/sites-enabled/000-default.conf
service apache2 restart 

echo "7) Composer Install..."
curl --silent https://getcomposer.org/installer | php 
mv composer.phar /usr/local/bin/composer

echo "8) Install NodeJS..."
curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash - 
apt-get -qq update
apt-get -y install nodejs 

echo "9) Install NPM Packages..."
npm install -g gulp gulp-cli

echo "Provisioning Completed"

通过上面的步骤,在你的目录中会有 VagrantFileinstall.sh,运行 vagrant 会做下面的事情:

  • 采用 Debian Jessie 来创建虚拟机
  • 将机器的 IP 设置为 192.168.33.10
  • 同步 ~/Projects/var/www/ 目录
  • 安装并设置 Apache、Mysql、PHP、Git、Vim
  • 安装并运行 Composer
  • 安装 Nodejs 和 gulp
  • 创建一个 MySQL 数据库
  • 创建自签名证书

通过与其他人共享 VagrantFileinstall.sh,你可以在两台不同的机器上使用完全相同的环境。


via: https://www.chris-shaw.com/blog/how-to-install-and-setup-vagrant

作者:Christopher Shaw 译者:MjSeven 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Vagrant 是一个用来创建和管理虚拟机环境的工具,常用于建设开发环境。 它在 Docker、VirtualBox、Hyper-V、Vmware、AWS 等技术的基础上构建了一个易于使用且易于复制、重建的环境。

Vagrant Boxes 简化了软件配置部分的工作,并且完全解决了软件开发项目中经常遇到的“它能在我机器上工作”的问题,从而提高开发效率。

在本文中,我们会在 Linux 机器上学习使用 VirtualBox 来配置 Vagrant Boxes。

前置条件

Vagrant 是基于虚拟化环境运行的,这里我们使用 VirtualBox 来提供虚拟化环境。 关于如何安装 VirutalBox 我们在“在 Linux 上安装 VirtualBox” 中有详细描述,请阅读该文并安装 VirtualBox。

安装好 VirtualBox 后,下一步就是配置 Vagrant 了。

安装

VirtualBox 准备好后,我们来安装最新的 vagrant 包。 在写本文的时刻, Vagrant 的最新版本为 2.0.0。 使用下面命令下载最新的 rpm 文件:

$ wget https://releases.hashicorp.com/vagrant/2.0.0/vagrant_2.0.0_x86_64.rpm

然后安装这个包:

$ sudo yum install vagrant_2.0.0_x86_64.rpm

如果是 Ubuntu,用下面这个命令来下载最新的 vagrant 包:

$ wget https://releases.hashicorp.com/vagrant/2.0.0/vagrant_2.0.0_x86_64.deb

然后安装它,

$ sudo dpkg -i vagrant_2.0.0_x86_64.deb

安装结束后,就该进入配置环节了。

配置

首先,我们需要创建一个目录给 vagrant 来安装我们需要的操作系统,

$ mkdir /home/dan
$ cd /home/dan/vagrant

注意: 推荐在你的用户主目录下创建 vagrant,否则你可能会遇到本地用户相关的权限问题。

现在执行下面命令来安装操作系统,比如 CentOS:

$ sudo vagrant init centos/7

如果要安装 Ubuntu 则运行:

$ sudo vagrant init ubuntu/trusty64

vagrant boxes

这还会在存放 vagrant OS 的目录中创建一个叫做 Vagrantfile 的配置文件。它包含了一些关于操作系统、私有 IP 网络、转发端口、主机名等信息。 若我们需要创建一个新的操作系统, 也可以编辑这个问题。

一旦我们用 vagrant 创建/修改了操作系统,我们可以用下面命令启动它:

$ sudo vagrant up

这可能要花一些时间,因为这条命令要构建操作系统,它需要从网络上下载所需的文件。 因此根据互联网的速度, 这个过程可能会比较耗时。

vagrant boxes

这个过程完成后,你就可以使用下面这些命令来管理 vagrant 实例了。

启动 vagrant 服务器:

$ sudo vagrant up

关闭服务器:

$ sudo vagrant halt

完全删除服务器:

$ sudo vagrant destroy

使用 ssh 访问服务器:

$ sudo vagrant ssh

我们可以从 Vagrant Box 的启动过程中得到 ssh 的详细信息(参见上面的截屏)。

如果想看创建的 vagrant OS,可以打开 VirtualBox,然后你就能在 VirtualBox 创建的虚拟机中找到它了。 如果在 VirtualBox 中没有找到, 使用 sudo 权限打开 virtualbox, 然后应该就能看到了。

vagrant boxes

注意:Vagrant 官方网站上可以下载预先配置好的 Vagrant OS。

这就是本文的内容了。如有疑问请在下方留言,我们会尽快回复。


via: http://linuxtechlab.com/creating-vagrant-virtual-boxes-virtualbox/

作者:Shusain 译者:lujun9972 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Arch Linux 是专门为 i386 和 x86-64 架构的计算机而设计的基于 Linux 内核的操作系统。其特有的软件包管理器使用 pacman 进行完整追踪来将系统应用软件升级到最新版本。 Pacman 是一个用于安装、升级和卸载软件包的管理器。这是一款完全自由而开源的软件,由 Linux 开源社区提供支持。

Arch Linux 也因其丰富的 Wiki 帮助文档而大受推崇。该系统基于二进制的软件包,这些软件包主要是为 i386 的 64 位和 32 位的系统而开发的,同时也为现代的硬件系统提供最佳的性能优化。

你可以参考这篇教程直接在你的本地电脑上安装 Arch Linux 系统,或者你也可以使用你的 Windows 电脑中的 VirtualBox 虚拟机来安装。

Arch Linux 软件仓库

要在 VirtualBox 中安装 Arch Linux 系统,你得了解该系统的基础软件仓库。软件仓库用于在安装的过程中获取软件包。对于 Arch Linux 系统来说,有很多可用的软件仓库,可以使用 pacman 工具来进行维护。下面列出的是在 VirtualBox 中安装 Arch Linux 系统时用到的一些基础软件仓库列表:

  • core 软件仓库包括所有的用于对系统进行基本设置的一些软件包,比如启动 Arch Linux 系统和编译软件包。
  • extra 软件仓库包括 core 软件仓库以外的其它软件包以及与桌面环境相关的软件包。
  • community 软件仓库包含的是由可信任的 Linux 社区用户维护的软件包,其中的大多数的软件包都会被迁移到核心软件仓库或者额外软件仓库中。
  • Multilib 软件仓库包括 32 位的软件包以及用于在 64 位操作系统中安装 32 位应用程序的类库。
  • testing 软件仓库包括那些即将成为 core 或 extra 的软件包。
  • community-testing 软件仓库主要用于 community 类的测试。
  • multilib testing 软件仓库跟 testing 软件仓库类似,但是它包含 Multilib 类。
  • gnome-unstable 软件仓库包括最新的 GNOME 桌面环境。
  • kde-unstable 软件仓库包括 KDE 最新的发布前软件包。

在 VirtualBox 虚拟机中安装 Arch Linux 系统

下载 Arch Linux 系统

要在 VirtualBox 虚拟机中安装 Arch Linux 系统,你最好使用官网下载的新版 Arch Linux 系统。你可以选择直接下载或是种子方式下载系统文件,这是一个很安全的下载方式。在安装之前,确保你系统中有 20 GB 的剩余空间和 1 GB 的内存。

Download Arch Linux

在 Oracle VirtualBox 虚拟机管理界面初始化系统安装

打开 Oracle VirtualBox 虚拟机管理界面,点击 新建 new ,输入你想创建的新系统的名称;这里输入的是 “Arch Linux” 。系统会自动选择 Arch Linux 的版本和类型,这取决于你的系统配置。单击下一步

Open VirtualBox

为你的新系统分配内存,最好是 1024 MB 。单击下一步,然后点击 创建 create 来创建一个虚拟磁盘。

Set RAM size

在下一步中,你将会被询问为新系统选择磁盘类型。通常选择 VirtualBox 磁盘镜像 VirtualBox Disk Image,VDI 类型。

Select disk file type

选择 动态分配 dynamically allocated ,单击下一步

Allocate disk space dynamically

分配 20 GB 的硬盘大小及存放位置。

Choose a hard disk size of 20GB

现在你可以看到 Arch Linux 系统已创建完成了。点击 开始 start 按钮。

Start the Virtual Machine

单击 浏览 browser 然后选择你从官网下载的启动磁盘。

Choose Arch Linux Disk image

Browse for disk image file

点击 启动 start ,然后打开全屏模式。

Open the full-screen view

Start the Arch Linux VM

在 VirtualBox 中启动并安装 Arch Linux 系统

你将会看到 Arch Linux 系统第一个打开界面。单击 “Boot Arch Linux (x86\_64)”, 它用于 64 位系统,或者单击 “Boot Arch Linux (i686)”,用于 32 位系统。

Choose to boot Arch Linux

当你单击第一个选项后,系统将开始启动。实际上只是进入到一个临时启动状态,即进入到 Arch Linux 的 Live 系统,并以 root 帐号登录了。

Booting into Arch Linux live version

输入下面的命令来检查网络连接。

ping google.com

这个单词 ping 表示网路封包搜寻。你将会看到下面的返回信息,表明 Arch Linux 已经连接到外网了。这是执行安装过程中的很关键的一点。(LCTT 译注:或许你 ping 不到那个不存在的网站,你选个存在的吧。)

Test internet connectivity with ping

输入如下命令清屏:

clear

在开始安装之前,你得先为硬盘分区。输入 fdisk -l ,你将会看到当前系统的磁盘分区情况。注意一开始你给 Arch Linux 系统分配的 20 GB 存储空间。

Partition the harddisk

硬盘分区

我们打算把这个 20 GB 的磁盘分成三个分区。第一个主分区为 root 分区,大小为 10 GB 。第二个分区为 swap 分区,大小为内存的两倍,为 2048 MB 。第三个是逻辑分区,大小为 8 GB 。

Create 3 disk partitions

输入下面的命令:

cfdisk

你将看到 gptdossgisun 类型,选择 dos 选项,然后按回车。

Create a partition of type DOS

这里你将看到主磁盘空间,大小为 20 GB 。在 剩余空间 free space 按回车来修改分区大小,输入 10 GB 。

Choose 10GB partition size

按回车并单击 主分区 primary

Select primary

在可引导选项按回车选择 可引导 bootable 类型。

Make partition bootable.

写入 write 选项按回车键将分区信息写入磁盘。

Write partition to disk

之后输入 yes 来应用更改。

Confirm changes

现在已经创建完成 10 GB 分区。单击 剩余空间 free space ,输入分区大小 2048 M 。

Create the 2GB swap partition

以同样的方式创建逻辑分区。在 退出 quit 选项按回车键,然后输入下面的命令来清屏:

clear

quit cfdisk

输入下面的命令来格式化新建的分区:

mkfs.ext4 /dev/sda1

这里的 sda1 是分区名。使用同样的命令来格式化第二个分区 sda3 :

mkfs.ext4 /dev/sda3

格式化 swap 分区:

mkswap /dev/sda2

Format the swap partition with mkswap

使用下面的命令来激活 swap 分区:

swapon /dev/sda2

输入 clear 命令清屏:

clear

Enable swap

输入下面的命令来挂载主分区以开始系统安装:

mount /dev/sda1 /mnt

Mount the partitions

引导 Arch Linux 启动

输入下面的命令来引导系统启动:

pacstrap /mnt base base-devel

可以看到系统正在同步数据包。

Bootstrap Arch Linux

安装将会开始,需要几分钟。

Arch Linux installation has been started

系统基本软件安装完成后,输入下面的命令来创建 fstab 文件:

genfstab /mnt>> /mnt/etc/fstab

Generating /etc/fstab

配置区域、时间和 root 帐号密码。

输入下面的命令来更改系统的根目录为 Arch Linux 的安装目录:

arch-chroot /mnt /bin/bash

现在来更改语言配置:

nano /etc/locale.gen

Set language in Arch Linux

通过删除 # 以及按 control + x ,按 y ,然后再按回车来选择下面的语言配置:

select language

输入下面的命令来激活它:

locale-gen

按回车。

Generate the locales in Arch Linux

使用下面的命令来创建 /etc/locale.conf 配置文件:

nano /etc/locale.conf

然后按回车。现在你就可以在配置文件中输入下面一行内容来为系统添加语言:

LANG=en_US.UTF-8

然后按 control + x ,按 y ,再按回车。

Set default language

输入下面的命令来同步时区:

ls /usr/share/zoneinfo

下面你将看到整个世界的时区列表。

Set System language default

输入下面的命令来选择你所在的时区:

ln –s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 

或者你可以从下面的列表中选择其它名称。

使用下面的命令来设置标准时间:

hwclock --systohc --utc

硬件时钟已同步。

Set time

设置 root 帐号密码:

passwd

按回车。 然而输入你想设置的密码,按回车确认。

Set the root password

设置主机名和网络

使用下面的命令来设置主机名:

nano /etc/hostname

然后按回车。输入你想设置的主机名称,按 control + x ,按 y ,再按回车 。

Set the hostname

启用 dhcpcd :

systemctl enable dhcpcd

这样在下一次系统启动时, dhcpcd 将会自动启动,并自动获取一个 IP 地址:

Enable dhcpcd

安装引导加载程序

最后一步,输入以下命令来初始化 grub 安装。输入以下命令:

pacman –S grub os-rober

然后按 y ,将会下载相关程序。

Configure grub

使用下面的命令来将启动加载程序安装到硬盘上:

grub-install /dev/sda

然后进行配置:

grub-mkconfig -o /boot/grub/grub.cfg

Install and configure grub boot loader

最后重启系统:

reboot

然后按回车 。

Reboot the system

启动进入到已安装完成的 Arch Linux 系统

选择“启动已存在的操作系统”选项来启动 Virtual Box 虚拟机中的 Arch Linux 系统。

Boot Arch Linux

使用 root 帐号和密码登录后,你将进入全新安装好的 Arch Linux 操作系统。

Arch Linux installed successfully


via: https://www.howtoforge.com/tutorial/install-arch-linux-on-virtualbox/

译者简介:

rusking:春城初春/春水初生/春林初盛/春風十裏不如妳

致谢:十分感谢 CoinkWang勘误

作者:Dimitris 译者:rusking 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

当你在 VirtualBox 虚拟机软件 中安装了各种操作系统时,你可能需要实现宿主机与虚拟机之间的相互访问。

在这篇文章中,我们将会以最简单明了的方式来说明如何配置客户机与 Linux 宿主机的网络,以实现两者相互访问或者让客户机连接到外网。(LCTT 译注:客户机指 Oracle VirtualBox 虚拟机软件中安装的操作系统,如本文中用到的 CentOS 7 和 Ubuntu 16.10 。宿主机就是你自己的笔记本电脑或台式机,注意这篇文章中作者的宿主机上安装的操作系统是 Linux Mint 18 ,而不是我们平时使用的 Windows 系统。)

本文测试环境: 1、宿主机操作系统—— Linux Mint 18 2、客户机操作系统—— CentOS 7 和 Ubuntu 16.10

要求

  1. 宿主机上安装的 VirtualBox 虚拟机 能正常使用。
  2. 你得事先在 Oracle virtualBox 虚拟机软件中安装好客户机操作系统,比如 Ubuntu、Fedora、CentOS、 Linux Mint 或者其它的 Linux 系统也行。
  3. 在你配置网络前,请先关闭客户机。

为了让宿主机和客户机能够互相联通,这两个机器的默认网卡 IP 必须设置在同一网段,你可以为客户机添加多达 4 块网卡。

默认网卡(网卡 1)通常用于使用 NAT 连接方式连接到宿主机进行上网。

重要提示:通常总是设置第一块网卡与宿主机通信,第二块网卡连接到外网。

为客户机和宿主机创建网卡

在下面的 VirtualBox 管理器界面,创建客户机和宿主机之间的通信网卡。

打开文件->首选项配置,或者使用组合键 Ctrl + G

Virtualbox Preferences Window

Virtualbox 首选项界面

在下图中有两个选项,单击并选择 仅主机 Host-only 网络。然后使用右侧的 + 按钮来添加一个新的仅主机网络。

Set Guest Network

设置客户机网络

这样就创建好了一个名为 vboxnet0 的新的仅主机模式网卡。

如果你愿意,你可以使用中间的 - 按钮来删除这个网卡,你可以单击编辑按钮来查看这个网卡的详细配置信息。

你也可以根据自己的实际环境修改配置信息,比如网络地址,子网掩码等等。

注意:下图中的 IPv4 地址就是你的宿主机的 IP 地址。

Host Network Details

宿主机网络信息

下图中,如果你想让客户机使用动态 IP 地址,你可以通过配置 DHCP 服务来完成(在使用前请确保启用 DHCP )。但是我建议你为客户机配置一个静态 IP 地址。

在下面的设置所有网络界面单击 OK 按钮来保存修改的配置。

Set Guest Static IP aAddress

为客户机设置静态 IP 地址

配置客户机网络设置

注意:你可以根据下面的步骤来为任何需要与宿主机通信的客户机添加网卡。

回到 VirtualBox 管理器界面,选择客户机,比如 Ubuntu 16.10 Server 或者 CentOS 7 ,然后单击设置菜单。

Configure VM Settings

配置客户机网络设置

配置客户机网卡以连接到宿主机

从下图的界面中选择网络选项。然后配置第一块网卡( 网卡 1 )的信息如下:

  1. 勾选选项:“启用网卡”来开启该网卡。
  2. 在连接方式选项:选择 仅主机 Host-only 网络。
  3. 然后选择网卡名称:vboxnet0

如下图所示,单击 OK 来保存设置:

Enable Network Adapter for Guest VM

启用客户机网络

配置客户机网卡连接外网

之后添加第二块网卡(网卡 2 )来让客户机连接到宿主机进行上网。使用下面的设置:

  1. 勾选选项:“启用网络连接”来激活这块网卡。
  2. 在连接方式选项:选择 NAT 方式。

Enable Network Adapter for VM

为客户机启用网络连接

为客户机设置静态 IP 地址

启动客户机,登录系统并配置静态 IP 地址。在客户机上执行下面的命令来查看所有网卡配置信息,然后分配一个 IP 地址:

$ ip add

Configure Static IP Address for VM

为客户机配置静态 IP 地址

从上面的截图中可以看出客户机已启用了三块网卡:

  1. lo ——回环网络接口
  2. enp0s3 (网卡 1)—— 前一步我们配置的连接方式为 仅主机 Host-Only 模式并且已启用 DHCP 的网卡,之后我们又配置成了静态 IP 地址。
  3. enp0s8 (网卡 2)—— 用于连接到外网。该网卡默认情况下使用 DHCP 来动态获取 IP 地址。
在 Debian/Ubuntu/Linux Mint 系统下的配置

重要提示: 这里我使用的是 Ubuntu 16.10 Server , IP 地址为 192.168.56.5 。

使用你喜欢的编辑器及管理员账号打开 /etc/network/interfaces 配置文件:

$ sudo vi /etc/network/interfaces

修改网卡 enp0s3 的配置信息如下(根据你的实际环境进行修改):

auto  enp0s3
iface enp0s3 inet static
address  192.168.56.5
network  192.168.56.0
netmask  255.255.255.0
gateway  192.168.56.1
dns-nameservers  8.8.8.8  192.168.56.1

保存并退出。

然后使用下面的命令来重启网络服务:

$ sudo systemctl restart networking

或者,正常重启系统,然后检查网络配置是否为新的 IP 地址:

$ ip add
在 RHEL/CentOS/Fedora 系统下的配置

重要提示: 这里我使用的是 CentOS 7 系统, IP 地址为: 192.168.56.10 。

使用管理员帐号及你喜欢的编辑器打开 enp0s3 (仅主机网络)的网卡配置文件 /etc/sysconfig/network-scripts/ifcfg-enp0s3

$ sudo vi /etc/sysconfig/network-scripts/ifcfg-enp0s3

创建或修改配置文件信息如下(根据你实际的环境进行修改):

BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.56.10
NETWORK=192.168.56.0
NETMASK=255.255.255.0
GATEWAY=192.168.56.1
DNS=8.8.8.8 192.168.56.1
NM_CONTROLLED=no     #use this file not network manager to manage interface

保存并退出。然后使用下面的命令重启网络服务(也可以重启系统):

$ sudo systemctl restart network.service 

检查修改的配置地信息是否生效:

$ ip add

在宿主机上使用 SSH 工具来管理客户机

在宿主机上使用 SSH 工具来管理你的客户机。在下面的实例中,我将使用 SSH 工具连接到 CentOS 7 服务器(192.168.56.10):

$ ssh [email protected]
$ who

Connect Guest VM using SSH

使用 SSH 工具连接客户机

就写到这里吧!在这篇文章中,我们用简单易懂的方法讲述了如何在宿主机与客户机之间设置网络连接方式。请在下面的评论区跟大家分享下你的想法。


作者简介:

Aaron Kili 是一名 Linux 和 F.O.S.S 爱好者,即将从事 Linux 系统管理员和网页开发工作,他日前是 TecMint 技术网站的原创作者,非常喜欢使用电脑工作,坚信分享知识是一种美德。


via: http://www.tecmint.com/network-between-guest-vm-and-host-virtualbox/

作者:Aaron Kili 译者:rusking 校对:Bestony

本文由 LCTT 原创编译,Linux中国 荣誉推出