The Installable File System (IFS) is a
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.
Some file syst ...
in
MS-DOS
MS-DOS ( ; acronym for Microsoft Disk Operating System, also known as Microsoft DOS) is an operating system for x86-based personal computers mostly developed by Microsoft. Collectively, MS-DOS, its rebranding as IBM PC DOS, and a few ope ...
/
PC DOS
PC or pc may refer to:
Arts and entertainment
* Player character or playable character, a fictional character controlled by a human player, usually in role-playing games or computer games
* ''Port Charles'', an American daytime TV soap opera
* ...
4.x,
IBM OS/2
OS/2 (Operating System/2) is a series of computer operating systems, initially created by Microsoft and IBM under the leadership of IBM software designer Ed Iacobucci. As a result of a feud between the two companies over how to position OS/2 ...
and
Microsoft Windows
Windows is a group of several proprietary graphical operating system families developed and marketed by Microsoft. Each family caters to a certain sector of the computing industry. For example, Windows NT for consumers, Windows Server for serv ...
that enables the
operating system
An operating system (OS) is system software that manages computer hardware, software resources, and provides common services for computer programs.
Time-sharing operating systems schedule tasks for efficient use of the system and may also in ...
to recognize and load
drivers for
file system
In computing, file system or filesystem (often abbreviated to fs) is a method and data structure that the operating system uses to control how data is stored and retrieved. Without a file system, data placed in a storage medium would be one larg ...
s.
History
When
IBM and
Microsoft
Microsoft Corporation is an American multinational technology corporation producing computer software, consumer electronics, personal computers, and related services headquartered at the Microsoft Redmond campus located in Redmond, Washing ...
were co-developing OS/2, they realized that the
FAT file system
File Allocation Table (FAT) is a file system developed for personal computers. Originally developed in 1977 for use on floppy disks, it was adapted for use on Hard disk drive, hard disks and other devices. It is often supported for compatibi ...
did not offer some of the features modern OSes would require, and Microsoft began developing the
High Performance File System
HPFS (High Performance File System) is a file system created specifically for the OS/2 operating system to improve upon the limitations of the FAT file system. It was written by Gordon Letwin and others at Microsoft and added to OS/2 version 1 ...
(HPFS), 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.
Implementations
IFS in DOS 4.x
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 is the primary configuration file for the DOS and OS/2 operating systems. It is a special ASCII text file that contains user-accessible setup or configuration directives evaluated by the operating system's DOS BIOS (typically residing ...
file.
It is a
NE 16-bit
16-bit microcomputers are microcomputers that use 16-bit microprocessors.
A 16-bit register can store 216 different values. The range of integer values that can be stored in 16 bits depends on the integer representation used. With the two mos ...
dynamically loaded library
Dynamic loading is a mechanism by which a computer program can, at run time, load a library (or other binary) into memory, retrieve the addresses of functions and variables contained in the library, execute those functions or access those varia ...
. No matter if it is a
32-bit
In computer architecture, 32-bit computing refers to computer systems with a processor, memory, and other major system components that operate on data in 32-bit units. Compared to smaller bit widths, 32-bit computers can perform large calculation ...
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 up), are executed in user-space (
ring 3) and contain the code used for typical filesystem maintenance, and are called by
CHKDSK
In computing, CHKDSK (short for "check disk") is a system tool and command in DOS, Digital Research FlexOS, IBM/Toshiba 4690 OS, IBM OS/2, Microsoft Windows and related operating systems. It verifies the file system integrity of a volume and at ...
and
FORMAT
Format may refer to:
Printing and visual media
* Text formatting, the typesetting of text elements
* Paper formats, or paper size standards
* Newspaper format, the size of the paper page
Computing
* File format, particular way that informatio ...
utilities.
This four-piece scheme allowed developers to dynamically add a new bootable filesystem, as the
ext2
The ext2 or second extended file system is a file system for the Linux kernel. It was initially designed by French software developer Rémy Card as a replacement for the extended file system (ext). Having been designed according to the same pr ...
driver for OS/2 demonstrated.
CD-ROM
A CD-ROM (, compact disc read-only memory) is a type of read-only memory consisting of a pre-pressed optical compact disc that contains data. Computers can read—but not write or erase—CD-ROMs. Some CDs, called enhanced CDs, hold both comput ...
filesystem driver (
ISO 9660
ISO 9660 (also known as ECMA-119) is a file system for optical disc media. Being sold by the International Organization for Standardization (ISO) the file system is considered an international technical standard. Since the specification is av ...
) was added in OS/2 2.0,
UDF was added in OS/2 4.0 and
JFS was added in OS/2 4.5.
ArcaOS
ArcaOS is an operating system based on OS/2, developed and marketed by Arca Noae, LLC under license from IBM. It was codenamed Blue Lion during its development. It builds on OS/2 Warp 4.52 by adding support for new hardware, fixing defects and l ...
, the latest packaging of OS/2, has a number of filesystem drivers available, including FAT32.
There was also an official 32-bit HPFS IFS, called
HPFS386
HPFS (High Performance File System) is a file system created specifically for the OS/2 operating system to improve upon the limitations of the FAT file system. It was written by Gordon Letwin and others at Microsoft and added to OS/2 version 1 ...
that improved performance and added some features, like variable size cache and
Access Control Lists
In computer security, an access-control list (ACL) is a list of permissions associated with a system resource (object). An ACL specifies which users or system processes are granted access to objects, as well as what operations are allowed on giv ...
, and was available only in certain OS/2 server editions.
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
File Allocation Table (FAT) is a file system developed for personal computers. Originally developed in 1977 for use on floppy disks, it was adapted for use on hard disks and other devices. It is often supported for compatibility reasons by c ...
support, etc.
Network file-sharing protocols like
NFS and
SMB are also implemented using IFS, and the IFS interface never changed.
IFS in Windows 3.11 and 9x
IFSHLP.SYS (the Installable File System Helper) is an
MS-DOS
MS-DOS ( ; acronym for Microsoft Disk Operating System, also known as Microsoft DOS) is an operating system for x86-based personal computers mostly developed by Microsoft. Collectively, MS-DOS, its rebranding as IBM PC DOS, and a few ope ...
device driver that was first released as part of Microsoft
Windows 3.11
Windows 3.1 is a major release of Microsoft Windows. It was released to manufacturing on April 6, 1992, as a successor to Windows 3.0.
Like its predecessors, the Windows 3.1 series ran as a shell on top of MS-DOS. Codenamed Janus, Windows 3 ...
. It enables native
32-bit file access
32-bit file access refers to the higher performance, protected mode disk caching method introduced in Windows for Workgroups 3.11, which replaced SmartDrive (Smartdrv). It bypassed MS-DOS and directly accessed the disk, either via the BIOS or (pref ...
in
Windows 386 Enhanced Mode by bypassing the 16-bit DOS API and ensuring that no other
real mode
Real mode, also called real address mode, is an operating mode of all x86-compatible CPUs. The mode gets its name from the fact that addresses in real mode always correspond to real locations in memory. Real mode is characterized by a 20-bit seg ...
driver intercepts
INT 21h
The DOS API is an API which originated with 86-DOS and is used in MS-DOS/ PC DOS and other DOS-compatible operating systems. Most calls to the DOS API are invoked using software interrupt 21h ( INT 21h). By calling INT 21h with a subfunctio ...
calls.
The protected mode counterpart of IFSHLP.SYS is
IFSMGR.386 in Windows 3.11 and
IFSMGR.VXD in Windows 95 and Windows 98.
IFS in Windows NT
The IFS API is part of the
Windows Driver Kit
The Windows Driver Kit (WDK) is a software toolset from Microsoft that enables the development of device drivers for the Microsoft Windows platform. It includes documentation, samples, build environments, and tools for driver developers. A comple ...
.
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, NT IFS was redesigned into 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
In the maintenance of file systems, defragmentation is a process that reduces the degree of fragmentation. It does this by physically organizing the contents of the mass storage device used to store files into the smallest number of contigu ...
helper (DEFRAG) was added.
Microsoft's original NTLDR was coded for loading the NT kernel from FAT,
HPFS or
NTFS
New Technology File System (NTFS) is a proprietary journaling file system developed by Microsoft. Starting with Windows NT 3.1, it is the default file system of the Windows NT family. It superseded File Allocation Table (FAT) as the preferred fil ...
, 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
File Allocation Table (FAT) is a file system developed for personal computers. Originally developed in 1977 for use on floppy disks, it was adapted for use on hard disks and other devices. It is often supported for compatibility reasons by ...
).
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 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 'file system filter' drivers which intercept file I/O operations.
Apple
An apple is an edible fruit produced by an apple tree (''Malus domestica''). Apple fruit tree, trees are agriculture, cultivated worldwide and are the most widely grown species in the genus ''Malus''. The tree originated in Central Asia, wh ...
started including read only
HFS+
HFS Plus or HFS+ (also known as Mac OS Extended or HFS Extended) is a journaling file system developed by Apple Inc. It replaced the Hierarchical File System (HFS) as the primary file system of Apple computers with the 1998 release of Mac OS 8.1 ...
drivers in
Mac OS X 10.6
Mac OS X Snow Leopard (version 10.6) is the seventh major release of macOS, Apple's desktop and server operating system for Macintosh computers.
Snow Leopard was publicly unveiled on June 8, 2009 at Apple’s Worldwide Developers Conference. ...
's version of
Boot Camp for use in
Windows XP
Windows XP is a major release of Microsoft's Windows NT operating system. It was released to manufacturing on August 24, 2001, and later to retail on October 25, 2001. It is a direct upgrade to its predecessors, Windows 2000 for high-end and ...
,
Windows Vista
Windows Vista is a major release of the Windows NT operating system developed by Microsoft. It was the direct successor to Windows XP, which was released five years before, at the time being the longest time span between successive releases of ...
, and
Windows 7
Windows 7 is a major release of the Windows NT operating system developed by Microsoft. It was released to manufacturing on July 22, 2009, and became generally available on October 22, 2009. It is the successor to Windows Vista, released nearly ...
.
Further reading
*
*
*
See also
*
Virtual file system
A virtual file system (VFS) or virtual filesystem switch is an abstract 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. A VFS ...
*
List of file systems
The following lists identify, characterize, and link to more thorough information on Computer file systems.
Many older operating systems support only their one "native" file system, which does not bear any name apart from the name of the operating ...
*
Comparison of file systems
The following tables compare general and technical information for a number of file systems.
General information
Limits
Metadata
Features File capabilities
Block capabilities
Note that in addition to the below table, blo ...
*
Network redirector
In DOS and Windows, a network redirector, or redirector, is an operating system driver that sends data to and receives data from a remote device. A network redirector provides mechanisms to locate, open, read, write, and delete files and submit p ...
*
Dokan Library
References
External links
File systems driver design guideat
Microsoft Docs
Microsoft Docs is the library of technical documentation for end users, developers, and IT professionals who work with Microsoft products. The Microsoft Docs website provides technical specifications, conceptual articles, tutorials, guides, API ...
ext2/ext3/ext4
*
Ext2Fsd
Ext2Fsd (short for Ext2 File System Driver) is a free Installable File System driver written in C for the Microsoft Windows operating system family. It facilitates read and write access to the ext2, ext3 and ext4 file systems.
The driver can b ...
is a
GPL
The GNU General Public License (GNU GPL or simply GPL) is a series of widely used free software licenses that guarantee end users the four freedoms to run, study, share, and modify the software. The license was the first copyleft for general u ...
file system driver for Windows 2000 to Windows 8 (32Bit and 64Bit); it supports writing/multiple codepages, ext3 htree, journal since version 0.50 available
ext2 IFS for Windows NT(Read only)
*
Ext2IFS 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 )
ReiserFS
ReiserFS IFS for Windows NT(Read only)
HFS
Commercial HFS IFS for Windows NT
OS/2
HFS IFS for OS/2FTP server offering IFS drivers for OS/2
Other
CBFS Storage- cross-platform single-file virtual filesystem with encryption and compression
CBFS Connect- 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
Dokany- an MIT-licensed framework for filesystems in Windows userspace that uses a separate kernel driver, with available .NET bindings
{{OS/2
Computer file systems
IBM file systems
OS/2
Microsoft application programming interfaces