Benutzer-Werkzeuge

Webseiten-Werkzeuge


linux:allgemein:system:coreutils

coreutils

Standard GNU file utilities (chmod, cp, dd, dir, ls…), text utilities (sort, tr, head, wc..), and shell utilities (whoami, who,…)

1. chroot

Es wird angenommen, dass in /mnt/system gechrootet werden soll. Es wird ferner vorausgesetzt, dass dort alle benötigten Partitionen wie „/“ oder „/boot“ bereits eingebunden sind.

  • Chroot vorbereiten:
# mount --rbind /dev /mnt/arch/dev
# mount -t proc none /mnt/arch/proc
# mount -o bind /sys /mnt/arch/sys
# mount --bind /sys/firmware/efi/efivars /mnt/arch/sys/firmware/efi/efivars
# cp -L /etc/resolv.conf /mnt/arch/etc/resolv.conf
  • Chroot starten:
# chroot /mnt/arch /bin/bash
# source /etc/profile

2. date

Enthalten in sys-apps/coreutils.

  • Sekunden in Datum und Uhrzeit:
$ date -d @511571700
  • Schlichte Ausgabe der sekündlich aktualisierten Sekunden in der ersten Zeile des Terminals:
$ while true; do sleep 1; clear; date +%s; done
  • Schlichte Ausgabe des sekündlich aktualisierten Datums und Uhrzeit in der ersten Zeile des Terminals:
$ watch -n1 date +%s
  • Setzen der Uhrzeit 120 Minuten in die Zukunft mit der Option -s:
$ date; date -s "now 120 min"

3. dd

1. Image mit dd erstellen

  1. Ganze Festplatte
# dd if=/dev/sda of=backup.img
  1. Einzelne Partition
# dd if=/dev/sda2 of=home.img

2. Partitionen aus dd-Images von einer ganzen Festplatte heraus einhängen

Hat man eine einzelne Festplatten-Partition mit dd in ein Imagefile kopiert, kann man dieses Image relativ einfach über ein loop-Device mounten:

# mount -t <filesystem> -o loop,ro <Image-Dateiname> <Zielverzeichnis>

Ist jedoch von einer kompletten Festplatte mit mehreren Partitionen eine solche Kopie erstellt worden und man möchte einzelne Partitionen aus diesem Image mounten, so muss man genau wissen, wo diese Partitionen beginnen.

Angenommen, die kopierte Festplatte ist ein Hitachi-Microdrive mit 512 MB, hat zwei primäre Partitionen und einen MasterBootRecord (MBR) und wurde in das Image platte.img kopiert. Da beide Partitionen einzeln gemountet werden sollen, muss zunächst die genaue Position der Partition festgestellt werden. Das geht mit fdisk:

$ fdisk -l -u platte.image

Mit dem Argument -l bekommen wir von fdisk eine Ausgabe der Partitionstabelle und -u sorgt dafür, daß Anfang und Ende jeder Partition in Sektoren statt Zylindern angegeben wird. Man bekommt dann eine solche oder mindestens eine sehr ähnliche Ausgabe:

Platte platte.img: 0 MByte, 0 Byte
16 Köpfe, 63 Sektoren/Spuren, 0 Zylinder, zusammen 0 Sektoren
Einheiten = Sektoren von 1 × 512 = 512 Bytes

Gerät        boot.   Anfang       Ende          Blöcke     Id    System
platte.img1              63          498959      249448+    c      W95 FAT32 (LBA)
platte.img2          499968     1052351      276192     83   Linux

Die Größen-Angaben von null Byte bei einem Image sollen nicht stören, wichtig ist die Angabe der Sektorengröße, hier 512 Byte. Die erste Partition, hier die FAT32-Partition, beginnt mit Sektor 63. Da jeder Sektor 512 Byte groß ist, rechnen wir nun den Speicherbereich aus, den wir am Anfang des Images überspringen müssen, um bei Sektor 63 anzukommen:

63 * 512 = 32256 Byte.

Diese 32256 Byte nehmen wir jetzt als Offset für ein loop-Device. Dieses wird mit losetup eingerichtet:

# losetup -o 32256 /dev/loop0 platte.bin

Danach kann dann dieses loop-Device gemountet werden:

# mount -t vfat -o ro /dev/loop0 /mnt

Am Ende sollte man das loop-Device wieder freigeben:

# losetup -d /dev/loop0
  • Erstellt eine Datei voller Nullen einer bestimmten Größe:
$ head -c<GROESSE><K,M.G> /dev/zero >datei.image

5. chmod

Besitzer - Gruppe - Alle

r - 4

w - 2

x - 1

linux/allgemein/system/coreutils.txt · Zuletzt geändert: 03.10.2023 14:22 von marc