USB Sticks zijn handige apparaten en iedereen gebruikt ze wel eens. Ze worden dan ook voor allerlei zaken gebruikt. Van het uitwisselen van bestanden tot het installeren van besturingssystemen. Maar na het gebruik om bijvoorbeeld een besturingssysteem te installeren, moet je ze opnieuw formatteren om er terug bestanden mee uit te kunnen wisselen.
Bij het inpluggen van een USB Stick in een computer, wordt dit door het besturingssysteem opgemerkt. Dit kan je met de volgende opdracht nagaan:
dany@laptop:~> dmesg
[ 0.000000] microcode: CPU0 microcode updated early to revision 0x1f, date = 2016-04-01
[ 0.000000] Initializing cgroup subsys cpuset
[ 0.000000] Initializing cgroup subsys cpu
[ 0.000000] Initializing cgroup subsys cpuacct
[ 0.000000] Linux version 4.4.49-16-default (geeko@buildhost) (gcc version 4.8.5 (SUSE Linux) ) #1 SMP Sun Feb 19 17:40:35 UTC 2017 (70e9954)
...
[ 9784.039093] usb 1-2: new high-speed USB device number 8 using xhci_hcd
[ 9784.170641] usb 1-2: New USB device found, idVendor=13fe, idProduct=3100
[ 9784.170644] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 9784.170645] usb 1-2: Product: USB DISK 2.0
[ 9784.170646] usb 1-2: Manufacturer:
[ 9784.170647] usb 1-2: SerialNumber: 07A408027B51096B
[ 9784.179839] usb-storage 1-2:1.0: USB Mass Storage device detected
[ 9784.179906] scsi host4: usb-storage 1-2:1.0
[ 9784.180003] usbcore: registered new interface driver usb-storage
[ 9784.180939] usbcore: registered new interface driver uas
[ 9785.209085] scsi 4:0:0:0: Direct-Access USB DISK 2.0 PMAP PQ: 0 ANSI: 0 CCS
[ 9785.209370] sd 4:0:0:0: Attached scsi generic sg1 type 0
[ 9786.644289] sd 4:0:0:0: [sdb] 7634944 512-byte logical blocks: (3.91 GB/3.64 GiB)
[ 9786.648635] sd 4:0:0:0: [sdb] Write Protect is off
[ 9786.648639] sd 4:0:0:0: [sdb] Mode Sense: 23 00 00 00
[ 9786.653022] sd 4:0:0:0: [sdb] No Caching mode page found
[ 9786.653024] sd 4:0:0:0: [sdb] Assuming drive cache: write through
[ 9786.685813] sdb:
[ 9786.694949] sd 4:0:0:0: [sdb] Attached SCSI removable disk
Deze opdracht toont chronologisch wat er zoal op uw systeem gebeurt. Waaronder het juist inpluggen van een USB Stick. Wat ons vooral interesseert, is de naam van het apparaat waarmee ik de USB Stick kan benaderen. In bovenstaand voorbeeld is dit sdb. Als je weet dat alle apparaten in Linux in de map /dev/ verzameld worden, kan je de USB Stick bereiken via /dev/sdb.
Met de volgende opdracht kan je nagaan hoe de USB Stick geformatteerd is:
dany@laptop:~> sudo parted /dev/sdb print
root's password:
Model: USB DISK 2.0 (scsi)
Disk /dev/sdb: 3909MB
Sector size (logical/physical): 512B/512B
Partition Table: loop
Disk Flags:
Number Start End Size File system Flags
1 0,00B 3909MB 3909MB fat32
Hieruit kan je afleiden dat de USB Stick een opslagcapaciteit van 4 GB (3909 MB) heeft en deze het bestandssysteem fat32 gebruikt. M.a.w. een doodgewone USB Stick die zo uit een winkelrek kan komen. Toch is dit niet zo gewoon, in tegenstelling tot harde schijven bevatten USB Sticks meestal geen partities (Partition Table: loop). Het bestandssysteem (hier fat32) neemt dan de volledige opslagruimte in beslag (Start: 0, End: 3909MB). Ook andere opslagmedia zoals SD kaarten en DVD's gebruiken een gelijkaardig systeem.
Om een USB Stick die door het systeem de naam /dev/sdb heeft gekregen, volledig met het fat32 (vfat) bestandssysteem te formatteren, gebruik je volgende opdracht (Waarschuwing: wees voorzichtig dat je niet per ongeluk uw harde schijf formatteert).
dany@laptop:~> sudo mkfs.vfat -I -n "Dany Pinoy" /dev/sdb
root's password:
mkfs.fat 3.0.26 (2014-03-07)
mkfs.fat: warning - lowercase labels might not work properly with DOS or Windows
Tijdens het formatteren, krijgt de USB Stick de naam "Dany Pinoy". Zo kunnen collega's die mijn USB Stick vinden, die ik weer eens op een computer liet zitten, mij deze snel terug bezorgen. De meeste USB Sticks gebruiken het VFAT (fat32) bestandssysteem omdat je daar geen rechten meer hoeft voor te betalen en omdat elk computersysteem het kan lezen en schrijven.
De waarschuwing hierboven gaf het al aan, een kleine (typ)fout en in plaats van de USB Stick, wordt uw harde schijf geformatteerd. Het onderstaande script bouwt wat beveiligingen in, maar blijf toch voorzichtig.
#!/bin/bash # Controleer of er twee opties werden meegegeven if [[ -z $1 || -z $2 ]]; then echo 'Gebruik: bash usbformat.sh /dev/sdX "Label naam"' exit fi # Controleer of je root rechten hebt if [[ ! $(whoami) =~ "root" ]]; then echo "" echo "************************************" echo "*** Uitvoeren als root gebruiker ***" echo "************************************" echo "" exit fi # Controleer of het apparaat een opslagmedia-apparaat is if [[ ! -e $1 || ! $(file $1) =~ "block special" ]]; then echo "Fout: Geen opslagmedia of apparaat bestaat niet" exit fi DEVICE=$(echo "$1" | cut -d'/' -f3) # Formatteer enkel verwisselbare apparaten if [ $(cat /sys/block/$DEVICE/removable) == "1" ] ; then # Bereken de opslagruimte van de USB Stick DISK_SIZE=$(parted $1 print | head -2 | tail -1 | awk '{ print $3; }') echo "Aanmaken partitietabel op $1" parted $1 mklabel msdos sync echo "Aanmaken partitie op $1" parted $1 mkpart primary fat32 0% 100% sync echo "Partitie formatteren met FAT32 en naam geven" mkfs.vfat -n "$2" $11 # Gebruik enkel de volgende opdracht om zonder partities de volledige USB Stick opslagruimte te formatteren # sudo mkfs.vfat -I -n "SNT Stick" /dev/sdb sync echo "Overzicht:" parted $1 print fi
Om de USB Stick uit het vorige voorbeeld met het script te formatteren, gebruik je de opdracht:
dany@laptop:~>sudo bash usbformat.sh /dev/sdb "Dany Pinoy"
root's password: Aanmaken partitietabel op /dev/sdb Warning: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be lost. Do you want to continue? Yes/No?Yes
Information: You may need to update /etc/fstab. Aanmaken partitie op /dev/sdb Information: You may need to update /etc/fstab. Partitie formatteren met FAT32 en naam geven mkfs.fat 3.0.26 (2014-03-07) mkfs.fat: warning - lowercase labels might not work properly with DOS or Windows Overzicht: Model: USB DISK 2.0 (scsi) Disk /dev/sdb: 3909MB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 1049kB 3909MB 3908MB primary fat32 lba, type=0c
Een opmerkzame lezer merkt op dat de USB Stick hier geformatteerd wordt zoals een harde schijf, namelijk met partities.
Aan u de keuze.