Date: Fri, 2 Dec 2005 03:44:36 +1300 From: Doug H <illusion65@gmail.com> To: freebsd-questions@freebsd.org Subject: Rebuilding a corrupt disklabel Message-ID: <57750f110512010644g7fb74426j7aba31511f5d11ce@mail.gmail.com>
next in thread | raw e-mail | index | archive | help
I tried posting this 12 hours ago, but haven't seen it flow through the list... reposting with updates: One of my disks has 3 active partitions: FreeBSD 5.4-RC3, NTFS (not-bootable), and FreeBSD 6.0-RELEASE. I developed problems while installing FreeBSD 6.0. Installation went well, but when I rebooted, nothing was bootable on that disk. I verified that th= e boot record (using boot0) seems okay: slice table is fine (40G, 80G, 40G, and 40G unused on 200G drive). Using bsdlabel, I confirmed that slice 3 (FreeBSD 6) is fine, but for some reason I'm not concerned with now, is unbootable. PROBLEM: bsdlabel showed me that slice 1 (FreeBSD 5.4) is damaged and only partition c existed and was incorrect. I do not have & cannot find a written copy of my disklabel for that disk (a good suggestion to *strongly emphasize* in the installation manual for newbies!). I did recall that ad1s1a ('/') was 512M, so I was able to write a label and mount the root partition from a "Fixit" shell. QUESTIONS: How can I rederive the remaining disklabel for that disk? Could a copy possibly be stored somewhere on root if I didn't do it myself when building the system? I have not tried to boot from that root partition. Trying several possible labels has resulted in "incorrect super block" errors for the partitions after 'a'. Random guessing will be very tedious. My research has indicated that I could binary grep the raw ad1s1c partition to locate the magic numbers for the super blocks and derive the partitions from that information. I even found a little 'c' language program Peter Dufault posted 11 years ago on this list to locate magic numbers. My hope is that in 11 years of development, FreeBSD will have created a clever tool to aid this process! I've found enough entries while searching these lists to think that the effort would be justified and much appreciated. I found the value of FS_UFS2_MAGIC =3D 0x19540119. I presume that's what I should search for - it's a UFS2 filesystem. Having only a "Fixit" shell is somewhat limiting. I tried 'grep -ab -f pat /dev/ad1s1a' on a FreeBSD 5.1 installation, but it crashed with a swap error. The 'pat' file has the 4-byte magic number. It works with a small test file I create= d using vi. Thanks, Doug
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?57750f110512010644g7fb74426j7aba31511f5d11ce>