我最近在双启动笔记本电脑上做了一件蠢事,我压缩了整个卷以便为 Linux 分区腾出空间。出于某种原因,Windows 允许我压缩C:\ntldr
。现在我需要解压它以便 Windows 启动。
以下是我的一些操作限制:
- 我无法访问 BIOS。
- 我无法从 CD/USB/软盘启动。(我通过 PXE 安装了 Linux)
- 它没有网络访问权限。
是否有某种方法可以指定 ntfs-3g 驱动程序在安装卷时不应压缩文件,即使它认为应该压缩文件(如果目录被压缩)?
或者,有没有办法使用 ntfsprogs 修改目录的属性?
答案1
好的,我想我已经解决了。问题出在 ntfs-3g 驱动程序上;它太努力地预测用户想要什么。
我通过使用 ntfs-3g 驱动程序安装卷/mnt/windows
,然后将 ntldr 文件从卷中复制出来解决了该问题。
# mount -t ntfs-3g /dev/sda1 /mnt/windows
# cp -p /mnt/windows/ntldr ~/ntldr
# mv /mnt/windows/ntldr{,.bak}
# umount /mnt/windows
然后,我使用 ntfsprogsntfscp
将文件重新复制回文件系统:
# ntfscp -f /dev/sda1 ~/ntldr ntldr
然后,当我ntfsinfo
对它执行此操作时,它不再具有压缩属性。
答案2
您无法从外部驱动器启动,因此无法修复 USB/CD...无法访问网络...嗯...我不知道有什么可以从 Linux 彻底修复它。除了读写之外,NTFS 对任何其他功能的支持(相对而言,直到最近,写入支持也不太可靠)很少,因为 Linux 社区的态度是 NTFS 适用于原生 Windows。
我本来建议使用 VMWare 或 VirtualBox 在 VM 中启动 Windows 并授予其对分区的访问权限;这可以解决问题,但您说您没有网络访问权限来安装 VM 管理程序。
如果您确实需要数据,我唯一能建议的就是物理移除驱动器并将其放入适配器中,以使其作为外部 USB 驱动器在运行 Windows 的计算机上工作,然后对其进行解压缩/从那里运行修复。否则,从备份中恢复...
答案3
问题在于 ntfs-3g 驱动程序;它过于努力地预测用户想要什么。
据我所知,ntfs-3g 按照用户的要求执行了。它压缩了文件,因为用户将目录设置为压缩。
问题实际上在于 ntfcp 不遵循 NTFS 规范。
答案4
(我通过 PXE 安装了 Linux)
它没有网络访问权限。
我很困惑,但是没关系......
在任何机器上安装 Linux 的关键是
- 大多数机器都有某种形式的启动选择
- 启动过程与操作系统无关(因此您可以启动 Windows 以外的其他系统)
鉴于您似乎无法使用所有的“正常”启动向量,我想说,此时拉出驱动器并将其连接到另一台机器。
根据评论进行跟进:
让我们回顾一下:
- 外部启动已过时。这扼杀了使用 USB 记忆棒、CD 修复、实时启动 CD 等的任何机会。
- 可以移除硬盘,但非常不可取
- 在某些情况下可以进行 PXE 启动
因此看起来 PXE(您用来启动和运行双启动的相同方法)将是您最容易的选择。您能找出您使用的 PXE 服务器的地址吗?如果可以,您可能能够安排一些黑客攻击……您需要一台可以充当 PXE 服务器的计算机和一个未连接到任何其他网络的有线集线器。
- 设置 PXE 服务器环境
- 将 PXE 服务器配置为具有与 BIOS 预期相同的地址
- 通过 PXE 启动笔记本电脑
- 为笔记本电脑提供您选择的环境
我不确定您是否可以以这种方式实时启动 Windows CD(我只进行过旧式 DHCP/BOOTP/TFTP 启动,而不是 PXE),但如果可以,您可能能够访问修复控制台,这将是您最好的选择。您的第二个选择是将 Linux 实时启动 CD 放入笔记本电脑,然后尝试从那里修复它,尽管我怀疑您的成功率有限。作为最后的努力,您始终可以将数据迁移到另一台设备上(现在笔记本电脑又可以正常工作了)。