xref: /freebsd/sbin/fsdb/fsdb.8 (revision fa9896e082a1046ff4fbc75fcba4d18d1f2efc19)
139bb6d1eSPeter Wemm.\"	$NetBSD: fsdb.8,v 1.2 1995/10/08 23:18:08 thorpej Exp $
239bb6d1eSPeter Wemm.\"
339bb6d1eSPeter Wemm.\" Copyright (c) 1995 John T. Kohl
439bb6d1eSPeter Wemm.\" All rights reserved.
539bb6d1eSPeter Wemm.\"
639bb6d1eSPeter Wemm.\" Redistribution and use in source and binary forms, with or without
739bb6d1eSPeter Wemm.\" modification, are permitted provided that the following conditions
839bb6d1eSPeter Wemm.\" are met:
939bb6d1eSPeter Wemm.\" 1. Redistributions of source code must retain the above copyright
1039bb6d1eSPeter Wemm.\"    notice, this list of conditions and the following disclaimer.
1139bb6d1eSPeter Wemm.\" 2. Redistributions in binary form must reproduce the above copyright
1239bb6d1eSPeter Wemm.\"    notice, this list of conditions and the following disclaimer in the
1339bb6d1eSPeter Wemm.\"    documentation and/or other materials provided with the distribution.
1439bb6d1eSPeter Wemm.\" 3. The name of the author may not be used to endorse or promote products
1539bb6d1eSPeter Wemm.\"    derived from this software without specific prior written permission.
1639bb6d1eSPeter Wemm.\"
1739bb6d1eSPeter Wemm.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR `AS IS'' AND ANY EXPRESS OR
1839bb6d1eSPeter Wemm.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
1939bb6d1eSPeter Wemm.\" WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
2039bb6d1eSPeter Wemm.\" DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
2139bb6d1eSPeter Wemm.\" INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
2239bb6d1eSPeter Wemm.\" (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
2339bb6d1eSPeter Wemm.\" SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2439bb6d1eSPeter Wemm.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
2539bb6d1eSPeter Wemm.\" STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
2639bb6d1eSPeter Wemm.\" ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
2739bb6d1eSPeter Wemm.\" POSSIBILITY OF SUCH DAMAGE.
2839bb6d1eSPeter Wemm.\"
29*369cef87SSevan Janiyan.Dd October 3, 2016
3039bb6d1eSPeter Wemm.Dt FSDB 8
319fe48c6eSRuslan Ermilov.Os
3239bb6d1eSPeter Wemm.Sh NAME
3339bb6d1eSPeter Wemm.Nm fsdb
3439bb6d1eSPeter Wemm.Nd FFS debugging/editing tool
3539bb6d1eSPeter Wemm.Sh SYNOPSIS
367c7fb079SRuslan Ermilov.Nm
3739bb6d1eSPeter Wemm.Op Fl d
38fe3a5bd4SGuido van Rooij.Op Fl f
3936b8baa3SJoerg Wunsch.Op Fl r
40fe3a5bd4SGuido van Rooij.Ar fsname
4139bb6d1eSPeter Wemm.Sh DESCRIPTION
42e1205e80SPhilippe CharnierThe
43e1205e80SPhilippe Charnier.Nm
44e1205e80SPhilippe Charnierutility opens
4539bb6d1eSPeter Wemm.Ar fsname
4639bb6d1eSPeter Wemm(usually a raw disk partition) and runs a command loop
479806e231SRuslan Ermilovallowing manipulation of the file system's inode data.
489806e231SRuslan ErmilovYou are prompted
4939bb6d1eSPeter Wemmto enter a command with
5039bb6d1eSPeter Wemm.Ic "fsdb (inum X)>"
5139bb6d1eSPeter Wemmwhere
5239bb6d1eSPeter Wemm.Va X
539806e231SRuslan Ermilovis the currently selected i-number.
549806e231SRuslan ErmilovThe initial selected inode is the
5539bb6d1eSPeter Wemmroot of the file system (i-number 2).
5639bb6d1eSPeter WemmThe command processor uses the
57b6adffbfSGuy Helmer.Xr editline 3
5839bb6d1eSPeter Wemmlibrary, so you can use command line editing to reduce typing if desired.
5939bb6d1eSPeter WemmWhen you exit the command loop, the file system superblock is marked
6039bb6d1eSPeter Wemmdirty and any buffered blocks are written to the file system.
6139bb6d1eSPeter Wemm.Pp
620227048aSPhilippe CharnierThe following options are available:
630227048aSPhilippe Charnier.Bl -tag -width indent
640227048aSPhilippe Charnier.It Fl d
650227048aSPhilippe CharnierEnable additional debugging output (which comes primarily from
66896eb7d1SRuslan Ermilov.Xr fsck 8 Ns -derived
6739bb6d1eSPeter Wemmcode).
680227048aSPhilippe Charnier.It Fl f
690227048aSPhilippe CharnierLeft for historical reasons and has no meaning.
700227048aSPhilippe Charnier.It Fl r
710227048aSPhilippe CharnierOpen the file system read/only, and disables all commands that would
7236b8baa3SJoerg Wunschwrite to it.
730227048aSPhilippe Charnier.El
7439bb6d1eSPeter Wemm.Sh COMMANDS
7539bb6d1eSPeter WemmBesides the built-in
76b6adffbfSGuy Helmer.Xr editline 3
7739bb6d1eSPeter Wemmcommands,
7839bb6d1eSPeter Wemm.Nm
7939bb6d1eSPeter Wemmsupports these commands:
8039bb6d1eSPeter Wemm.Pp
8139bb6d1eSPeter Wemm.Bl -tag -width indent -compact
8239bb6d1eSPeter Wemm.It Cm help
8339bb6d1eSPeter WemmPrint out the list of accepted commands.
8439bb6d1eSPeter Wemm.Pp
8539bb6d1eSPeter Wemm.It Cm inode Ar i-number
8639bb6d1eSPeter WemmSelect inode
8739bb6d1eSPeter Wemm.Ar i-number
8839bb6d1eSPeter Wemmas the new current inode.
8939bb6d1eSPeter Wemm.Pp
9039bb6d1eSPeter Wemm.It Cm back
9139bb6d1eSPeter WemmRevert to the previously current inode.
9239bb6d1eSPeter Wemm.Pp
93cf1cb038SBill Fumerola.It Cm clri Ar i-number
94cf1cb038SBill FumerolaClear
95cf1cb038SBill Fumerola.Ar i-number .
9639bb6d1eSPeter Wemm.Pp
9739bb6d1eSPeter Wemm.It Cm lookup Ar name
9839bb6d1eSPeter Wemm.It Cm cd Ar name
9939bb6d1eSPeter WemmFind
10039bb6d1eSPeter Wemm.Ar name
10139bb6d1eSPeter Wemmin the current directory and make its inode the current inode.
10239bb6d1eSPeter Wemm.Ar Name
10339bb6d1eSPeter Wemmmay be a multi-component name or may begin with slash to indicate that
1049806e231SRuslan Ermilovthe root inode should be used to start the lookup.
1059806e231SRuslan ErmilovIf some component
10639bb6d1eSPeter Wemmalong the pathname is not found, the last valid directory encountered is
10739bb6d1eSPeter Wemmleft as the active inode.
10839bb6d1eSPeter WemmThis command is valid only if the starting inode is a directory.
10939bb6d1eSPeter Wemm.Pp
11039bb6d1eSPeter Wemm.It Cm active
11139bb6d1eSPeter Wemm.It Cm print
11239bb6d1eSPeter WemmPrint out the active inode.
11339bb6d1eSPeter Wemm.Pp
114280a49ecSJoerg Wunsch.It Cm blocks
115280a49ecSJoerg WunschPrint out the block list of the active inode.
116f303d231SRuslan ErmilovNote that the printout can become long for large files, since all
117280a49ecSJoerg Wunschindirect block pointers will also be printed.
11882d9b14eSMaxim Konovalov.Pp
1198266d476SRuslan Ermilov.It Cm findblk Ar disk_block_number ...
12082d9b14eSMaxim KonovalovFind the inode(s) owning the specified disk block(s) number(s).
12182d9b14eSMaxim KonovalovNote that these are not absolute disk blocks numbers, but offsets from the
12282d9b14eSMaxim Konovalovstart of the partition.
12382d9b14eSMaxim Konovalov.Pp
12439bb6d1eSPeter Wemm.It Cm uplink
12539bb6d1eSPeter WemmIncrement the active inode's link count.
12639bb6d1eSPeter Wemm.Pp
12739bb6d1eSPeter Wemm.It Cm downlink
12839bb6d1eSPeter WemmDecrement the active inode's link count.
12939bb6d1eSPeter Wemm.Pp
13039bb6d1eSPeter Wemm.It Cm linkcount Ar number
13139bb6d1eSPeter WemmSet the active inode's link count to
13239bb6d1eSPeter Wemm.Ar number .
13339bb6d1eSPeter Wemm.Pp
13439bb6d1eSPeter Wemm.It Cm ls
1359806e231SRuslan ErmilovList the current inode's directory entries.
1369806e231SRuslan ErmilovThis command is valid only
13739bb6d1eSPeter Wemmif the current inode is a directory.
13839bb6d1eSPeter Wemm.Pp
13939bb6d1eSPeter Wemm.It Cm rm Ar name
14039bb6d1eSPeter Wemm.It Cm del Ar name
14139bb6d1eSPeter WemmRemove the entry
14239bb6d1eSPeter Wemm.Ar name
1439806e231SRuslan Ermilovfrom the current directory inode.
1449806e231SRuslan ErmilovThis command is valid only
14539bb6d1eSPeter Wemmif the current inode is a directory.
14639bb6d1eSPeter Wemm.Pp
14739bb6d1eSPeter Wemm.It Cm ln Ar ino Ar name
14839bb6d1eSPeter WemmCreate a link to inode
14939bb6d1eSPeter Wemm.Ar ino
15039bb6d1eSPeter Wemmunder the name
15139bb6d1eSPeter Wemm.Ar name
1529806e231SRuslan Ermilovin the current directory inode.
1539806e231SRuslan ErmilovThis command is valid only
15439bb6d1eSPeter Wemmif the current inode is a directory.
15539bb6d1eSPeter Wemm.Pp
15639bb6d1eSPeter Wemm.It Cm chinum Ar dirslot Ar inum
15739bb6d1eSPeter WemmChange the i-number in directory entry
15839bb6d1eSPeter Wemm.Ar dirslot
15939bb6d1eSPeter Wemmto
16039bb6d1eSPeter Wemm.Ar inum .
16139bb6d1eSPeter Wemm.Pp
16239bb6d1eSPeter Wemm.It Cm chname Ar dirslot Ar name
16339bb6d1eSPeter WemmChange the name in directory entry
16439bb6d1eSPeter Wemm.Ar dirslot
16539bb6d1eSPeter Wemmto
16639bb6d1eSPeter Wemm.Ar name .
1679806e231SRuslan ErmilovThis command cannot expand a directory entry.
1689806e231SRuslan ErmilovYou can only rename an
16939bb6d1eSPeter Wemmentry if the name will fit into the existing directory slot.
17039bb6d1eSPeter Wemm.Pp
17139bb6d1eSPeter Wemm.It Cm chtype Ar type
17239bb6d1eSPeter WemmChange the type of the current inode to
17339bb6d1eSPeter Wemm.Ar type .
1740227048aSPhilippe Charnier.Ar Type
17539bb6d1eSPeter Wemmmay be one of:
17639bb6d1eSPeter Wemm.Em file ,
17739bb6d1eSPeter Wemm.Em dir ,
17839bb6d1eSPeter Wemm.Em socket ,
17939bb6d1eSPeter Wemmor
18039bb6d1eSPeter Wemm.Em fifo .
18139bb6d1eSPeter Wemm.Pp
18239bb6d1eSPeter Wemm.It Cm chmod Ar mode
18339bb6d1eSPeter WemmChange the mode bits of the current inode to
18439bb6d1eSPeter Wemm.Ar mode .
18539bb6d1eSPeter WemmYou cannot change the file type with this subcommand; use
18639bb6d1eSPeter Wemm.Ic chtype
18739bb6d1eSPeter Wemmto do that.
18839bb6d1eSPeter Wemm.Pp
18939bb6d1eSPeter Wemm.It Cm chflags Ar flags
19039bb6d1eSPeter WemmChange the file flags of the current inode to
19139bb6d1eSPeter Wemm.Ar flags .
19239bb6d1eSPeter Wemm.Pp
19339bb6d1eSPeter Wemm.It Cm chown Ar uid
19439bb6d1eSPeter WemmChange the owner of the current inode to
19539bb6d1eSPeter Wemm.Ar uid .
19639bb6d1eSPeter Wemm.Pp
19739bb6d1eSPeter Wemm.It Cm chgrp Ar gid
19839bb6d1eSPeter WemmChange the group of the current inode to
19939bb6d1eSPeter Wemm.Ar gid .
20039bb6d1eSPeter Wemm.Pp
20139bb6d1eSPeter Wemm.It Cm chgen Ar gen
20239bb6d1eSPeter WemmChange the generation number of the current inode to
20339bb6d1eSPeter Wemm.Ar gen .
20439bb6d1eSPeter Wemm.Pp
20596dd6360SCeri Davies.It Cm btime Ar time
20639bb6d1eSPeter Wemm.It Cm mtime Ar time
20739bb6d1eSPeter Wemm.It Cm ctime Ar time
20839bb6d1eSPeter Wemm.It Cm atime Ar time
20996dd6360SCeri DaviesChange the creation (birth), modification, change, or access
21096dd6360SCeri Daviestime (respectively) on the current inode to
21139bb6d1eSPeter Wemm.Ar time .
21239bb6d1eSPeter Wemm.Ar Time
21339bb6d1eSPeter Wemmshould be in the format
21439bb6d1eSPeter Wemm.Em YYYYMMDDHHMMSS[.nsec]
21539bb6d1eSPeter Wemmwhere
21639bb6d1eSPeter Wemm.Em nsec
2179806e231SRuslan Ermilovis an optional nanosecond specification.
2189806e231SRuslan ErmilovIf no nanoseconds are specified, the
21996dd6360SCeri Davies.Va birthnsec ,
22039bb6d1eSPeter Wemm.Va mtimensec ,
22139bb6d1eSPeter Wemm.Va ctimensec ,
22239bb6d1eSPeter Wemmor
22339bb6d1eSPeter Wemm.Va atimensec
22439bb6d1eSPeter Wemmfield will be set to zero.
225c4c6a6c2SCeri DaviesNote that
226c4c6a6c2SCeri Davies.Cm btime
227c4c6a6c2SCeri Daviesis available on UFS2 file systems only.
22839bb6d1eSPeter Wemm.Pp
229d0353b83SRuslan Ermilov.It Cm quit , q , exit , Em <EOF>
23039bb6d1eSPeter WemmExit the program.
23139bb6d1eSPeter Wemm.El
23239bb6d1eSPeter Wemm.Sh SEE ALSO
233b6adffbfSGuy Helmer.Xr editline 3 ,
23439bb6d1eSPeter Wemm.Xr fs 5 ,
235af202156SWolfram Schneider.Xr clri 8 ,
236af202156SWolfram Schneider.Xr fsck 8
23739bb6d1eSPeter Wemm.Sh HISTORY
238e1205e80SPhilippe CharnierThe
239e1205e80SPhilippe Charnier.Nm
240*369cef87SSevan Janiyanutility appeared in
241*369cef87SSevan Janiyan.Bx 4.3 Tahoe .
242*369cef87SSevan JaniyanIt used the source code for
24339bb6d1eSPeter Wemm.Xr fsck 8
2449806e231SRuslan Ermilovto implement most of the file system manipulation code.
2459806e231SRuslan ErmilovThe remainder of
24639bb6d1eSPeter Wemm.Nm
247*369cef87SSevan Janiyanappeared in
248*369cef87SSevan Janiyan.Nx 1.1
2490227048aSPhilippe Charnierwritten by
2500227048aSPhilippe Charnier.An John T. Kohl .
251*369cef87SSevan JaniyanIt first appeared in
252*369cef87SSevan Janiyan.Fx 2.1.5
253*369cef87SSevan Janiyanported by Peter Wemm.
2546087df9eSRuslan Ermilov.Sh BUGS
255ca45b7e8STom RhodesManipulation of ``short'' symlinks has no effect.
256ca45b7e8STom RhodesIn particular, one should not
257ca45b7e8STom Rhodestry changing a symlink's type.
2586087df9eSRuslan Ermilov.Pp
2596087df9eSRuslan ErmilovYou must specify modes as numbers rather than symbolic names.
2606087df9eSRuslan Ermilov.Pp
2616087df9eSRuslan ErmilovThere are a bunch of other things that you might want to do which
2626087df9eSRuslan Ermilov.Nm
263ca45b7e8STom Rhodesdoes not implement.
26439bb6d1eSPeter Wemm.Sh WARNING
2658f75df55SChristian BruefferUse this tool with extreme caution--you can damage an FFS file system
26639bb6d1eSPeter Wemmbeyond what
26739bb6d1eSPeter Wemm.Xr fsck 8
26839bb6d1eSPeter Wemmcan repair.
269