我想为 Fedora 创建一个 VirtualBox VM 以在 Ubuntu 系统上运行。
我正在尝试调试与我需要连接的 API 服务器的连接的 TLS 问题。这种连接是通过调用该库的 Python-2.7 库实现的requests
。此连接在两个不同版本的 Ubuntu 上失败。我想看看它是否适用于 Fedora - 另一方面,如果来宾 Fedora VM 依赖于主机的 ssl 代码,则此测试无法证明任何内容。我只是不知道。我在这上面浪费时间吗?
但到了五月份,我什至无法获得 Fedora 的可启动 USB 驱动器。我下载Fedora-Workstation-Live-x86_64-28-1.1.iso
并使用以下命令将其刻录到 USB 记忆棒(格式化后)
sudo dd if=~/Downloads/Fedora-Workstation-Live-x86_64-28-1.1.iso of=/dev/sdb1
这应该是成功的,但是当我尝试构建一个从中启动的虚拟机时,屏幕开始显示,但很快就变成了图形混乱。我还尝试过从 U 盘启动。我重新启动计算机,按 F12,选择 USB 记忆棒。计算机旋转了几秒钟,然后放弃并返回到选择启动设备屏幕。
那么两个问题:
- 使用 requests 库的 python 应用程序将使用 Fedora 来宾的网络代码还是 Ubuntu 主机的网络代码?
- 为什么 Fedora 不能从 U 盘启动?
更新: 问题2已得到解答。 dd 命令错误。仍然不确定问题 1。我将打开另一个有关虚拟机安装的问题。
答案1
dd
成为写入缓存的受害者,最终在 USB 记忆棒上得到部分写入的图像。
使用oflag=direct
并sync
在之后调用dd
:
dd if=yourimage of=yourUSBdevice bs=16M oflag=direct; sync
对所有 USB 闪存驱动器使用以下命令也是个好主意
hdparm -W 0 /yourUSBdevice
但我不知道如何将其应用于现代 Linux 基于 FUSE 的自动挂载,/run/media
因为我从来没有费心去了解。
答案2
明显的错误是'sdb1'。 '1'这里表示分区号1。你需要写入'磁盘' 不是 '分割'。使用 '深圳发展银行”(没有“1”)。
sudo dd if=~/Downloads/Fedora-Workstation-Live-x86_64-28-1.1.iso of=/dev/sdb
使用sync
命令确保所有内容均已实际写入 USB。
并非每个都.iso
支持从 USB 启动,因此即使正确写入也可能无法启动。
答案3
关于您提出的第一个问题,在虚拟机中运行的任何程序都将使用来宾中的内核和库,而不是主机(这是有道理的:Windows 来宾无法直接调用 Linux 主机上的库,反之亦然。)只要您的 Fedora VM 的 Python 配置与您的 Ubuntu 机器基本相同,您就应该能够在它们之间进行有效的比较。
(唯一挑剔的例外是 VirtualBox 向 guest 虚拟机提供的接口:例如,guest 虚拟机的网络适配器被实现为主机上的一系列网络调用。但是,除非 VirtualBox 或您的主机中存在错误它不应该影响你的测试。)
我建议发布一个单独的问题在堆栈溢出上但对于无法运行的代码:被迫在特定版本/发行版上运行程序并不有趣,而且非常脆弱。