You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WSL2中启动Cuttlefish时Crosvm出现目录挂载错误

解决WSL2 Ubuntu 22.04上Cuttlefish启动时Crosvm挂载失败问题

问题分析

报错中cannot mount '/usr/lib' as '/var/empty/usr/lib' with flags 0x1001: Invalid argument,其中0x1001对应MS_BIND(0x1000) | MS_RDONLY(0x1),即尝试创建只读绑定挂载。WSL2默认的9p文件系统对这类高级挂载特性支持有限,这是触发问题的核心原因。

可行解决方案

1. 验证并调整内核挂载配置

确保你重建的WSL2内核开启了以下关键配置项:

  • CONFIG_BIND_MOUNT=y
  • CONFIG_MOUNT_NAMESPACES=y
  • CONFIG_SYSFS=y
  • CONFIG_TMPFS=y

如果编译内核时遗漏了这些选项,按以下步骤重新编译替换:

  1. 在内核配置文件中启用上述选项
  2. 执行make -j$(nproc)编译内核
  3. 将生成的bzImage复制到Windows用户目录下(对应.wslconfig指定的内核路径)
  4. 重启WSL:wsl --shutdown后重新启动实例

2. 手动预挂载目标目录

在启动Cuttlefish前,拆分挂载步骤绕过组合flags限制:

# 创建目标目录(若不存在)
sudo mkdir -p /var/empty/usr/lib
# 先创建可写绑定挂载
sudo mount --bind /usr/lib /var/empty/usr/lib
# 转为只读挂载
sudo mount -o remount,ro /var/empty/usr/lib

完成后再执行启动命令:

HOME=$PWD ./bin/launch_cvd --daemon

3. 临时绕过Minijail挂载逻辑

添加启动参数跳过Minijail的挂载校验(仅用于测试,不推荐长期使用):

HOME=$PWD ./bin/launch_cvd --daemon --disable_minijail

4. 替换为适配WSL2的Crosvm版本

部分Crosvm版本与WSL2文件系统兼容性不佳,尝试编译官方适配版本:

git clone https://android.googlesource.com/platform/external/crosvm
cd crosvm
cargo build --release --target x86_64-unknown-linux-gnu
sudo cp target/x86_64-unknown-linux-gnu/release/crosvm /usr/bin/

内容的提问来源于stack exchange,提问作者Alek Vasek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 16:38:09