0

I have searched for like 10+ hours for this issue and have not found a fix so here I am :/

Long story short I corrupted my main linux boot drive (which has luks encryption) by downsizing it on a live usb boot to make more space for a dual boot windows partition.

Everything was fine till I booted into my pc where I decrypt my drive like normal but after my disk decrypted, I was met with a initramfs console with no log just (initramfs)

I have gone through multiple methods but here is what I can deduct from my investigation:

*My drive has a valid luks header (I know the password) *There are valid superblocks on the drive *Typing exit in initramfs just says cant find /dev/ (etc...) with no hints

I will write some results to commands that may help solve this issue. I moved to linux like a few weeks ago so this is new to me :/

I am typing these commands on a live boot btw. My main linux partition is on sda3. Hope this helps.

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:~# file -s /dev/sda3

/dev/sda3: LUKS encrypted file, ver 2 [, , sha256] UUID: 077248fb-b2bf-4ddb-9762-3c69af031c2c

When trying to decrypt and open the partition on a live boot file manager it returns this:

"Error mounting /dev/dm-1 at /media/pop-os/<8num>-<4num>-<4num>-<4num>-<12num>: wrong fs type, bad option, bad superblock on /dev/mapper/data-root, missing codepage or helper program, or other error."

I still have the header so it should be recoverable but if I can't recover the whole thing, I'd like to know how to get my /home dir. Thank you for your time.

2
  • Specifically, you probably destroyed your existing filesystem with the 6th command: sudo mke2fs [...]. It could theoretically be recovered, but then the first thing you should do now is stop running destructive commands and make a bit-by-bit backup copy using dd. Preferably also a second backup copy. Than continue working one of of those copies rather than on the original drive. – Jaap Joris Vens Oct 21 '20 at 18:03
  • 1
    The option -n of mke2fs, according to the man page, "Causes mke2fs to not actually create a filesystem, but display what it would do if it were to create a filesystem. This can be used to determine the location of the backup superblocks for a particular filesystem, so long as the mke2fs parameters that were passed when the filesystem was originally created are used again. (With the -n option added, of course!)" – telcoM Oct 22 '20 at 4:18
1

Your mke2fs -n run indicates the encrypted volume /dev/mapper/luks-077248fb-b2bf-4ddb-9762-3c69af031c2c contains a LVM physical volume, not simply a filesystem. So the next steps after unlocking the encrypted volume (using cryptsetup luksOpen manually, if necessary) should be to scan for LVM components and then activate them if they are in good condition.

Since you said you had corrupted the volume by shrinking it, it may be detectable but probably will not activate automatically, as LVM and associated udev automation will normally only auto-activate VGs with no errors in them. So, in the live environment, you will need the following commands:

vgscan
vgchange -Pay --activationmode partial

These will tell the system to look for LVM volume groups (including on the just-unlocked encrypted volume) and activate them even if they seem to have parts missing. You may see diagnostic, warning and/or error messages from these commands.

If the VG refuses to activate because the LVM physical volume claims to be bigger than the LUKS encrypted volume it's contained in, you may need to first re-extend the LUKS container to the size it was before you shrunk it.

If these commands are successful, there should be at least one LVM logical volume available for mounting, depending on how your system was configured. Use the command lvs and/or lsblk to see them: you can address LVM logical volumes as either /dev/<VG name>/<LV name> or /dev/mapper/<VG name>-<LV name>.

Based on the error message of the live boot file manager, I would guess that the name of your LVM volume group is data and the root filesystem LV within it is named root.

If that's true, then the next step should probably be to confirm the filesystem type, as it might not be ext4 but xfs or possibly btrfs, depending on your Linux distribution and choices you might have made at installation time. So:

file -Ls /dev/mapper/data-root

If the filesystem type is ext4, then the response should be similar to:

/dev/mapper/data-root: Linux rev 1.0 ext4 filesystem data, UUID=12345678-abcd-1234-abcd-123456789abcd, volume name [...]

If the filesystem type is xfs, the response should be similar to:

/dev/mapper/data-root: SGI XFS filesystem data (blksz 4096, inosz 512, v2 dirs)

If the filesystem type is not ext4, ext3 or ext2, then e2fsck and any other filesystem tools specific to the ext2/ext3/ext4 filesystem type family will not be applicable. Trying to use them might be harmful.

If the file command fails to identify the filesystem type, it might be because the filesystem is corrupted - or it might be simply because your live Linux environment is older/more limited than your actual installation and does not have full support for that particular filesystem type.

If the filesystem type can be successfully identified, you should be able to try and mount your filesystem with:

mount -o ro /dev/mapper/data-root /mnt    #or whatever you want to use as a mount point

If you had more than one LVM logical volume, all of them should now be mountable the same way.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.