====== 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 ==== - Ganze Festplatte # dd if=/dev/sda of=backup.img - 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 -o loop,ro 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 ===== 4. head ===== * Erstellt eine Datei voller Nullen einer bestimmten Größe: $ head -c /dev/zero >datei.image ===== 5. chmod ===== Besitzer - Gruppe - Alle r - 4 w - 2 x - 1