VirtualBox 中安装 Ubuntu 虚拟机并配置文件共享

模板网 2021-04-15

安装后,有时出现共享目录无法加载的现象,最后决定放弃,采用 VMWare Player !!

安装 VirtualBox

访问 https://www.virtualbox.org/ 下载最新版 VirtualBox,安装。

可选:修改一下缺省虚拟机所在的位置(管理 > 全局设定 > 常规)

安装 Ubuntu 虚拟机

过程中没啥好说的,只说下我的习惯:

  1. 安装过程习惯选择英文。
  2. 磁盘分区时不选 LVM。
  3. 服务选择时选上 OpenSSH Server。

安装后,更新 apt:

sudo apt-get update

配置虚拟机的网络连接

安装虚拟机后,缺省的网络连接方式为 NAT,此时 Windows 主机无法访问虚拟机,先关闭虚拟机,修改网络连接方式:

  • 设置 > 网络 > 网卡1 > 连接方式: 桥接网卡

然后启动虚拟机,修改配置文件(/etc/network/interfaces):

iface eth0 inet static
    address 192.168.1.185
    netmask 255.255.255.0
    gateway 192.168.1.253
    dns-nameservers 192.168.1.253 8.8.8.8

说明:dhcp 模式,但已经可以用 ssh 访问虚拟机,修改配置文件等操作可以通过 ssh 远程操作。

虚拟机上安装增强功能(驱动)

首先选择菜单:

  • VirtualBox > 设备 > 安装增强功能

其实质是把 VBoxGuestAdditions.iso 放入虚拟机的光驱,挂载光驱:

sudo mount /dev/cdrom /media/cdrom

通常情况下,linux-headers-XXX 已经正确安装,

sudo apt-get install make gcc

# sudo apt-get install linux-headers-$(uname -r)

执行安装指令:

sudo /media/cdrom/VBoxLinuxAdditions.run

安装后需要重启:

sudo reboot

配置文件共享

配置虚拟机的共享文件夹

  • 设置 > 共享文件夹 > 添加共享文件夹
  • 指定 Windows 文件夹:比如 D:\myshared
  • 指定共享名称:比如 myshared
  • 选择“固定分配”

注意:不需要选择自动挂载:如果选择了自动挂载,会自动挂载在 /media/sf_<共享名>

说明:添加了共享文件夹不需要重启虚拟机。

手动挂载共享文件夹

先手动挂载试试:

sodo mkdir /myshared
sudo mount -t vboxsf myshared /myshared

现在可以测试一下,是否工作正常了。

配置 Ubuntu 自动挂载共享文件夹

修改 /etc/fstab,添加一行:

myshared  /myshared vboxsf  rw  0 0

测试一下:

sudo mount myshared
sudo umount myshared

这时如果重启虚拟机,会发现虚拟机出现提示:

An error occurred while mounting /myshared.
keys:Press S to skip mounting or M for manual recovery

这是因为 Linux 试图挂载时 vboxsf 模块还没有加载,解决方法是在 /etc/modules 加入一行:

vboxsf

现在可以重启虚拟机了,重启后看是否正常。

参考

相关文章

  1. php自建邮局下邮件无法正常发送问题解决

    产生问题 自建邮局发邮件时提示错误信息:stream_set_blocking()... 这是因为PHP 5.6+版本强制要求验证服务器的有效性 PHP 5.6+特性 Stream wrappers

  2. 反向代理缓存

    一、传统代理 很久以前,我们通常需要通过代理服务器来访问互联网上的Web站点,代理服务器本身接入了互联网,而我们通过内部网络与代理服务器相连。即便是现在,有些时候为了访问一些由于某种原因无法直接访问

  3. redis aof日志持久化

    一、aof的原理 问题: 1、每个命令重写一次aof? 2、某个key修改100次,产生100行记录,aof文件会很大,怎么解决? aof重写(简化) 二、aof的配置 appendfsync

  4. Python之系统交互

    我们几乎可以在任何操作系统上通过命令行指令与操作系统进行交互,比如Linux平台下的shell。那么我们如何通过Python来完成这些命令行指令的执行呢?另外,我们应该知道的是命令行指令的执行通常有

  5. gitlab备份与恢复

    一、gitlab备份 [root@localhost ~]# gitlab-rake gitlab:backup:create Dumping database ... Dumping Postgr

随机推荐

  1. php自建邮局下邮件无法正常发送问题解决

    产生问题 自建邮局发邮件时提示错误信息:stream_set_blocking()... 这是因为PHP 5.6+版本强制要求验证服务器的有效性 PHP 5.6+特性 Stream wrappers

  2. 反向代理缓存

    一、传统代理 很久以前,我们通常需要通过代理服务器来访问互联网上的Web站点,代理服务器本身接入了互联网,而我们通过内部网络与代理服务器相连。即便是现在,有些时候为了访问一些由于某种原因无法直接访问

  3. redis aof日志持久化

    一、aof的原理 问题: 1、每个命令重写一次aof? 2、某个key修改100次,产生100行记录,aof文件会很大,怎么解决? aof重写(简化) 二、aof的配置 appendfsync

  4. Python之系统交互

    我们几乎可以在任何操作系统上通过命令行指令与操作系统进行交互,比如Linux平台下的shell。那么我们如何通过Python来完成这些命令行指令的执行呢?另外,我们应该知道的是命令行指令的执行通常有

  5. gitlab备份与恢复

    一、gitlab备份 [root@localhost ~]# gitlab-rake gitlab:backup:create Dumping database ... Dumping Postgr