slice-table / partition-table

gs_stoller at gs_stoller at
Thu Dec 22 11:25:14 PST 2005

	I have 2 hard drives on my system.  One (my main drive) has an
 MS-DOS  slice (naturally the first slice) and  3  FreeBSD  slices.
The other drive had 1  OS2  slice (just because an  OS2 CDROM  was used
to slice it up) and 1  MS-DOS  slice.  At one time, I was thinking of
putting the boot program on the second hard drive, and may have done
it with the  CDROM  of  FreeBSD 4.7 .  Recently, while I was running
 MS-DOS  and processing e-mail (trying to remove an attachment from
a letter in order to save it in the  MS-DOS  slice on the second hard
drive) through , I discovered that the  MS-DOS  slice on this
second hard drive was hosed (naturally, that discovery could only be
made while running  MS-DOS ), and verified that fact by trying to go to a directory on that second drive.   MS-DOS  didn't go there but complained, and following that I couldn't see anything on that second drive.
	To investigate this, I rebooted into my  FreeBSD 4.3  slice and
found that the  slice-table  (often called "partition-table") on the second drive was identical to that of the first drive.  In fact, when I tried  fdisk  on each drive, I found the results identical except for the size (# of cylinders) of the drives.  Originally, the second drive's  fdisk  results stated 3 heads and some sectors per cylinder (but I don't recall how many).  I conclude that there is a strong possibility that only the  slice-table  sector has been copied (from the first drive), though I have no idea how this could have happened (though I consider the possible putting of the boot program on the second hard drive as possibly contributory).  Does anyone have any idea of how this can happen?  Has anyone seen this or the like before?
	I also conclude that there is a strong possibility that the rest of the second disk (i.e., my data on it) is okay, and if I can rebuild the  slice-table  then I can recover the rest of the disk and all my data.  I think I can do this if I can get the following things/information:
		1)	is there a duplicate of the  slice-table 
			somewhere on the disk, and if so, where is it, 				and how can I examine it rather than the 				primary  slice-table ,
			and is there a way to have its contents replace
			the contents of the primary  slice-table ,
		2)	is there a program that can look at a(n entire) 			disk and break it up into contiguous sectors 				that belong to particular systems (in my case  				OS2  or  MS-DOS ), {I would be willing to write 			such a program if someone would tell me how to 				read sectors without a  slice-table  [say with 				just an  LBA  number] and how to recognize 				whether a sector belongs to  OS2  or  MS-DOS , 				and any timing constraints for reading/writing 				cylinders [e.g., usual timing for getting a 				read/write head to cylinder  0 , the time
			to move between cylinders, etc.], if such 				constraints exist [maybe we have fixed heads 				and so no timing constraints]},
		3)	 FreeBSD  programs (or  Linux  programs or  				 MS-DOS  programs if  FreeBSD  programs aren't 				available) that can read any sector given its  				 LBA  number or the like [somewhat like  fdisk  			reads/writes of sector  0 ], what could be 				really useful [if I have to rebuild files] is a 			program that reads a range of sectors and  				greps  its contents, reporting the  LBA 
			number [and some contents] of those sectors 				that pass the  grep  test,
		4)	the structure of the  slice-table's  sector and 
			of the  slice-table  and  FreeBSD  programs 				that can write specific values (given as 				arguments [say in structures]) into the  				 slice-table  without affecting the contents of 			any other sector on that disk,
		5)	how to mark a  slice  "<UNUSED>",
		6)	 FreeBSD  programs (or  Linux  programs or				 MS-DOS  programs if  FreeBSD  programs aren't 				available) other than  fdisk  that can write 				the  slice-table's  sector (including its magic 			number and boot code) without affecting the 				contents of any other sectoron that disk,
		7)	how can I recognize sectors that were in a 				slice assigned for  MS-DOS  usage, and/or is 				there a way of finding the "first" (i.e., one 				with lowest  LBA ) and "last" sector assigned 				for  MS-DOS  usage or used by  MS-DOS ,
		8)	 FreeBSD  programs (or  Linux  programs or				 MS-DOS  programs if  FreeBSD  programs aren't 				available) software to rebuild files and 				[Windows-98] directories from fragments (with 				human direction) [this is just in case there is 			more damage than I suspect at present,
			I'm hoping not to need this one],
		9)	any caveats or information that would prove 				useful in this endeavor.
	If I have to rebuild the  slice-table  from scratch, I presume that I can make any entries I wish in the  slice-table  and then look at the contents of the  slices  to see if they are what I would like to find there and appropriately change the  slice-table  until I find it set up as it was before.  Anything wrong with my presumption?
	If I succeed in this, I'm thinking of publishing an article on how to recover from this sort of problem.

         uname -a  for my system gives:
FreeBSD  4.3-RELEASE FreeBSD 4.3-RELEASE #0: Sat Apr 21 10:54:49 GMT 2001 jkh at  i386

More information about the freebsd-questions mailing list