Installable File System
Encyclopedia
The Installable File System (IFS) is a filesystem API
in IBM
OS/2
and Microsoft Windows
that enables the operating system
to recognize and load drivers for file system
s. It is part of the Windows Driver Kit.
and Microsoft were codeveloping OS/2, they realized that File Allocation Table
s, FATs, did not offer the features a modern OS would require, and Microsoft began developing the High Performance File System, codenamed Pinball.
Instead of coding it inside the kernel, as FAT was, Microsoft developed a "driver-based" Filesystem API that could allow them and other developers to add new filesystems to the kernel without needing to modify it.
When Microsoft stopped working on OS/2, IBM continued using the IFS interface and Microsoft implemented a similar one in Windows NT.
It was introduced in 1989 in OS/2 1.20, along with the HPFS filesystem.
Filesystem drivers executed in kernel-space (ring 0) and are divided in four principal pieces: microIFS, miniIFS, IFS, helpers.
Only the IFS and the filesystem code itself is required and it is loaded via an "IFS=" statement in the CONFIG.SYS
file.
It is a NE
16-bit
dynamically loaded library. No matter if it is a 32-bit
OS/2 (2.0 and newer), the IFS is always 16-bit (although extraofficially you can make a 32-bit IFS).
The microIFS is a piece of code that loads in memory the kernel and the miniIFS and jumps to kernel execution. It is usually in the boot portion of the filesystem.
The miniIFS is a piece of code that is called by the kernel to load the first IFS statement that appears in the CONFIG.SYS file, so the first IFS statement must be the boot's filesystem for the system to be able to boot.
The helpers are 16-bit (for OS/2 1.x) or 32-bit (for OS/2 2.x and upper), are executed in user-space (ring 3) and contain the code used for typical filesystem maintenance, and are called by
This four-piece scheme allowed developers to dynamically add a new bootable filesystem, as the ext2
driver for OS/2 demonstrated.
CD-ROM
filesystem driver (ISO 9660
) was added in OS/2 2.0, UDF
was added in OS/2 4.0 and JFS was added in OS/2 4.5.
eComStation
, the latest packaging of OS/2, also includes many filesystem drivers for OS/2 in its companion CDs.
There was also an official 32-bit HPFS IFS, called HPFS386 that improved performance and added some features, like variable size cache and Access Control Lists, and was available only in OS/2 3.0 server edition.
The FAT filesystem was never removed from the kernel and officially never an IFS, although there are FAT IFS that added features like long file names
(LFNs), FAT32 support, etc.
Network file-sharing protocols like NFS and SMB
are also implemented using IFS, and the IFS interface never changed.
Instead of being a four-piece scheme they implemented a two-piece scheme.
microIFS and miniIFS were removed from the scheme. IFS and helpers remain as the same, but later, in Windows NT 4.0, a defragmentation
helper (DEFRAG) was added.
Microsoft's original NTLDR was coded for loading the NT kernel from FAT, HPFS or NTFS
, but subsequent versions dropped HPFS support. All of the drivers and helpers became 32-bit PE executables
. The FAT file system was moved out of the Kernel to an IFS and was heavily optimized for performance, taking advantage of the 32-bit processing capabilities (being called FASTFAT).
Original Windows NT 3.1 incorporated FAT, HPFS (Pinball) and the newly created NTFS drivers, along with a new and improved CD-ROM filesystem driver that incorporated long file names using the Microsoft Joliet
filesystem.
Windows NT 3.51 added per-file compression to NTFS and to the IFS interface.
In Windows NT 4.0 the HPFS was removed. In Windows 2000 FASTFAT was updated to support FAT32 and UDF was added.
Windows 2000 modified the IFS interface to add per-file encryption.
Network file-sharing protocols and antivirus are also implemented using IFS.
Apple started including read only HFS+ drivers in Mac OS X 10.6's version of Boot Camp for use in Windows XP
, Windows Vista
, and Windows 7.
Filesystem API
A file system API is an application programming interface through which a utility or user program requests services of a file system. An operating system may provide abstractions for accessing different file systems transparently....
in IBM
IBM
International Business Machines Corporation or IBM is an American multinational technology and consulting corporation headquartered in Armonk, New York, United States. IBM manufactures and sells computer hardware and software, and it offers infrastructure, hosting and consulting services in areas...
OS/2
OS/2
OS/2 is a computer operating system, initially created by Microsoft and IBM, then later developed by IBM exclusively. The name stands for "Operating System/2," because it was introduced as part of the same generation change release as IBM's "Personal System/2 " line of second-generation personal...
and Microsoft Windows
Microsoft Windows
Microsoft Windows is a series of operating systems produced by Microsoft.Microsoft introduced an operating environment named Windows on November 20, 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces . Microsoft Windows came to dominate the world's personal...
that enables the operating system
Operating system
An operating system is a set of programs that manage computer hardware resources and provide common services for application software. The operating system is the most important type of system software in a computer system...
to recognize and load drivers for file system
File system
A file system is a means to organize data expected to be retained after a program terminates by providing procedures to store, retrieve and update data, as well as manage the available space on the device which contain it. A file system organizes data in an efficient manner and is tuned to the...
s. It is part of the Windows Driver Kit.
History
When IBMIBM
International Business Machines Corporation or IBM is an American multinational technology and consulting corporation headquartered in Armonk, New York, United States. IBM manufactures and sells computer hardware and software, and it offers infrastructure, hosting and consulting services in areas...
and Microsoft were codeveloping OS/2, they realized that File Allocation Table
File Allocation Table
File Allocation Table is a computer file system architecture now widely used on many computer systems and most memory cards, such as those used with digital cameras. FAT file systems are commonly found on floppy disks, flash memory cards, digital cameras, and many other portable devices because of...
s, FATs, did not offer the features a modern OS would require, and Microsoft began developing the High Performance File System, codenamed Pinball.
Instead of coding it inside the kernel, as FAT was, Microsoft developed a "driver-based" Filesystem API that could allow them and other developers to add new filesystems to the kernel without needing to modify it.
When Microsoft stopped working on OS/2, IBM continued using the IFS interface and Microsoft implemented a similar one in Windows NT.
IFS in OS/2
The IFS provided a basic and powerful interface for programming filesystems.It was introduced in 1989 in OS/2 1.20, along with the HPFS filesystem.
Filesystem drivers executed in kernel-space (ring 0) and are divided in four principal pieces: microIFS, miniIFS, IFS, helpers.
Only the IFS and the filesystem code itself is required and it is loaded via an "IFS=" statement in the CONFIG.SYS
CONFIG.SYS
CONFIG.SYS is the primary configuration file for the DOS, OS/2 as well as similar operating systems. It is a special file that contains setup or configuration instructions for the computer system.- Usage :...
file.
It is a NE
New Executable
The New Executable is a 16-bit .exe file format, a successor to the DOS MZ executable format. It was used in a special version of MS-DOS, Windows 1.0, Windows 2.x, and Windows 3.x...
16-bit
16-bit
-16-bit architecture:The HP BPC, introduced in 1975, was the world's first 16-bit microprocessor. Prominent 16-bit processors include the PDP-11, Intel 8086, Intel 80286 and the WDC 65C816. The Intel 8088 was program-compatible with the Intel 8086, and was 16-bit in that its registers were 16...
dynamically loaded library. No matter if it is a 32-bit
32-bit
The range of integer values that can be stored in 32 bits is 0 through 4,294,967,295. Hence, a processor with 32-bit memory addresses can directly access 4 GB of byte-addressable memory....
OS/2 (2.0 and newer), the IFS is always 16-bit (although extraofficially you can make a 32-bit IFS).
The microIFS is a piece of code that loads in memory the kernel and the miniIFS and jumps to kernel execution. It is usually in the boot portion of the filesystem.
The miniIFS is a piece of code that is called by the kernel to load the first IFS statement that appears in the CONFIG.SYS file, so the first IFS statement must be the boot's filesystem for the system to be able to boot.
The helpers are 16-bit (for OS/2 1.x) or 32-bit (for OS/2 2.x and upper), are executed in user-space (ring 3) and contain the code used for typical filesystem maintenance, and are called by
CHKDSKCHKDSKCHKDSK is a command on computers running DOS, OS/2 and Microsoft Windows operating systems that displays the file system integrity status of hard disks and floppy disk and can fix logical file system errors. It is similar to the fsck command in Unix.The command is implemented as an executable...
and FORMATDisk formattingDisk formatting is the process of preparing a hard disk drive or flexible disk medium for data storage. In some cases, the formatting operation may also create one or more new file systems...
utilities.This four-piece scheme allowed developers to dynamically add a new bootable filesystem, as the ext2
Ext2
The ext2 or second extended filesystem is a file system for the Linux kernel. It was initially designed by Rémy Card as a replacement for the extended file system ....
driver for OS/2 demonstrated.
CD-ROM
CD-ROM
A CD-ROM is a pre-pressed compact disc that contains data accessible to, but not writable by, a computer for data storage and music playback. The 1985 “Yellow Book” standard developed by Sony and Philips adapted the format to hold any form of binary data....
filesystem driver (ISO 9660
ISO 9660
ISO 9660, also referred to as CDFS by some hardware and software providers, is a file system standard published by the International Organization for Standardization for optical disc media....
) was added in OS/2 2.0, UDF
Universal Disk Format
Universal Disk Format is an implementation of the specification known as ISO/IEC 13346 and ECMA-167 and is an open vendor-neutral file system for computer data storage for a broad range of media. In practice, it has been most widely used for DVDs and newer optical disc formats, supplanting ISO 9660...
was added in OS/2 4.0 and JFS was added in OS/2 4.5.
eComStation
EComStation
eComStation or eCS is a PC operating system based on OS/2, published by Serenity Systems. It includes several additions and accompanying software not present in the IBM version of the system.-Differences between eComStation and OS/2:...
, the latest packaging of OS/2, also includes many filesystem drivers for OS/2 in its companion CDs.
There was also an official 32-bit HPFS IFS, called HPFS386 that improved performance and added some features, like variable size cache and Access Control Lists, and was available only in OS/2 3.0 server edition.
The FAT filesystem was never removed from the kernel and officially never an IFS, although there are FAT IFS that added features like long file names
Long filename
Long filenames , are Microsoft's way of implementing filenames longer than the 8.3 filename, or short-filename, naming scheme used in Microsoft DOS in their modern FAT and NTFS filesystems. Because these filenames can be longer than an 8.3 filename, they can be more descriptive...
(LFNs), FAT32 support, etc.
Network file-sharing protocols like NFS and SMB
Server Message Block
In computer networking, Server Message Block , also known as Common Internet File System operates as an application-layer network protocol mainly used to provide shared access to files, printers, serial ports, and miscellaneous communications between nodes on a network. It also provides an...
are also implemented using IFS, and the IFS interface never changed.
IFS in Windows NT
When Microsoft stopped developing OS/2 and concentrated on what was then called OS/2 NT, they took the IFS ideas with it, along with the HPFS filesystem.Instead of being a four-piece scheme they implemented a two-piece scheme.
microIFS and miniIFS were removed from the scheme. IFS and helpers remain as the same, but later, in Windows NT 4.0, a defragmentation
Defragmentation
In the maintenance of file systems, defragmentation is a process that reduces the amount of fragmentation. It does this by physically organizing the contents of the mass storage device used to store files into the smallest number of contiguous regions . It also attempts to create larger regions of...
helper (DEFRAG) was added.
Microsoft's original NTLDR was coded for loading the NT kernel from FAT, HPFS or NTFS
NTFS
NTFS is the standard file system of Windows NT, including its later versions Windows 2000, Windows XP, Windows Server 2003, Windows Server 2008, Windows Vista, and Windows 7....
, but subsequent versions dropped HPFS support. All of the drivers and helpers became 32-bit PE executables
Portable Executable
The Portable Executable format is a file format for executables, object code and DLLs, used in 32-bit and 64-bit versions of Windows operating systems. The term "portable" refers to the format's versatility in numerous environments of operating system software architecture...
. The FAT file system was moved out of the Kernel to an IFS and was heavily optimized for performance, taking advantage of the 32-bit processing capabilities (being called FASTFAT).
Original Windows NT 3.1 incorporated FAT, HPFS (Pinball) and the newly created NTFS drivers, along with a new and improved CD-ROM filesystem driver that incorporated long file names using the Microsoft Joliet
Joliet (file system)
Joliet is the name of an extension to the ISO 9660 file system. It has been specified and endorsed by Microsoft and has been supported by all versions of its Windows OS since Windows 95 and Windows NT...
filesystem.
Windows NT 3.51 added per-file compression to NTFS and to the IFS interface.
In Windows NT 4.0 the HPFS was removed. In Windows 2000 FASTFAT was updated to support FAT32 and UDF was added.
Windows 2000 modified the IFS interface to add per-file encryption.
Network file-sharing protocols and antivirus are also implemented using IFS.
Apple started including read only HFS+ drivers in Mac OS X 10.6's version of Boot Camp for use in Windows XP
Windows XP
Windows XP is an operating system produced by Microsoft for use on personal computers, including home and business desktops, laptops and media centers. First released to computer manufacturers on August 24, 2001, it is the second most popular version of Windows, based on installed user base...
, Windows Vista
Windows Vista
Windows Vista is an operating system released in several variations developed by Microsoft for use on personal computers, including home and business desktops, laptops, tablet PCs, and media center PCs...
, and Windows 7.
See also
- Virtual file systemVirtual file systemA virtual file system or virtual filesystem switch is an abstraction layer on top of a more concrete file system. The purpose of a VFS is to allow client applications to access different types of concrete file systems in a uniform way...
- List of file systems
- Comparison of file systemsComparison of file systems-General information:-Limits:-Metadata:-Features:-Allocation and layout policies:-Supporting operating systems:-See also:* Comparison of archive formats* Comparison of file archivers* List of archive formats* List of file archivers...
- IFSHLP.SYSIFSHLP.SYSIFSHLP.SYS is an MS-DOS device driver included with Microsoft Windows. It enables Windows to make direct file system calls bypassing MS-DOS methods and use native 32-bit file access for both local and network devices...
ext2/ext3
- Ext2 file system driver for windows 2000/XP/Vista (x86/amd64) (supports writing/multiple codepages, ext3 htree, journal support new in 0.50)
- ext2 IFS for Windows NT (Read only)
- Ext2IFSExt2IFSExt2IFS is a freeware Installable File System for Microsoft Windows that provides support for reading and writing the ext2 and ext3 file systems that are typically used by Linux. According to the author, it is handy for users with a dual boot configuration to transfer files between the two...
/ Another ext2-3 IFS for Windows NT/2000/XP/2003 (Read/Write; support for UTF-8 file names and ext3 htree; ext3 journal not supported )
OS/2
Other
- Solid File System - (SolFS) cross-platform single-file virtual filesystem with encryption and compression
- Callback File System - SDK that lets developers create installable virtual file systems for Windows in user mode
- RomFS - Windows driver examples
- WinFUSE - a .NET based Filesystem in USErspace framework that uses SMB instead of IFS
- Dokan - a user mode filesystem toolkit by means of an IFS proxy driver