CompactFlash / GEOM / boot fails on certain brand / Soekris.

Dirk-Willem van Gulik dirkx at
Fri May 2 02:13:35 PDT 2003

On 5.0 release - on a 4521.

Several essentially identical flash disks brands:

1.	SAMSUNG CF/ATA                          126 Mbyte 	fails
2. 	Hitachi CVM1.1.1                        125 Mbyte	boots
3.	SunDisk					126 Mbyte	boots
4.	PANASONIC/CF				125 Mbyte	boots

with identical content/scripted-preparation method.

All of them boot; except the ones of the SAMSUNG type which the other
gives a 'read error' in the bios on boot:

	comBIOS ver. 1.10  20020603  Copyright (C) 2000-2002 Soekris Engineering.
	Soekris Engineering net4501               CPU 80486 134 Mhz
	0064 Mbyte Memory
	Primary   Master SAMSUNG CF/ATA                          126 Mbyte
	PXE-M00: BootManage UNDI, PXE-2.0 (build 082)
	 1 Seconds to automatic boot.   Press Ctrl-P for entering Monitor.
	Read error

	( or alternatively, at some boots, it will go into PXE boot
	immediately not even  seeing the disk)

The other disk launch into the boot loader fine.

Any suggestions what could cause this ?

->	is this a HW issue / ATA compatibility issue; i.e.
	are some Compact Flash disks fundamentally unbootable ?

->	is this a BIOS issue ?

->	is this related to the new GEOM work ?

It is very reproducable. Below is the (scripted) process which is used to
create the disk; which as said, functions for virtually all disks except a
few. dd-ing or other operations give -no- soft/hard read or write errors.
	dd if=/dev/zero of=/dev/ad0
	fdisk -BI ad0
	disklabel -w -B ad0s1 auto
	disklabel ad0s1 |   egrep unused |  sed "s/c:/a:/" |  sed "s/unused.*/4.2BSD/" > f
	disklabel -R -B ad0s1 f
	boot0cfg -v -B ad0
	newfs /dev/ad0s1a
	tar files

Below are the values extracted from the disk. Apart from cylinder counts
they are identical to other flash disks which function (and which where
created with the same process).

Any thouhgds ?


dubbeldrank# fdisk -v ad0
******* Working on device /dev/ad0 *******
parameters extracted from in-core disklabel are:
cylinders=496 heads=16 sectors/track=32 (512 blks/cyl)

parameters to be used for BIOS calculations are:
cylinders=496 heads=16 sectors/track=32 (512 blks/cyl)

Media sector size is 512
Warning: BIOS sector numbering starts with sector 1
Information from DOS bootblock is:
The data for partition 1 is:
sysid 165 (0xa5),(FreeBSD/NetBSD/386BSD)
    start 32, size 253920 (123 Meg), flag 80 (active)
        beg: cyl 0/ head 1/ sector 1;
        end: cyl 495/ head 15/ sector 32
The data for partition 2 is:
The data for partition 3 is:
The data for partition 4 is:

dubbeldrank# disklabel -r ad0
disklabel: bad pack magic number (label is damaged, or pack is unlabeled)

dubbeldrank# disklabel -r ad0s1
# /dev/ad0s1c:
type: unknown
disk: amnesiac
bytes/sector: 512
sectors/track: 32
tracks/cylinder: 16
sectors/cylinder: 512
cylinders: 495
sectors/unit: 253920
rpm: 3600
interleave: 1
trackskew: 0
cylinderskew: 0
headswitch: 0           # milliseconds
track-to-track seek: 0  # milliseconds
drivedata: 0

8 partitions:
#        size   offset    fstype   [fsize bsize bps/cpg]
  a:   253920       32    4.2BSD     1024  8192 31744   # (Cyl.    0*-
  c:   253920       32    unused        0     0         # (Cyl.    0*-
partition a: partition extends past end of unit
partition c: partition extends past end of unit
Warning, partition c doesn't start at 0!
Warning, An incorrect partition c may cause problems for standard system

dubbeldrank# boot0cfg -v ad0
#   flag     start chs   type       end chs       offset         size
1   0x80      0:  1: 1   0xa5    495: 15:32           32       253920

version=1.0  drive=0x80  mask=0xf  ticks=182

dubbeldrank# mount /dev/ad0s1a /mnt
dubbeldrank# ls /mnt
.cshrc          bin             dev             proc            tmp

More information about the freebsd-questions mailing list