背景
我正在下载 cuda-toolkit-10-1,遵循以下指南https://docs.nvidia.com/cuda/wsl-user-guide/index.html,包括将我的 WSL 从版本 1 更新到版本 2。在安装接近尾声apt-get install
时,我的内存可能在解压时耗尽,并显示错误消息:
dpkg: error processing archive /tmp/<cuda_vers>.deb: error setting permissions of <file.so>: Read-only file system
错误代码 (2)。
我释放了一些内存并尝试通过 apt-get 重新安装,但出现错误消息dpkg was interrupted, you must manually run 'sudo dpkg --configure -a to correct the problem
,我尝试失败dpkg: error: unable toa ccess dpkg status area: Read-only file system
。
问题
我现在无法运行大多数命令。以下是一些错误消息及其各自的错误消息
ls
::-bash: /bin/ls: Input/output error
df -u
Sorry, command-not-found has crashed! Please file a bug report..., Python version: ...
请告诉我可以采取哪些措施来解决此问题,或者还需要哪些其他信息。
答案1
大概现在来帮助最初的提问者已经太晚了,但我今天遇到了同样的问题,在排除故障时发现了这个问题,并且确实修复了我的 WSL 安装,所以我想我应该为找到此页面的其他人留下一些说明。
通常,当您在其上存储越来越多的数据时,WSL 使用的虚拟硬盘 (VHD) 会自动调整大小。但是,如果您的 Windows 计算机空间不足(这就是我身上发生的事情),它就会停止增长,即使您确实有可用空间,它本身也不会增长到超过 256 GB。
如果实际硬盘空间不足:在 Windows 中释放一些空间,然后打开 PowerShell 并运行
wsl --shutdown
以强制 WSL 重新启动。 (默认情况下,即使您关闭了所有终端窗口,WSL 仍会在后台运行,因此您必须手动执行此操作。)下次打开 WSL 终端时,VHD 应该会自动增长,并且您应该能够再次正常访问文件系统。如果您的实际硬盘驱动器上有空间,但 VHD 已达到 256 GB 限制,您可以请遵循 WSL 文档中的这些说明手动调整图像大小,然后重新启动 WSL。
追赶这个可能是个好主意e2fsck
。 (就我而言,它没有报告任何错误,但最好保持安全。)
答案2
通常,文本“输入/输出错误”意味着EIO
发生了错误。这通常表明磁盘或文件系统有问题。对于您的情况,它可能是 WSL 的模拟文件系统,也可能是您的实际硬盘。您还可以获得“只读文件系统”这一事实支持了这一点,因为 ext4 在检测到完整性问题时将您的文件系统挂载为只读。
我首先运行磁盘检查在您的系统上检查您的实际硬盘是否正常。如果是这样,您将需要sudo e2fsck -p
在驱动器上运行,并且还需要指定设备。您可以通过运行sudo dmesg -n
并查找设备(例如,如果您看到sda
有 I/O 错误,则使用/dev/sda
)或通过运行sudo file -sL /dev/sd*
并查找指定了 ext4 文件系统的设备来查找设备。
如果您的系统严重损坏以至于无法找到设备或运行e2fsck
,那么您需要重新安装 WSL 系统。