orm@doc-tcpip.org

Erstellt: März 2015 - Letzte Modifikation: März 2015

[ Main | Local ]


Wie komme ich wieder an mein System?


Das Problem

Ich habe ein Linux-System (hier RedHat) mit einer per LUKS verkrypteten Platte. Aufgrund eines Updates bootet das System nicht mehr durch.

Diagnose

Das System bootet normalerweise im graphischen Modus. Da kommt man raus, wenn man ESCAPE drückt. Man kann dann in der Textausgabe sehen, wo es hängt. Bei mir war das hier:

Starting mdmonitor: libtsocks: Unresolved symbol: closed

Ich habe ein File /etc/ld.so.preload, indem ich diese Library laden lasse - von allen Programmen, die dieses File auswerten. Mit dieser Library scheint es jetzt ein Problem zu geben. Ich muss also irgendwie das root-FS mounten, und das File einfach umbenenne, dann sollte alles gehen.

Im Bootlog hatte ich gesehen, dass die Platte und die VG korrekt erkannt und entschlüsselt wurde. Es sollte also simpel sein, ein Maintenance Boot zu machen und händisch zu mounten

Den Boot beeinflussen

Erste Idee war, den Boot gleich im GRUB Menu abzubrechen, und dort den Befehlsaufruf so zu verändern, das er in ein passendes Runlevel bootet. Das macht man eigentlich, indem man im GRUB Fenster 'e' tippt und dann am Ende der Befehlszeile beim 'init' den Runlevel angibt und damit bootet.

Das ging bei mir nicht, der GRUB hatte ein Passwort gesetzt, was ich nicht kannte - man konnte daher nur mit 'p' operieren...

Also musste ein bootfähiges Medium her - da hatte ich so eine CD mit einem Live-Test System.

Booten und Entkrypten

Also das Livesystem gebootet. Dort in einem Terminalfenster mit su - root geworden. Dann die Platte ermittelt:

[root@testhost ~]# ls /dev/sda
/dev/sda
[root@testhost ~]# ls /dev/sda*
/dev/sda  /dev/sda1  /dev/sda2  /dev/sda3  /dev/sda4
[root@testhost ~]# fdisk -l /dev/sda

Disk /dev/sda: 320.1 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x64656469

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          66      524288   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              66       19188   153600000   83  Linux
/dev/sda3   *       19188       20233     8388608   82  Linux swap / Solaris
/dev/sda4   *       20233       38914   150057304   83  Linux
Partition 4 does not end on cylinder boundary.

Meine Partition, in der mein System liegt, das ist /dev/sda2. Die muss ich jetzt entkrypten. Das mache ich mit cryptsetup luksOpen /dev/sda2 data

Jetzt schaue ich, was da für Volume Groups rumliegen, finde "rootvg" und nehme die Online. Dann schaue ich, welche LVs da drin sind, identifiziere das, wo mein /etc drin ist und mounte es:

vgscan                ==> gibt mir rootvg
vgchange -a y rootvg
lvscan
fsck /dev/rootvg/rootlv   ==> nur zur Vorsicht
mount /dev/rootvg/rootlv /mnt

Jetzt kann ich in /mnt in mein gewohntes Filesystem laufen, und Sachen ändern - in meinem Fall benenne ich das /etc/ld.so.preload anders. Danach mache ich einen reboot:

umount /mnt
reboot

Und nach dem Reboot kommt das System sauber hoch, die libtsocks wird nicht angezogen - sehr schön.


[ Main | Local ]

[ Allgemein | UNIX | AIX | TCP-IP | TCP | ROUTING | DNS | NTP | NFS | FreeBSD | Linux | RPi | SMTP | Tracing | GPS | LW ]

Copyright 2001-2021 by Orm Hager - Es gilt die GPL
Feedback bitte an: Orm Hager (orm@doc-tcpip.org )