Dies ist eine alte Version des Dokuments!
Inhaltsverzeichnis
Blockdevices anzeigen
lsblk
Partitionierung
Format der Partitionstabelle
Das lange unter Linux gebräuchliche MSDOS oder MBR Format kann man nur bei Festplatten unter 2TB verwenden. Es ist komplizierter zu benutzen1). Wenn man wie bei aktuellen Rechnern üblich eine UEFI Firmware an Stelle des BIOS vorfindet, muss man für die Partitionstabelle GPT verwenden. Labels sind nützlich, wenn man mehrere Festplatten eingebaut hat - die gibt es nicht bei MBR Partitionen.
Tools:
- fdisk - MBR und GPT Partitionstabellen
- gdisk - Spezialist für GPT Partitionstabellen
- parted - MBR und GPT Partitionstabellen
Beispiel: neue Partition anlegen
mit fdisk
Benötigte Pakete
- Debian:
util-linux
Wichtige fdisk Befehle
| m | Hilfe |
| d | Partition löschen |
| n | neue Partition erstellen |
| t | Typ der Partition setzen |
| p | Partitionstabelle anzeigen |
| w | geänderte Partitionstabelle speichern |
| q | fdisk verlassen ohne zu speichern |
Partition erstellen
2 Gigibyte große Partition auf Festplatte /dev/sda anlegen:
fdisk /dev/sda
Aktuelle Partitionstabelle anzeigen:
p
Neue Partition erstellen:
n
Partition als logische Partition erstellen (nur bei MSDOS/MBR):
l
Startblock auswählen: Bei der ersten Partition sollte hier Sektor 2048 oder ein Vielfaches davon stehen. Wenn die Sektorgröße 512 Bytes ist, dann liegt der Partitionsbeginn bei 1048576 Bytes (=1 MiB).
Größe angeben:
+2G
geänderte Partitionstabelle speichern:
w
Prüfen, ob der Kernel die geänderte Partitionstabelle kennt
Mit parted
Benötigte Pakete
- Debian:
parted
Wichtige parted Befehle
| help | Hilfe |
| rm | Partition löschen |
| mklabel | neue Partitionstabelle erstellen |
| mkpart | neue Partition erstellen |
| set | Typ der Partition setzen |
| Partitionstabelle anzeigen | |
| quit | fdisk verlassen ohne zu speichern |
Partition erstellen
2 Gibibyte große Partition auf Festplatte /dev/sda anlegen:
parted /dev/sda
Aktuelle Partitionierung ausgeben:
Neue Partition erstellen:
mkpart
Partition type? primary/logical?
l
File system type?
ext3
Start?
xxx
End?
xxx
Parted verlassen:
quit
Partitionstabelle sichern und wiederherstellen
sfdisk
sichern
sfdisk -d /dev/sda > part-table.txt
wiederherstellen
sfdisk /dev/sda < part-table.txt
sgdisk
nur für GPT Partitionen
sichern
sgdisk --backup=sda.gpt.bkup /dev/sda
wiederherstellen
sgdisk --load-backup=sda.gpt.bkup /dev/sda
dd
geht nur bei identischer Festplatte
sichern
dd if=/dev/sda of=part-table.img bs=1 count=512
wiederherstellen
dd if=part-table.img of=/dev/sda bs=1 count=64 skip=446 seek=446
fdisk
sichern
fdisk -l > partitionierung.txt
wiederherstellen
geht nur von Hand
gdisk
sichern
gdisk -l > partitionierung.txt
wiederherstellen
geht nur von Hand
parted
sichern
parted /dev/sda print > partitionierung.txt
wiederherstellen
geht nur von Hand
Übung: default-Werte für mount-Optionen herausfinden
Test-Image erstellen und mounten:
fallocate -l 500M /tmp/zero.img
mkfs.ext4 /tmp/zero.img mkdir /mnt/img mount /tmp/zero.img /mnt/img
Ist die mount-Option suid aktiv?
cp -a /usr/bin/tail /mnt/img chmod u+s /mnt/img/tail
Als Nutzer:
/mnt/img/tail /etc/shadow
Ist das SUID-Bit wirksam?
Ist die mount-Option exec aktiv?
cp -a /usr/bin/tail /mnt/img /mnt/img/tail /etc/passwd
Ist /mnt/img/tail ausführbar?
Ist die mount-Option dev aktiv?
mknod /mnt/img/sda b 8 0 fdisk -l /mnt/img/sda
Ist der Zugriff auf das Device /mnt/img/sda möglich?
Übung: virtuelle Festplatte partitionieren
Erstellen einer virtuellen Festplatte und vorbereiten für den Einsatz in einer VM
Pakete installieren:
- CentOS 7:
parted qemu-img - Debian 8:
parted qemu-utils - openSUSE 42.2:
parted qemu-tools
Beispiel: Loop-Devices mit Sparse-Files
Nicht in der Praxis
Sparse-File erzeugen
dd if=/dev/zero of=disc1 bs=1K count=0 seek=200M ls -lsh disc* losetup -f disc1 --show losetup -a
Loop-Devices partitionieren
lsblk
{fdisk,gdisk,parted} /dev/loopxx
Partitionen sichtbar machen
partprobe partprobe /dev/loopxx
Beispiel: GPT mit parted
Virtuelle Festplatte erstellen:
qemu-img create /srv/vmdisk1.img 2G
Partitionieren:
parted /srv/vmdisk1.img
GPT-Partitionstabelle anlegen: (In der parted Kommandozeile)
mklabel gpt
100 MiB - 1MiB (parted arbeitet mit festen Endwerten) Swap-Partition anlegen:
mkpart linux-swap 1MiB 100MiB
Daten-Partition anlegen:
mkpart ext4 100MiB 100%
GRUB BIOS Partition aktivieren:
set 1 bios_grub on
parted verlassen:
quit
formatieren
Partitionen aus der Image-Datei im System sichtbar machen:
losetup --show -f -P /srv/vmdisk1.img
Swap-Partition formatieren:
mkswap /dev/loop0p1
System/Datenpartition mit XFS für VM mit 2 vCPUs formatieren:
mkfs.xfs -d agcount=2 /dev/loop0p2
CentOS 7 ins Image installieren
yumdownloader centos-release.x86_64 rpm -ihv --nodeps --root /mnt/loop centos-release-7-*.rpm install -b --suffix=.orig /etc/yum.repos.d/CentOS-Base.repo /mnt/loop/etc/yum.repos.d/CentOS-Base.repo yum -y --nogpg --releasever=7 --installroot=/mnt/loop install grub2 iproute tmux passwd procps-ng systemd yum grub2-install --root-directory=./ /dev/loop0
TODO: formatieren, vergrößern
