Date: Wed, 14 Jun 2006 09:19:55 +0200 From: Alexander Leidinger <Alexander@Leidinger.net> To: Eric Anderson <anderson@centtech.com> Cc: freebsd-hackers@freebsd.org Subject: Re: fdisk partition / disklabel recovery (help!) Message-ID: <20060614091955.16e3e61mo4gcw4sw@netchild.homeip.net> In-Reply-To: <54950.10.20.200.100.1150232553.squirrel@10.20.200.100> References: <61325.10.20.200.100.1150219994.squirrel@10.20.200.100> <20060613225316.53d939a3@Magellan.Leidinger.net> <54950.10.20.200.100.1150232553.squirrel@10.20.200.100>
next in thread | previous in thread | raw e-mail | index | archive | help
Quoting Eric Anderson <anderson@centtech.com> (from Tue, 13 Jun 2006 =20 16:02:33 -0500 (CDT)): > Alexander Leidinger said: >> Quoting "Eric Anderson" <anderson@centtech.com> (Tue, 13 Jun 2006 12:33:1= 4 >> -0500 (CDT)): >> >>> >From the subject, you probably already know my dilemma. After booting >>> a >>> linux livecd (I'll refrain from naming the distro), my laptop no longer >>> has any partitions. Now, the drive was not newfs'ed with any other OS, >>> so >>> I believe only the boot loader and partitioning are messed up. I see an >>> ffsrecov tool, that could probably help me, but I want to make sure I >>> don't make any bad decisions here. >>> >>> So, my partitioning was something like: >>> ad0 >>> ad0s1 DOS >>> ad0s2 ?? >>> ad0s3 ?? >>> ad0s4 Linux root / swap >> >> For this particular reason I always print out the layout. Got hit once, >> wrote a program to recover (only understands ufs1 disklabels, and >> stopped to work after a particular 4.x... I assume it's because of a >> blocksize/fragsize change introduced then), learned my lesson. > > I'll probably look into writing such a tool, since this is very painful. := ( You can have a look at =20 http://www.leidinger.net/FreeBSD/ffsrescue.tar.gz to get an idea (I =20 think some offsets are wrong now for UFS1, and UFS2-labels aren't =20 searched) what to do. > Printing is a good idea. :) > > >>> FreeBSD was on either ad0s2 or ad0s3, I can't recall which, but I >>> believe >>> it was ad0s3. I had 3 partitions (/, /alt, /home) and a swap. >>> >>> I'm running the ffsrecov tool now, but it appears to be very slow >>> chugging >>> through the disk. >> >> There are ways to speed such a search up. I assume my own tool tries to >> be too smart (or it's not smart enough, at least it uses wrong >> invariants) for the disklabels. And it only prints assumptions about >> the start of a FreeBSD slice, not about other slice types. > > Is there a good way to identify the bsdlabel, or other partitioning > information from a hexdumped output? You have to look at the superblock magic number at specific offsets. =20 Have a look at the above mentioned code to see what to do for UFS1. It =20 should give you a hint what you want to search for regarding UFS2. Regarding the superblocks: if you remember the blocksize/fragsize you =20 used, you can newfs a md on another system and have a look at which =20 offsets superblocks are generated. For UFS1 the first one is in block =20 16, the second one in block 32. So if you find two superblocks with a =20 distance of 16 blocks, the start of a partition is probably 16 blocks =20 before the first superblock. If you know which partition belongs to =20 which slice (AFAIR "last mounted on" is available in the superblock), =20 you should be able to find the right offsets for the slices. I don't =20 know the numbers for UFS2 out of my head. >>> Is there any additional ways I can find the partitioning scheme, or find >>> the bsdlabel's on the disk? Does anyone know of a command line >>> (dd+some >> >> Try to remember them. If you know how large the partitions have been, >> you just have to write the MBR and everything should work. If nothing >> works, you remembered wrong. > > I have some general guesses as to the sizes. Do you know if any of that > data would be in a dmesg,sysctl,etc type output? I have much of that > logged to an external site I can look at for the details.. Maybe in some geom related output, but I'm not sure. >>> tools/perl/etc) way to find the bsdlabels? >>> >>> Once the bsdlabels are found, then what? >>> >>> Also - if I rewrite the bsdlabel exactly as it was before, I should be >>> in >>> business, correct? >> >> The bsdlabels are still there I assume, it sounds just like your MBR >> got hosed. > > fdisk reports nothing, so I'm sure I just need to put the fdisk > partitioning back. Problem is, I don't know the offsets. I didn't knowed them either. But I remembered the size of the first =20 partition, so I was able to recover at least the first 2 partitions =20 out of my head at that time. Bye, Alexander. --=20 Selling GoodYear Eagle F1 235/40ZR18, 2x 4mm + 2x 5mm, ~150 EUR you have to pick it up between Germany/Saarland and Luxembourg/Capellen http://www.Leidinger.net Alexander @ Leidinger.net: PGP ID =3D B0063FE7 http://www.FreeBSD.org netchild @ FreeBSD.org : PGP ID =3D 72077137
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20060614091955.16e3e61mo4gcw4sw>