312 lines
14 KiB
HTML
312 lines
14 KiB
HTML
<HTML>
|
|
<HEAD>
|
|
<TITLE>de(9)</TITLE>
|
|
</HEAD>
|
|
<BODY>
|
|
<H1>de(9)</H1>
|
|
<HR>
|
|
<PRE>
|
|
<STRONG>Command:</STRONG> <STRONG>de</STRONG> <STRONG>-</STRONG> <STRONG>disk</STRONG> <STRONG>editor</STRONG>
|
|
<STRONG>Syntax:</STRONG> <STRONG>de</STRONG> [<STRONG>-w</STRONG>] <EM>block</EM>_<EM>device</EM>
|
|
<STRONG>de</STRONG> <STRONG>-r</STRONG> <EM>file</EM>
|
|
<STRONG>Flags:</STRONG> <STRONG>-r</STRONG> Recover a file that has been removed
|
|
<STRONG>-w</STRONG> Enable writing, so device can be modified
|
|
<STRONG>Examples:</STRONG> de -r /usr/ast/prog.c # Undo the effects of: <EM>rm</EM>
|
|
/<EM>usr</EM>/<EM>ast</EM>/<EM>prog</EM>.<EM>c</EM>
|
|
de -w /dev/fd0 # Edit /<EM>dev</EM>/<EM>fd0</EM> for writing
|
|
|
|
The <EM>de</EM> 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 <STRONG>-w</STRONG> option is given, <EM>de</EM> 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 <STRONG>-r</STRONG> option supports automated recovery of files
|
|
removed by <EM>unlink</EM>.
|
|
|
|
<STRONG>Positioning</STRONG>
|
|
|
|
Disks are divided into blocks (also called 'zones') of 1024 bytes.
|
|
<EM>De</EM> 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. <EM>De</EM> knows
|
|
the type of the current block, but will allow most positioning commands
|
|
and visual modes to function anywhere on the disk.
|
|
|
|
The <EM>f</EM> command (or PGDN on the keypad) moves forward to the next
|
|
block, similarly <EM>b</EM> (PGUP) moves backwards one block. <EM>F</EM> (END) moves to
|
|
the last block and <EM>B</EM> (HOME) moves to the first block.
|
|
|
|
The arrow keys (or <EM>u</EM>, <EM>d</EM>, <EM>l</EM>, and <EM>r</EM>) 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.
|
|
|
|
<STRONG>Mode</STRONG> <STRONG>Up</STRONG> <STRONG>Down</STRONG> <STRONG>Left</STRONG> <STRONG>Right</STRONG>
|
|
Word -2 +2 -32 +32
|
|
Block -64 +64 -1 +1
|
|
Map -256 +256 -4 +4
|
|
|
|
The <EM>g</EM> 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 <EM>G</EM> 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 <EM>I</EM> 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.
|
|
|
|
<STRONG>The</STRONG> <STRONG>Display</STRONG>
|
|
|
|
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 <EM>de</EM> is being run with the <STRONG>-w</STRONG> 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 <EM>v</EM> command followed by <EM>w</EM>, <EM>b</EM>, or <EM>m</EM> 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 <EM>o</EM> command followed by either an
|
|
<EM>h</EM> (hexadecimal), <EM>d</EM> (decimal), <EM>o</EM> (octal) or <EM>b</EM> (binary).
|
|
|
|
<EM>De</EM> knows where i-nodes are, and will display the contents in a
|
|
readable format, including the <EM>rwx</EM> 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 <EM>ar</EM> archive, then <EM>de</EM> 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.
|
|
|
|
<STRONG>Searching</STRONG>
|
|
|
|
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 <EM>n</EM> command, (a / followed immediately by
|
|
an ENTER is equivalent to an <EM>n</EM>).
|
|
|
|
Whenever a search is in progress <EM>de</EM> 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 <EM>B</EM>, <EM>F</EM>, <EM>g</EM>, <EM>G</EM>, <EM>i</EM>, <EM>I</EM>, <EM>n</EM>, <EM>x</EM> and /. The <EM>p</EM> (previous) command pops the last
|
|
address and visual mode from the stack. This stack is eight entries
|
|
deep.
|
|
|
|
<STRONG>Modifying</STRONG> <STRONG>the</STRONG> <STRONG>File</STRONG> <STRONG>System</STRONG>
|
|
|
|
The <EM>s</EM> 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 <STRONG>-w</STRONG> option must be specified for the <EM>s</EM>
|
|
command to operate. Be careful when modifying a mounted file system.
|
|
|
|
<STRONG>Recovering</STRONG> <STRONG>Files</STRONG>
|
|
|
|
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 <EM>c</EM> 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 <EM>w</EM> command. All bytes
|
|
will have their most significant bit cleared before being written to the
|
|
output file. Bytes containing '\0' or '\177' are not copied. The <EM>W</EM>
|
|
command writes the current block (1024 bytes exactly) to the output
|
|
file.
|
|
|
|
When a file is deleted using <EM>unlink</EM> 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 <EM>x</EM> 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 <EM>p</EM> and advancing to
|
|
the next block. This file extraction process is automated by using the <EM>X</EM>
|
|
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 <EM>X</EM> 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 <EM>de</EM> 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 <EM>X</EM> command may
|
|
be used to move a sparse file from one device to another.
|
|
|
|
Automatic recovery may be initiated by the <STRONG>-r</STRONG> option on the command
|
|
line. Also specified is the path name of a file just removed by <EM>unlink</EM>.
|
|
<EM>De</EM> 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 <EM>x</EM> and an <EM>X</EM> command.
|
|
|
|
The recovered file will be written to /<EM>tmp</EM>. <EM>De</EM> will refuse to
|
|
automatically recover a file on the same file system as /<EM>tmp</EM>. The lost
|
|
file must have belonged to the user. If automatic recovery will not
|
|
complete, then manual recovery may be performed.
|
|
|
|
<STRONG>Miscellaneous</STRONG>
|
|
|
|
The user can terminate a session with <EM>de</EM> by typing <EM>q</EM>, CTRL-D, or
|
|
the key associated with SIGQUIT.
|
|
|
|
The <EM>m</EM> command invokes the MINIX <EM>sh</EM> shell as a subprocess.
|
|
|
|
For help while using <EM>de</EM> use <EM>h</EM>.
|
|
|
|
<STRONG>Command</STRONG> <STRONG>Summary</STRONG>
|
|
|
|
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 <EM>de</EM> 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 <EM>G</EM>, <EM>s</EM> and <EM>X</EM> will only function if the current visual
|
|
display mode is 'word.' The commands <EM>i</EM>, <EM>I</EM> and <EM>x</EM> change the mode to
|
|
'word' on completion. The commands <EM>G</EM> 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.
|
|
|
|
|
|
|
|
<EM>De</EM> 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 <EM>de</EM>.
|
|
|
|
The i-node and zone bit maps are read from the device when <EM>de</EM>
|
|
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 <EM>de</EM> and will become out-of-date if observing a mounted
|
|
file system.
|
|
|
|
<EM>De</EM> 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'.
|
|
|
|
<STRONG>Author</STRONG>
|
|
|
|
The <EM>de</EM> program was written by Terrence Holm.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</PRE>
|
|
</BODY>
|
|
</HTML>
|