资讯动态

SerenityOS 如何把 QEMU 虚拟机中的文件取到宿主机?

发布时间:2026/9/10 9:40:18 来源:尧图企业网站定制
SerenityOS 如何把 QEMU 虚拟机中的文件取到宿主机【免费下载链接】serenityThe Serenity Operating System 项目地址: https://gitcode.com/GitHub_Trending/se/serenity如果你的 SerenityOS 正在 QEMU 里运行或已经构建完成想拿到虚拟机内部的文件——比如自己写的程序、修改过的配置、测试数据——宿主机和虚拟机之间并没有现成的共享文件夹。Serenity 项目官方文档 TransferringFiles.md 给出了四条互不依赖的取文件路径内置 WebServer 下载、直接挂载_disk_image磁盘镜像、用支持 ext2 的解压缩工具打开镜像、以及在宿主机开 OpenSSH 服务后用 SerenityOS 自带的sftp客户端上传。前提是你已经有一个能在 QEMU 中运行的 SerenityOS 构建本文按文档顺序把每条路径的命令和判断点讲清楚。方法一用内置 WebServer 下载Serenity 自带一个可以延伸到宿主机的 web server。在 SerenityOS 里打开一个新终端进入你想取文件所在的目录执行ws .ws .会为当前工作目录启动一个 WebServer 实例。之后在宿主机浏览器中打开localhost:8000就能看到这个目录的文件列表对应文档中的截图 WebServer_localhost.jpg下载时有一个文档明确提醒的坑有些浏览器会把无法识别的文件按纯文本下载这样文件在系统加载时可能表现为已损坏。如果你不需要在浏览器里预览文档建议改用wget之类的工具按原样as is下载文件。方法二在宿主机挂载 _disk_image 镜像另一条路径是绕过运行中的虚拟机直接在宿主机上挂载 Serenity 的_disk_image。该方式适用于 *nix 系统或在 WSL 内部执行cd Build/${SERENITY_ARCH} mkdir mnt sudo mount -t ext2 _disk_image mnt其中${SERENITY_ARCH}是构建时使用的架构目录名。根据 AdvancedBuildInstructions.mdSERENITY_ARCH支持x86_64、aarch64和riscv64三个取值你的Build/目录下是哪个就cd进哪个。mkdir mnt创建挂载点sudo mount需要管理员权限会把你构建产物里的 ext2 格式磁盘镜像以只读可浏览的形式挂到mnt下之后像访问普通目录一样从中拷出文件。方法三用支持 ext2 的解压缩工具直接打开镜像如果不想挂载文档提到像 7-Zip 这类具备 ext2 支持的工具可以把_disk_image当成普通压缩包直接打开然后提取你需要的文件。文档对 WSL 用户额外给了一条建议如果磁盘镜像放在 WSL 的原生文件系统上文档标注为推荐位置可以在文件资源管理器中手动打开\\wsl$注意它不会显示在网络选项卡里进入对应发行版的网络共享就能直接浏览到镜像文件并用解压缩工具打开。方法四宿主机开 OpenSSHSerenityOS 用 sftp 上传这条路径适合需要在运行中的系统里按网络方式传文件的场景方向是在宿主机架设 OpenSSH 服务器SerenityOS 内的sftp客户端连过去用put把文件推上去。在 SerenityOS 中构建 openssh 端口文档的前置条件是宿主机上已有可用的 OpenSSH serverWindows 和 Linux 宿主机均可自行安装配置以及一个可运行的 SerenityOS 构建。先完整重建一次$ Meta/serenity.sh rebuild-world然后在 SerenityOS 源码根目录下构建并安装 openssh 端口包再启动系统cd Ports cd openssh ./package.sh cd ../.. Meta/serenity.sh run验证 sftp 客户端可用启动后进入 SerenityOS运行courage:~ $ sftp文档给出的预期响应是打印出用法说明以下输出引自文档作为示例结果courage:~ $ sftp usage: sftp [-46aCfNpqrv] [-B buffer_size] [-b batchfile] [-c cipher] [-D sftp_server_path] [-F ssh_config] [-i identity_file] [-J destination] [-l limit] [-o ssh_option] [-P port] [-R num_requests] [-S program] [-s subsystem | sftp_server] destination能看到这段 usage 输出说明 sftp 程序已经就位接下来可以传文件。连接宿主机并传文件文档示例假设宿主机 OpenSSH 服务器 IP 为192.168.0.11、宿主机上存在用户user1且你当前位于要传文件所在的目录SerenityOS 本地用户为anon。示例中的 IP 和用户名是文档给出的假定值替换为你自己宿主机的地址和账户即可courage:~ $ sftp user1192.168.0.11 The authenticity of host (192.168.0.11) cant be established. ECDSA key finger print is SHA256:Iav!m/E0cHJBnzSk0hJEZnBZ2F3LBL4wxhyv4nrfPtU. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes user1s password: Connected to 192.168.0.11上面的指纹和Connected to输出同样引自文档实际连接时指纹会因你的宿主机而异确认提示输入yes后输入宿主机用户密码出现Connected to ...即登录成功。进入会话后常用命令是ls、cd、put [filename]把本地文件传到宿主机、get [filename]和quit输入help可以看更完整的命令选项。两个文档提示的细节有些时刻光标停在原地看起来像没反应其实程序只是在等待下一条指令输入quit或bye会退出。Ports/openssh/ReadMe.md 列出的已知限制包括无 DNS 支持、无 SK/FIDO 支持、无代理支持并假定 SSH2.0。其中无 DNS 支持直接影响这条流程连接宿主机时应使用 IP 地址而不是主机名。选择哪条路径四条路径的适用边界由文档本身决定方法一适合系统正在运行、文件数量少、想在浏览器里直接拿文件的情况但要注意不可识别文件需改用wget原样下载方法二和方法三不需要启动虚拟机直接操作构建产物里的_disk_image适合在宿主机侧批量取文件方法二依赖 *nix/WSL 环境和管理员权限方法三依赖有 ext2 支持的工具方法四走真实网络连接适合需要在运行中的 SerenityOS 里持续传文件的场景但要先完成rebuild-world和 openssh 端口的构建安装且受上述 OpenSSH 客户端限制约束。【免费下载链接】serenityThe Serenity Operating System 项目地址: https://gitcode.com/GitHub_Trending/se/serenity创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价