1 Week 11 FAT32 Boot Sector, Locating Files and Dirs Classes COP4610 / CGS5765 Florida State University.

Slides:



Advertisements
Similar presentations
Operating Systems File Management.
Advertisements

Recap – Intro to Project 3 and FAT32
1 Week 12 FAT32 Utility Operations Guide Classes COP4610 / CGS5765 Florida State University.
Chapter 10: File-System Interface
The FAT File System CSC 414. Objectives  Understand the structure and components of the FAT (12/16/32) File Systems  Understand what happens when a.
Exploring the UNIX File System and File Security
11/13/01CS-550 Presentation - Overview of Microsoft disk operating system. 1 An Overview of Microsoft Disk Operating System.
File Management Systems
Chapter 13 – File and Database Systems
Lecture 10: The FAT, VFAT, and NTFS Filesystems 6/17/2003 CSCE 590 Summer 2003.
File Systems. 2 Storing Information Applications can store it in the process address space Why is it a bad idea? –Size is limited to size of virtual address.
CS 104 Introduction to Computer Science and Graphics Problems Operating Systems (4) File Management & Input/Out Systems 10/14/2008 Yang Song (Prepared.
6/24/2015B.RamamurthyPage 1 File System B. Ramamurthy.
Operating Systems File systems
Guide To UNIX Using Linux Third Edition
7/15/2015B.RamamurthyPage 1 File System B. Ramamurthy.
Week 10 Project 3: An Introduction to File Systems
Guide To UNIX Using Linux Fourth Edition
Objectives Learn what a file system does
LIS508 lecture 5: storage devices Thomas Krichel
Rensselaer Polytechnic Institute CSCI-4210 – Operating Systems David Goldschmidt, Ph.D.
1 THE UNIX FILE SYSTEM By Chokechai Chuensukanant ID COSC 513 Operating System.
1 Project 3: An Introduction to File Systems CS3430 Operating Systems University of Northern Iowa.
MCTS Guide to Microsoft Windows Vista Chapter 4 Managing Disks.
IT253: Computer Organization Lecture 3: Memory and Bit Operations Tonga Institute of Higher Education.
Chapter Two Exploring the UNIX File System and File Security.
Chapter 4. INTERNAL REPRESENTATION OF FILES
File Systems CSCI What is a file? A file is information that is stored on disks or other external media.
Getting Started Additional information. Important DOS Commands Getting Started dirlists disk directories verdisplays OS version clsclear command prompt.
Chapter 5 File Management File System Implementation.
File Systems in Real-Time Embedded Applications March 5th Eric Julien Understanding How the File Allocation Table (FAT) Operates 1.
The Functions of Operating Systems Desktop PC Operating Systems.
Manage Directories and Files in Linux. 2 Objectives Understand the Filesystem Hierarchy Standard (FHS) Identify File Types in the Linux System Change.
Chapter Two Exploring the UNIX File System and File Security.
ITR3 lecture 6: intoduction to UNIX Thomas Krichel
Project 6 Unix File System. Administrative No Design Review – A design document instead 2-3 pages max No collaboration with peers – Piazza is for clarifications.
1 Week 13 FAT32 Utility Operations Guide: rm and rmdir Classes COP4610 / CGS5765 Florida State University.
OPERATING SYSTEMS Frans Sanen.  Analyze a FAT file system manually  FAT12 first and simplest version  Still used on smaller disks (e.g. floppies) 
File Systems. 2 What is a file? A repository for data Is long lasting (until explicitly deleted).
© Janice Regan, CMPT 300, May CMPT 300 Introduction to Operating Systems File systems.
UNIX & Windows NT Name: Jing Bai ID: Date:8/28/00.
The Unix File system (UFS) Presented by: Gurpreet Singh Assistant Professor Department of School of Computing and Engineering Galgotias University.
File system In computing, a file system is a method of storing and organizing computer files and the data they contain to make it easy to find and access.
NTFS Filing System CHAPTER 9. New Technology File System (NTFS) Started with Window NT in 1993, Windows XP, 2000, Server 2003, 2008, and Window 7 also.
Chapter 8 File Systems FAT 12/16/32. Defragmentation Defrag a hard drive – Control Panel  System and Security  Administration tools  Defrag hard drive.
COMP091 – Operating Systems 1 Memory Management. Memory Management Terms Physical address –Actual address as seen by memory unit Logical address –Address.
1 FAT32 Boot Sector, Locating Files and Dirs Operating Systems CS3430 Sarah Diesburg.
File Systems May 12, 2000 Instructor: Gary Kimura.
Getting Started with Linux
EXT in Detail High-Performance Database Research Center
UMBC CMSC 421 Spring 2017 The FAT Filesystem.
FAT32 Directory Entries and Operations Guide
FAT32 Directory Entries and Operations Guide
Project 3: An Introduction to File Systems
Introduction to Computers
File I/O, Command Line Parameters, Endian-ness
Operation System Program 4
Exploring the UNIX File System and File Security
File Managements.
File System B. Ramamurthy B.Ramamurthy 11/27/2018.
Project 3: An Introduction to File Systems
Modern PC operating systems
FAT32 Directory Entries and Operations Guide
Disk Structure Analysis
Sector 25 from the Root Directory (in 32 byte chunks)
Department of Computer Science
Recap – Intro to Project 3 and FAT32
FAT File System.
Chapter 5 File Systems -Compiled for MCA, PU
File I/O, Command Line Parameters, Endian-ness
Presentation transcript:

1 Week 11 FAT32 Boot Sector, Locating Files and Dirs Classes COP4610 / CGS5765 Florida State University

Outline Recap of last week’s lecture  Introduction to project 3  Introduction to FAT32 Starting Project 3  How to parse the boot sector  More on serialization  Finding the root directory and files  Understanding open, close, read, write 2

Recap – Intro to Project 3 and FAT32 3

4 Project 3 You will create a user-space utility to manipulate a FAT32 file system image  No more kernel programming!

FAT32 Manipulation Utility open close create rm size cd ls mkdir rmdir read write 5 Utility only recognizes the following built-in commands:

File System Image Manipulation utility will work on a pre- configured FAT32 file system image  Actually a file File system image will have raw FAT32 data structures inside  Just like looking at the raw bytes inside of a disk partition 6

File System Image Your FAT32 manipulation utility will have to  Open the FAT32 file system image  Read parts of the FAT32 file system image and interpret the raw bytes inside to service your utility’s file system commands… …just like a file system! 7

Terminology Byte – 8 bits of data, the smallest addressable unit in modern processors Sector – Smallest addressable unit on a storage device. Usually this is 512 bytes Cluster – FAT32-specific term. A group of sectors representing a chunk of data FAT – Stands for file allocation table and is a map of files to data 8

3 main regions… FAT32 Disk Layout Reserved Region FAT Region Data Region Disk armTrack Sector

Reserved Region Reserved Region – Includes the boot sector, the extended boot sector, the file system information sector, and a few other reserved sectors Reserved Region FAT Region Data Region Boot Sector FS Information Sector Additional Reserved Sectors (Optional)

FAT Region FAT Region – A map used to traverse the data region. Contains mappings from cluster locations to cluster locations Reserved Region FAT Region Data Region File Allocation Table #1 Copy of File Allocation Table #1

Data Region Data Region – Using the addresses from the FAT region, contains actual file/directory data Reserved Region FAT Region Data Region Data until end of partition

Where to begin? 1. Mount the file system image with the OS FAT32 driver and take a look around 2. Find the FAT32 spec from Microsoft inside the image, read it 13

File System Image Mount Example $> sudo mount -o loop fat32.img /mnt $> cd /mnt fat32.img is your image file /mnt is your mounting directory Once the file is mounted, you can go into the /mnt directory and issue all your normal file system commands like:  ls, cat, cd, … 14

Hint As you work, it might make sense to first take a look at the raw file system image Hexedit to the rescue! 15

Hexedit $> hexedit [filename] View files in hexadecimal or ASCII Why wouldn’t you want to view the file system image file in your regular editor? 16

Hexedit 17

Hexedit 18 Line numbers in hex

Hexedit 19 Content in hex

Hexedit 20 Content in printable ASCII

Hexadecimal Hints Hex is base 16 – one hexadecimal can represent 0-15 It takes 4 binary bits to represent values 0-15  0000 = 0  1111 = 15 21

Hexadecimal Hints If it takes 4 bits to represent one hexadecimal number, it takes 8 bits to represent two hexadecimal numbers  8 bits = 1 byte Two hex numbers together symbolize one byte  That’s why hex numbers are in groups of two 22

Endianness FAT32 is represented in little endian byte order  Reading left to right, you encounter least- significant byte first  What 32-bit number is this? 0x or 0x ? 23

Endianness Why are characters in order (readable) if some numbers are not? 24

Endianness You must account for little endianness across bytes when reading in numbers of size larger than one byte  Characters are only one byte, no re-ordering necessary 25

Starting Project 3 26

Parse the Boot Sector We need to gather important information about the file system in the boot sector 27

Important Boot Sector Information Size of each region  BPB_BytesPerSec  BPB_SecPerClus  BPB_RsvdSecCnt  BPB_NumFATS  BPB_FATSz32 Root directory (first directory in tree)  BPB_RootClus Warning: this list is not exhaustive! 28

Important Boot Sector Information BPB_BytesPerSector  Offset 11, size 2 bytes  0x0200 =

Next Steps After you have parsed the boot sector and saved key values, you may want to find the root directory  Everything starts here… 30

1. Figure out the root directory cluster number from the boot sector Finding the Root Directory 31

Finding the Root Directory BPB_RootClus  Offset 44, size 4 bytes  0x = 2 32

2. Figure out where the root directory starts in the data region, where N=cluster number  (We just found N=2) FirstSectorofCluster = ((N – 2) * BPB_SecPerClus) + FirstDataSector; Finding the Root Directory 33

Finding the Root Directory 3. Read in the root directory structure located at the first sector of the root directory cluster 34

Finding the Root Directory 4. Does the root directory span more than one cluster? Look up the next cluster number in the FAT.  Find ThisFATSecNum and ThisFATEntOffset for the current cluster number  Go to ThisFATSecNum and read the 32-bit unsigned value starting at offset ThisFATEntOffset  FAT will either give you the next cluster number in the directory or the End of Cluster Chain value 35

What exactly is the FAT? Files and directories may span multiple clusters FAT is a database or array of pointers to the next cluster number of the file or directory 36

Finding the Root Directory Next cluster number of root directory in FAT  EoC=0x0FFFFFF8 – directory does not go on 37

Finding the Root Directory Next cluster number of root directory in FAT  EoC=0x0FFFFFF8 – directory does not go on 38 …otherwise this would be the next cluster number…

Directory Structure Each directory is made up of one or more directory entries that contain  File name (or sub-directory name)  Attributes  First cluster number Cluster number where file or directory in question starts  More… 39

Finding Files and Directories Files and sub-directory entries can be found by going to their first cluster number  Found in the directory entry 40

Finding fatgen103.pdf Suppose we have read in the root direcotry and want to find the file ‘fatgen103.pdf’ 41

Finding fatgen103.pdf Suppose we have read in the root direcotry and want to find the file ‘fatgen103.pdf’ 42 Directory entry for fatgen103.pdf

Finding fatgen103.pdf Entry’s first cluster number  0x = High wordLow word

Finding fatgen103.pdf Plug N=17 into FirstSectorofCluster equation, go to that sector… 44

Finding fatgen103.pdf Does the file continue after this cluster?  Look up current cluster number 17 in FAT… 45 Continues to cluster 0x12=18!

Summary of Finding Files/Dirs 1. Find first cluster number in directory entry of interesting file or directory 2. Figure out the sector to read using cluster number and FirstSectorofCluster equation 3. Read that cluster 4. Figure out if file or directory continues past cluster by looking up FAT[current cluster number]  If EoC mark stop  Else go to 3 with cluster=FAT[current cluster number] 46

File System Utility Operations Open, Close, Read, Write 47

Starting our Utility $>./fat32_reader fat32.img /] Fat32_reader is name of our utility Should return a different prompt (like “/]”) to symbolize that user is inside utility 48

Handling Open Files An open file is a file we allow I/O operations to be performed on  read  write To handle open files, we must maintain a table of files that are open

Opening Files /] open “fatinfo.txt” rw If “fatinfo.txt” is found in the current directory, open “fatinfo.txt”  In order to find fatinfo.txt, you must be able to interpret the current directory and determine whether fatinfo.txt is part of that directory Once you open fatinfo.txt, store its name (at least) in the open file table

I/O on Open Files /] read “fatinfo.txt” Only allow the read if fatinfo.txt is open In order to read fatinfo.txt, you must look into the open file table, look up the address of fatinfo.txt (or store it with its name), and read enough of the data clusters to satisfy the read request

I/O on Open Files /] write “fatinfo.txt” 0 “Hello” If write stays within the cluster  Just write data If write goes beyond cluster 1. Find a free cluster, remember as next_cluster_number 2. Change FAT[current_cluster] from EoC to next_cluster_number 3. Change FAT[next_cluster_number] to EoC 4. Write the data in the cluster next_cluster_number 52

Closing Files /] close “fatinfo.txt” Remove this file’s entry from the open file table 53

To Do Write code to parse the boot directory  Cannot go anywhere without this code Write code to open and close files Write code to read directories and files Try writing to files and directories 54

Next Time Discussion of other file operations 55