De terminal opdracht mkfs staat voor make file system en wordt gebruikt om opslagmedia te formatteren met een specifiek bestandssysteem.
De mkfs opdracht heeft, omdat het ingrijpende bewerkingen op opslagmedia en partities kan uitvoeren, root rechten nodig. Je voert de mkfs opdracht dan ook steeds uit als root gebruiker of met root rechten via sudo.
Een bestandssysteem (file system of kortweg fs) zorgt voor een structuur en de logica waarmee gegevens op media beheerd worden. Het bestandssysteem bepaald dus hoe gegevens worden weggeschreven (opgeslagen) en gelezen (geopend).
Er zijn verschillende bestandssystemen en elk hebben ze hun eigen voor- en nadelen. Dit zijn de meest gebruikte bestandssystemen: (Ex)FAT, NTFS, ext, APFS en HFS.
Bestandssystemen worden dikwijls geassocieerd met besturingssystemen. Zo is (Ex)FAT/NTFS ontworpen voor Windows, wordt Ext gebruikt met Linux en zijn APFS/HFS macOS bestandssystemen.
Formatteren is risicovol, zorg dus dat je steeds weet waar je mee bezig bent. Een verkeerde schijf/partitie formatteren kan verstrekkende gevolgen hebben. Ik gebruik voor de opdrachten bij deze tip dan ook een USB stick waarop geen bestanden staan die ik nog nodig heb.
Een overzicht van alle aangesloten opslagmedia krijg je met de opdracht:
dany@pindabook:~> sudo fdisk -l
Schijf /dev/sda: 238,47 GiB, 256060514304 bytes, 500118192 sectoren
Disk model: SAMSUNG MZ7TD256
Eenheid: sectoren van 1 * 512 = 512 bytes
Sectorgrootte (logisch/fysiek): 512 bytes / 512 bytes
In-/uitvoergrootte (minimaal/optimaal): 512 bytes / 512 bytes
Schijflabeltype: gpt
Schijf-ID: 4377B292-5385-4B4B-8FDA-FA94290B7512
Apparaat Begin Einde Sectoren Grootte Type
/dev/sda1 2048 2050047 2048000 1000M Windows recovery-omgeving
/dev/sda2 2050048 2582527 532480 260M EFI-systeem
/dev/sda3 2582528 19357695 16775168 8G Linux wisselgeheugen
/dev/sda4 19357696 187131903 167774208 80G Linux bestandssysteem
/dev/sda7 187131904 500117503 312985600 149,2G Microsoft basisgegevens
Schijf /dev/sdb: 3,64 GiB, 3909091328 bytes, 7634944 sectoren
Disk model: USB DISK 2.0
Eenheid: sectoren van 1 * 512 = 512 bytes
Sectorgrootte (logisch/fysiek): 512 bytes / 512 bytes
In-/uitvoergrootte (minimaal/optimaal): 512 bytes / 512 bytes
Schijflabeltype: dos
Schijf-ID: 0x79691180
Apparaat Op. Begin Einde Sectoren Grootte ID Type
/dev/sdb1 2048 7634943 7632896 3,6G c W95 FAT32 (LBA)
Hieruit blijkt dat /dev/sda mijn systeemschijf is en /dev/sdb de aangesloten USB stick.
Een aangekoppeld bestandssysteem, m.a.w. in gebruik, formatteren is geen goed idee. Je kunt een gekoppeld bestandssyteem (opslagapparaat) loskoppelen met de opdracht:
dany@pindabook:~> sudo umount /dev/sdb1
[sudo] wachtwoord voor root:
umount: /dev/sdb1: not mounted.
Nogmaals /dev/sdb1 is in het voorbeeld de enige partitie op mijn USB stick. In het voorbeeld wordt gemeld dat de USB stick partitie niet gekoppeld was. Voorkomen is echter beter dan genezen.
Nu de doel partitie gekend en losgekoppeld is, kunnen we er een bestandssysteem op aanmaken:
dany@pindabook:~> sudo mkfs /dev/sdb1
[sudo] wachtwoord voor root:
mke2fs 1.43.8 (1-Jan-2018)
/dev/sdb1 bevat een vfat-bestandssysteem met label 'SNT Stick'
Proceed anyway? (y,N) y
Aanmaken van bestandssysteem met 954112 blokken (van 4K) en 238560 inodes.
Bestandssysteem-UUID: 496dedc1-71bd-415e-843e-98ed463a024e
Superblokreservekopieƫn zijn opgeslagen in blokken:
32768, 98304, 163840, 229376, 294912, 819200, 884736
Reserveren van groepstabellen: voltooid
Schrijven van inodetabellen: voltooid
Schrijven van superblokken en bestandssysteem-metagegevens: voltooid
Het formatteren van grote en of trage opslagmedia kan wat tijd in beslag nemen, wees dus geduldig. In deze eenvoudigste vorm maakt mkfs een ext2 bestandssysteem aan op de opgegeven partitie.
Ext2 is echter een verouderd bestandssysteem. Vandaag de dag wordt standaard Ext4, het meest recente Ext bestandssysteem gebruikt. Een Ext4 bestandssysteem maak je aan met:
dany@pindabook:~> sudo mkfs.ext4 /dev/sdb1 -v
[sudo] wachtwoord voor root:
mke2fs 1.43.8 (1-Jan-2018)
/dev/sdb1 bevat een ext2-bestandssysteem
aangemaakt op Sat Aug 21 15:36:36 2021
Proceed anyway? (y,N) y
Lijst met bestandssysteemsoorten voor mke2fs.conf: 'ext4'
Bestandssysteemlabel=
Soort besturingssysteem: Linux
Blokgrootte=4096 (log=2)
Fragmentgrootte=4096 (log=2)
'stride'=0 blokken, 'stripe'-breedte=0 blokken
238560 inodes, 954112 blokken
47705 blokken (5.00%) gereserveerd voor systeembeheer
Eerste gegevensblok=0
Maximum aantal bestandssysteemblokken=977272832
30 blokgroepen
32768 blokken per groep, 32768 fragmenten per groep
7952 inodes per groep
Bestandssysteem-UUID: 17629e72-e570-41c9-a1cc-7431c9d291c4
Superblokreservekopieƫn zijn opgeslagen in blokken:
32768, 98304, 163840, 229376, 294912, 819200, 884736
Reserveren van groepstabellen: voltooid
Schrijven van inodetabellen: voltooid
Aanmaken van journal (16384 blokken): voltooid
Schrijven van superblokken en bestandssysteem-metagegevens: voltooid
Dankzij de -v (--verbose) wordt meer informatie op het scherm weergegeven.
Na het aanmaken van het bestandssysteem kan het geen kwaad te testen of alles naar behoren werkt. Eerst controleren we of het juiste bestandssysteem werd aangemaakt:
dany@pindabook:~> sudo file -sL /dev/sdb1
/dev/sdb1: Linux rev 1.0 ext4 filesystem data, UUID=17629e72-e570-41c9-a1cc-7431c9d291c4 (extents) (64bit) (large files) (huge files)
Daarna kunnen we het bestandssysteem koppelen:
dany@pindabook:~> sudo mount /dev/sdb1 /mnt/
Geen nieuws is goed nieuws. Even kijken wat er op de USB stick staat:
dany@pindabook:~> ls -l /mnt/
totaal 16
drwx------ 2 root root 16384 21 aug 15:46 lost+found
Uit deze informatie blijkt dat we het bestandssysteem voor de root gebruiker gekoppeld hebben.
Met de volgende opdrachten testen we het aanmaken van een map en een bestand, schrijven we tekst naar het bestand en lezen we het bestand terug uit:
dany@pindabook:~>sudo mkdir /mnt/test && cd /mnt/test
dany@pindabook:/mnt/test>sudo touch test.txt
dany@pindabook:/mnt/test>echo "Dit is een eenvoudige test." | sudo tee test.txt
Dit is een eenvoudige test. dany@pindabook:/mnt/test>cat test.txt
Dit is een eenvoudige test. dany@pindabook:/mnt/test>ls -l
totaal 4 -rw-r--r-- 1 root root 28 21 aug 16:00 test.txt dany@pindabook:/mnt/test>cd
dany@pindabook:~>sudo umount /dev/sdb1
De sudo opdrachten zorgen ervoor dat we bij het aanmaken en schrijven naar bestanden en mappen root rechten krijgen. Na het loskoppelen kan je de USB stick veilig uit de computer halen.
USB sticks zijn bij de aankoop meestal met het FAT bestandssysteem geformatteerd. Dit bestandssysteem kan namelijk door alle besturingssystemen standaard gebruikt worden. Met de volgende opdracht formatteer ik mijn USB stick met het FAT bestandssysteem en geef ik er meteen mijn naam aan. Handig als ik hem weer eens op een computer laat zitten:
dany@pindabook:~>sudo mkfs.vfat -n "Dany Pinoy" /dev/sdb1
[sudo] wachtwoord voor root: mkfs.fat 4.1 (2017-01-24) mkfs.fat: warning - lowercase labels might not work properly with DOS or Windows dany@pindabook:~>sudo file -sL /dev/sdb1
/dev/sdb1: DOS/MBR boot sector, code offset 0x58+2, OEM-ID "mkfs.fat", sectors/cluster 8, Media descriptor 0xf8, sectors/track 62, heads 121, hidden sectors 2048, sectors 7632882 (volumes > 32 MB), FAT (32 bit), sectors/FAT 7440, serial number 0xa7db9f97, label: "Dany Pinoy "