HOW TO SET UP A FUSE CFS DRIVER? Since I had managed to set it up working correctly on my Fedora-based Linux some time ago, I thought that this would be a good idea to share my knowledge about it on the pages of "Attitude" disk magazine. Visac/Cult had assured me that there were some Linux users with IDE64, although it would be very hard to estimate their number. Well, hey guys, you there? ;) I hope that you will find it interesting to find out the basic steps you need to take to set up the CFS driver for FUSE working. So before you go with the actual setup, a couple of questions might have been already raised. So let me fully introduce you to the subject of this article. WHAT IS FUSE? FUSE (Filesystem in Userspace) is a simple interface for userspace programs to export a virtual filesystem to the Linux kernel. FUSE also aims to provide a secure method for non-privileged users to create and mount their own filesystem implementations [1]. WHAT IS FUSECFS? FUSECFS is a CFS 0.11 filesystem driver for systems supporting FUSE, e.g. Linux, FreeBSD [2]. With FUSECFS driver you can access an IDE64 HDD contents directly from your PC just as if you were accessing any other filesystem like ext4, ntfs, vfat, etc. WHERE CAN I GET IT? Currently the latest available version of FUSECFS driver is 1.1 and it can be downloaded from IDEDOS project page: idedos.ide64.org (check the "FUSECFS" section for the most recent download available). The author of FUSECFS driver, Soci/Singular, emphasizes a couple of differences between the driver itself and the original IDE64 DOS, giving us a few pieces of advice on its usage. The first and the most important issue is that this driver fragments the filesystem quite a lot on a parallel file write. This warns us of copying more files simultaneously into an IDE64 device. Additionally there is no fragmentation avoidance built into the current version of FUSECFS driver. But what might be considered the biggest disadvantage is the fact that special C64 filenames cannot be handled correctly and they create invalid UTF-8 sequences. Furthermore filename conversion may also be a subject to change in future versions. But if all these inconveniences have not yet discouraged you from using it, please read on! GET IT TO WORK! First you need to get the latest sources of FUSE. Go to the fuse.sourceforge.net website, and follow a "Download stable release" link. Click on a "Download Now!" button and save the file onto your local HDD. Upon completion change your current working directory to the one where you have just downloaded that file. Unpack the source code and begin compilation process: $ tar xzvf fuse-2.8.1.tar.gz $ cd fuse-2.8.1 $ ./configure $ make Is that it? Yep, that is all what has been required to have the latest FUSE compiled sucessfully! Yeah, I know, that was easy... Now you are about to perform the target task... COMPILING A DRIVER If you have already obtained FUSECFS driver, you can unpack it and begin compilation process, but first I recommend you copying downloaded file into a directory, which has been earlier used for compiling FUSE: $ tar xjvf fusecfs-1.1.tar.bz2 $ cd fusecfs-1.1 If you had then typed "make" right away, you would have seen a bunch of unpleasant error messages. That is because the PKG_CONFIG_PATH environment variable has not been pointing to the directory containing "fuse.pc", resulting in inability to find FUSE package. You'd better do the right thing and set up the pkg-config search path to a proper directory: $ export PKG_CONFIG_PATH=.. Now you need to help a C compiler to find all the necessary header files. The easiest way to accomplish that is to add appropriate CFLAGS parameter to the Makefile by issuing the following command: $ perl -i -pe 's!CFLAGS :=!CFLAGS := -I../include!' Makefile The very last thing to do is to give some hints to a linker, so it is able to link against previously compiled FUSE libraries. Let's modify Makefile's LDFLAGS parameter using the following command: $ perl -i -pe 's!LDFLAGS :=!LDFLAGS := -L../lib/.libs!' Makefile Compile a driver now: $ make A "cfs011mount" executable should appear in your current working directory by now and it should be ready for use. You admit that the whole compilation process was very easy, don't you? If you experience any difficulties compiling the driver, feel free to drop me an email, and we shall try to work out a proper solution together. HOW TO USE IT? In order to mount an HDD with IDE64 partition, use the following command: $ cfs011mount Where identifies your HDD, and is a directory within your filesystem. For example: $ cfs011mount /dev/sdb /mnt/ide64 Please note that you have to provide the actual device file, not a specific partition, as the first input parameter to the "cfs011mount" utility. This requirement raises from the fact that the IDE64 filesystem stores some important data within a disk boot sector. You actually do not need to worry what kind of information is that, but in case you wonder this is: the identification string, a global disklabel, a pointer to the IDE64 partition list plus its backup, and the last disk sector address. Since the information about IDE64 DOS partition is stored within an MBR, you mount the whole disk, not just a CF-type partition, as you would normally do. After mounting an IDE64 device, you are able to browse and edit the whole disk contents just like you do with your usual PC stuff. Copy your files here and there, and when your work is done, unmount the device file with the following command: $ fusermount -u Which in our case would be: $ fusermount -u /mnt/ide64 CLOSING WORDS I hope that this small article have helped you to get the basic understanding of FUSECFS driver, its capabilities and limitations, also to realize how easy to compile and use it is. Special thanks must go to Soci/Singular for writing this handy piece of code, so useful for accessing the data within your IDE64 disk directly from your PC. Regards, DJ Gruby/Oxyron. REFERENCES [1] Filesystem in Userspace http://fuse.sourceforge.net/ [2] IDEDOS Project Page http://idedos.ide64.org/