Bilde av Jakob Owens fra Unsplash
Når man kommer fra Windows og starter med Linux er det mye som er grunnleggende annerledes. En av de tingene som er nytt er hvordan man tar i bruk harddisker og andre lagrings enheter. Før man setter i gang med det praktiske knyttet til å ta i bruk en ny disk, må man først skjønne hva som er spesielt med filsystemene som Linux bruker.
Linux er veldig fleksibelt, så hvis du for eksempel har en disk som er partisjoner og formatert med filsystemet NTFS for bruk med Windows, kan den også brukes i Linux uten problem.
Root filsystemet
Alt er bare ett digert tre som starter fra roten
I Windows er man vant med at hver logisk partisjon på en disk blir tildelt et navn som C: eller D: etter at den er skapt. Slik er det ikke i Linux. Der har man ett eneste stort filsystem tre som starter med rooten "/", og gror nedover til andre mapper.
Det vil si at når vi lager en partisjon på en disk og har formatert den, kan den plasseres hvor som helst i dette root filsystemet.
Et praktisk eksempel er at du har en disk som du har alle bildene dine på. Denne plasseres eller "mountes" i home mappen din, slik at bare du har tilgang til den disken. Ett annet eksempel er at du kan koble til en delt nettverks disk som fysisk er plassert på en filserver i huset ditt, men som du mounter ett sted i filsystemet ditt slik at den fungere som en vanlig mappe på datamaskinen din. Resultatet er at man sømløst kan ta i bruk lagningsenheter og utvide det eksisterende filsystemet.
Alle lagrings enheter du kobler til datamaskinen blir lagt til i /dev mappen etter rekkefølgen de ble oppdaget når maskinen ble skrudd på. Harddisker og SSD disker som er koblet til via SATA finner du i /dev mappen under navnene /dev/sdx, hvor x er bokstaven som gjenspeiler rekkefølgen disken ble oppdaget i.
Partisjonene på diskene er nummerert basert på hvilken partisjons nummer den har i diskens partisjons tabell. Se eksempel under.
ls -l /dev/sd*
brw-rw---- 1 root disk 8, 0 april 9 20:27 /dev/sda
brw-rw---- 1 root disk 8, 1 april 9 20:27 /dev/sda1
brw-rw---- 1 root disk 8, 2 april 9 20:27 /dev/sda2
brw-rw---- 1 root disk 8, 16 april 9 20:40 /dev/sdb
brw-rw---- 1 root disk 8, 17 april 9 20:42 /dev/sdb1
brw-rw---- 1 root disk 8, 17 april 9 20:42 /dev/sdb2
I eksempelet over kan vi se at det er to disker som er koblet til maskinen. Disse heter sda og sdb. Disken sda har to partisjoner (sda1 og sda2) og sdb har også to partisjoner (sdb1 og sdb2). Hvilke partisjons nummer som blir brukt på disken kan man bestemme selv, men det mest naturlige når man oppretter partisjoner selv, er å bruke de i rekkefølge.
fdisk
Lag en partisjon på disken
fdisk er et interaktivt terminal verktøy som du kan lage partisjoner med, det støtter mange partisjons typer (som ikke må forveksles med filsystem typer).
fdisk trenger å vite hvilke disk vi skal gjøre noe med, derfor starter vi programmet slik
sudo fdisk /dev/sdb
Welcome to fdisk (util-linux 2.34).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help):
Før vi lager en ny partisjon kan det være greit å vite hvor mye ledig plass disken har, og hvilke andre partisjoner som er på disken.
For å liste opp alle partisjoner som finnes på disken skriv følgende kommando
Command (m for help): p
Disk /dev/sdb: 10 GiB, 10737418240 bytes, 20971520 sectors
Disk model: VMware Virtual S
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x447b5cb2
Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 1026047 1024000 500M 83 Linux
/dev/sdb2 1026048 2050047 1024000 500M 86 NTFS volume set
For å se og bekrefte hvor mye ledig plass det er på disken kjør denne kommandoen
Command (m for help): F
Unpartitioned space /dev/sdb: 9,2 GiB, 9687793664 bytes, 18921472 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
Start End Sectors Size
2050048 20971519 18921472 9G
I denne guiden skal vi lage en partisjon på 1GB, og siden partisjonen skal senere formateres med et ext4 filsystem må den gjøres klar for det.
En partisjon er en logisk inndeling av en fysisk lagringsenhet. Alle lagringsenheter har partisjoner. Det vil si at en harddisk som kommer ny og ubrukt fra fabrikken må få minst 1 partisjon for at det skal være mulig for en datamaskin å formatere den til et filsystem som man kan lagre filer på. Denne partisjonen kan dekke hele disken om man ønsker det, eller man kan kan ha flere mindre partisjoner.
Vi starter med å definere en ny partisjon ved å kjøre kommandoen n - for ny (new) partisjon, etterfulgt av p - for primary partition. Deretter godtar vi det partisjons nummeret og start sektoren som programmet foreslår og skriver inn hvor stor partisjonen skal være.
Her må vi skrive inn hvor mange sektorer partisjonen skal ta i bruk. Men det enkleste er å skrive inn +<antall>M for antall MegaBytes eller +<antall>G for antall GigaBytes partisjonen skal være. Her skriver vi inn +1G for at partisjonen skal bli 1GB.
Command (m for help): n
Partition type
p primary (2 primary, 0 extended, 2 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (3,4, default 3):
First sector (2050048-20971519, default 2050048):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2050048-20971519, default 20971519): +1G
Created a new partition 3 of type 'Linux' and of size 1 GiB.
Her ble det automatisk valgt partisjons typen 'Linux', men det kan vi endre til noe annet om vi skulle ønske det. Alle partisjonstyper som er tilgjengelig kan vises med kommandoen:
Command (m for help): l
0 Empty 24 NEC DOS 81 Minix / old Lin bf Solaris
1 FAT12 27 Hidden NTFS Win 82 Linux swap / So c1 DRDOS/sec (FAT-
2 XENIX root 39 Plan 9 83 Linux c4 DRDOS/sec (FAT-
3 XENIX usr 3c PartitionMagic 84 OS/2 hidden or c6 DRDOS/sec (FAT-
4 FAT16 <32M 40 Venix 80286 85 Linux extended c7 Syrinx
5 Extended 41 PPC PReP Boot 86 NTFS volume set da Non-FS data
6 FAT16 42 SFS 87 NTFS volume set db CP/M / CTOS / .
7 HPFS/NTFS/exFAT 4d QNX4.x 88 Linux plaintext de Dell Utility
8 AIX 4e QNX4.x 2nd part 8e Linux LVM df BootIt
9 AIX bootable 4f QNX4.x 3rd part 93 Amoeba e1 DOS access
a OS/2 Boot Manag 50 OnTrack DM 94 Amoeba BBT e3 DOS R/O
b W95 FAT32 51 OnTrack DM6 Aux 9f BSD/OS e4 SpeedStor
c W95 FAT32 (LBA) 52 CP/M a0 IBM Thinkpad hi ea Rufus alignment
e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a5 FreeBSD eb BeOS fs
f W95 Ext'd (LBA) 54 OnTrackDM6 a6 OpenBSD ee GPT
10 OPUS 55 EZ-Drive a7 NeXTSTEP ef EFI (FAT-12/16/
11 Hidden FAT12 56 Golden Bow a8 Darwin UFS f0 Linux/PA-RISC b
12 Compaq diagnost 5c Priam Edisk a9 NetBSD f1 SpeedStor
14 Hidden FAT16 <3 61 SpeedStor ab Darwin boot f4 SpeedStor
16 Hidden FAT16 63 GNU HURD or Sys af HFS / HFS+ f2 DOS secondary
17 Hidden HPFS/NTF 64 Novell Netware b7 BSDI fs fb VMware VMFS
18 AST SmartSleep 65 Novell Netware b8 BSDI swap fc VMware VMKCORE
1b Hidden W95 FAT3 70 DiskSecure Mult bb Boot Wizard hid fd Linux raid auto
1c Hidden W95 FAT3 75 PC/IX bc Acronis FAT32 L fe LANstep
1e Hidden W95 FAT1 80 Old Minix be Solaris boot ff BBT
For å skifte partisjonstype skriv inn kommandoen 't' etterfulgt av det hexadecimale nummeret som står foran partisjons typen i listen. hvis vi for eksempel vil bruke ExFat - som er relativt vanlig for store eksterne disker skriver vi inn '7' og trykker enter.
Command (m for help): t
Partition number (1-3, default 3):
ex code (type L to list all codes): 7
Changed type of partition 'Linux' to 'HPFS/NTFS/exFAT'.
For å skifte tilbake til 'Linux' kjør kommandoen 't' på nytt og velg det hexadesimale nummeret 83
Command (m for help): t
Partition number (1-3, default 3):
Hex code (type L to list all codes): 83
Changed type of partition 'HPFS/NTFS/exFAT' to 'Linux'.
For at den nye partisjonen faktisk skal bli opprettet på disken må endringene i partisjons tabellen skrives til disken. Hvis vi bare lukke programmet uten å skrive endringene til disk, vil ikke partisjonen bli opprettet.
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
Hvis vi nå sjekker /dev mappen kan vi se at den nye partisjonen vi laget har dukket opp som sdb3.
ls -l /dev/sd*
brw-rw---- 1 root disk 8, 0 april 9 20:27 /dev/sda
brw-rw---- 1 root disk 8, 1 april 9 20:27 /dev/sda1
brw-rw---- 1 root disk 8, 2 april 9 20:27 /dev/sda2
brw-rw---- 1 root disk 8, 5 april 9 20:27 /dev/sda5
brw-rw---- 1 root disk 8, 16 april 9 23:05 /dev/sdb
brw-rw---- 1 root disk 8, 17 april 9 23:05 /dev/sdb1
brw-rw---- 1 root disk 8, 18 april 9 23:05 /dev/sdb2
brw-rw---- 1 root disk 8, 19 april 9 23:05 /dev/sdb3
mkfs
Formatering av partisjonen
Når en partisjon er lagd er det klart for å formatere den med det filsystemet vi ønsker å bruke. For å formatere den nye partisjonen med filsystemet ext4 kjøres følgende kommando:
sudo mkfs.ext4 /dev/sdb3
mke2fs 1.45.5 (07-Jan-2020)
Creating filesystem with 262144 4k blocks and 65536 inodes
Filesystem UUID: e823ea37-7e5e-4826-b37c-16b82678d0e9
Superblock backups stored on blocks:
32768, 98304, 163840, 229376
Allocating group tables: done
Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done
mount
Ta partisjonen i bruk i root filsystemet
Nå kan den nye partisjonen med det tomme filsystemet mountes hvor vi vil i filsystemet. I dette eksempelet vil jeg mounte den i home mappen min som en mappe med navn "backup".
En lagringsenhet eller partisjon må mountes i en tom mappe. Derfor starter vi med å opprette mappen backup i home mappen min.
mkdir /home/stanley/backup
Da er det klart for å mounte partisjonen som vi opprettet og formaterte til denne mappen
sudo mount /dev/sdb3 /home/stanley/backup
Nå er denne partisjonen mountet til root filsystemet helt til man manuelt unmounter den eller skrur av datamaskinen. For å manuelt unmounte partisjonen kjør kommandoen:
sudo umount /home/stanley/backup
fstab
Listen over disker som skal mountes når maskinen starter
For at en partisjon skal automatisk moutes må den legges til i file '/etc/fstab'.
Men siden det kan være litt tilfeldig hvilken rekkefølge diskene oppdages i er det tryggest å legge til disken basert på diskens UUID (Universally Unique IDentifier).
Denne finner vi rask ved vise informasjon om partisjonen med denne kommandoen:
blkid /dev/sdb3
/dev/sdb3: UUID="e823ea37-7e5e-4826-b37c-16b82678d0e9" TYPE="ext4" PARTUUID="447b5cb2-03"
her finner vi UUID'en til sdb3. Når vi vet denne kan vi åpne fstab, og legge til partisjonen og hvor den skal mountes når maskinen skrur seg på.
...
UUID=e823ea37-7e5e-4826-b37c-16b82678d0e9 /home/stanley/backup ext4 errors=remount-ro 0 1
Denne filen har seks kolonner.
- viser hvilken en enhet som skal mountes. Siden vi vil mounte den basert på UUID skriver vi inn den her.
- viser hvor i root filsystemet den skal mountes.
- viser hvilket filsystem det er på enheten som skal mountes.
- viser alle mount options vi ønsker å bruke.
- viser om enheten skal tas backup av. 1 = ja, 0 =nei.
- viser hvor ofte filsystemet skal sjekkes for feil ved oppstart.
Det er viktig at UUID'en som skrives inn og hvor partisjonen skal mountes stemmer. Hvis det er en feil i denne filen vil ikke maskinen klarer å starte som normalt.