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