AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 117923
Accepted
Mark Longair
Mark Longair
Asked: 2010-03-02 08:19:37 +0800 CST2010-03-02 08:19:37 +0800 CST 2010-03-02 08:19:37 +0800 CST

如何生成可用于许多不同虚拟化系统的文件系统映像?

  • 772

我编写了一个脚本,该脚本可以生成适用于用户模式 ​​Linux 的根文件系统映像(基于 Debian lenny)。(本质上,这个脚本创建了一个文件系统映像,用一个循环设备挂载它,使用 debootstrap 创建一个 lenny 安装,为 TUN/TAP 网络设置一个静态 IP,添加用于通过 SSH 登录的公钥并安装一个 Web 应用程序。)

这些文件系统映像与 UML 配合得很好,但如果能够生成人们可以在替代虚拟化软件上使用的类似映像,那就太好了,而且我根本不熟悉这些选项。特别是,因为这个想法是使用这个图像作为一个独立的服务器来测试 Web 应用程序,所以网络工作很重要。

我想知道是否有人可以建议在自定义此类根文件系统映像时会涉及哪些内容,以便它们可以与其他虚拟化软件一起使用,例如 VMware、Xen 或作为 Amazon EC2 实例?两个特别关注的是:

  • 如果此类系统不使用原始文件系统映像(例如,它们需要带有元数据的标头或以某种特定方式压缩),是否存在用于在不同格式之间进行转换的工具?

  • 我假设在文件系统中,至少/etc/network/interfaces必须进行定制,但是否需要进行更多涉及的更改?

非常感谢您的任何建议...

virtualization xen amazon-ec2 user-mode-linux
  • 4 4 个回答
  • 425 Views

4 个回答

  • Voted
  1. Best Answer
    user36387
    2010-03-02T08:49:25+08:002010-03-02T08:49:25+08:00

    VirtualBox 具有“VBoxManage convertdd”,可以将原始磁盘映像(使用 dd 生成)导入到它自己的特殊 .vdi 格式中。我相信 VMWare 等也有类似的东西。

    各种虚拟化产品通常具有一些内核扩展(如 VirtualBox 来宾扩展),它们使来宾操作系统能够以各种方式与主机协作,安装这些通常很有帮助。

    开放虚拟化格式 (OVF) 似乎正在获得支持 - 请参阅http://en.wikipedia.org/wiki/Open_Virtualization_Format了解介绍。

    • 4
  2. Mark
    2016-09-22T07:57:05+08:002016-09-22T07:57:05+08:00

    与 OP 不同,我使用的是 Centos7,主要的管理程序是 HyperV。也就是说,其中大部分将适用于其他发行版和虚拟机管理程序。

    我已将 systemd-networkd 配置为在任何连接的接口上默认为 DHCP,并且我没有遇到网络配置问题。虽然我喜欢 systemd-networkd 的强大功能,但对于 DNS,它需要 systemd-resolved - 这与传统的解析器行为大相径庭。我坚持……暂时。

    我遇到的问题是内核模块。首先,没有安装用于各种管理程序的许多模块。其次,dracut(它在 centos 和其他一些发行版上构建 initramfs)着眼于当前的硬件,并且只包括与该硬件一起工作的模块。可以通过 强制它包含其他模块--add-drivers,但您必须知道模块的确切文件名。对于任何给定的管理程序,您可能需要虚拟存储和虚拟网络模块,可能还需要一个气球内存驱动程序等。

    在为 dracut 设计参数时,请注意 adracut module和 a之间的区别kernel module。

    可以在http://man7.org/linux/man-pages/man8/dracut.8.html#OPTIONS找到 dracut 选项列表;我最终得到了类似于以下内容的内容(注意,我不确定内核模块名称是否准确 - 如果它们是仅用于 HyperV):

    dracut --kver 0 -f --xz -a "busybox mdraid" -o "bootchart dash plymouth btrfs dmraid fcoe-uefi iscsi nbd biosdevname" --no-kernel --add-drivers "hv_storvsc hv_vmbus hv_utils"

    另一个答案建议使用 OVF 格式。IIRC OVF 导入 HyperV 需要下载一个插件,该插件需要一个非常旧的 .NET 版本......换句话说,如果 HyperV 将成为您的 vm 最常用的管理程序,那将是痛苦的。

    幸运的是,许多虚拟机管理程序都可以导入 VHD,并且可以通过 qemu-img 从 raw、qcow2 等轻松创建。

    • 2
  3. Grzegorz Wierzowiecki
    2011-01-04T15:36:07+08:002011-01-04T15:36:07+08:00

    另一种方式,可能是直接附加分区。

    在qemu中,它只是在命令行中。

    在 VirtualBox,您必须按照 VirtualBox 用户手册第 9 章中所述的步骤 - “高级存储配置”小节:http: //www.virtualbox.org/manual/ch09.html#id504534看起来或多或少像这样:

    VBoxManage internalcommands createrawvmdk -filename /path/to/file.vmdk -rawdisk /dev/sda
    VBoxManage internalcommands createrawvmdk -filename /path/to/file.vmdk -rawdisk /dev/sda -register
    VBoxManage storageattach MyVM --storagectl "IDE Controller" --port 0 --device 0 --type hdd --medium /path/to/file.vmdk
    

    当然/dev/sda可以更改为任何块设备,尤其是分区(可能在 LVM2 上)。

    在 VMWare 上,也可以直接附加分区或磁盘。

    多亏了这一点,在这样的配置中,您甚至可以使用相同的安装从一个 VM切换到另一个 VM。

    • 0
  4. totaam
    2012-01-01T11:41:17+08:002012-01-01T11:41:17+08:00

    你知道这个根文件系统站点吗?那里的所有文件系统最初都是为与 UML 一起使用而开发的,但它们应该与任何虚拟化解决方案一起使用。但是请注意,没有安装引导加载程序,因为映像是由单个循环安装的磁盘(没有分区表)组成的。您仍然可以使用其-kernel命令行选项使用 kvm 引导它们,对于其他图像,您将需要引导另一个映像(也许是恢复 cd/image?)并自己安装引导加载程序。显然,您可能必须使用相关工具将此原始格式转换为您需要的任何格式(vdi/vmware/..)。如果您想自己创建文件系统,则包含这些脚本。

    • 0

相关问题

  • 哪些 939 插槽芯片支持 AMD-V?

  • Windows Server 2008 Hyper-V 虚拟化服务器的最佳 RAID 配置?

  • VirtualBox 上 Ubuntu 的访客优化技巧 [关闭]

  • 外部硬盘上的 virtualbox 虚拟硬盘驱动器(Vista 主机上的 ubuntu 客户机)

  • 物理机重启时自动重启虚拟机(VMWare)

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve