【译】在Windows PC上运行基于VirtualBox的Raspbian x86 虚拟机
在PC上安装虚拟机,使用甲骨文公司的 VirtualBox,是一种对用户比较友好的方式。bang的一下,你就可以在你的电脑系统里运行另一个电脑。像,在微软的Windows系统台式电脑里运行一个树莓派电脑。诚然有很多其他产品可以做到这件事,但是VirutualBox是使用起来最简单的之一。
我发现,旅行时突然需要运作一个树莓派项目的时候这很有用。一般情况下,我确实会带至少一个树莓派实物,但是在我的笔记本电脑上可以做到所有的事确实非常方便。
我还写了一个进阶文章how to control the GPIO pins of a real Raspberry Pi Zero, from your Raspbian x86 virtual machine.
当然,如果你至少想要一个Raspbian的桌面环境或事命令行相关的工作,这篇文章的内容就是你要做的事。
事前准备
我是在微软Windows10系统上做这件事;大概Windows7 和Windows8 也可以。当然你也可以在Mac 或Linux系统的电脑上做这件事;如果你使用的是上诉几个操作系统,VirtualBox的安装方式可能有些差异,但是配置虚拟机的部分基本上还是一样。
只需要任何配备了4GB 运行内存(RAM)和多核处理器的PC就可以,但是如果你的处理器支持Intel的VT-X或是AMD的V技术,你将会获得最好的性能体验。如果你的电脑没有这些,或者不知道怎么样查看是否支持,也不需要担心。如果你并没有想要用PC做非常多别的事情,有个至少2GB 运行内存就够了。
下载
你需要下载:
Raspbian x86 系统ISO镜像文件
Oracle VirtualBox
https://www.virtualbox.org/wiki/Downloads
你只需要支持“Windows Host”平台的安装包。你不需要下载附加组件包(Extension Pack)也不需要下载软件开发套装(the Software Development Kit)。稍后我们将使用别的方法安装访客附加组件包(Guest Extension Pack)。
创建虚拟机
像安装其他软件那样安装VirtualBox;找到你下载的文件,并且双击。通常你可以在你浏览器的下载器里发现它,并且会有“在文件夹中打开”或“打开”按钮。

启动VirtualBox并且点击“新建”按钮,接着输入:
类型:Linux
系统版本:Other Linux(32-Bit)
点击下一步
内存大小:1024MB
点击下一步
硬盘
选择“现在创建虚拟磁盘”
点击 新建
选择 VDI(VirtualBox 磁盘映像)(默认选项)
点击 下一步
选择动态分配(默认选项)
点击 下一步
选择 8GB
点击 新建
安装Raspbian X86
现在你就可以在VirtualBox的窗口里看到你的虚拟机,状态是“已关闭”。你现在需要把Raspbian x86系统镜像ISO文件载入虚拟的CD-ROM设备里。

选择你的虚拟机,点击启动按钮。你讲看到一个临时窗口“选择启动磁盘”。你需要选择前面下载的Raspbian x86的系统镜像ISO文件,并且点击启动按钮

使用键盘上的上下键来选择“Graphical install”,接着按下Enter键。一会儿之后,你将看到一个语言的列表,选择你想要使用的语言,接着点击Continue。
配置可能得等一会儿(加载附加组件),给它一些时间。

接着你需要决定怎么样使用硬盘分区,为了方便,我建议你选择“Guided-use entire disk”(推荐-使用整个磁盘)(默认选项)并点击Continue(继续)。这将会列出唯一的一个虚拟磁盘,再次点击Continue(继续)。
现在它将询问你分区;再次为了方便,选择“All files in one partition”(所有文件在一个分区)(默认选项)并且点击Continue(继续)。现在你会看到高亮的选项“Finish partitioning and write changes to disk”(“完成分区并且将更改写入磁盘”),直接照着Continue(继续)点下去。

分区的最后,它将询问你“Write the changes to disks?”(“将改动写入磁盘”)。
你需要选择“Yes”(“是”)按钮接着点击Continue(继续)。
(如果你选择了“No”(“否”),你就会回到上一步;点击“Continue”(“继续”)你将会重新选择)
现在“Installing the System”(”安装系统“);这将在虚拟磁盘上安装Raspbian文件。这将需要一点时间。假设你选择了“British English”作为你的语言,你可能需要喝杯茶来等,其他的选项你可以去吃点儿东西之类的。

最后(3-10分钟或更久之后),你会被询问“Install the GRUB boot loader to the master boot record?”(安装GRUB启动项至主启动记录中)
确认选择了“Yes”(是)(默认选项)这个选项并且点击Continue(继续)。
现在你需要选择/dev/sda 并且点击Continue(继续)。
(如果你不小心点击了“Enter device manually”(自主输入设备),只需要点击Go back(返回),并且重复上面几个步骤)
好消息!”Installation Complete“(”安装完成“)。它会出现一个什么卸载CD-ROM的提醒,不需要在意它,直接点击Continue(继续)就可以了。
它会做一些文件的清理,接着重启。

接着你会看到Debian系统的GRUB引导界面,看起来有点奇怪,接着的一些时间,你会看到更多东西看起来让人担心,实际上并不需要担心。
“A fatal error has occurred” (发生了致命的错误)-直接点击OK 。我们需要改变一个设置–很简单的!
点击设置按钮,系统-(在侧边列表)处理器-(上边中间那个标签)然后在Extended Features - Enable PAE/NX(附加功能-允许 PAE/NX)。接着点击OK(确定)。谢天谢地你只需要做一次这个操作,将来的时间它都将会记住这个设置。
现在点击启动,你将看到VirtualBox 的启动界面,一闪而过的GRUB引导界面,接着Raspbian系统将开始启动。

现在你就可以使用Raspbian 的PIXEL桌面!但是它有点小并且有点儿拥挤 - 640x480 尺寸。并且,你也不能在虚拟树莓派和原生Windows系统之间使用复制和粘贴。让我们把这些小毛病搞定吧。
Guest Extentions
Raspbian x86系统的大多数功能在虚拟机上都运行的不错。但是通过安装VirtualBox Guest Extentions让你的虚拟树莓派更好,组件可以让虚拟派知道它并非真的,并且运行在另外一个电脑之上。这将允许你重新改变窗口分辨率,并且可以在两个设备之间使用复制&粘贴。
点击任务栏上Raspbian 的标志-Accessories(附件) - Terminal(终端)。
如何在Raspbian Stretch安装BackPorts软件源
在Raspbian Stretch,Raspbian 的默认软件源里就不再提供VirtualBox Guest Extensions 了。你需要安装Debian Backports 软件源。要做到这一步。你需要安装Debian 密钥。输入下列内容,每一行结束的时候按一下Enter键。
sudo apt updatesudo apt install -y dirmngrsudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key 8B48AD6246925553sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key 7638D0442B90D010sudo mkdir -p /etc/apt/sources.list.decho "deb http://ftp.debian.org/debian stretch-backports main contrib non-free" \| sudo tee -a /etc/apt/sources.list.d/backports.listsudo chmod 644 /etc/apt/sources.list.d/backports.list
这么操作之后,如果你还是不能从任何软件源获取Guest Extentions。你可以遵从Andy Bames 的这一指导 install Debian Stretch VirtualBox Guest Additions。需要注意的是Andy的解决方案需要从源代码编译代码,这个操作可能需要一点时间,快慢取决于你电脑的性能。一旦你完成了Andy的方案,你可以跳过下一个部分讲到的apt update / apt install的命令,但是你仍需要使用sudo shutdown -r now来重新启动你的虚拟机。
安装Guest Extensions
在终端中输入下列代码,按下Enter键在每一行结束。
sudo apt updatesudo apt install virtualbox-guest-dkms virtualbox-guest-x11 linux-headers-$(uname -r)sudo shutdown -r now
那些括号都是最基本的小括号,不是花括号或别的括号。如果可以,你可以尽量复制并粘贴进你的终端,而不是输入它们…(你可以启动SSH,但是我们先不要动用这些核设施)。
当出现了“Do you want to continue?”(你要继续么?),点击Y键并按下Enter。它将需要一点时间下载和安装附加组件。
(你有留意到虚拟派如何继承了你真实的PC的互联网连接么?很巧妙,是不是?)
关机命令执行后,虚拟派将重启。

你现在可以改变你的窗口到你想要的大小。当然你也可以设置成常见的分辨率,比如1280x720 或是1920x1080 。点击虚拟机的View(查看)- 虚拟显示器 1 - 设定为你想要的分辨率。
如果树莓派桌面系统没有自动的适配新的窗口大小,使用虚拟机的View(查看)-Auto-resize Guest Display(自动重置显示器大小)来修复。你可能需要点击一个虚拟派上正在运行的程序来发现改动,并重置任务栏的大小。
复制和粘贴
默认情况下,这是被关闭的。一旦你安装了virtualbox-guest extensions,你就可以在虚拟机设置的Device(设备)- Shared Clipboard(共享剪贴板)- Bidirectional(双向)来允许从虚拟派和真实PC之间复制和粘贴。
你也可以允许剪贴板通过虚拟机设置按钮-高级-共享剪贴板-双向。当然,前提是Guest Extensions已经安装了。
关机
你可以使用下述的任何一种方式优雅的把你的虚拟机关掉:
- 使用Raspbian Menu(菜单)- Shutdown (关机)
- 从终端执行
sudo shutdown -h now - 关闭虚拟机,并选择“Send the Shutdown signal”(发送关机信号)
共享文件夹
这是可选的。
安装了Guest Extensions之后,你可以在真实PC和虚拟Raspbian之间共享文件夹。例如,你可以使一个你真实PC上的文件夹在虚拟树莓派中可访问。你需要在vboxsf用户组中添加用户pi(参见 Peter WA Wood’s instructions)。打开终端并输入:
sudo adduser pi vboxsf
或者,如果你喜欢也可以用:sudo usermod -a -G vboxsf pi
你需要完全的注销登录并再登录来应用这些改变,你会发现重启是最简单的:
sudo shutdown -h now
之后你就可以共享文件夹,在虚拟机上的设置-共享文件夹,点击添加文件夹的按钮。文件夹将加上sf_的前缀在/media 目录下挂载。
少了啥
有些内容在真正的树莓派上有,但在Raspbian x86中是缺少的:
- Minecraft Pi
- Wolfram
- GPIO (但是你可以 connect a Raspberry Pi Zero over USB and control GPIO pins from tha)
Micecraft和Wolfram不能使用,我猜测是因为版权问题。而GPIO端口是物理与虚拟之间的问题。但是Sense HAT Emulator(在程序菜单中)看起来是可以运行Python程序。
当然,时刻提醒自己你只是在一个intel架构中运行Raspberry Pi PIXEL 桌面环境,而不是模拟ARM处理器运行的真实的Raspberry Pi系统。所以你不能直接从真实的Raspberry Pi中拷贝可执行二进制文件并期望它能顺利运行-它们不会顺利运行。但是源代码和脚本例如Python,Scratch 和命令会运行,以及任何你从软件源使用apt来安装的程序(因为一些人非常好的志愿者以ARM和Intel架构重新编译了几乎全部的Raspbian软件源)。
如果你需要这些虚拟派中无法实现的功能,你可以直接获取到一个树莓派。接着 use VNC to connect to the Raspberry Pi desktop over the network或是SSH。
启用SSH-虚拟机中的虚拟网络集端口跳转
这一部分给高级用户。
Show how to get SSH working in VirtualBox using virtual forwarded ports
最后。。。
本文译自:
http://www.aoakley.com/articles/2017-07-04-raspbian-x86-virtualbox.php