硬盘已变为只读。fsck,下面列出的一些其他解决方案不起作用

硬盘已变为只读。fsck,下面列出的一些其他解决方案不起作用

我是 Linux 新用户,使用的是 Ubuntu Desktop 22.04.03 LTS。为了尝试 Linux,我首先在 256GB nvme SSD 上安装了 Windows 10,并在笔记本电脑(Lenovo Legion Y540)的 1TB 硬盘上创建了 495 GB 默认分区,用于双启动。使用一个月后,我确信我可以毫无问题地将其安装为我的唯一操作系统,但分区问题加上我的理解不足,导致了问题。即使按照此处类似帖子中的许多步骤操作,我的硬盘现在仍卡在只读状态。

起初,我的主要错误是没有识别出“擦除磁盘”选项,它只删除了笔记本电脑上选定的安装驱动器上的所有文件和分区。结果,我只剩下之前用于 Windows 的剩余数据分区和旧版 Ubuntu 安装。如果我没记错的话,我至少能够从数据中读取和写入,而我没有检查旧的 Ubuntu 分区。我从数据中删除了文件,在查找问题后安装了 gparted。我无法扩展驱动器,因为数据被 UEFI 分区与额外的 Ubuntu 分开。一共有 4 个分区,一个用于 Windows 的剩余分区、数据、fat32 UEFI 和 ext4 旧版 Ubuntu 安装。我删除了前 3 个分区,使用 gparted 将第四个分区移至驱动器的开头并占用所有空间,但它不允许我在驱动器开头使用 3MB。我不管怎样继续。从那时起,我的驱动器一直停留在只读模式。此后,我重新安装了几次 nvme 主 ubuntu,最后希望它能够得到修复,在弄清楚“擦除磁盘安装”只会从驱动器中删除所有分区后,使用硬盘上的相同分区重新安装(从本段开始,我已按执行顺序列出了所有操作)。这删除了所有分区,并为此额外的 Ubuntu 安装设置了分区以使用整个驱动器。但驱动器仍然处于只读模式。当我尝试从主 nvme Ubuntu 或额外的硬盘 ubuntu 写入时,硬盘驱动器是只读的。我尝试使用该sudo fsck命令(因为仅运行 fsck 会出现“权限被拒绝”)。它给了我一个驱动器安装错误,在此处重现。

e2fsck 1.46.5 (30-Dec-2021)
/dev/nvme0n1p2 is mounted.



WARNING!!!  The filesystem is mounted.   If you continue you ***WILL***
cause ***SEVERE*** filesystem damage.


Do you really want to continue<n>? no
check aborted.
fsck.fat 4.2 (2021-01-31)

使用 gparted,我卸载了分区(并且无法重新挂载),当时称为 /dev/sda4(我替换 Windows 的主要安装称为 /dev/nvme0n1)。之后我运行sudo fsck /dev/sda4,它输出了一些代码,这些代码无法准确重现,因为这是在我在硬盘上执行“擦除磁盘安装”之前完成的,但它本质上返回了一个干净的结果。在占用整个硬盘的新额外 Ubuntu 安装之后使用相同的命令给出了类似的结果。

然后我尝试格式化整个磁盘(速度很慢,全部重写为 0)。但几个小时后,写入速度在运行约 5 个小时后从 37MB/s 降至 15MB/s,我对此进行了检查,从一些论坛帖子中,大家一致认为取消格式化并进行快速格式化不会造成任何损害。这样做后,我发现硬盘仍然是只读的。然后我发现 ubuntu 的全新磁盘安装删除了所有分区并清除了所有数据,然后安装了 Ubuntu。我这样做是希望它能修复文件系统。它确实安装了,但此后驱动器仍然是只读的。硬盘上全新安装后的分区是 /dev/sda2。用于它的命令是sudo fsck /dev/sda2,本质上给出输出 clean。我无法重现这个结果,这篇文章的最后一部分将给出现在使用的所述命令的输出。在此之前,使用的其他步骤是使用sudo fdisk -f /dev/sda2 command。根据记忆,它打印了块 1、块 2……直到块 5 的内容和其他一些文本。那时我还在不断反复试验,没有发布论坛帖子的计划,也没有保存代码的先见之明。

按照另一个指南,我在恢复模式下加载了额外的硬盘驱动器 ubuntu install,并在该文件系统上运行了 fdisk。它给了

fsck from util-linux 2.37.2
/dev/sda2 is mounted.
e2fsck: Cannot continue, aborting.

Finished, please press enter.

请注意,这段内容不是复制粘贴的,在我输入的时候可能存在一些间距问题。

我相信恢复模式下 fsck 的真正目的是能够在正在使用的驱动器上运行它。但这行不通。

至于sudo fsck /dev/sda2现在从我的主 SSD 安装运行命令,我的硬盘安装分区已被卸载(并且无法安装),输出是

Be careful before using the write command.

The device contains 'ext4' signature and it will be removed by a write command. See fdisk(8) man page and --wipe option for more details.

Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x9ce09f40.

Command (m for help)

我很高兴能够最终修复此驱动器,以便我可以将其用于基本用途,并且按照最初的意图,我不打算在修复驱动器后弄乱分区,因为我不了解它。我希望我可以在这里获得所需的帮助。之后,我希望卸载硬盘上的额外 Ubuntu,并在卸载磁盘上当前的 Ubuntu 后将该磁盘与我唯一的主 Ubuntu 安装一起使用。那是以后的事,但明确的步骤将有助于避免再次出现意外问题。

编辑:我按了 m 寻求帮助。结果


  DOS (MBR)
   a   toggle a bootable flag
   b   edit nested BSD disklabel
   c   toggle the dos compatibility flag

  Generic
   d   delete a partition
   F   list free unpartitioned space
   l   list known partition types
   n   add a new partition
   p   print the partition table
   t   change a partition type
   v   verify the partition table
   i   print information about a partition

  Misc
   m   print this menu
   u   change display/entry units
   x   extra functionality (experts only)

  Script
   I   load disk layout from sfdisk script file
   O   dump disk layout to sfdisk script file

  Save & Exit
   w   write table to disk and exit
   q   quit without saving changes

  Create a new label
   g   create a new empty GPT partition table
   G   create a new empty SGI (IRIX) partition table
   o   create a new empty DOS partition table
   s   create a new empty Sun partition table


Command (m for help): i
No partition is defined yet!

Command (m for help): i /dev/sda2
No partition is defined yet!

Command (m for help): w

The partition table has been altered.
Calling ioctl() to re-read partition table.
Re-reading the partition table failed.: Invalid argument

The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or partx(8).

我现在将重新启动以查看是否解决了任何问题。

編輯2:一切都乱了。我现在加载了 GNU GRUB 版本 2.06

使用boot给出以下

error: you need to load the kernel first.

编辑3:在反复试验的基础上,查看了相关的在线帖子和解决方案,在采取行动之前仔细检查以试图理解,我尝试重新启动我的笔记本电脑,自从关闭笔记本电脑并按照上文提到的重新启动后,我就无法再这样做了。编辑編輯2段。我得出结论,在每个打印的分区上使用 ls 然后 ls 找到 linux 安装后,我的 linux 安装在 SSD 上 (hd1, gpt2)。基于无法控制的情况,我的第一个 linux 安装,双启动,是在硬盘上而不是 SSD 上,硬盘驱动器的名称为 /dev/sda,我认为 nvme 是 /dev/nvme0n1,linux 安装是 /dev/nvme0n1p2。考虑到这一点,我使用 GNU GRUB 2.06 最终尝试加载内核……借助这个回答的问题,特别是 Saber 得票最多的答案,我无法退出 grub + 你需要先加载内核

linux (hd1,gpt2)/boot/vm 

(我按下 Tab 键,得到一个代码)。然后我root=/dev/nvme0n1p2在打印的代码后面输入一个空格,为了结束我绝望的下行楼梯,我重新登录。

然后,按照答案的其余部分,我运行了命令sudo update-grub。这有效,但是,下一个命令grub-install /dev/nvme0n1(特定于我的设备)无效。因此,我使用了在https://help.ubuntu.com/community/Boot-Repair

这解决了无意中创建的问题编辑編輯2这篇文章的部分内容。

现在,我的硬盘驱动器(如 gparted 中所示)有一个用于 uefi 的 fat32 分区和一个未知格式的分区;我已将其格式化为 ext4,并且可以检测到,但这又引出了最初的问题:它仍然是只读的。任何帮助都将不胜感激。

答案1

我重新获得了访问权限。

我在磁盘中将硬盘格式化为 ext4(不需要快速、慢速模式)。然后再次对硬盘进行读写操作,使用检查发现$ ls -l /dev/sda1硬盘分区现在是 sda1。结果显示

brw-rw---- 1 root disk 8, 1 Dec  6 12:12 /dev/sda1

这表明了读/写状态。然后我$ nautilus从终端启动了 Nautilus 文件管理器,因为它似乎是我系统上的文件管理器。在那里,我更改了用户所有权的权限(例如,如果我的用户名是 Ratconned),以及创建和删除文件的权限。对于文件夹中的附件文件,我更改了所有者和组的权限以创建和删除文件,对于文件,我更改了所有者和组的权限以读写(目前不确定授予组权限的含义,但我是唯一使用这台笔记本电脑的人)。

相关内容