Why do we have to use fat95 with compactflash.device?
I am sorry, I did not mean to imply that the "fat95" file system were mandatory. It just so happens that it is used in the default setup for "compactflash.device", as available from Aminet.
Why can't we use our CF cards with FFS, PFS or SFS? Am I missing something here? If I wanted to boot differing Amiga OS's/configs from differing CF cards then why would I want it to be using FAT? I don't want to use FAT, except when exchanging files with my Windows PC.
Short answer: the operating system makes the "default ROM file system" responsible for a volume mounted on a storage device, and changing this default behaviour to pick a file system of your choice instead does not work out of the box.
Long answer coming up
The "compactflash.device" written by Torsten Jager, as available from Aminet, currently cannot be used to boot the system off a CF card. One reason for this is that the "compactflash.device" is not a component of the AmigaOS ROM, and thus does not get initialized as part of the system startup. If you want to access your CF card, then you have to boot the operating system off a floppy disk, a PCMCIA memory card that uses the CC0: device, or a hard disk drive.
Booting off a floppy disk, a PCMCIA memory card or a hard disk drive have something in common.
The operating system knows that floppy disk drives may be available (up to four; could be none) and sets up records which allow the system to boot from them when a disk is inserted: if that disk contains a boot block, it is loaded into memory and is started.
The same basic process happens for PCMCIA memory cards, only there is no boot block (the operating system asks the card "can you bootstrap the system?", and if it says that it can, then it will be treated like a floppy disk with a boot block on it).
A hard disk drive is connected to a controller, and the controller software (say "scsi.device") will begin by checking which storage devices are available, and if they contain partitioning information which tells the operating system where the individual volumes on disk are stored and how large they are. This partitioning information also tells the operating system which file system should be used for the respective volume (FFS, PFS3, you name it). Furthermore, the partitioning information can reference a fully functional file system that is stored along with it, which enables you to boot from a disk which uses a file system that is not already in ROM. The controller software ("scsi.device") collects all the volume information, makes the file systems ready and sets up the records necessary for mounting and booting from the designated volumes.
Which volume or device the operating system can boot from is decided in an operating system module called "strap". This is where the boot priorities of the volumes are checked, and the highest priority boot volume wins (by the way, the "strap" module is the one which shows the "insert disk" animation). When you boot your system, "dos.library" will take control, mount the volumes and disks whose records were prepared before, set up the assignments for the boot volume ("C:", "L:", "S:", "Devs:", "Fonts:", "Libs:"), and starts executing the "S:Startup-Sequence" script, if available.
This is the standard procedure, and if you wanted to boot off a CF card, then the following would be necessary:
- The storage device driver, let's say it is "compactflash.device", needs to be either in ROM or otherwise available at early system startup time.
- "compactflash.device" needs to check early on if a CF card is present, and which record should be used to make it suitable for bootstrapping the system using it. This involves figuring out the CF card size, which file system should be used, and which priority for booting the system from it would be appropriate.
- When the system startup process reaches the "strap" module, both the "compactflash.device" and the file system assigned to the CF card need to be ready to allow the system to boot from it.
That is basically it. This is how CC0: device booting works (hm... does this actually work? I never tested this myself), which the operating system treats like a big floppy disk: it has a fixed size, and it uses the default ROM file system (this would be the FFS). You cannot actually tell the operating system to use a different file system to access the volume at boot time because there is no way to do so (it's a closed design). This is what prevents you from using PFS3 or any other file system to boot from the PCMCIA memory card.
Why does this matter? It would be the same situation for booting off a "compactflash.device" in ROM: the storage device could easily set up the CF card as a bootable volume as long as it makes sure that it uses the default ROM file system.
If you wanted "compactflash.device" to support different, specific file systems of your choice, then it would have to work very much like "scsi.device" in that it would have to support partitioning of the storage medium. That is rather complicated (I wrote hard disk driver software which did this, some 25 years ago), and maybe not what the original author wanted, but it's doable.