New Member
Join Date: Jan 2007
|
Woohoo, thank you! Full Read/Write is awesome. You guys have done something incredible!
|
quote |
New Member
Join Date: Jan 2007
|
Well, chucker, you told me to type this:
Code:
sudo ln -s /System/Library/Filesystems/fusefs.fs/mount_fusefs /usr/local/bin/mount_fusefs But you told Hara Taiki to type this:Code:
sudo ln -s /System/Library/Filesystems/fusefs.fs/mount_fusefs /usr/bin/mount_fusefs Incidentally, the second one finally worked for me. Apparently creating the symlink to /usr/bin instead of /usr/local/bin is the correct way to go. Thanks for the help, even if it wasn't directed specifically toward me. I finally have read-write access to my Boot Camp partition.Seems kind of odd that Mac OS treats it like a network volume. Everything works fine, though. |
quote |
‽
|
Quote:
Quote:
Quote:
As for treating it as a network volume, this is a MacFUSE-specific decision; I'm not actually sure what drove Amit Singh to do that. Presumably, it affords a greater flexibility than local volumes do. |
|||
quote |
‽
|
So I tried out mkntfs to create a new NTFS file system. It generally works, but there's a gotcha. Maybe this is GPT-specific, but it seems Disk Arbitration isn't pinged properly. First, Disk Utility sees a FAT32 partition, then a FAT12 one, … it's basically acting up.
|
quote |
Travels via TARDIS
Join Date: Aug 2005
Location: Earthsea
|
Yeah, the proper way to do that (and probably get the GPT updated) would be to do it through diskutil, because the filesystem bundle format has keys, under FSPersonalities, for FSFormatCommand and friends. Unfortunately, I know nothing of how these tools work on the inside, so all of my attempts to get it working are really just stabs in the dark.
Maybe I'll hit something eventually. Also, the decision to make FUSE appear as a network filesystem is likely due to the fact that the userspace daemons can die, like a network connection might. So it's essentially treating the kernel-to-userspace connection as a netlink, because they both have uncertain reliability when compared to local, in-kernel filesystems. Apparently I call the cops when I see people litter. |
quote |
‽
|
Well, I was smart enough to destroy a few dozen Gigabytes worth of non-backed up data, but I've made some progress.
Code:
$ diskutil eraseVolume NTFS-3G "MyVolume" disk2s3
Started erase on disk disk2s3 UNTITLED 4
Erasing
Mounting Disk
Finished erase on disk disk2s3 Untitled
error with erase The underlying task reported failure on exit (-9972)
Finished erase on disk disk2s3 Untitled Now, it acts as if something went wrong, and it also doesn't know how to pass on the volume label. However, the drive not only gets created (and automatically mounted); it's also immediately recognized in Disk Utility.diskutil also explicitly lists the filesystem as an option now: Code:
$ diskutil eraseVolume
Disk Utility Tool
[..]
Valid filesystems: "Case-sensitive HFS+" "Journaled HFS+" "Case-sensitive Journaled HFS+" "HFS+" "HFS" "MS-DOS FAT32" "MS-DOS FAT16" "MS-DOS" "MS-DOS FAT12" "NTFS-3G" "UFS" "Linux" "Swap" Unfortunately, Disk Utility does not. In fact, it displays a completely different, far more limited list. Presumably, its list is hardcoded, for no apparent reason.It also appears that /Library/Filesystems gets ignored, based on anecdotal fs_usage-based evidence. In any case: progress. |
quote |
‽
|
…but when mounted, Apple's own NTFS takes over again. Ugh.
|
quote |
‽
|
I'm writing an ntfs.util as a Unix shell script. Disk Arbitration invokes this just fine for:
1) formatting 2) verifying 3) repairing. For whatever messed up reason, though, it completely ignores it for mounting. You'd think that'd be the easiest. In any case, I can now invoke ntfsfix from Disk Utility by selecting the NTFS partition, on MBR, at least. Things seem tricker on GPT. I can also do something like: Code:
diskutil eraseVolume NTFS-3G newName disk1s2 To create a new volume. |
quote |
New Member
Join Date: Jan 2007
|
How do I unmount?
|
quote |
New Member
Join Date: Jan 2007
|
Hi someone can recompile ntfs-3g with newest version aviable...
thanks |
quote |
Travels via TARDIS
Join Date: Aug 2005
Location: Earthsea
|
Quote:
That's how it goes through detecting a volume. I had it working once, and NTFS-3g would appear in the DiskArbitration logs, but the mount command never got executed, and NTFS mounts failed. However, it sounds like you're currently having more luck than me. The return codes for probing a volume are 255 for success, and 254 for failure, and the volume name is printed on STDOUT. Thus, the best command for the task might be a wrapper around ntfslabel, and returning $((255 - $?)). Could I look at your FS bundle to see what I can (or can't) get working? Apparently I call the cops when I see people litter. |
|
quote |
Travels via TARDIS
Join Date: Aug 2005
Location: Earthsea
|
Quote:
|
|
quote |
New Member
Join Date: Jan 2007
|
Shadow, the new compile of NTFS-3g produces an error.
Code:
Failed to open /proc/filesystems: No such file or directory It does this twice, then the FUSE kext loads. The error in no way interferes with full read-write functionality.Just making it known. |
quote |
Travels via TARDIS
Join Date: Aug 2005
Location: Earthsea
|
Quote:
The build in my previous post has been updated. Let me know if this works and/or causes problems. Apparently I call the cops when I see people litter. |
|
quote |
Travels via TARDIS
Join Date: Aug 2005
Location: Earthsea
|
Quote:
I just took the step of building ntfsprogs so that we have all the software we need to properly wrap and expose these features to Disk Utility and other OS X tools that use Disk Arbitration. Guess I should have made that clearer. Apparently I call the cops when I see people litter. |
|
quote |
‽
|
Quote:
(I think. ) Quote:
Quote:
Code:
$ grep -r RECOGNIZED /usr/include/
/usr/include/sys/loadable_fs.h:#define FSUR_RECOGNIZED (-1) /* response to FSUC_PROBE; implies that
/usr/include/sys/loadable_fs.h:#define FSUR_UNRECOGNIZED (-2) /* negative response to FSUC_PROBE */ Quote:
It should be noted that a lot of stuff that appears to be customizable in Info.plist is actually hard-coded. For instance, during boot-up, all FS*Arguments keys seem to be ignored entirely, whereas later on, it respects them. Also, it never seems to give a damn about FSMountExecutable. It's not a big deal though it did waste a lot of my time in debugging this; instead of looking for $1, I just create symlinks accordingly to what it's really looking for, and then look for $0. |
||||
quote |
‽
|
Code:
20:13:05 probed disk, id = /dev/disk0s4, with ntfs-3g, ongoing.
20:13:05
20:13:05 diskarbitrationd [45] -> kextd [30]:11779
20:13:05 dispatched callback, id = 000057D4:00000000, kind = disk appeared, disk = /dev/disk0s2.
20:13:05 dispatched callback queue.
20:13:05
20:13:05 diskarbitrationd [45] -> diskarbitrationd [45]
20:13:05 probed disk, id = /dev/disk0s4, with ntfs-3g, success. So that's going correctly. But:Code:
20:13:06 mounted disk, id = /dev/disk0s4, ongoing.
20:13:06
20:13:06 diskarbitrationd [45] -> kextd [30]:11779
20:13:06 dispatched callback queue.
20:13:06
20:13:06 diskarbitrationd [45] -> coreservicesd [94]:12547
20:13:06 dispatched callback queue.
20:13:06
20:13:06 diskarbitrationd [45] -> blued [92]:13059
20:13:06 dispatched callback queue.
20:13:07
20:13:07 mount_fusefs [106]:13571 -> diskarbitrationd [45]
20:13:07 created session, id = mount_fusefs [106]:13571.
20:13:07 created disk, id = /dev/disk0s4@0.
20:13:07
20:13:07 diskarbitrationd [45] -> kextd [30]:11779
20:13:07 dispatched callback, id = 000057D4:00000000, kind = disk appeared, disk = /dev/disk0s4@0.
20:13:07
20:13:07 diskarbitrationd [45] -> coreservicesd [94]:12547
20:13:07 dispatched callback, id = 90C7E30C:00000000, kind = disk appeared, disk = /dev/disk0s4@0.
20:13:07
20:13:07 diskarbitrationd [45] -> blued [92]:13059
20:13:07 dispatched callback, id = 90C7E30C:00000000, kind = disk appeared, disk = /dev/disk0s4@0.
20:13:07
20:13:07 mount_fusefs [106]:13571 -> diskarbitrationd [45]
20:13:07 removed session, id = mount_fusefs [106]:13571.
20:13:07
20:13:07 diskarbitrationd [45] -> kextd [30]:11779
20:13:07 dispatched callback queue.
20:13:07
20:13:07 diskarbitrationd [45] -> coreservicesd [94]:12547
20:13:07 dispatched callback queue.
20:13:07
20:13:07 diskarbitrationd [45] -> blued [92]:13059
20:13:07 dispatched callback queue.
20:13:07
20:13:07 diskarbitrationd [45] -> diskarbitrationd [45]
20:13:07 mounted disk, id = /dev/disk0s4, failure.
20:13:07 unable to mount /dev/disk0s4 (status code 0xFFFFFFFF). So, it tries to mount, even goes through calling mount_fusefs (so evidently I must be doing something right here; ntfs-3g definitely was called and all), then fails. Interestingly, it suddenly talks about disk0s4@0. Is it possible that MacFUSE is currently hardcoded to use @ syntax for alternate mounts so it never conflicts with Apple's .fs bundles? (No, doesn't look like it from macfuse's code.) |
quote |
Travels via TARDIS
Join Date: Aug 2005
Location: Earthsea
|
Quote:
Well, it's a shame DiskArbitration doesn't really parse the filesystem bundles for the commands... maybe Leopard will be better about that. Apparently I call the cops when I see people litter. |
|
quote |
New Member
Join Date: Jan 2007
|
How do I unmount the drive? It won't let me eject it, Finder says that there are processes using it, and I should quit them before ejecting...
The reason why I want to unmount, is so that I can remount using Apple's own NTFS at times, because NTFS-3g doesn't seem to like video playback, and my main storage drive for video's is my NTFS drive. When I move the file to my HFS+ drive, it plays back just fine, and has also played back just fine when not using NTFS-3g for the drive. So yeah, how do I unmount? |
quote |
Travels via TARDIS
Join Date: Aug 2005
Location: Earthsea
|
Quote:
For example, ntfs-3g expects /dev/disk0s4 (or whatnot), but only the basename (disk0s4) gets passed. There are some other quirks, such as the ordering/placement of mount options, I think. Any chance those minor descrepancies are what's causing the failure? Apparently I call the cops when I see people litter. |
|
quote |
‽
|
Quote:
Close apps, add the drive to Spotlight's ignore list, etc. Alternatively, you can run Code:
mount in Terminal and find the device for your NTFS drive, then runCode:
sudo umount "the device goes here" . |
|
quote |
‽
|
Quote:
Quote:
Quote:
0 /sbin/mount_ntfs-3g 1 /dev/disk0s4 2 /Volumes/Untitled I then call ntfs-3g with these: 0 /usr/local/bin/ntfs-3g 1 /dev/disk0s4 2 /Volumes/Untitled 3 -oping_diskarb (I'll add back -ovolname support later, using ntfslabel.) Similarly, when formatting, DiskArb sets $4 to /dev/rdisk0s4, but that's not the type of device mkntfs wants, so I change it to /dev/disk0s4. Judging from STDOUT and STDERR output, there is simply no error on ntfs-3g's part. As expected, it outputs "kextload: /System/Library/Extensions/fusefs.kext loaded successfully", as it's loaded for the first time. But that's it. So I'm at a loss on this one. I did manage to implement probing to an extent, in that my .fs bundle's priority is now above that of ntfs.fs (and msdos.fs); it gracefully delegates to msdos.fs where appropriate. The FAT32 volume mounts fine. DiskArb then proceeds to ask my ntfs.util to mount the NTFS volume. If only I could run mount_fusefs in debug mode… |
|||
quote |
‽
|
Hm. It indeed temporarily mounts it as disk0s4@0. I can only assume that:
1) MacFUSE is currently hardcoded to do this to avoid conflicts 2) DiskArbitration doesn't see disk0s4 as mounted, concludes something went wrong and undoes the process. |
quote |
Travels via TARDIS
Join Date: Aug 2005
Location: Earthsea
|
Quote:
Quote:
As above, I feel like fusefs should not need to notify DiskArb as long as you're being called *through* DiskArb. I think those options are only hacks to "integrate" with DiskArbitration when you're manually mounting volumes from the command line. Have you tried omitting these? Gotta run... maybe I'll find more later. Apparently I call the cops when I see people litter. |
||
quote |
‽
|
It's dirty, but for the time being, with a clean NTFS volume, it works:
Code:
function Probe () {
device=/dev/$2
result=`/usr/local/bin/ntfsinfo -m "$device" | grep "Volume Information" | wc -l`
if [ $result -eq 1 ]
then
echo -1 FSUR_RECOGNIZED
exit -1 # FSUR_RECOGNIZED; probe response; mounting implied possible
else
echo -2 FSUR_UNRECOGNIZED
exit -2 # FSUR_UNRECOGNIZED; negative probe response (e.g. FAT32)
fi
} The only point of probing, after all, is to rule out different file systems, not to check if a file system is okay or anything like that. If ntfsinfo doesn't print out the Volume Information, the volume is either broken, or simply not an NTFS one (e.g., an FAT32 one).This is only relevant because, in GPT, FAT32 and NTFS are both identified with one and the same GUID, as "Microsoft Basic Data". Which means that their FSMediaTypes / Content Hint is exactly the same. Like I said, it works. It's not the issue. Quote:
Quote:
Quote:
Thanks for your help! |
|||
quote |
New Member
Join Date: Jan 2007
|
Spotlite wont let me exclude it from being indexed.
Is there anyway to force it to unmount? |
quote |
‽
|
…I have it automounting
It was the -oping_diskarb. Makes perfect sense, I suppose. Progress™ |
quote |
‽
|
Quote:
Quote:
|
||
quote |
New Member
Join Date: Jan 2007
|
It doesn't. It tells me the device is busy.
|
quote |
‽
|
What if you append -f?
Code:
mount Code:
sudo umount -f "the device goes here" |
quote |
Posting Rules | Navigation |
Page 3 of 13 Previous 1 2 [3] 4 5 6 7 Next Last |
Thread Tools | |
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Firefox 2.0 for Mac: User Interface Grievances (Redux!) | Brad | Third-Party Products | 42 | 2006-11-06 13:33 |
Stupid Mac graphics card options | Luca | Third-Party Products | 33 | 2005-07-01 01:34 |
Games specifically for Mac | Banana | General Discussion | 24 | 2005-03-28 14:03 |
Of All Things: PowerMac vs. Mac mini?!?!? | Wraven | Purchasing Advice | 20 | 2005-01-25 21:25 |
Apple releases updated Power Mac G5s | staph | Apple Products | 43 | 2004-06-09 13:20 |