Final Year Project:
Using Linux Filesystems Under Windows
Chris Bryden
BEng. Electronics and Software Engineering
School of Computer Science
University of Birmingham
58
8. Conclusions
The result of the project has been to develop an MS Windows dynamic
library containing functions that can be used to navigate and copy files from a
hard disk partition that contains the Second Extended Filesystem (ext2fs). Also,
an application that runs under MS Windows 95 or 3.x that uses the above library
to implement a command line interface has been produced.
The specification for the project was designed in such a way as to offer
several fall-back positions to ensure that if all the aspects of the original
specification proved impractical to implement in the given time frame, a useful
program was still produced. The program that was produced differs in two main
ways from the specification, it is read only and it has no full graphical user
interface. These were not developed due to time constraints. However, the
program that was produced still provides a useful, and until now, largely
unavailable, method of reading files located on an ext2fs partition.
The librarys three layer structure provided a framework on which to base
the workload for the project. Layers 0 and 1 are the basis to the whole project,
and therefore it was critical that these were developed first. It was envisaged that
each of these layers would require only a month to develop, with a further two
months for the implementation of layer 2 and the graphical user interface.
However, the technical difficulty and therefore amount of time necessary to
implement layers 0 and 1 was underestimated in the original specification and
plan of action, and it is for this reason that there was no time to implement
filesystem writing and the graphical user interface.
Layer 0 achieves the task of accessing hard disks that are not normally
visible to the user under Windows. This has involved using interrupts to access
the PC BIOS to perform operations on the hard disk. To implement these
functions an understanding of interrupts, implementing the interrupt calls in
assembly language and the PC BIOS hard disk functions had to be gained. Also,
implementation involved learning how to use the DOS Protected Mode Interface
(DPMI) to issue real-mode interrupts in order to call the BIOS disk functions
from within a Windows application.
The raw information read from the disk is then translated by layer 1 into
information useful to the user, such as directories and files. This is then used to
implement familiar filesystem commands such as ls, cd and cp. In order to
write the code for this section of the library, a thorough understanding of the
inner workings of the ext2 filesystem and how it was laid out on the hard disk had
to be gained. This involved a long process of research and experimentation
culminating in the writing of a set of functions able to manipulate inodes, group