> > fdisk -R -W - /dev/rdsk/c1t0d0p0 > > Here's the output: > > # /sbin/fdisk -R -W - /dev/rdsk/c1t0d0p0 >
> * Id Act Bhead Bsect Bcyl Ehead Esect Ecyl Rsect Numsect > 7 128 1 1 0 254 63 1023 63 558788832 > 15 0 0 1 1023 254 63 1023 558788895 66348450 I think I found something. The problem is that your FAT32 volume is defined inside an extended fdisk partition. The extended fdisk partition that you have defined on that disk is the one tagged with "Id 15"; the FAT32 fdisk partition inside that extended fdisk partition isn't visible in Solaris' fdisk output. Root cause of the problem is that tamarack / hald includes the Id 15 extended fdisk partition as a "dos drive" while the kernel pcfs filesystem module does not. Hald: http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/cmd/hal/utils/fsutils.c#is_dos_drive kernel pcfs: http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/uts/common/fs/pcfs/pc_vfsops.c#isDosDrive If you change hal's fsutils.c, function is_dos_drive(), to match the same fdisk partition ids that are used in the kernel pcfs module, re-compile and install the new /usr/lib/hal/hald-probe-storage and /usr/lib/hal/hald-probe-volume binaries, then your usb disk should mount. ================================================================== Suggested fix ============= The list of dos fdisk partition ids used in hal and the pcfs module should match. An extended fdisk partition doesn't contain a fat filesystem! fdisk partition ids 5, 15 should be deleted from usr/src/cmd/hal/utils/fsutils.c is_dos_drive(): diff -r eb8f709e6f16 usr/src/cmd/hal/utils/fsutils.c --- a/usr/src/cmd/hal/utils/fsutils.c Wed Jan 31 04:59:22 2007 -0800 +++ b/usr/src/cmd/hal/utils/fsutils.c Fri Feb 02 01:08:31 2007 +0100 @@ -85,8 +85,10 @@ boolean_t boolean_t is_dos_drive(uchar_t type) { - return ((type == 1) || (type == 4) || (type == 5) || (type == 6) || - ((type >= 8) && (type <= 0xf))); + return ((type == DOSOS12) || (type == DOSOS16) || + (type == DOSHUGE) || (type == FDISK_WINDOWS) || + (type == FDISK_EXT_WIN) || (type == FDISK_FAT95) || + (type == DIAGPART)); } boolean_t This message posted from opensolaris.org _______________________________________________ opensolaris-help mailing list [email protected]
