Installable File System

From Wikipedia, the free encyclopedia

The Installable File System (IFS) is a filesystem API in MS-DOS/PC DOS 4.x, IBM OS/2 and Microsoft Windows that enables the operating system to recognize and load drivers for file systems.

History

When IBM and Microsoft were co-developing OS/2, they realized that the FAT file system did not offer some of the features modern OSes would require, and Microsoft began developing the High Performance File System (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.

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 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 CHKDSK and FORMAT utilities.

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.

IFS in Windows 3.11 and 9x

IFSHLP.SYS (the Installable File System Helper) is an MS-DOS device driver that was first released as part of Microsoft Windows 3.11. It enables native 32-bit file access in Windows 386 Enhanced Mode by bypassing the 16-bit DOS API and ensuring that no other real mode driver intercepts INT 21h calls.

The protected mode counterpart of IFSHLP.SYS is IFSMGR.386 in Windows 3.11 and IFSMGR.VXD in Windows 95 and Windows 98. [1][2]

IFS in Windows NT

The IFS API is part of the Windows Driver Kit.

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 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 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[3] for use in Windows XP, Windows Vista, and Windows 7.

Bibliography

  • O'Reilly - Windows NT File System Internals, A Developer's Guide - By Rajeev Nagar - ISBN 1-56592-249-2
  • Microsoft Press - Inside Windows NT File System - By Helen Custer - ISBN 1-55615-660-X
  • Microsoft Press - Inside Windows NT - By Helen Custer - ISBN 1-55615-481-X

See also

References

  1. ^ Peter H. S. Madsen. "Guide to CONFIG.SYS & AUTOEXEC.BAT". 
  2. ^ Google Books search results for IFSHLP. Retrieved 2011-04-13. 
  3. ^ "Snow Leopard's Boot Camp Includes HFS + Windows Drivers". Retrieved 14 September 2012. 

External links

  • Microsoft's IFSKit

ext2/ext3/ext4

  • Ext2Fsd is a GPL 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/2
  • NTFS and FAT IFS for OS/2
  • FTP server offering IFS drivers for 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
Retrieved from "https://en.wikipedia.org/w/index.php?title=Installable_File_System&oldid=813093494"
This content was retrieved from Wikipedia : http://en.wikipedia.org/wiki/Installable_File_System
This page is based on the copyrighted Wikipedia article "Installable File System"; it is used under the Creative Commons Attribution-ShareAlike 3.0 Unported License (CC-BY-SA). You may redistribute it, verbatim or modified, providing that you comply with the terms of the CC-BY-SA