DE.9
资源名称:os_source.zip [点击查看]
上传用户:datang2001
上传日期:2007-02-01
资源大小:53269k
文件大小:14k
源码类别:
操作系统开发
开发平台:
C/C++
- Command: de - disk editor
- Syntax: de [-w] block_device
- de -r file
- Flags: -r Recover a file that has been removed
- -w Enable writing, so device can be modified
- Examples: de -r /usr/ast/prog.c # Undo the effects of: rm
- /usr/ast/prog.c
- de -w /dev/fd0 # Edit /dev/fd0 for writing
- The de program allows a system administrator to examine and modify
- a MINIX file system device. Commands are available to move to any
- address on the disk and display the disk block contents. This
- information may be presented in one of three visual modes: as two-byte
- words, as ASCII characters or as a bit map. The disk may be searched for
- a string of characters. If the -w option is given, de will open the
- device for writing and words may be modified. Without this flag,
- writing is prohibited. Lost blocks and files can be recovered using a
- variety of commands. The -r option supports automated recovery of files
- removed by unlink.
- Positioning
- Disks are divided into blocks (also called 'zones') of 1024 bytes.
- De keeps a current address on the disk as a block number and a byte
- offset within the block. In some visual modes the offset is rounded off,
- for example, in 'word' mode the offset must be even.
- There are different types of blocks on a file system device,
- including a super block, bit maps, i-nodes and data blocks. De knows
- the type of the current block, but will allow most positioning commands
- and visual modes to function anywhere on the disk.
- The f command (or PGDN on the keypad) moves forward to the next
- block, similarly b (PGUP) moves backwards one block. F (END) moves to
- the last block and B (HOME) moves to the first block.
- The arrow keys (or u, d, l, and r) change the current address by
- small increments. The size of the increment depends on the current
- display mode, as shown below. The various sizes suit each display and
- pointers move on the screen to follow each press of an arrow key.
- Mode Up Down Left Right
- Word -2 +2 -32 +32
- Block -64 +64 -1 +1
- Map -256 +256 -4 +4
- The g command allows movement to any specified block. Like all commands
- that take arguments, a prompt and subsequent input are written to the
- bottom line of the screen. Numerical entry may be decimal, octal or
- hexadecimal, for example 234, -1, 070, 0xf3, -X3C.
- While checking an i-node one may want to move to a block listed as
- a zone of the file. The G command takes the contents at the current
- address in the device as a block number and indirectly jumps to that
- block.
- The address may be set to the start of any i-node using the
- command and supplying an i-node number. The I command maps a given file
- name into an i-node address. The file must exist on the current device
- and this device must be mounted.
- The Display
- The first line of the display contains the device name, the name of
- the current output file (if one is open) and the current search string.
- If de is being run with the -w option then the device name is flagged
- with '(w).' If a string is too long to fit on the line it is marked with
- '...'.
- The second line contains the current block number, the total number
- of blocks, and the type of the current block. The types are: boot,
- super, i-node bit map, zone bit map, i-nodes and data block. If the
- current address is within a data block then the string 'in use' is
- displayed if the block corresponds to a set in the zone bit map.
- The third line shows the offset in the current block. If the
- current address is within either the i-node or zone bit maps then the i-
- node or block number corresponding to the current bit is shown. If the
- current address is within an i-node then the i-node number and 'in use'
- status is displayed. If the address is within a bit map or i-node
- block, but past the last usable entry, then the string 'padding' is
- shown.
- The rest of the screen is used to display data from the current
- block. There are three visual display modes: 'word,' 'block,' and
- 'map.' The v command followed by w, b, or m sets the current display
- mode.
- In 'word' mode 16 words, of two bytes each, are shown in either
- base 2, 8, 10 or 16. The current base is displayed to the far right of
- the screen. It can be changed using the o command followed by either an
- h (hexadecimal), d (decimal), o (octal) or b (binary).
- De knows where i-nodes are, and will display the contents in a
- readable format, including the rwx bits, the user name and the time
- field. If the current page is at the beginning of the super block, or an
- executable file or an ar archive, then de will also inform the user. In
- all other cases the contents of the 16 words are shown to the right as
- equivalent ASCII characters.
- In 'block' mode a whole block of 1024 bytes is displayed as ASCII
- characters, 64 columns by 16 lines. Control codes are shown as
- highlighted characters. If the high order bit is set in any of the 1024
- bytes then an 'MSB' flag is shown on the far right of the screen, but
- these bytes are not individually marked.
- In 'map' mode 2048 bits (256 bytes) are displayed from the top to
- the bottom (32 bits) and from the left to the right of the screen. Bit
- zero of a byte is towards the top of the screen. This visual mode is
- generally used to observe the bit map blocks. The number of set bits
- displayed is written on the far right of the screen.
- Searching
- A search for an ASCII string is initiated by the / command.
- Control characters not used for other purposes may be entered in the
- search string, for example CTRL-J is an end-of-line character. The
- search is from the current position to the end of the current device.
- Once a search string has been defined by a use of /, the next
- search may be initiated with the n command, (a / followed immediately by
- an ENTER is equivalent to an n).
- Whenever a search is in progress de will append one . to the prompt
- line for every 500 blocks searched. If the string is found between the
- end of the file system and the actual end of the device, then the
- current address is set to the end of the file system.
- Some of the positioning commands push the current address and
- visual mode in a stack before going to a new address. These commands
- are B, F, g, G, i, I, n, x and /. The p (previous) command pops the last
- address and visual mode from the stack. This stack is eight entries
- deep.
- Modifying the File System
- The s command will prompt for a data word and store it at the
- current address on the disk. This is used to change information that can
- not be easily changed by any other means.
- The data word is 16 bits wide, it may be entered in decimal, octal
- or hexadecimal. Remember that the -w option must be specified for the s
- command to operate. Be careful when modifying a mounted file system.
- Recovering Files
- Any block on the disk may be written to an output file. This is
- used to recover blocks marked as free on the disk. A write command will
- request a file name the first time it is used, on subsequent writes the
- data is appended to the current output file.
- The name of the current output file is changed using the c command.
- This file should be on a different file system, to avoid overwriting an
- i-node or block before it is recovered.
- An ASCII block is usually recovered using the w command. All bytes
- will have their most significant bit cleared before being written to the
- output file. Bytes containing ' ' or '177' are not copied. The W
- command writes the current block (1024 bytes exactly) to the output
- file.
- When a file is deleted using unlink the i-node number in the
- directory is zeroed, but before its removal, it is copied into the end
- of the file name field. This allows the i-node of a deleted file to be
- found by searching through a directory. The x command asks for the path
- name of a lost file, extracts the old i-node number and changes the
- current disk address to the start of the i-node.
- Once an i-node is found, all of the freed blocks may be recovered
- by checking the i-node zone fields, using 'G' to go to a block, writing
- it back out using 'w', going back to the i-node with p and advancing to
- the next block. This file extraction process is automated by using the X
- command, which goes through the i-node, indirect and double indirect
- blocks finding all the block pointers and recovering all the blocks of
- the file.
- The X command closes the current output file and asks for the name
- of a new output file. All of the disk blocks must be marked as free, if
- they are not the command stops and the file must be recovered manually.
- When extracting lost blocks de will maintain 'holes' in the file.
- Thus, a recovered sparse file does not allocate unused blocks and will
- keep its efficient storage scheme. This property of the X command may
- be used to move a sparse file from one device to another.
- Automatic recovery may be initiated by the -r option on the command
- line. Also specified is the path name of a file just removed by unlink.
- De determines which mounted file system device held the file and opens
- it for reading. The lost i-node is found and the file extracted by
- automatically performing an x and an X command.
- The recovered file will be written to /tmp. De will refuse to
- automatically recover a file on the same file system as /tmp. The lost
- file must have belonged to the user. If automatic recovery will not
- complete, then manual recovery may be performed.
- Miscellaneous
- The user can terminate a session with de by typing q, CTRL-D, or
- the key associated with SIGQUIT.
- The m command invokes the MINIX sh shell as a subprocess.
- For help while using de use h.
- Command Summary
- PGUP b Back one block
- PGDN f Forward one block
- HOME B Goto first block
- END F Goto last block
- UP u Move back 2/64/256 bytes
- DOWN d Move forward 2/64/256 bytes
- LEFT l Move back 32/1/4 bytes
- RIGHT r Move forward 32/1/4 bytes
- g Goto specified block
- G Goto block indirectly
- i Goto specified i-node
- I Filename to i-node
- / Search
- n Next occurrence
- p Previous address
- h Help
- EOF q Quit
- m MINIX shell
- v Visual mode (w b m)
- o Output base (h d o b)
- c Change file name
- w Write ASCII block
- W Write block exactly
- x Extract lost directory entry
- X Extract lost file blocks
- s Store word
- NOTES: When entering a line in response to a prompt from de there are a
- couple of editing characters available. The previous character may be
- erased by typing CTRL-H and the whole line may be erased by typing CTRL-
- U. ENTER terminates the input. If DELETE or a non-ASCII character is
- typed then the command requesting the input is aborted.
- The commands G, s and X will only function if the current visual
- display mode is 'word.' The commands i, I and x change the mode to
- 'word' on completion. The commands G and / change the mode to 'block'.
- These restrictions and automatic mode conversions are intended to aid
- the user.
- The 'map' mode uses special graphic characters, and only functions
- if the user is at the console.
- De generates warnings for illegal user input or if erroneous data
- is found on the disk, for example a corrupted magic number. Warnings
- appear in the middle of the screen for two seconds, then the current
- page is redrawn. Some minor errors, for example, setting an unknown
- visual mode, simply ring the bell. Major errors, for example I/O
- problems on the file system device cause an immediate exit from de.
- The i-node and zone bit maps are read from the device when de
- starts up. These determine whether 'in use' or 'not in use' is displayed
- in the status field at the top of the screen. The bit maps are not re-
- read while using de and will become out-of-date if observing a mounted
- file system.
- De requires termcap definitions for 'cm' and 'cl'. Furthermore,
- 'so' and 'se' will also be used if available. The ANSI strings generated
- by the keypad arrows are recognized, as well as any single character
- codes defined by 'ku', 'kd', 'kl' and 'kr'.
- Author
- The de program was written by Terrence Holm.