CompactFlash / GEOM / boot fails on certain brand / Soekris.
Dirk-Willem van Gulik
dirkx at webweaving.org
Fri May 2 02:13:35 PDT 2003
On 5.0 release - on a soekris.com 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.
http://wleiden.webweaving.org:8080/svn/node-config/master/install-time/make-cf.sh
or
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 ?
Dw
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:
<UNUSED>
The data for partition 3 is:
<UNUSED>
The data for partition 4 is:
<UNUSED>
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
label:
flags:
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*-
495*)
c: 253920 32 unused 0 0 # (Cyl. 0*-
495*)
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
utilities
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
options=nopacket,update,nosetdrv
dubbeldrank# mount /dev/ad0s1a /mnt
dubbeldrank# ls /mnt
.cshrc bin dev proc tmp
More information about the freebsd-questions
mailing list