FAT-filsystem och Linux

Linux har flera filsystemdrivrutiner för filsystemformatet File Allocation Table (FAT). Dessa är allmänt kända under namnen som används i mount- kommandot för att anropa särskilda drivrutiner i kärnan: msdos , vfat och umsdos .

Historia och stöd

De flesta av de stora Linux-distributionerna, inklusive RedHat, SuSE och Debian, använder inte umsdos för att tillåta installation av Linux på en FAT-skivvolym. Några få distributioner gör det dock. Dessa inkluderar distributioner som Phat Linux, som installeras i C:\PHAT på DOS genom att packa upp en ZIP-fil och startas upp genom att köra ett COMMAND.COM -skript som heter LINUX.BAT och ZipSlack [ citat behövs ] .

UMSDOS-projektet startades 1992 av Jacques Gelinas och gjordes tillgängligt för nätet i januari 1994 som en patch. Den ingick i standarddistributionen som började med kärnan 1.1.36. [ citat behövs ] UMSDOS togs bort från Linux 2.6.11 kärnan på grund av bristande underhåll. UVFAT, en förlängning av UMSDOS för att använda Windows-datastrukturerna för långa filnamn istället för sina egna, avbröts före lanseringen. De borde fungera i 2.4.x-kärnor. [ citat behövs ]

Tidigare Linux-distributioner som använde UMSDOS är MuLinux , Monkey Linux och Winlinux 2000.

Funktionsjämförelse

Alla drivrutiner för Linux-filsystem stöder alla tre FAT-typerna, nämligen FAT12 , FAT16 och FAT32 . Där de skiljer sig är tillhandahållandet av stöd för långa filnamn , utöver 8.3- filnamnsstrukturen i det ursprungliga FAT-filsystemformatet, och i tillhandahållandet av Unix-filsemantik som inte finns som standard i FAT-filsystemformatet såsom filbehörigheter . Filsystemdrivrutinerna utesluter varandra. Endast en kan användas för att montera en given diskvolym vid varje given tidpunkt. Så valet bland dem bestäms av vilka långa filnamn och Unix-semantik de stöder och vilken användning man vill göra med diskvolymen.

msdos

Drivrutinen msdos filsystem ger ingen extra Unix-filsemantik och inget stöd för långa filnamn. Om ett FAT-diskfilsystem monteras med den här drivrutinen kommer endast 8.3 filnamn att vara synliga, inga långa filnamn kommer att vara tillgängliga, inte heller kommer några långa filnamnsdatastrukturer av något slag på diskvolymen att bibehållas. Vfat- filsystemdrivrutinen ger stöd för långa filnamn med samma diskdatastrukturer som Microsoft Windows använder för VFAT- stöd för långa filnamn på FAT-formatvolymer, men den stöder inte någon extra Unix-filsemantik. Umsdos - filsemantik. Det gör det dock med hjälp av datastrukturer på disk som inte känns igen av några filsystemdrivrutiner för något annat operativsystem än Linux.

umsdos

Den viktigaste fördelen med umsdos av de tre är att det ger fullständig Unix-filsemantik. Därför kan den användas i situationer där det är önskvärt att installera Linux på och köra det från en FAT-diskvolym, vilket kräver att sådan semantik är tillgänglig. Men Linux som är installerat på och körs från en sådan diskvolym är långsammare än Linux installerat på och körs från en diskvolym formaterad med till exempel filsystemformatet ext2 . Om inte ett verktygsprogram körs regelbundet varje gång man byter från att köra Windows till att köra Linux, kommer vissa ändringar som görs i filer och kataloger på disken av Windows att orsaka felmeddelanden om otillgängliga filer i Linux.

vfat

vfat , även om den saknar fullständig Unix-filsemantik och saknar förmågan att ha Linux installerat på och körs från en FAT-diskvolym, har inte de ovannämnda nackdelarna med umsdos när det kommer till att helt enkelt dela data på en FAT-diskvolym mellan Linux och andra operativsystem system som Windows. Dess datastrukturer är desamma som de som används av Windows för långa VFAT-filnamn, och det kräver inte att ett synkroniseringsverktyg körs för att förhindra att Windows- och Linux-datastrukturer blir osammanhängande. Av denna anledning är det den mest lämpliga av Linuxs FAT-filsystemdrivrutiner att använda i de flesta situationer.

FS-drivrutin Långa filnamn Unix-fil semantik Kommentar
msdos Nej Nej 8.3 endast filnamn
vfat Ja Nej Använder samma datastrukturer som Windows använder
umsdos Ja Ja Kan vara värd för Linux; kan behöva underhåll när du byter OS

Gemenskaper

Som tidigare nämnts stöder alla drivrutiner för Linux-filsystem alla de tre filallokeringstabellstorlekarna, 12-bitars, 16-bitars och 32-bitars. Andra vanliga funktioner som de alla stöder är olika Linux-monteringsalternativ (anges med -o till mount- kommandot):

uid och gid
Dessa två alternativ talar om för filsystemdrivrutinen att ställa in (standard, i fallet med umsdos ) ägarens användar-ID och grupp-ID att vara ett enda, specificerat värde för alla filer i volymen. Båda ID:n är specificerade som numeriska värden (som finns i filen /etc/passwd) . Så, till exempel, för att specificera för vfat- filsystemdrivrutinen att alla filer och kataloger ska ha ägar-ID 745 och grupp-ID 15, skulle mount -kommandot anropas som mount -t vfat -o uid = 745 ,gid = 15 . Linux-filsystemdrivrutiner har för närvarande inte stöd för fil-/kataloglösenord på FAT12/FAT16/FAT32-volymer och åtkomstbehörigheter för flera användare av världen/grupp/ägare för läs-/skriv-/ta bort-/körrättigheter på FAT12/FAT16-volymer som implementerats i olika operativsystem i Digital Research-familjen, inklusive DR-DOS , PalmDOS , Novell DOS , OpenDOS , FlexOS , Concurrent DOS , Multiuser DOS , System Manager och REAL/32 .
umask
Detta alternativ ställer in umasken så att den tillämpas globalt på alla filer i volymen. Till exempel, för att specificera för vfat filsystemdrivrutinen att ingen "grupp" eller "annan" åtkomst ska tillåtas, skulle mount kommandot anropas som mount -t vfat -o umask = 077 .
conv
Det här alternativet anger semantik för konvertering av filinnehåll . Det är möjligt för filsystemdrivrutinerna att konvertera newline-konventionerna i filer, mellan LF-avslutning och CRLF-avslutning, i farten när filer läses och skrivs. Som standard är denna omvandling helt inaktiverad. Filsystemdrivrutinerna kan utföra konvertering för vissa filer och försöka automatiskt upptäcka vilka filer som ska konverteras baserat på filnamnstillägget, eller globalt för alla filer. Dessa tre omvandlingsnivåer är specificerade som conv=b (för "binär"), conv=a (för "auto-detect") och conv=t (för "text"), respektive. De två sistnämnda alternativen medför en inneboende risk att korrumpera fildata som inte är text. Ingen konvertering alls är standard.

umsdos

Datastruktur

Umsdos FAT-filsystemdrivrutinen lagrar all extra information relaterad till Unix-filsemantik i vad som, för en annan FAT-filsystemdrivrutin, bara verkar vara en normal fil i varje katalog och underkatalog, med namnet --LINUX -.--- .

I avsaknad av denna fil i en given katalog, och därmed som standard, tillhandahåller umsdos filsystemdrivrutinen samma semantik som msdos filsystemdrivrutin gör för katalogen: endast 8.3 filnamn och ingen extra Unix-filsemantik. För att aktivera umsdos- drivrutinens extra funktioner är det nödvändigt att skapa den filen i katalogen och synkronisera dess interna data med normala FAT-data för alla befintliga poster som redan finns i katalogen. Detta görs med ett verktyg som heter umssync .

Detta är verktygsprogrammet som körs över varje katalog på skivvolymen, varje gång man byter från att köra Windows till att köra Linux, för att umsdos filsystemdrivrutin ska kunna införliva alla ändringar som gjorts i filer och kataloger av Windows i sin privata datastrukturer i dess --LINUX-.--- fil. Som standard skapar umssync- verktyget --LINUX-.--- filer i kataloger om de inte redan finns, vilket resulterar i en sådan fil i varje katalog i skivvolymen. När du växlar mellan Windows och Linux anses detta beteende inte ofta vara önskvärt. Därför är det normala driftsättet när man anropar umssync efter byte från Windows till Linux (vilket vanligtvis görs genom att köra verktyget vid Linux-starttid från ett startskript) att använda alternativet -c för kommandot, vilket förhindrar skapandet av alla nya --LINUX-.--- filer i kataloger som inte redan har dem.

Installerar Linux på FAT

Som nämnts tillåter umsdos installation av Linux på, och sedan bootstrapping och körning från en skivvolym i FAT-format. Fördelen med detta är att det tillåter användning av Linux på en dator där DOS redan är installerat, utan att kräva att hårddisken partitioneras om . Linux är inte uppstartad direkt från en volymstartpost i ett sådant scenario. Istället bootstrappas först DOS, och loadlin eller linld används för att sedan bootstrap Linux från DOS.

Konventionen för en sådan installation är att Linux- rotkatalogen är en underkatalog till rotkatalogen för DOS- startvolymen , t.ex. C:\LINUX . De olika Linux-toppnivåkatalogerna är alltså, för DOS, kataloger som C:\LINUX\ETC (för /etc ), C:\LINUX\BIN (för /bin ), C:\LINUX\LIB (för /lib) ), och så vidare. Umsdos filsystemdrivrutin lägger automatiskt C:\LINUX\ framför alla sökvägsnamn. Platsen för Linux-rotkatalogen levereras till umsdos filsystemdrivrutin i första hand via ett alternativ till kommandot loadlin . Så till exempel skulle loadlin anropas med en kommandorad som loadlin c:\linux\boot\vmlinuz rw root=c:\linux .

Installationen av Linux i en sådan katalog innebär i första hand helt enkelt att packa upp filer från ett arkiv till den katalogen och dess underkataloger. En sådan installation kräver också i allmänhet användning av en växlingsfil snarare än en växlingspartition för Linux, men detta är relaterat till önskan att inte partitionera om hårddisken och inte relaterat till umsdos filsystemdrivrutin i sig.

Åtkomst till FAT-formaterade volymer utan stöd för kärnan

Även om filsystemsdrivrutinerna i kärnan gör det möjligt att komma åt filer och kataloger på FAT-formaterade volymer på normalt sätt, är det också möjligt att göra det utan stöd för kärndrivrutiner, med hjälp av verktygsprogrammen som utgör mtools verktygssvit . Liksom vfat FAT-filsystemdrivrutinen ger mountlo stöd för långa filnamn med samma skivdatastrukturer som Microsoft Windows använder.

Alternativt kan en av FUSE- filsystemdrivrutinerna användas — FatFuse, FuseFat eller mountlo.

POSIX-överlagringsfilsystem

En modern motsvarighet till UMSDOS är POSIX Overlay Filesystem (posixovl). Det fungerar i FUSE.

Se även

Vidare läsning