LinuxFilesystemStructurev1.0 DanielQuinlan,quinlan@bucknell.edu FSSTND(FilesystemStandard)Group ABSTRACT TheopenanddistributedprocessinwhichtheLinuxoperatingsystemhas developedfostersrapidgrowthoftheoperatingsystem,applications,and integrateddistributions.Thisdecentralizedprocess,however,hascreatedaneed forstandardizingthestructureofthefilesystem.Thisstandardaimstodefine locationsandspecificationsforfilesanddirectoriesinLinuxsystems.Thiswill allowusers,developers,anddistributorstoassemblepartsofthesystemfrom varioussourcesthatwillworktogetherassmoothlyasiftheyhadbeendeveloped underamonolithicdevelopmentprocess.Itwillalsomakegeneraldocumentation lessdifficult,systemadministrationmoreconsistent,anddevelopmentofsecond andthirdpartypackageseasier.

LinuxFilesystemStructure February14,1994 UNIXisaregisteredtrademarkoftheX/OpenCompany,Ltd. SunOS,SunMicrosystems,SunNIS,SunRPC,andNFSareregisteredtrademarksofSun Microsystems,Inc. SystemVandSVR4aretrademarksofAT&T. NovellandNovellNetWarearetrademarksofNovell. HP-UXisatrademarkofHewlettPackard. Linuxisnotatrademark,andhasnoconnectiontoUNIX. Allothercopyrightsareownedbytheirowners,unlessspecificallynotedotherwise.Useofaterm inthisdocumentshouldnotberegardedasaffectingthevalidityofanytrademarkorservice mark. Copyright◯c1994DanielQuinlan<quinlan@bucknell.edu> Permissionisgrantedtocopyanddistributeverbatimcopiesofthisstandardprovidedthe copyrightandthispermissionnoticearepreservedonallcopies. PermissionisgrantedforFSSTNDcontributorsandparticipantstocopyanddistributemodified versionsofthisstandardundertheconditionsforverbatimcopyingforpurposesoffilesystem standardizationactivitiesonly,andsubjecttothoserestrictionslistedbelow. Thefollowingrestrictionsapplytoreproducingoftransmittingthedocumentinanyform: •Allcopiesorportionsthereofmustidentifythedocument’stitleandsection,andmustbe accompaniedbythisentirenoticeinaprominentlocation. •Noportionofthisdocumentmayberedistributedinanymodifiedorabridgedform withoutthepriorapprovaloftheFSSTNDcoordinator. Anyentitiesseekingpermissiontodistributematerialderivedfromthisdocument,oranyportion thereof,forstandardizationorotheractivities,mustcontacttheFSSTNDcoordinatorforthe appropriatelicense. -2-LinuxFilesystemStructure February14,1994 Introduction StatusoftheStandard ThisproposedstandardisbeingdistributedtomembersoftheLinuxcommunityinorderto solicittheirreactionstotheseriesofideas,concepts,andrecommendationsincludedwithinit. Whiletheentirecontentofthisstandardmaynotbeidenticaltowhateveryindividualdesires,it hasproventobeagoodstarttowardssolvingmanyproblems. Theguidelinesinthisstandardaresubjecttochange.Useofinformationcontainedinthis documentisatyourownrisk. OrganizationoftheStandard Thisstandardisdividedinto6parts: •General,includingastatementofscope,problems,objectives,andconformance requirements.(Section1) •Thefilesystem:astatementofsomeguidingprinciples.(Section2) •Therootdirectory.(Section3) •The/usrdirectory.(Section4) •The/vardirectory.(Section5) •IssuesandAdditionalRationale.(Section6) ConventionsinthisDocument TypographicalConventions: Courierfontisusedwithindirectoryandfilenametables.Anyfilenamethatlacksadirectory prefix("/")andisnotpartofatableisenclosedinsinglequotes. Variabledirectorynames(andemailaddresses)areprecededby"<"andendedwith">". Variablesubstringsofdirectorynamesandfilenamesareindicatedby"*". Note:theconventionsusedwithinthisdocumentwillbeextendedandclarifiedextensivelyinthe nextrevision. Briefglossaryofterms: distribution:apre-packagedreleaseofLinux.ExamplesincludetheMCC-Interimrelease,the Debianrelease,andtheSlackwarerelease. filesystem:1.asingleformattedpartition.2.theentiredirectoryhierarchy. package:agroupoffilesassembledforaspecificfunction. program:anybinaryorshellscriptthatisexecutedwithinashell. rootdirectory:thebaseofthedirectorytreeandfilesystem. -3-LinuxFilesystemStructure February14,1994 1.General 1.1.Scope ThisstandarddefinesastandardfilesystemstructureforLinuxsystems,includingtheplacement ofdirectories,files,andthecontentsofsomesystemfiles. ThefilesystemstandardhasbeendesignedtobeusedbyLinuxdistributiondevelopers,package developers,andsystemimplementors.However,itisintendedtobeareferenceandnotatutorial onhowtomanageaLinuxfilesystemordirectoryhierarchy. Thesearesomeofthefundamentalproblemsthatoriginallymotivatedthisstandardizationeffort: •TherewasnosinglewellacceptedLinuxdirectorystructure.Instead,thereweremany differentones,eachbeingincompatiblewitheachother. •Inthemostwidelyusedfilesystemhierarchies,thedirectorieswerenotwellstructuredand differedgratuitouslyfrommoremoderndirectorystructure"standards"(suchasSystemV, SunOS,BSD,andothers). •ThefilesystemwasunfamiliaranddiscomfortingtoexperiencedUNIXusersand administratorswhohaveexperienceonmoremainstreamUNIXsystems. •ThelackofregularitywasalsoconfusingfornewcomerstoLinux,especiallythosecoming fromanon-UNIXbackground. •AnyincompatibilitiesbetweenprimaryLinuxdistributionsandothersoftwarepackages weretypicallysolvedbymethodsofalessthanappealingnature. •Overall,symboliclinkswereusedmuchtoooftenwithinthefilesystemtofixproblems. (However,therearetimeswhensymboliclinksneedtobeusedtoensurebackward compatibilityortoallowspecificsystemstohaveanindividualfilesystemstructure.) Itistobeexpectedthatdifferencesinopinionaretoariseinanystandardizationeffortsuchas thisone.However,thesedifferencesshouldbeovershadowedbytheneedforconsensusand commonpracticewithintheLinuxcommunity. ThisfilesystemstandardwasprimarilydevelopedwithintheFSSTNDmailinglistandpreviously, theFSSTNDchanneloftheLinux-activistsmailinglist.Inputandcommentswerereceivedfroma greatnumberofLinuxdevelopers,notedLinuxprogrammers,systemadministrators,andusers. Thosevolunteerswhohavecontributedextensivelytothisstandardarelistedattheendofthis document.Thisstandardrepresentstheconsensusviewofthoseandothercontributors. Thisstandardseekstoaddresstheseproblemsbydescribingawelldesignedfilesystemstructure thattheLinuxcommunitymayvoluntarilyfollow.Althoughthisstandardismorecomprehensive andcompletethananyotherpreviousattemptatstandardization,itwillprobablyneverbetruly finished.TheneedsoftheLinuxcommunitywillcontinuallychangeinrelationtoemerging technology.Itisalsopossiblethatbettersolutionstofilesystemproblemscouldbediscoveredor thatthesesolutionswillnolongerbethebestpossiblesolutions.Becauseofthesereasons,the FSSTNDgroupplanstoreleasesupplementarydraftsinadditiontoperiodicupdatestothis document. Ifyouhaveanycommentsrelatedtothisstandard,theyarewelcomedbytheFSSTNDgroup. SuggestionsforchangestothisdocumentshouldbedirectedtotheFSSTNDmailinglist,the FSSTNDcoordinator,orifyouprefer,anyofthelistedcontributors.Typographicalor grammaticalcommentsshouldbedirectedtotheFSSTNDcoordinator. -4-LinuxFilesystemStructure February14,1994 PleasedonotsendmailtothemailinglistwithoutfirstcontactingtheFSSTNDcoordinatorora listedcontributor.Impropermessageswillnotbewellreceivedonthemailinglist. Questionsabouthowtointerpretitemsinthisdocumentmayoccasionallyarise.Ifyouhaveneed foraclarification,pleasecontacttheFSSTNDcoordinator.Sincethisstandardrepresentsthe consensusofmanyparticipants,itisimportanttomakecertainthatanyinterpretationalso representstheircollectiveopinion.Duetothisreason,itmaynotbepossibletoprovidean immediateresponseunlesstheinquiryhasbeenthesubjectofpreviousdiscussion. TheFSSTNDcoordinatorisDanielQuinlan<quinlan@bucknell.edu>. 1.2.SpecificProblems Naturally,whiledefiningaLinuxfilesystemstructure,thereweresomespecificproblemsthatwe soughttocorrect.Herearesomeofthemajorandwellacceptedones: •Theprimarybinarydirectories,/binand/usr/bin,donothavewelldefineddivisions betweenthem.Asaresult,thedistributionofthebinariesoverthesetwodirectoriesvaries greatlybetweentheLinuxdistributions. •Includingbothbinariesandconfigurationfilesin/etcmakesitmoreconfusingandharder tomaintainforinexperiencedusersorsystemadministratorswithespeciallylargesystems. •Thedivisionbetweenwhatisasite-wideconfigurationfileandwhatisamachine-local configurationfileisdifficulttoestablish.Thismakesdeterminingwhetheraconfiguration fileisstoredin/etcor/usr/etcdifficult. •Thecurrentimplementationof/usrcannotbemountedread-onlybecauseitcontains variablefilesanddirectoriesthatneedtobewrittento. •InanetworkedenvironmentitisdesirabletoservesoftwaretoworkstationsviaaNFS mountedfilesystem.Suchfilesystemsneedtobemountedread-onlysothataccidentsor maliceononeworkstationcannotdamagethefilesontheserver.Thisrequires identificationandseparationoffilesthatamachinemustwritetoandoffilesthatare specifictoasinglemachine •Linuxisnotwellpreparedforanetworkinstallationincludingthepossibilityofaread-only /usrpartitionanddisklessworkstations. Whilethesearesomeofthemajorproblemsweaddressed,therewerenumerousadditional problemsthatneededtobesolved.Thisstandardattemptstoaddressmanyofthoseother problems,buttheremaybesomethingthatwasoverlooked.Ifyouwishtobringsomethingto ourattention,pleasenotetherearesomethingsthathavebeendiscussedatlength,butwerenot includedinthisstandard. 1.3.Objectives Intryingtosolvetheaboveproblems,severalobjectiveswereidentifiedthatneededtoberealized inadditiontothemoretechnicalmatters.Thesegoalscomprisethecorrectionofoutstanding problemsaswellasthevalidationofthisstandard. •Solvetheaboveproblemswhilealsolimitingthepossibletransitiondifficultiesresulting frommovingawayfromtheformerde-factostandards. •Gainapprovalofdistributors,developers,andotherimportantpeopleintheLinux community,aswellastheirsuggestions. -5-LinuxFilesystemStructure February14,1994 •ProvideastandardthatalloftheLinuxcommunitywouldchoosetofollowbecauseitwill solvetheaboveproblemsaswellasprovidethemostsensiblestructureforLinux’s filesystem. Someoftheseobjectiveshavealreadybeenfullyorpartiallymetduetothelimiteddistributionof advancedraftstoanydeveloperwhorequestedone. 1.4.HistoryandProgress TheoriginalmessagethatmotivatedthisefforttorestructuretheLinuxfilesystemwaswrittenby OlafKirsh<okir@monad.swb.de>onAugust2,1993,totheNORMALchanneloftheLinux activistsmailinglist. Soonthereafter,itwasdecidedthatthebestpossiblewaytoaccomplishsucharestructuringof theLinuxfilesystemwouldbetocreateamailinglistforthepurposeoftryingtodevelopa consensusstandard. Afteracomprehensivediscussion,withsurprisinglyfewflames,apreliminarydraftwaswritten. Then,withthehelpofseveraldedicatedpeople,thedraftwasfinishedandthatresultingdraft submittedtotheFSSTNDchannelformorediscussion.Thefirstdraftwassubmittedtothe channelonSeptember18,1993,byDanielQuinlan. AsthediscussioncontinuedandearlydraftsofFSSTNDrecommendationsweredevelopedfurther, contactswereestablishedwithaccessibleLinuxdistributorswhothenofferedtheirinputand supporttooureffort.ManyLinuxdevelopersalreadyagreethatwhatwearedoingisagood thing.ThesearesomeofthedeveloperswhoaretryingtofollowtheFSSTNDstandard [alphabeticalorder]: •DebianLinux IanA.Murdock<imurdock@shell.portal.com> •LILO WernerAlmesberger<almesber@nessie.cs.id.ethz.ch> •Linux/PRO FredN.vanKempen<waltje@metallica.uwalt.nl.mugnet.org> •SlackwareLinux PatrickJ.Volkerding<volkerdi@mhd1.moorhead.msus.edu> •TAMULinux DaveSafford<dave.safford@net.tamu.edu> •util-linuxpackages RikFaith<faith@cs.unc.edu> 1.5.ConformancewiththisDocument Onlyitemswhichareexplicitlylabeledas"recommended"or"optional"arenotrequiredfora systemtobeconformant.Anyitemthatisrecommendedisnotabsolutelynecessaryonalocal level,butisrequiredforadistributionorprogramtobeconsideredconformant.Some specificationsareoptional,butifdistributorsfollowthesesectionsitislikelytobeofbenefitto theLinuxcommunity. Therearethreelevelsofcompliancewiththisstandard.Afullyconformingdistributionshall meetallrecommendationsandrequirementsineachsectionofthisdocument.Afullyconforming -6-LinuxFilesystemStructure February14,1994 applicationorprogramshallmeetallapplicablerecommendationsandrequirements.Sectionsor statementsthataremarkedoptionalarenotrequiredforfullconformance.Partialconformance indicatesthatandistributionconformswithasignificantsubsetofthisdocument.Partial conformanceisonlyintendedtoapplyfordistributionsandnotseparateprograms.Thephrase "asignificantsubset"isadmittedlysubjective,andinborderlinecases,theconcernedpartyshould contacttheFSSTNDcoordinator.Itisanticipatedthatsomevariationwillbetoleratedin borderlinecases. Compatibilitywiththisstandardindicatesthateveryfileinthedistributioncanbefoundatthe pointatwhichitwouldbefoundonafullycompliantdistribution,thoughthisisnotnecessarily thefile’sprimarylocation. InordertoqualifyaspartiallyFSSTNDconformantorFSSTNDcompatible,however,a distributionmustprovidealistofallplacesatwhichitandtheFSSTNDdocumentdiffer,anda briefexplanationofthereasonforthisdifference.ThislistshallalsobeprovidedtotheFSSTND mailinglistortheFSSTNDcoordinator. Note:thiswillallbeclarifiedinthenextrevisionofthisdocument.Therearenoplanstomake conformanceanymoredifficult.

LinuxFilesystemStructure February14,1994 2.TheFilesystem TheUNIXfilesystemischaracterizedby: •Ahierarchicalstructure •Consistenttreatmentoffiledata •Protectionoffiledata ThisstandardontheLinuxfilesystemfollowsthesamebasicprinciplesthatmostUNIX filesystemsfollow.Notethatthisstandarddoesnotattempttoconformineverypossiblerespect toanyparticularUNIXsystem’simplementation.However,manyaspectsofthisstandardare basedonideasfoundinUNIXandotherUNIX-likesystems. Thisisaftercarefulconsiderationofotherfactors,including: •Common(good)practicesintheLinuxcommunity •Theexistenceofotherfilesystemstructures •Applicablestandards Thedirectoryhierarchyisseparatedintounsharabledata,"/"(root),andsharabledata,"/usr". Thesetwofilesystemsaredividedaccordingtothefollowingtwodatatypes:staticdataand variabledata.Staticdataincludesbinaries,libraries,documentation,andanythingthatdoesnot changewithoutsystemadministratorintervention.Variabledataisanythingthatdoeschange withoutthesystemadministrator’sintervention. Itispossibletodefinetwoorthogonalcategoriesoffiledata:sharable-unsharableandvariable-static.Eachhierarchy,/andthetraditional/usr,containsbothstaticandvariabledata.The /usrhierarchyisfurtherdefinedasbeingsharabledataand/asunsharabledata.Forreasons mentionedaboveandbelow,wewillredefinethecontentsof/usrtobeonlyshareableandstatic data,containingnovariabledata. Throughoutthisdocument,andinanywellplannedfilesystem,anunderstandingofthesebasic principleswillhelpguidethestructureandlenditadditionalconsistency. Thedistinctionbetweensharableandunsharabledataisneededforseveralreasons: •Inanetworkedenvironment(i.e.morethanonehostatasite),thereisagooddealof shareabledatathatcanbesharedbetweendifferentmachinestosavespaceandeasethe taskofmaintenance. •Inanetworkedenvironment,certainfilesystemscontaininformationspecifictoasingle machine.Thereforethesefilesystemscannotbeshared(withNFS). •Thecurrentimplementationof/usrcannotbemountedread-onlybecauseitcontains variablefilesanddirectoriesthatneedtobewrittento.Thisisafactorthatmustbe addressedwhen/usrissharedonanetworkormountedread-onlybecauseofother considerations(primarilysafety). The"sharable"factorcanbeextendedintwodirections: •A/usrmounted(read-only)throughthenetwork(usingNFS). •A/usrmountedfromread-onlymedia.(YoucanthinkofthatCD-ROMdriveasa networked,usingpostalmail,filesystemthatyouaresharingwithotherLinuxsystems.) The"static"versus"variable"factordramaticallyaffectsthefilesystemin2majorways: •Since/containsbothvariableandstaticdata,itneedstobemountedread-write. •Sincethetraditional/usrcontainsbothvariableandstaticdata,andsincewewantto mountitread-only(seeabove),itisnecessarytoprovideamethodtohave/usrmounted -8-LinuxFilesystemStructure February14,1994 read-only.Thisisdonethroughthecreationofa/varhierarchythatismountedread-write (orisapartofanotherread-writepartition,suchas/),takingovermuchofthe/usr partition’straditionalfunctionality.

LinuxFilesystemStructure February14,1994 3.Therootdirectory Thissectiondescribestherootdirectorystructure.Enoughdatashouldbecontainedintheroot partitiontoboot,restore,recover,and/orrepairthesystem: (1)Tobootasystem,enoughmustbepresenttomount/usr.Thisincludesutilities, configuration,bootloaderinformation,andotheressentialstart-updata. (2)Torecoverand/orrepairasystem,thoseutilitiesneededbyanexperienceduserto diagnoseandreconstructadamagedsystemshouldbepresentonroot. (3)Torestoreasystem,thoseutilitiesneededtorestoreasystemfrombackups(onfloppy, tape,etc.)shouldbepresentonroot. Theprimaryconcernusedtobalancethesedesires(placingmanythingsinroot)isthegoalof keepingrootassmallasreasonablypossible.Itisdesirabletokeeprootsmallintermsofnumber ofdirectories,files,anddiskspaceforseveralreasons: (1)Therootisoftenmountedfromverysmallmedia.Forexample,mostLinuxusersinstall anddorecoverybymountingrootoffaRAMdiskwhichiscopiedfromasingle1.44Mor 1.2Mfloppydisk. (2)Roothasmanysystem-specificconfigurationfilesinit,akernelthatisspecifictothe system,adifferenthostname,etc.Thismeansthatrootisn’talwayssharablebetween networkedsystems.Keepingrootsmallonnetworkedsystemsminimizestheamountof spacelostonserverstounsharablefiles.Italsoallowsworkstationswithsmallerlocal harddrives. However,withdisklessclients,thisdoesnothavetobeentirelythecase,unlesseachclient hasadifferentrootimage. (3)Whileyoumayhavealargerootpartition,andmaybeabletofillittoyourheart’s content,therewillbepeoplewithsmallerpartitions.Ifyouhavemorefilesinstalled,you mayfindincompatibilitieswithothersystemsusinglimitedrootpartitions.Ifyouarea developerthenyoumaybesharingthisproblemwithalargenumberofusers. (4)Diskerrorsontherootpartitionareagreaterproblemthanerrorsonanyotherpartition. Asmallrootpartitionislesspronetocorruptionastheresultofasystemcrash. Sincerootissmallandhost-specific(duetothedivisionbetween/and/usr),thisscheme necessitatesawriteableroot.However,thisdoesnotnecessitateafullylocallystoredroot.The rootpartitiondoesn’thavetobelocallystoredjusttobesystemspecific(i.e.,rootmountedfrom aNFSrootserver.) Softwareshouldnevercreateorrequirespecialfilesorsubdirectoriesintherootdirectory.This structureprovidesmorethanenoughflexibilityforanypackage.Anypackagethatdoesoccupya directoryunderrootsuffersfromsheerarrogance. -10-LinuxFilesystemStructure February14,1994

/:therootdirectory
|
|-bin:essentialcommandbinaries
|-boot:staticfilesofthebootloader
|-dev:devicefiles
|-etc:machine-localsystemconfiguration
|-home:userhomedirectories
|-lib:sharedlibraries(libc.so.*,libm.so.*,andld.so)
|-mnt:mountpointoftemporarypartitions
|-proc:processinformationpseudo-filesystem
|-root:homedirectoryforroot
|-sbin:essentialsystembinaries
|-tmp:temporaryfiles
|-usr:secondmajorpermanentmountpoint
|-var:filesthattendtogroworvaryinsize
+-{kernelimage}

Followingthissection,eachdirectoryispresentedinaseparatesubdivision./usrand/varare discussedinseparatesectionsofthisdocument. Therootdirectorynormallycontainsthecurrentkernelimage.Thekernelimagenameislocally configurable,butthenamewesuggest(thathasbeenusedinrecentLinuxkernelsources)is ‘vmlinux’.Thismayormaynotbea(symbolic-)linktotheactualfile,possiblydependingonthe systemdistributionused.Additionalinformationonkernelplacementislocatedinthe/boot sectionofthestandard. 3.1./bin:essentialcommandbinaries(forusebyallusers) Thereshouldbenosubdirectorieswithin/bin. Thecommands(staticdata)thatareneededinsingleusermodebythesuper-user(root)are storedin/bin.However,thecommandsin/binareforusebybothrootandotherusers.Onthe samenote,the/bindirectoryshouldnotcontainanythingthatistobeusedonlybyrootfor systemadministration. Allroot-onlybinariessuchasstandarddaemons,‘init’,‘getty’,‘update’,etal.(previouslyfound in/etc),shallnowbeplacedin/sbinor/usr/sbindependingonthenecessityofthecommand. Forfurtherdiscussionofthedefinitionofwhatisessentialinthefilesystem,pleasereadsection6, "IssuesandAdditionalRationale". Commandbinariesthatarenotessentialenoughtoplaceinto/binshouldbeplacedinto/usr/bin, instead.Itemsthatareonlyneededbynon-rootusers(‘mail’,‘chsh’,‘passwd’,etal.)arenotvital tosystemoperationandshouldnotbeplacedintherootpartition. REQUIREDfilesfor/bin: •generalcommands: Thefollowingcommandshavebeenaddedbecausetheyareessential.Afewhavebeenadded becauseoftheirtraditionalplacementin/bin. -11-LinuxFilesystemStructure February14,1994

{arch,cat,chgrp,chmod,chown,cp,date,dd,df,dmesg,echo,ed,false,
kill,ln,loadkeys,login,ls,mkdir,mknod,more,mount,mv,ps,pwd,rm,
rmdir,setserial,sh,stty,su,sync,true,umount,uname}

If/bin/shisBASH,then/bin/shshouldbeasymbolicorhardlinkto/bin/bashsincebash behavesdifferentlywhencalledas‘sh’or‘bash’.Thesamegoesfor‘pdksh’,whichisoftenthe /bin/shoninstalldisksandsuch(linkfrom/bin/shto/bin/ksh).Ipersonallypreferthe advantageofusingasymboliclinkinthesecases,becauseitallowsuserstoeasilyseethat /bin/shisnotatrueBourneshell. Both‘[’and‘test’arebuiltintoBASH,pdksh,zsh,recentKornshells,andessentiallyevery BourneshellreplacementthereisforLinux.Theyshouldbeplacedinto/usr/bin.(They mustbeincludedasseparatebinarieswithanyLinuxsystemattemptingtocomplywiththe POSIX.2standard.) /bin/archshouldproducethesameoutputas"uname-m",specifically"i386"or"i486"for IntelorIntel-compatiblesystems. •restorationcommands: Thesecommandshavebeenaddedtomakerestorationofasystempossible(providedthat/is intact).

{tar,gzip,gunzip(linktogzip),zcat(linktogzip)}

Ifsystembackupsaremadewithapackageotherthan‘gzip’and‘tar’,thenthatadministrator shouldincludetheminimalnecessaryrestorationcomponentsintherootpartition.For instance,manysystemsshouldinclude‘cpio’asitisthenextmostcommonlyusedbackup utilityaftertar.Conversely,ifnorestorationfromtherootpartitioniseverexpected,then thesebinariesmaybeomitted(e.g.,aROMchiproot,mounting/usrthroughNFS).If restorationofasystemisplannedthroughthenetwork,thenftportftp(alongwitheverything necessarytogetaftpconnection)shouldbeavailableontherootpartition. •networkingcommands: Thesearedeemedtheonlynecessarynetworkingbinariesthatbothrootanduserswillwantor needtoexecuteotherthantheonesin/usr/binor/usr/local/bin.

{domainname,hostname,netstat,ping}

3.2./boot:staticfilesofthebootloader Thisdirectorycontainseverythingforbootexceptconfigurationfilesandthemapinstaller.In thesimplestsense,/bootisforanythingwhichisusedbeforethekernelexecs/sbin/init.This includessavedmasterbootsectors,sectormapfiles,andanythingelsethatisnotdirectlyedited byhand.Thebootloaderprogramshouldbeplacedinto/sbinandconfigurationfilesforboot loadersinto/etc. Morespecifically,forLILO:

OldlocationNewlocation
-----------------------------------------
/etc/lilo/config.defines/etc/lilo.defines
/etc/lilo/config/etc/lilo.conf
/etc/lilo/disktab/etc/disktab

-12-LinuxFilesystemStructure February14,1994

/etc/lilo/lilo/sbin/lilo
/etc/lilo/boot.NNNN/boot/boot.NNNN
/etc/lilo/part.NNNN/boot/part.NNNN
/etc/lilo/map/boot/map
/etc/lilo/*.b/boot/*.b

"*.b"arethefirstandsecondstagebootloader,plusallthosechainloaders.‘QuickInst’(ifitis included)shouldbeplacedinto/usr/sbin.(The‘activate’commandisleftoutofthisscheme becauseitsfutureisuncertainatthistime.)UseofLILOisnotrequiredforconformancetothis standard,butitisrecommendedthatitbeusedbyLinuxdistributionsasthedefaultLinuxboot loader. Extrakernelimagesmaybestoredin/boot.Themainkernelcaneitherbeplacedin/orin /bootaccordingtopreferenceoftheadministrator.Ifplacedin/,thekernelmayalsopossiblybe asymlinktoakernelimagein/boot.Notethatthestandardlocationforthekernelisstillin/. 3.3./dev:Devicefiles /devusuallyalsocontainsafile,‘MAKEDEV’,ashellscriptdesignedtocreatedevicesasneeded. Italsooftencontainsa‘MAKEDEV.local’foranylocal-onlydevices. ‘MAKEDEV’shouldhaveprovisionsforcreatinganydevicespecialfilelistedinthemajor/minor numberslist,notjustthosethataparticulardistributioninstalls. Symboliclinksin/devshouldnotbedistributedwithLinuxsystems,asthelocalsetupwilloften differfromthatonthedistributor’sdevelopmentmachine.Also,ifadistributioninstallscript configuresthesymlinksatinstalltime,thesesymlinkswilloftennotgetupdatediflocalchanges aremadeinhardware.Whenusedresponsiblyatalocallevel,however,theycanbeputtogood use. ThisstandardincorporatestheLinuxDeviceListwhichismaintainedbyRickMiller <rick@ee.uwm.edu>,theLinuxDeviceRegistrar.Thisisthecurrentstandardthatwestrongly recommendusing.Itisavailablebyanonymousftpatsunsite.unc.eduas "/pub/Linux/docs/hardware/DEVICES". 3.4./etc:Machine-localsystemconfiguration Nobinariesshouldgodirectlyinto/etc.Binariesthatwouldhave,inthepast,beenfoundin/etc shouldnowbeplacedin/sbin.Thisincludessuchfilesasinit,getty,andupdate.Binariessuch ashostnamethatareusedbyusersaswellasrootshouldnotbeplacedin/sbin,butin/bin.

/etc:Machine-localsystemconfiguration
|
|-X11:ConfigurationfortheXWindowsystem
|-keytables:Keyboardtranslationtables
+-skel:Skeletonuserconfiguration

/etc/X11istherecommendedlocationforallX11machine-localconfiguration.Thisisnecessary toallowforlocalcontrolandread-onlymountingof/usr.Filesthatshouldbeinhereinclude ‘Xconfig’,‘xdm-config’,withpossiblesubdirectoriesforwindowmanagers,andotherfilesthatare consideredtobeconfigurationsuchas‘Xmodmap’,‘Xserverrc’,‘Xinitrc’,‘Xresources’,etc. -13-LinuxFilesystemStructure February14,1994 /etc/keytablesisthelocationforallkeyboardtranslationtablesusedbyloadkeys(1).Thisis requiredontherootpartitionsothatallkeyboardtypescanbesupported(eveninemergencies). Itispossiblethatunneededkeyboardtablesmaybestoredoffoftherootpartitiontosavespace. Therecommendedlocationinthatcaseis/usr/lib/keytables. /etc/skelisthelocationforso-called"skeleton"userfilesthataregivenbydefaulttonewusers whenreceivinganaccount.Thisdirectoryoftencontainssubdirectoriesfordifferentusergroups (e.g.,/etc/skel/staffor/etc/skel/users).Notethatsomepeopleprefertoplacea"skel" subdirectoryineachdirectoryofuseraccounts.Eitherofthetwoapproachesisacceptableatthis time. Thisisalistingofthegeneralfilesthatareplaceddirectlyinto/etc.Itisnotexhaustive.Also, someoftherequiredfilesarenottechnicallyessential.Forinstance,ifasystemdoesn’thave printingcapability,thenthe‘printcap’fileisnotneeded. REQUIREDfilesfor/etc: •generalfiles: ThesefilesareneededonmostLinuxsystems.

{adjtime,csh.login,fdprm,fstab,gettydefs,group,inittab,issue,
ld.so.conf,magic,motd,mtab,mtools,passwd,profile,securetty,shells,
termcap,ttytype,utmp}

TheLILOconfigurationfile,‘lilo.conf’,isrequiredifLILOisusedasthesystem’sboot manager. •networkingfiles: ThesefilesshouldbeinstalledonmostLinuxsystems.

{exports,ftpusers,gateways,hosts,host.conf,hosts.equiv,hosts.lpd,
inetd.conf,networks,printcap,protocols,resolv.conf,rpc,services}

Therearetwomodelsforsetupofthe"rc"commandscriptswhichareinvokedbyinit(8)atboot time,the/etc/rc.*(BSDmodel)andthe/etc/rc.d/*(SystemVmodel).Eithermodelis acceptableatthistime.Thisisalocalissueandtheimplementationthatisusedshouldbe determinedbythesystemadministratororthedeveloper. Note:TrueSystemVsystems(andtheLinux"bootsys"package)useseperaterc.ddirectoriesper runlevel.TheLinux"SysVinit"packageusesa(wellaccepted)mixtureoftheSystemVand BSDimplementations. The‘wtmp’logfilebelongsin/var/admbecauseitcangrowinsizewithoutbound. Systemsthatusetheshadowpasswordsuitewillhaveadditionalconfigurationfilesin/etc (/etc/shadowandothers)and/usr/sbin(‘useradd’,‘usermod’,etcetera). Systemsthatuse"gettyps"willhaveafewadditionalconfigurationfilesin/etcand/etc/default. Sincegettypsistheonlyprogramwhichmakesuseof/etc/default,itisrecommendedthat /etc/gettypsbeusedinstead. -14-LinuxFilesystemStructure February14,1994 3.5./home:Userhomedirectories(optional) /homeisafairlystandardconcept,butitisclearlyasite-specificfilesystem.Thesetupwilldiffer frommachinetomachine.Thisisonlyasuggestedplacementforuserhomedirectories,butwe recommendthatallLinuxdistributionsusethisasthedefaulthomedirectory. Onsmallsystems,eachuser’sdirectoryistypicallyoneofthemanysubdirectoriesof/homesuch as/home/smith,/home/linus,/home/operator,etc. Onlargesystems(especiallywhenthe/homedirectoriesaremountedacrossanumberof machinesusingNFS)itisagoodideatosubdivideuserhomedirectories.Subdivisioncanbe accomplishedbyusingsubdirectoriessuchas/home/staff,/home/guests,/home/students,etc. Differentpeopleprefertoplaceuseraccountsinavarietyofplaces.Therefore,noprogramming shouldrelyonthislocation.Ifyouwanttofindoutauser’shomedirectory,youshouldusethe getpwent()libraryfunctionratherthanrelyingon/etc/passwdbecauseuserinformationmaybe storedremotely. 3.6./lib:Sharedlibraries(neededtorundynamicallylinkedbinaries) Onlythesharedlibraryimagesnecessarytobootthesystemshouldbeplacedin/lib.Theshared libraryimagesare"/lib/libc.so.*","/lib/libm.so.*",and"/lib/ld.so"(andnottheactual".a" files). Sharedlibrariesthatareonlynecessaryforbinariesin/usr(suchasanyXWindowbinaries)do notbelongin/lib.Onlythesharedlibrariesrequiredtorunbinariesin/binand/sbinshouldbe here. Forcompatibilityreasons,/lib/cppneedstoexistasareferencetotheCpreprocessorinstalledon thesystem.Theusualplacementofthisbinaryis/usr/lib/gcc-lib/<target>/<version>/cpp. /lib/cppcaneitherpointatthisbinary,oratanyotherreferencetothisbinarywhichexistsin thefilesystem.(Forexample,/usr/bin/cppisalsooftenused.) 3.7./mnt:Mountpointfortemporarilymountedfilesystems Thisisthelocationwherethesystemadministratormaytemporarilymountfilesystemsasneeded. Thesetupofthisdirectoryisalocalissueandshouldnotaffectthemannerinwhichanyprogram isrun. Thisdirectoryshouldprobablynotbeusedbyinstallationprogramsduetothesite-specificnature ofit.Atemporarydirectorynotinusebythesystemshouldbeusedinstead. 3.8./proc:Procbasedprocesssystem Theprocpsfilesystemisalreadybecomingthede-factostandardLinuxmethodforhandling processinformationratherthan/dev/kmemandothermethods.Thisisstronglyrecommendedas itshouldbecomethestandardforthestorageandretrievalofprocessinformationaswellasother kernelandmemoryinformation. -15-LinuxFilesystemStructure February14,1994 3.9./root:homedirectoryforroot(optional) /istraditionallythehomedirectoryoftherootaccountonUNIXsystems./rootisusedonmany LinuxsystemsandonsomeUNIXsystems.Theroothomedirectoryisdeterminedbydeveloper orlocalpreference./,/root,and/home/rootareallacceptablelocationsasfarasthisstandardis concerned. Ifthehomedirectoryforrootisstoredonadifferentpartitionthantherootpartition,itis necessarytomakecertainthat‘login’willdefaultto/ifroot’shomedirectorycannotbelocated. Note:Itispreferredpracticenottousetherootaccountformundanethingssuchasmailand news,butsolelyforsystemsadministration.Forthisreason,subdirectoriessuchas"Mail"and "News"shouldnotappearintherootaccount’shomedirectory.Mailisusuallyforwardedtoa moreappropriateaccount. 3.10./sbin:Systembinaries(binariesoncekeptin/etc) Utilitiesusedforsystemadministration(andotherroot-onlycommands)arestoredin/sbin, /usr/sbin,and/usr/local/sbin./sbintypicallycontainsfilesessentialforthebootingphaseof startingthesystemup.Anythingexecutedafter/usrisknowntobemounted(whenthereareno problems)shouldbeplacedinto/usr/sbin.Local-onlysystemadministrationstuffshouldnowbe placedinto/usr/local/sbin. Decidingwhatthingsgointo"sbin"directoriesissimple:Ifauserwillneedtorunit,thenit shouldgosomewhereelse.Ifitwillonlyberunbysystemadministratorsorasrootfromsystem managementscripts,thenitshouldgoin/sbin(orin/usr/sbinor/usr/local/sbinittheitemis notvitaltosystemoperation). Filessuchas‘chfn’whichusersonlyoccasionallyuseshouldstillbeplacedin/usr/bin.‘ping’, althoughitisabsolutelynecessaryforroot(networkrecoveryanddiagnosis)isoftenusedbyusers andshouldlivein/binforthatreason. Ordinaryusersshouldnothavetoplaceanyofthe"sbin"directoriesintheirpath. Usersshouldhaveexecutepermissionforeverythingin/sbinthatcanbeexecutedbynon-root users.Thedivisionbetween/binand/sbinwasnotcreatedforsecurityreasonsortoprevent usersfromseeingtheOS,buttoprovideagooddivisionbetweenbinariesthateveryoneusesand theonesthatareprimarilyusedforadministrationtasks.Thereisnoinheritsecurityadvantage inmaking/sbinoff-limitsforusers. REQUIREDfilesfor/sbin: •generalcommands:

{clock,getty,init,update,mkswap,swapon,swapoff}

•shutdowncommands:

{halt,reboot,shutdown}

•filesystemcommands:

{fdisk,fsck,fsck.*,tunefs(Ext2only),mkfs,mkfs.*}

"*"=(ext,ext2,minix,msdos,xiafs) -16-LinuxFilesystemStructure February14,1994 •LILOcommands:

{lilo}

•networkingcommands:

{arp,ifconfig,ifsetup,route}

OPTIONALfilesfor/sbin: •staticbinaries: Staticlnandstaticsyncareusefulwhenthingsgowrong.Theprimaryuseofsln(torepair hosedsymlinksin/libafterapoorlyorchestratedupgrade)isnolongeramajorfactornow thatthe‘ldconfig’programexistsandcanactasaguidinghandinupgradingthedynamic libraries.Staticsyncisusefulinsomeemergencysituations.Notethattheseneednotbe staticallycompiledversionsofthestandard‘ln’and‘sync’,butmaybe. The‘ldconfig’binaryisoptionalfor/sbinaswell,sinceifyouuseitproperlywhenupgrading thesharedlibrariesin/lib,youwon’tneeditinroot.

{ldconfig,sln,ssync}

•miscellaneous: Duetothefactthatsomekeyboardscomeupwithsuchahighrepeatrateastobeunusable, ‘kbdrate’isnecessaryonsomesystems.

{kbdrate}

3.11./tmp:temporaryfiles /tmpisusedfortemporaryfiles,preferablyonafastdevice(amemorybasedfilesystem,for instance). The"persistence"ofthedatathatisstoredin/tmpisdifferentfromthatwhichisstoredin /var/tmp./tmpisusuallycleanedoutatboottime(oratrelativelyfrequentintervals).Because ofthis,datastoredin/tmpshouldnotbeexpectedtoremainforanylongperiodoftimeonthe system...itisfrequentlydeleted. Programsshoulduse/tmpor/var/tmp(whichwasoriginally/usr/tmp)accordingtothe expectedpersistenceofthedata,butshouldnotrelyonanyparticularpersistenceforanytmp directories. Theprecisearrangementof/tmpand/var/tmpisalocalissue.Iftherearedistinct/var/tmp and/tmpdirectories,thenthepersistenceof/var/tmpfilesshouldbeatleastaslongasfor/tmp, butbeyondthat,asiteadministratorordistributorcanarrangethisanywaytheywant,over RAMdisk,symlinks,orwhatever. -17-LinuxFilesystemStructure February14,1994 4.The/usrdirectory /usristhesecondmajordivisionofthefilesystem./usrissharabledata.Thatmeansthat/usr shouldbesharablebetweenvariousmachinesrunningLinux.Becauseitissharablebetween machines,anyinformationthatismachine-localmustbestoredelsewhere,hence/varentersthe picture. Anylargepackage(suchasTEXandGNUEmacs)shouldnotuseasubdirectoryof/usr.Instead, thereshouldbeasubdirectoryinside/usr/lib,or/usr/local/lib(ifitwasinstalledtotallylocally).

/usr:Secondmajormountpoint(permanent)
|
|-X386:XWindowsystemonx86platforms
|-bin:Mostusercommands
|-dict:Wordlists
|-doc:Miscellaneousdocumentation
|-etc:Site-widesystemconfiguration
|-g++-include:GNUC++includefiles
|-games:Gamesandeducationalbinaries
|-include:HeaderfilesincludedbyCprograms
|-info:GNUInfosystem'sprimarydirectory
|-lib:Libraries
|-local:Localdirectory(emptyaftermaininstallation)
|-man:Onlinemanuals
|-sbin:Non-vitalsystemadministrationbinaries
|-share:Architecture-independentdata
+-src:Sourcecode

Thefollowinglistofdirectorysymboliclinksneedtobeadded.Thisonlyneedstobedoneuntil compatibilitywiththe/varschemecanbeassumedtoexist.

/usr/adm->/var/adm
/usr/preserve->/var/preserve
/usr/spool->/var/spool
/usr/tmp->/var/tmp
/var/spool/locks->/var/lock

Theabovesymlinksshouldbecomeunnecessaryaspackagesthatusetheoldlocationsarechanged tosupportthenewonesin/var. TheGNUEmacslockfiledirectory,ifEmacsisinstalled,shouldbeasymlinkpointingto /var/lock/emacsifyouwanttobeabletomount/usrread-only.Itisusuallyfoundin /usr/emacs,/usr/lib/emacs,or/usr/local/lib/emacs(preferablynotthefirst).Further informationonthisislocatedinsection5.3,"/var/lock". 4.1./usr/X386:XWindowsystemonx86platforms ThishierarchyisreservedfortheuseofXFree86X11releases. -18-LinuxFilesystemStructure February14,1994

/usr/X386:XFree86installationdirectory
|
|-bin
|-doc
|-include
|-lib
+-man

TosimplifymattersandmakeXFree86morecompatiblewithotherX11packages,our recommendationistoplacethefollowingsymboliclinksonyoursystem:

/usr/bin/X11->/usr/X386/bin
/usr/lib/X11->/usr/X386/lib/X11
/usr/include/X11->/usr/X386/include/X11

4.2./usr/bin:Mostusercommands

/usr/bin:Binariesthatarenotneededinsingle-usermode.
|
|-mh:commandsfortheMHmailhandlingsystem
+-X11:symlinkto/usr/X386/bin

Thisistheprimarydirectoryofexecutablecommandsonthesystem. 4.3./usr/dict:Wordlists REQUIREDfilesfor/usr/dict:

{words}

TraditionallythisdirectorycontainsonlytheEnglish‘words’file,whichisusedbylook(1)and variousspellingprograms.‘words’mayuseeitherAmericanorBritishspelling.Sitesthatrequire bothmaylink‘words’to/usr/dict/american-englishor/usr/dict/british-english. WordlistsforotherlanguagesmaybeaddedusingtheEnglishnameforthatlanguage,e.g., /usr/dict/french,/usr/dict/danish,etc.Theseshould,ifpossible,useanISO8859characterset whichisappropriateforthelanguageinquestion;ifpossibletheLatin1(ISO8859-1)characterset shouldbeused(thisisoftennotpossible). Therationalebehindhavingonlywordlistshereisthattheyaretheonlyfilesusedbyallspell checkers.Forexample,ispell(1)usesacomplicatedformatforits"hasheddictionaries"thatis onlyusefultoispellandshouldthusgoin/usr/lib/ispell. 4.4./usr/etc:site-widesystemconfiguration Storingconfigurationin/usr/etcforthesoftwarefoundin/usr/binand/usr/sbinisaproblem. Itmakestheread-onlymountingof/usrthroughCD-ROMorNFSdeliveryverydifficultatbest. Onepossiblesolutionthatweconsideredwastocompletelyeliminate/usr/etcandspecifythatall configurationbestoredin/etc.Aproblemwiththisapproachisthatitdoesnotproperly anticipatethepossibilitythatmanysitesmaywanttohavesomeconfigurationfilesthatarenot machine-local. -19-LinuxFilesystemStructure February14,1994 Weeventuallydecidedthat/etcshouldbetheonlydirectorythatisactuallyreferencedby programs(thatis,everythingshouldlookforconfigurationin/etcandnotin/usr/etc).Any configurationfilesthatneedtobesite-wideandarenotneededbefore/usrismounted(orinan emergencysituation)shouldthenbeplacedin/usr/etc.Then,specificfiles(in/etc)onspecific machinesmayormaynotbesymbolicallylinkedtoappropriateconfigurationfileslocatedin /usr/etc.Thisalsomeansthat/usr/etcistechnicallyanoptionaldirectoryinthestrictestsense, butwestillexpectallLinuxsystemstoincorporateit. Itisnotrecommendedfor/usr/etctocontainsymboliclinksthatpointtofilesin/etc.Thisis unnecessaryandwouldinterferewithlocalcontrolovermachinesthatsharea/usrdirectory. 4.5./usr/include:Directoryforstandardincludefiles. Thisiswhereallofthesystem’sgeneral-useincludefilesshouldbeplaced.

/usr/include:includefiles.
|
|-X11:Symlinkto/usr/X386/include/X11
|-arpa:ARPAnetdefinedprotocoldefinitions
|-asm:Symlinkto/usr/src/linux/include/asm
|-bsd:BSDcompatibilityincludefiles
|-gnu:GNUincludefiles
|-linux:Symlinkto/usr/src/linux/include/linux
|-net:Genericnetwork-relateddefinitions
|-netax25:+AX25(ARRLAX.25)specificdefinition
|-netinet:TCP/IPspecificnetworkingstuff
|-netipx:+IPX(NovellIPX/SPX)specificdefinitions
|-protocols:Protocoldefinitions(mostlyINET-based)
|-readline:TheGNUreadlinelibrary
|-rpc:SunMicrosystemsRPCdefinitions
|-rpcsvc:SunMicrosystemsRPCservicedefinitions
+-sys:Systemgenerationincludefiles

Notethatnotallofthesesubdirectoriesarerequired. The"arpa"subdirectorycontains"ARPAnet"definedprotocoldefinitions,TCP/IPconversion functions,definitionsfor"ftp","telnet"prototypes,andmore. The"net"subdirectorycontainsgenericnetwork-relateddefinitions.Itusuallydefinesthesystem kernelinterface,protocolfamilydetails,etc. The"netinet"subdirectorycontainsTCP/IPspecificnetworkingstuffINET(DARPAInternet, alsoknownasTCP/IP)specificdefinitions. "ARRLAX.25"isbetterknownaspacketradioand"NovellIPX/SPX"isbetterknownasNovell NetWare. 4.6./usr/lib:Librariesforprogrammingandpackages -20-LinuxFilesystemStructure February14,1994

/usr/lib:Librariesforprogrammingandpackages
|
|-X11:Symboliclinkto/usr/X386/lib/X11
|-emacs:SupportfilesfortheGNUEmacseditor
|-groff:Libraries/directoriesforGNUgroff
|-gcc-lib:Systemspecificfiles/directoriesfor`gcc'
|-mh:LibrariesfortheMHmailhandlingsystem
|-mf:Meta-Fontdata
|-news:Cnews/INN
|-smail:Smail
|-terminfo:Directoriesforterminfodatabase
|-tex:TEX(andLATEX)datalibraries
|-uucp:Commandsforuucp
+-zoneinfo:Timezoneinformationandconfiguration

/usr/libtraditionallyincludesobjectlibraries,compilerprogrambinaries,andotherstaticdata. Ithasalsoincludedsomeprogramssuchas‘sendmail’and‘makewhatis’inadditiontotheC compilerinternalbinaries(whicharelocatedunder/usr/lib/gcc-lib). Since‘makewhatis’isnotreferencedbyotherprograms,ithasbeenrelocatedinto/usr/sbin withoutotherconsiderations.The‘catman’binary,alsolocatedin/usr/sbin,replaces ‘makewhatis’onmanyLinuxsystems. The‘sendmail’binary,however,isreferencedbymanyprograms./usr/lib/sendmailshouldbe replacedbyasymboliclinkwhichpointstoeitherthe‘smail’binary(placedin/usr/bin)orthe ‘sendmail’binaryproper(placedin/usr/sbin).Thesymboliclinkisincludedonlyforbackwards compatibility.Forincreasedcompatibilitybetweenthesystemsthatuse‘smail’andthosethat use‘sendmail’,asymlinkshouldbeplacedat/usr/sbin/sendmailto/usr/bin/smailifasystemis using‘smail’./usr/sbin/sendmailshouldbecomethesemi-officiallocationofsendmail-compatible mailuseragents. Thisarrangementalsoconformstothenewstandard‘sendmail’locationasdefinedinsendmail 8.6.xand4.4BSD.Notethatthisplacementdemandsthat/usr/sbinand/usr/sbin/sendmail mustbereadableandexecutablebynormalusers. ‘smail’isstoredin/usr/binbecausebothnormalusersandadministratorswilloftenwanttouse itfromthecommandline. Anyprogramorpackagewhichrequiresspecialdata(non-variable)shouldstoreitin/usr/lib,or in/usr/local/lib(ifitisinstalledlocally).Itisrecommendedthatasubdirectorybeusedin /usr/libforthispurpose. Note:Nohost-specificdatafortheXWindowsystemshouldbestoredin/usr/lib/X11(whichis really/usr/X386/lib).Host-specificconfigurationshouldbestoredin/etc/X11andhost-specific variabledatashouldbestoredin/var/X11. 4.7./usr/local:Localdirectory -21-LinuxFilesystemStructure February14,1994

/usr/local:Localdirectory
|
|-bin:Localonlybinaries
|-doc:LocalDocumentation
|-etc:Configurationforlocalonlybinaries
|-games:Locallyinstalledgames
|-lib:Librariesfor/usr/local
|-info:Localinfopages
|-man:Manpagehierarchyfor/usr/local
|-sbin:Localonlysystemadministration
+-src:Localsourcecode

The/usr/localdirectoryisusedbythesystemadministratortoinstallsoftwarethatneedstobe safefrombeingoverwrittenwhenthesystemsoftwareisupdated.Itisusedtostoreanythingthat issharableamongagroupofmachines,butnotfoundin/usr. ThisdirectoryshouldalwaysbeemptyafterfirstinstallingLinux.Noexceptionstothisrule shouldbemadeotherthanthelisteddirectorystubs. Locallyinstalledsoftwareshouldbeplacedwithin/usr/localratherthan/usrunlessitisbeing installedtoreplaceorupgradesoftwarein/usroritisfeltthattheinstalledsoftwareis "importantenough"toplacein/usrorin/.Notethatsoftwareplacedin/or/usrwilloftenbe overwrittenwithcompletesystemupgrades(unlessproperbackupsaremade).Forthisreason, localsoftwareshouldnotbeplacedoutsideof/usr/localwithoutgoodreason. 4.8./usr/man:Manualpages

/usr/man:Manualpagehierarchy
|
|-man1:Userprograms
|-man2:Systemcalls
|-man3:Libraryfunctionsandsubroutines
|-man4:Devices
|-man5:Fileformats
|-man6:Games
|-man7:Miscellaneous
|-man8:SystemAdministration
+-man9:Kernelinternalvariablesandfunctions

Thecatpagesections(cat[1-9])containingformattedmanualpageentriesarealsofoundwithin subdirectoriesof/usr/man,butarenotrequirednorshouldtheybedistributedinlieuofnroff sourcemanualpages. LocalandXWindowsmanualpages(ifpresent)shouldbestoredin/usr/local/manand /usr/X386/man,respectively.Thesedirectorieshaveasimilarstructureto/usr/man(man[1-9], cat[1-9],emptysubdirectoriesbeingomitted). TheMHmailhandlingsystemmanualpagesshouldhave"mh"affixedtoallmanualpage filenames.X11manualpagesusuallyhave"x"affixedtoallX11manualpages. AsLinuxismoreextensivelyusedincountrieswhereEnglishisnottheprimarylanguage, translationsofmanualpagesareoftendeveloped.Thereistheimpendingproblemthatthese -22-LinuxFilesystemStructure February14,1994 manualpageswillhavetobestoredsomewhereelse.SomeGermanLinuxdistributionshave alreadycreatedamanualpagesystemthatisplacedin/usr/manwiththesuffix"g".Thisis likelycauseproblemsinthelongrunasotherlanguagesappear,particularlyotherlanguages whichbeginwiththesameletter,suchasGreek.Thereisalsotheadditionalproblemthat manualpageswillbeformattedinmanydifferentcharactercodeformats.EvenwithintheISO 8859charactercodestandards,eachseparateimplementationisincompatiblewitheachother implementation. Therefore,allnon-Englishmanualpagessectionsshouldbestoredinsubdirectorieswithin /usr/mannamedaccordingtothelanguagethatthethecontainedmanualpagesarewrittenin (lowercasecharacters).Thus,forGermanmanualpages: /usr/man/german/man[1-9]andpossibly/usr/man/german/cat[1-9] Then,German-speakingLinuxuserscanadd/usr/man/germantotheirmanualsearchpath before/usr/mansothatGermanmanualpagesarereferencedfirst. Thebestscheme,oftenfoundonHP-UXsystems,isamanualpagerthatisbasedonNLS(native languagesupport)oranNLS-likesystemwhichobeysa$LANGenvironmentvariable.This supportiscurrentlynotavailableforLinuxsystems,meaningthatthissectionisslightly presumptive.Underthisscheme,ifaGermanmanualpageisnotlocatedforagivencommand thentheEnglishversionmaybereferencedautomatically.Thisstructureisdesignedwiththe intentionthatitmaymakeasmoothtransitionfrombeingsupportedthroughthe$MANPATH environmentvariabletosupportthrougha$LANGenvironmentvariable,makingthe $MANPATHlanguage-independent.Suchsoftwareshouldalsopossesstheabilitytohandle variouscharactercodestandards,butconjectureonhowtoimplementthishandlingisnotfeasible atthistime. Thissetupwillbeneededasthenumberofforeign(non-English)manualpagesincreases. Germanisthelanguagementionedheresinceitistheonlynon-Englishmanualpagesystem distributedwithanyLinuxsystematthistime.Otherlanguageswillprobablyfollowandthey shouldtrytoconformtothisschemeaswell(ifitprovestobeadequate). Thepracticeofplacingnon-Englishmanualpagesinsubdirectoriesof/usr/manshouldbe followedaswellforothermanualpagehierarchies,suchas/usr/local/manand/usr/X11/man. (ThisportionoftheFSSTNDalsoapplieslaterinsection5.3ontheoptional/var/catman structure.) Note:Usingthelanguage’sownnameforitself("deutsch")ratherthantheEnglish("german") wasconsidered,butthiswasmetwithdisapprovalfrommanypeople,includingthosewhodonot speakEnglishasafirstlanguage.Thereasonsinclude:simplicity,thedifficultyindisplaying manylanguages’namesinASCIIcharacters,andthefactthateveryoneshouldbeableto recognizetheirlanguagenameinEnglish. Adescriptionofeachsectionfollows: •man1:Userprograms Manualpagesthatdescribepubliclyaccessiblecommandsarecontainedinthischapter. Mostprogramdocumentationthatauserwillneedtouseislocatedhere. •man2:Systemcalls ThissectiondescribesallofthesystemcallswhichareentriestotheLinuxkernel (operatingsystem).Thissectioncanbeveryusefultoprogrammers,butusershavelittle needoftheitemsinsection2. -23-LinuxFilesystemStructure February14,1994 •man3:Libraryfunctionsandsubroutines Section3describesuser-levellibraryroutines.Thisisanotherchapterthatisonlyreallyof interesttoprogrammers. •man4:Specialfiles Section4describesthespecialfiles,relateddriverfunctions,andnetworkingsupport availableinthesystem.Typically,thedevicefilesfoundin/dev. •man5:Fileformats Theformatsformanynonintuitivedatafilesaredocumentedinthesection5.This includesvariousincludefiles,programoutputfiles,andsystemfiles. •man6:Games Thischapterdocumentsgames,demos,andgenerallytrivialprograms.Differentpeople havevariousnotionsabouthowessentialthisis. •man7:Miscellaneous Manualpagesthataredifficulttoclassifyaredesignatedasbeingsection7.Thetroffand othertextprocessingmacropackagesarefoundhere. •man8:Systemadministration Documentationforprogramsusedbysystemadministratorsforsystemoperationand maintenancearedocumentedhere.Someoftheseprogramsarealsooccasionallyusefulfor normalusers. •man9:Kernelinternalvariablesandfunctions ThisisusedonLinuxsystemstodocumentthekernelsourcecode. 4.9./usr/sbin:Non-essentialstandardsystembinaries Thisdirectorycontainsanynon-essentialbinariesusedexclusivelybythesystemadministrator. Systemadministrationprogramsthatarerequiredforsystemrepair,systemrecovery,mounting /usr,orotheressentialfunctionsshouldbeplacedin/sbininstead. Typically,/usr/sbincontainsnetworkingdaemons,anynon-essentialadministrationtools,and binariesfornon-criticalserverprograms.Theseserverprogramsareusedwhenenteringthe SystemVstatesknownas"runlevel2"(multi-userstate)and"runlevel3"(networkedstate)or theBSDstateknownas"multi-usermode".Atthispointthesystemismakingservicesavailable tousers(e.g.,printersupport)andtoothermachines(e.g.,NFSexports). Localsystemadministrationprogramsshouldbeplacedin/usr/local/sbin. 4.10./usr/share:Architecture-independentdata Anyspecificationsfor/usr/sharewillbeincludedinasupplementarydraftstothemainFSSTND standard.NotethatitistheconsensusopinionofFSSTNDthat/usr/shareisnotneededonthe majorityofLinuxsystems.Atthistime,confiningourselvesbyprovidinganextensivedefinition ofthisdirectorywouldbeabadidea. Pleaserefertosection6.2formoredetaileddescriptionof/usr/share. 4.11./usr/src:Sourcecode -24-LinuxFilesystemStructure February14,1994

/usr/src:Sourcecode
|
+-linux:SourcecodeforLinus'kernel

Anynon-localsourcecodeshouldbeplacedinthissubdirectory.Theonlysourcecodethat shouldalwaysbeplacedinaspecificlocationisthekernelsource(whenpresentorlinkedinpart tothe/usr/includestructure).Subdirectoriesmaybeusedhereifdesired. Thesourcecodeforthekernelshouldalwaysbeinplaceoratleasttheincludefilesfromthe kernelsource.Thosefilesarelocatedinthesedirectories:

/usr/src/linux/include/asm
/usr/src/linux/include/linux

/usr/includeusuallycontainslinksto‘asm’and‘linux’inthesourcedirectory.Sincetheyare neededbytheCcompiler,atleastthoseincludefilesshouldalwaysbedistributedwith installations.Theyshouldalsobedistributedinthe/usr/src/linuxdirectorysothereareno problemswhensystemadministratorsupgradetheirkernelversionforthefirsttime.

LinuxFilesystemStructure February14,1994 5.The/vardirectory

/var:Directoriesoffilesthattendtogroworvaryinsize
|
|-X11:Variablefiles/directoriesfortheXWindowSystem
|-adm:Systemloggingandaccountingfiles
|-catman:Locally-formattedmanualpages
|-lock:Lockfiles
|-named:DNSfiles(for`named'),networkingonly
|-preserve:Savedtexteditedby`vi'aftercrashorhang-up
|-spool:Directoriesforqueueworktobeperformedlater
|-tmp:Temporaryfiles,usedtokeep/tmpsmall.
+-yp:NetworkInformationService(NIS)databasefiles

Thedirectoryforvariabledatafiles.Thisincludesspools,administrativefiles,loggingfiles, transientfiles,andtemporaryfiles. Agoodreasontouse/varistomakeitpossibletomount/usrread-only.Everythingthatonce wentinto/usrthatiswrittentoonatemporarybasis,nowgoesinto/var.Theaforementioned symboliclinks,alsomentionedbelowintheissuesandrationalesection,shouldbeaddedto/usr forcompatibility.Thisisveryhelpfulifyouaremounting/usrthroughNFS,ifyouwantareadonly/usrforsafetyreasons,oryour/usrismountedfromread-onlymediasuchasaCD-ROM. 5.1./var/X11:VariabledatafortheXWindowSystem

/var/X11:Host-specificdatarelevanttoX
|
+-xdm:Xdisplaymanagerfiles

Thestandardprogramusedtoprovideaper-machineloginenvironmentisXDM.XDMbinaries shouldstillbeplacedinthepreviouslocationin/usr/X386/lib/X11/xdm(e.g.,‘chooser’). 5.2./var/adm:Systemloggingandaccountingfiles Allsystemloggingshouldbewrittentothissubdirectoryandnotto/var/log.‘wtmp’and ‘lastlog’shouldbestoredhere. /var/admisalsotheappropriatelocationforalldistributionpackagingsupport.Untilthereisa commonLinuxpackagingformat,packagedatashouldbestoredin"distributionspecific" subdirectoriesofthisdirectory. 5.3./var/catman:Locally-formattedmanualpages(optional) Thisdirectoryprovidesastandardlocationforsitesthatprovidearead-only/usrpartition,but wishtoallowcachingoflocally-formattedmanpages.Sitesthatmount/usraswriteable(e.g., single-userinstallations)maychoosenottouse/var/catmanandwriteformattedmanpagesinto thecat[1-9]directoriesin/usrdirectly.Mostsitesshoulduseoneofthefollowingoptionsinstead: •Preformatallmanualpagesin/usrwiththe‘catman’program. •Allownocachingofformattedmanpages,andrequirenrofftoberuneachtimeaman pageisbroughtup. -26-LinuxFilesystemStructure February14,1994 •Allowlocalcachingofformattedmanpagesin/var/catman. Thestructureof/var/catmanneedstoreflectboththefactofmultiplemanpagehierarchiesand thepossibilityofmultiplelanguagesupport.Givenaformattedmanpagethatwouldnormally appearin/usr/<path1>,thecachedformattedversionshouldgoin/var/catman/<path2>, where<path2>is<path1>withoutthe‘man’component.Thus/usr/man/cat1/ls.1endsupin /var/catman/cat1/ls.1,and/usr/X386/man/german/cat3/foo.3in /var/catman/X386/german/cat3/foo.3. Note:currentversionsofthe‘man’programdonotsupportthisproposedstandard.Untilsuch supportisavailable,siteswillhavetochoosebetweenpreformattingcatpagesin/usr(or mounting/usraswriteable),andsymlinkingthevariouscat[1-9]directoriestotheappropriate subdirectoryof/var/catman. Localpolicywilldictatewhethermanpageswrittento/var/catmanareeventuallytransferredto /usr,andwhetherformattedmanpagesin/usrareexpirediftheyarenotaccessedforaperiodof time. 5.4./var/lock:Lockfiles Lockfilesshouldbestoredwithinthe/var/lockdirectorystructure.

/var/lock:Lockfiles
|
+-emacs:Emacslockfiles

Topreservetheabilitytomount/usrread-only,nolockfilesorlockfilesystemsshouldbestored onthe/usrpartition. Devicelockfiles,suchastheserialdevicelockfileswhicharefoundin/usr/spool/locksor /usr/spool/uucp,shouldbestoredin/var/lock.Thenamingconventionwhichshouldbefollowed is‘LCK..{device}’.Forinstance,ifyouareusingaprogramwhichuses/dev/cua0,thenitshould createalockfile,‘/var/lock/LCK..cua0’.TheformatusedforLinuxdevicelockfilesshouldbe theHDBstyle.TheHDBstyleistowritethelockingprocessIDinASCII,paddedwithleading zeroestotencharacters,followedbyanewline. Then,anythingwishingtouse/dev/cua0canobservethelockfileandactaccordingly. Programswithlargelockfilesystemsshoulduseasubdirectoryof/var/lock.Forinstance,GNU EmacsnormallystoresEmacslockfilesin/usr/lib/emacs/lock—thisposesaseriousproblemif youaretryingtomount/usrread-only.Emacslockfilesshouldinsteadbeplacedin /var/lock/emacs. Ifyouareadeveloper/maintainerofanapplicationwhichuseslockfilesinanymanner,itisa goodideatocontacttheFSSTNDmailinglistormetodiscussthearrangementofyourlockfiles. Atthistime,lockfileswhicharestoredin/etc,suchaspidlockfiles,shouldremainin/etc. -27-LinuxFilesystemStructure February14,1994 5.5./var/named:DNSand‘named’files ThisisonlyneededforsystemsrunningaDNSnameserver(networkingprotocolforname servers). Note:ThedirectoryplacementofDNSmaypossiblychangeduetotheexistenceofDNSservers whicharenotbasedonnamed. 5.6./var/spool:Spooldirectories /var/spoolistraditionallyusedformachine-localdatabeingspooledtoorfromUNIXsubsystems. Forexample,printjobsarespooledherefordeliverytothelpdsystem,out-boundmailisspooled fordeliverytoremotesystems,anduucpfilesarespooledforwritingtoUUCPneighbors.Inboundmailandnewsarespooledherefordeliverytousers,andatandcronjobsarespooledfor delayedexecutionbythecrondaemon.

/var/spool:Spooldirectories
|
|-at:atjobs
|-cron:Cronjobs
|-lpd:Printerspooldirectory
|-mail:Directoryforusermailboxes
|-mqueue:Outgoingmailqueue
|-news:Newsspooldirectory
+-uucp:Spooldirectoryforuucp

UUCPlockfilesshouldbeplacedin/var/lock.Seetheabovesectionon/var/lock. 5.5.1./var/spool/lpd

/var/spool/lpd:Printerspooldirectory
|
|-{printer}:Spoolsforaspecificprinter
+-{printer}/lock:Lockfileforaspecificprinter

Thelockfileforlpd,‘lpd.lock’,shouldbeplacedin/var/spool/lpd.Thelockfileforeachprinter shouldbeplacedinthespooldirectoryforthatspecificprinter. 5.7./var/tmp:temporaryfiles,usedtokeep/tmpsmall Filesin/var/tmparestoredforanunspecifiedduration(pleaserememberthatsystemtemporary directoriesarenotguaranteedtoholddataforanyparticularduration). Datastoredin/var/tmpistypicallycleanedout"inasite-specificmanner",butusuallyatless frequentintervalsthan/tmp.Moreinformationontemporarydirectoriesisinthesectionofthe standarddevotedto/tmp(above). /usr/tmpisusuallysymlinkedto/var/tmpforcompatibilityreasons. -28-LinuxFilesystemStructure February14,1994 5.8./var/yp:NetworkInformationService(NIS)databasefiles TheNetworkInformationService(NIS)wasformerlyknownastheSunYellowPages(YP).The functionalityanddirectoryplacementofthetwoisthesame,butthename"YellowPages"isa registeredtrademarkintheUnitedKingdomofBritishTelecommunicationsplc,andmaynotbe usedwithoutpermission.

LinuxFilesystemStructure February14,1994 6.IssuesandAdditionalRationale Thissectiondiscussesseveralareasthatmayrequirefurtherexplanation. 6.1.WhatisEssential? Theansweris:essentialtoclean,create,prepare,check,findandmountotherfilesystems (possiblyonremotemachines).Thereareotherdefinitions,butthisisageneraldefinitionthat mostpeoplewillatleastincorporateintotheirown. 6.2.Networking Networkingpresentedaninterestingdilemma.Somepeoplewantedtoseparatenetworking binariesandconfigurationfromotherbinariesandconfiguration.However,wedisagree.Wefeel thatnetworkingisnota"package",butanintegralpartofmostUNIX(andUNIX-like)machines. Becauseofthisnetworkingshouldnotbeplacedintoasingledirectory,butsystematicallyplaced intheappropriatedirectories. •/bin:anythingauserwillwanttousethatisalsoconsideredvital

{hostname,netstat,ping,...}

•/sbin:anythingonlyrootneedsandisconsideredvital

{arp,ifconfig,ifsetup,route}

•/usr/bin:anybinariesauserwillwanttouse,butarenotvital

{finger,rcp,rlogin,telnet,...}

•/usr/sbin:anyrootonlynetworkingbinariesthatarenotvital

{ftpd,inetd,lpd,telnetd,...}

Whilethismayseemconfusingatfirst(anditdoestakeamomenttodigest),itdoesmakesense. Ifyoucanonlymountrootforsomereasonandyouneedaccesstonetworkingtorepairyour system,youdon’tneedthefilestobeoffin/usr/etc(astheyoftenare).Filesthatareneededto mount/usrinnormal(andemergencysituations)areplacedontherootsubtreeandanyothers areplacedin/usrinordertokeepthesizeofrootsmall. Configurationfilesfornetworkingbelongin/etc. 6.3.Architecture-independentStructures Thestructure,/usr/share,typicallycontainsarchitecture-independentfilessuchasman-pages, timezone,terminfoinformation,etal.Asofthistime,therearenodifferentarchitecturesfor Linux,butwiththepassageoftimeweshouldseeLinuxincludeotherarchitecturesandother UNIX-likesystems. Onenote:noprogramshouldeverreferenceanythingin/usr/share.Forinstance,amanualpage programshouldneverdirectlylookin/usr/share/man/man1/ls.1,butitshouldreferto /usr/man/man1/ls.1atalltimes.Anythingin/usr/sharewillbe"pointedto"bytheuseof symlinksfromotherareasinthefilesystem,suchas/usr/man,/usr/lib/{something},etc. Thespecificationsfor/usr/sharearestillbeworkedout. -30-LinuxFilesystemStructure February14,1994 6.4.SymbolicLinks Thereareawiderangeofusesforsymboliclinks(symlinks)ineveryfilesystem.Whilesymlinks arenotencouragedfordefaultsetup(foundafterinstallingLinux)inastandardsuchasthis,they areoftenusedwithgoodpurposeondifferentsystems.Thepointisthatsymlinksshouldbethere tokeepeverythingwhereeveryoneelseexpectsfindit. Bepreparedtoacceptthatcertaindirectories,eventhosecontainedontherootdirectory,arestill goingtobesymlinks.Forinstance,onsomesystems/homewillnotbeontheroot,butsymlinked toa/vardirectory,ortosomewhereelse./homecouldalsohaveitsownphysicalpartition,of course,andbemountedonitsown. Similarly,because/usrmightbeonacentralfileservermountedviaNFS,/usr/localcouldbe symlinkedto/var/local.Like/usr/lib/emacs/lock,thischangecanbejustifiedbyrecallingthe mainpurposeforhaving/var:toseparatedirectoriesoffilesthatvaryondifferentsystemsand machinesfromthosethatmaybeshared. Sometimessystemswillalsolink/tmpto/var/{something}iftherootpartitionbecomestoo small(orstartsouttoosmall).Therearemoreexamplesof"good"usesofsymboliclinks,but theentireissueboilsdowntotwothings:packagesshouldbeabletofindthingswheretheyexpect them(withinreason)andsymboliclinkscanbeusedtosolvetheprobleminmanycases. However,problemsalsocanarisefromusingtoomanysymboliclinks.Theseproblemsinclude over-relianceonsymboliclinkstosolveproblems,confusionresultingfromoveruseofsymbolic links,andtheaestheticpreferencesofdifferentpeople. 6.5.Staticallylinkedbinaries Linuxiscurrentlyrunningonawidevarietyofsystems,somesingleuserwithsmalldisks,someas serversinlargenetworkedenvironments.Becauseofthisvariety,thisstandardsetsnorule regardingwhatbinariesarestaticordynamicwiththefollowingtwoexceptions.Both‘ln’and ‘sync’shouldexistin/bin;anystaticallylinkedversionsmaybeplacedin/sbin,orreplacethose in/bin. LargeLinuxsystemsmaywishtoincludeotherstaticallylinkedbinaries(sh,init,mkfs,fsck, tunefs,mount,umount,swapon,swapoff,getty,login,etc.).Thedevelopersand/orsystem administratorsarefreetostatically/dynamicallylinktheseandotherbinariesastheyseefit,as longasthelocationofthebinariesdoesn’tchange. Networkedsystems(especiallythoseofthefuturewhichmaylackfloppydrives),maywantto makeifconfig,route,hostname,andothernetworkingutilitiesstaticaswell.Thisisusuallynot needed. -31-LinuxFilesystemStructure February14,1994 TheFSSTNDmailinglist TheFSSTNDmailinglistislocatedatlinux-fsstnd@ucsd.edu.Thislistwasoriginallylocatedon thelinux-activists@Niksula.hut.fi"Mail-Net"astheFSSTNDchannel.(Tosubscribetothelist sendmailtolistserv@ucsd.eduwiththebodyof"ADDlinux-fsstnd".) ThankstoNetworkOperationsattheUniversityofCaliforniaatSanDiegowhoallowedustouse theirexcellentmailinglistserver. Acknowledgments CreditforthistextshouldbegiventotheFSSTNDactivists,developers,systemadministrators, anduserswhoseinputwasessentialtothisstandard.Ialsowishtothankeachofthe contributorswhohelpedmetowrite,compile,andcomposethis,aconsensusstandard. IalsowishtogiverealcredittothoseLinuxdeveloperswhohaveseenthatgivingLinuxa commonfilesystemlayoutissomethingthatwillfurtherthedevelopmentoftheLinuxoperating system.IalsowishtonotethebraveryandperseveranceofthoseLinuxdeveloperswhostarted followingthisstandardbeforeitwascompleted. Originalcontributors

DrewEckhardt<drew@kinglear.cs.colorado.edu>
IanJackson<ijackson@nyx.cs.du.edu>
IanMcCloghrie<ian@ucsd.edu>
DanielQuinlan<quinlan@bucknell.edu>
MikeSangrey<mike@sojurn.lns.pa.us>
DavidH.Silber<dhs@glowworm.firefly.com>
TheodoreTs'o<tytso@athena.mit.edu>
StephenTweedie<sct@dcs.ed.ac.uk>

Additionalcontributors

BrandonS.Allbery<bsa@kf8nh.wariat.org>
RikFaith<faith@cs.unc.edu>
StephenHarris<hsw1@papa.attmail.co>
FredN.vanKempen<waltje@uwalt.nl.mugnet.org>
JohnA.Martin<jmartin@csc.com>
ChrisMetcalf<metcalf@lcs.mit.edu>
IanMurdock<imurdock@shell.portal.com>
DavidC.Niemi<niemidc@oasis.gtegsc.com>

-32-