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 library’s 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