我正在尝试使用btrfs
文件系统安装 Arch Linux。我正处于安装过程的开始准备我的驱动器,但遇到了问题。
首先,我开始使用以下命令清除之前安装尝试中的所有 GTP 和 MBR 记录:
gdisk /dev/sda
然后我使用命令进入专家模式x
,然后使用z
删除 GTP 和/或 MBR。
然后,我fdisk
使用驱动器上的整个空间(即 119GB)创建一个新分区。
创建分区并写入分区后,我尝试使用以下命令创建文件系统:
mkfs.btrfs /dev/sda1
但我收到一个错误:
/dev/sda1 appears to contain an existing filesystem (btrfs)
怎么会这样呢?我所做的只是创建了一个分区,那么 btrfs 怎么可能已经作为文件系统类型存在呢?
答案1
当您创建分区时,它包含以前存在的任何内容。例如,如果您删除包含文件系统的分区并在完全相同的位置重新创建分区,而没有写入其间的空间,那么您将获得之前存在的完整文件系统。如果新分区与旧分区起始位置相同但更大,您可以继续使用文件系统或(如果文件系统支持)扩展它以填充额外的空间。如果新分区较小,您可以继续使用文件系统 - 但在删除旧分区之前,您需要将其缩小到新分区大小。
因此,这里有一个文件系统,或者可能只是文件系统的开始,是在同一位置启动的分区留下的。许多版本mkfs
拒绝覆盖看似现有的文件系统,因为这通常表明您指定了错误的分区,并且错误可能是灾难性的。如果你想覆盖现有的文件系统,你需要先擦除它的一部分,足以使其无法识别。 Linux 附带了wipefs
这样做的实用程序。
wipefs /dev/sda1
在分区开头将足够的字节(例如几兆字节)清零往往会产生相同的效果。
答案2
使用 dd 我们可以擦除分区表。我记得 dd 取得了成功,而 gdisk 的零功能却失败了。 (确保您已备份数据)。
# dd if=/dev/zero of=/dev/sda bs=512 count=1024