我已经搜索了大约 10 多个小时来解决这个问题,但还没有找到解决方案,所以我在这里:/
长话短说,我通过在实时 USB 启动上缩小其大小,为双启动 Windows 分区腾出更多空间,从而损坏了我的主 Linux 启动驱动器(具有 luks 加密)。
一切都很好,直到我启动到我的电脑,像平常一样解密我的驱动器,但在我的磁盘解密后,我遇到了一个没有日志的 initramfs 控制台(initramfs)
我已经尝试了多种方法,但我可以从调查中推断出以下内容:
*我的驱动器有一个有效的 luks 标头(我知道密码) *驱动器上有有效的超级块 *在 initramfs 中键入 exit 只是说找不到 /dev/ (等等...),没有任何提示
我会将一些结果写入可能有助于解决此问题的命令。几周前我搬到了 Linux,所以这对我来说是新的:/
顺便说一句,我正在实时启动中输入这些命令。我的主要 Linux 分区位于 sda3 上。希望这可以帮助。
root@pop-os:~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 2G 1 loop /rofs
sda 8:0 0 223.6G 0 disk
├─sda1 8:1 0 498M 0 part
├─sda2 8:2 0 4G 0 part
├─sda3 8:3 0 146.5G 0 part
│ └─luks-077248fb-b2bf-4ddb-9762-3c69af031c2c 253:0 0 146.5G 0 crypt
├─sda4 8:4 0 4G 0 part [SWAP]
└─sda5 8:5 0 67G 0 part /media/pop-os/c
sdb 8:16 0 1.8T 0 disk
├─sdb1 8:17 0 16M 0 part
└─sdb2 8:18 0 1.8T 0 part
sdc 8:32 1 14.5G 0 disk
├─sdc1 8:33 1 2.1G 0 part /cdrom
├─sdc2 8:34 1 4M 0 part
└─sdc3 8:35 1 12.3G 0 part /var/crash
root@pop-os:~# sudo blkid | grep LUKS
/dev/sda3: UUID="077248fb-b2bf-4ddb-9762-3c69af031c2c" TYPE="crypto_LUKS" PARTUUID="fa8127eb-222e-48ab-93ba-23fde42b29bf"
root@pop-os:~# sudo blkid | grep LVM2
/dev/mapper/luks-077248fb-b2bf-4ddb-9762-3c69af031c2c: UUID="FMjQHW-a72R-7Z4K-37pV-dioz-vvIb-QJsKhm" TYPE="LVM2_member"
root@pop-os:~# sudo fdisk -l /dev/sda3
Disk /dev/sda3: 146.5 GiB, 157286400000 bytes, 307200000 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
root@pop-os:~# cryptsetup luksDump /dev/sda3
[luks header in full]
root@pop-os:~# sudo mke2fs -n /dev/mapper/luks-077248fb-b2bf-4ddb-9762-3c69af031c2c
mke2fs 1.45.5 (07-Jan-2020)
/dev/mapper/luks-077248fb-b2bf-4ddb-9762-3c69af031c2c contains a LVM2_member file system
Proceed anyway? (y,N) y
Creating filesystem with 38395904 4k blocks and 9601024 inodes
Filesystem UUID: 5eedce5b-bea9-405e-85ed-0316ea3ba13c
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872
root@pop-os:~# 文件 -s /dev/sda3
/dev/sda3: LUKS encrypted file, ver 2 [, , sha256] UUID: 077248fb-b2bf-4ddb-9762-3c69af031c2c
当尝试解密并打开实时启动文件管理器上的分区时,它会返回以下内容:
“在 /media/pop-os/<8num>-<4num>-<4num>-<4num>-<12num> 安装 /dev/dm-1 时出错:文件系统类型错误、选项错误、/dev/ 上的超级块错误映射器/数据根,缺少代码页或帮助程序,或其他错误。”
我仍然有标头,所以它应该是可恢复的,但如果我无法恢复整个内容,我想知道如何获取我的 /home 目录。感谢您的时间。
答案1
您的mke2fs -n
运行表明加密卷/dev/mapper/luks-077248fb-b2bf-4ddb-9762-3c69af031c2c
包含 LVM 物理卷,而不仅仅是文件系统。因此,解锁加密卷(如有必要,手动使用)后的下一步cryptsetup luksOpen
应该是扫描 LVM 组件,然后在状态良好时激活它们。
由于您说您通过收缩卷损坏了卷,因此它可能是可检测到的,但可能不会自动激活,因为 LVM 和相关的udev
自动化通常只会自动激活 VG,而不会出现错误。因此,在实际环境中,您将需要以下命令:
vgscan
vgchange -Pay --activationmode partial
这些将告诉系统查找 LVM 卷组(包括刚刚解锁的加密卷)并激活它们,即使它们似乎缺少某些部分。您可能会看到来自这些命令的诊断、警告和/或错误消息。
如果 VG 由于 LVM 物理卷声称大于其所包含的 LUKS 加密卷而拒绝激活,则您可能需要首先将 LUKS 容器重新扩展至收缩之前的大小。
如果这些命令成功,则应该至少有一个可供安装的 LVM 逻辑卷,具体取决于系统的配置方式。使用命令lvs
和/或lsblk
查看它们:您可以将 LVM 逻辑卷寻址为/dev/<VG name>/<LV name>
或/dev/mapper/<VG name>-<LV name>
。
根据实时启动文件管理器的错误消息,我猜测您的 LVM 卷组的名称是data
,其中的根文件系统 LV 的名称是root
。
如果这是真的,那么下一步可能应该是确认文件系统类型,因为它可能不是,ext4
但xfs
也可能是btrfs
,具体取决于您的 Linux 发行版以及您在安装时可能做出的选择。所以:
file -Ls /dev/mapper/data-root
如果文件系统类型为ext4
,则响应应类似于:
/dev/mapper/data-root: Linux rev 1.0 ext4 filesystem data, UUID=12345678-abcd-1234-abcd-123456789abcd, volume name [...]
如果文件系统类型为xfs
,则响应应类似于:
/dev/mapper/data-root: SGI XFS filesystem data (blksz 4096, inosz 512, v2 dirs)
如果文件系统类型不是ext4
、ext3
或ext2
,则以及特定于//的e2fsck
任何其他文件系统工具ext2
ext3
ext4
系统类型系列将不适用。尝试使用它们可能会有害。
如果该file
命令无法识别文件系统类型,可能是因为文件系统已损坏 - 或者可能只是因为您的实时 Linux 环境比您的实际安装更旧/更受限制,并且不完全支持该特定文件系统类型。
如果可以成功识别文件系统类型,您应该能够尝试使用以下命令挂载文件系统:
mount -o ro /dev/mapper/data-root /mnt #or whatever you want to use as a mount point
如果您有多个 LVM 逻辑卷,那么所有这些逻辑卷现在都应该可以以相同的方式安装。