21.10.2018, 13:22 UTC+2

Sie sind nicht angemeldet.

  • Anmelden
  • Registrieren

Lieber Besucher, herzlich willkommen bei: Knoppix Forum | www.KnoppixForum.de. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

1

17.07.2016, 00:40

GRUB vs Syslinux: Persistent-Parition kann nicht geöffnet werden beim Start per GRUB

Moin!

Ich verwende das Programm MultiBoot (http://liveusb.info), um einen USB-Speicher mit mehreren Live-Distris zu bestücken. Das klappt auch immer recht gut, aber jetzt habe ich ein Problem mit Knoppx 7.7 und der dauerhaften Partition:

Installiere ich Knoppix aus einem laufenden Live-Knoppix auf einem USB-Speicher (Flash-Speicher), wird Syslinux als Bootloader verwendet. Auf dem so eingerichtete USB-Speicher startet Knoppix, die persistente Partition (sdd3) wird gefunden, das Passwort abgefragt und die Partition eingehangen.

Füge ich dagegen mit MultiBoot Knoppix als weitere Distri auf einen USB-Speicher hinzu, richtet MultiBoot den Start per GRUB2 ein.

Grundsätzlich kann Knoppix auch über GRUB gestartet werden, aber bei diesem Start kann die persistente Partition nicht geöffnet werden, jeder Versuch führt zu einem Fehler "ungültiges Argument". Ich vermute, daß entweder ein Kernelmodul in der initrd fehlt, wenn per GRUB gestartet wird, oder daß die Tastaturbelegung / -Codierung nicht passt und das Passwort daher nie richtig sein kann.

Vielleicht ist das auch alles Blödsinn, und ich bin einfach nur zu dumm. ?(

Der von MultiBoot erstellte Eintrag in der grub.cfg für den Start von Knoppix sieht so aus:

Quellcode

1
2
3
4
menuentry "Knoppix 64" {
linux /knoppix1/isolinux/linux64 knoppix_dir=knoppix1 lang=de hpsa.hpsa_allow_any ramdisk_size=100000 vt.default_utf8=0 apm=power-off nomce libata.force=noncq loglevel=1 tz=localtime 
initrd /knoppix1/isolinux/minirt.gz
}


Das Verzeichnis /knoppix1 ist das VZ auf dem USB-Speicher, in das MultiBoot Knoppix "ausgepackt" hat.

Was muss/kann ich an diesem Eintrag ändern, damit das Einhängen der persistenten Partition funktioniert? Irgend ein Bootparameter hinzufügen? Den Syslinux von Knoppix als Chainloader eintragen?

Ich gebe zu, ziemlich auf dem Schlauch zu stehen zur Zeit. Ich wäre daher echt froh, wenn mir jemand unter die Arme greifen könnte.

FM_81

Fortgeschrittener

2

17.07.2016, 08:47

RE: GRUB vs Syslinux: Persistent-Parition kann nicht geöffnet werden beim Start per GRUB

Grundsätzlich kann Knoppix auch über GRUB gestartet werden
Also funktioniert es ja generell?
aber bei diesem Start kann die persistente Partition nicht geöffnet werden, jeder Versuch führt zu einem Fehler "ungültiges Argument".
Einzelheiten über dieses "ungültige Argument" wären interessant! Wahrscheinlich übergibt "MultiBoot" Parameter, mit denen das bereits laufende KNOPPIX nichts anfangen kann?
Ich vermute, daß entweder ein Kernelmodul in der initrd fehlt, wenn per GRUB gestartet wird
Unwahrscheinlich, daß "MultiBoot" für KNOPPIX eine eigene INITRD baut! Kriegst Du aber z.B. über MD5-Prüfsummen-Vergleich raus.
oder daß die Tastaturbelegung / -Codierung nicht passt und das Passwort daher nie richtig sein kann.
Testweise mal ein Passwort nehmen, was so einfach ist, daß das nicht passieren kann. Kann ich jetzt so schwer abschätzen.

Gruß, FM_81
ACHTUNG!
Ihre Systemleistung reicht nicht aus, um einen BLUE-SCREEN zu erzeugen!
Möchten Sie statt dessen einen GREEN-SCREEN sehen?

---- [Ja] ---- [Nein] ---- [Weiß noch nicht] ----

3

17.07.2016, 13:18

Hallo,

du kannst ja mal versuchen, die Partition mit dem knoppix_dir per Bootparameter "fromhd=/dev/sd.." vorzugeben, vielleicht gibt es ja ein Problem beim Suchprozess, falls irgendwo noch andere Knoppix Verzeichnisse etc. existieren.
Die Datei knoppix1/knoppix-data.inf hast du ja vermutlich erstellt?

MfG

4

17.07.2016, 15:10

Juhu! Ich habe die Lösung! :)

Entscheidend dafür, ob Knoppix beim Starten das Passwort als richtig erkennt und damit die Partition öffnen und einhängen kann oder nicht, ist der Unterschied zwischen

Quellcode

1
/sbin/cryptsetup create --key-size 256 --key-file - --cipher aes kndata /dev/sdd3


und

Quellcode

1
/sbin/cryptsetup create --key-size 256 --cipher aes kndata /dev/sdd3



Ohne Verwendung der Option

Quellcode

1
--key-file -


beim Verschlüsseln erkennt Knoppix später beim Start das Passwort nicht. Ich vermute, daß irgendwie das Zeilenende beim Drücken der ENTER-Taste nicht rausgefiltert wird. Gesehen habe ich den Unterschied, als ich mir das Skript /usr/bin/flash-knoppix angesehen habe, in dem dieser Befehl an der Stelle verwendet wird, an der die Partition verschlüsselt wird:

Quellcode

1
tr -d '\n\r' | /sbin/cryptsetup create --key-size 256 --key-file - --cipher aes "$MAPDEV" "$1"


Da fiel bei mir der Groschen, denn das gleiche Problem hatte ich schon einmal vor Jahren, aber nicht mit Knoppix. Auch da musste ich in einem Skript die Eingabe erst filtern, bevor das Aufschließen eine verschlüsselten Partition funktionierte.


Jetzt wüsste ich nur noch gerne aus reiner Neugier, was das Voranstellen des Befehls "tr -d '\n\r' " als ersten Teil der Pipe bewirkt. Der Befehl steht in dem Skript zwar innerhalb einer Funktion, aber die Argumente werden erst im hinteren Teil der Pipe verwendet.

klaus2008

Meister

Beiträge: 2 695

Geschlecht: Männlich

5

17.07.2016, 16:31

Hallo Wolfgang!

Meiner Meinung nach geschieht Folgendes:
"tr -d '\n\r'" löscht aus der Standardeingabe die Zeichen für den Wagenrücklauf (CR bzw. '\r') und Zeilenvorschub (LF bzw. '\n'). Der Rest wird durch die Pipe weitergegeben (Standardeingabe für das Programm cryptsetup). Das Programm cryptsetup wird mit der Option "--key-file -" verwendet. Das Zeichen "-" repräsentiert die Standardeingabe. Deshalb übernimmt cryptsetup die Ausgabe des Programms tr als Schlüsseldatei.

Gruß
Klaus

6

17.07.2016, 17:29

So ähnlich hatte ich mir das schon fast gedacht. ;)

Allerdings verstehe ich noch nicht, wieso die Befehlskette nicht funktioniert, wenn ich sie auf der Konsole manuell eingebe. So, wie sie da steht, funktioniert sie anscheinend nur im Skript. Das würde ich gerne verstehen.

klaus2008

Meister

Beiträge: 2 695

Geschlecht: Männlich

7

17.07.2016, 19:10

Vielleicht gibt es bei der Eingabe in der Kommandozeile ein Problem, das Ende der Schlüsseldatei zu erkennen. Möglicherweise müsste man '\r\n' in EOF umwandeln. Man könnte in der Konsole mit einer temporären Datei key-datei.txt arbeiten, in der das Kennwort in einer einzigen Zeile steht, also ohne dass am Ende ein Zeilenumbruch erfolgt. "/sbin/cryptsetup create --key-size 256 --key-file - --cipher aes kndata /dev/sdd3 < key-datei.txt" (Das ist aber alles spekulativ, weil ich es momentan nicht ausprobieren kann. :) ).

8

17.07.2016, 21:11

Ich verstehe schon, was der Befehl "tr" macht, ich verstehe nur nicht seine Position in der Befehlskette. In dem Skript steht er nämlich genau so, wie ich es zitiert habe, am Anfang. Wenn er etwas filtern soll, muss es einen Prozess geben, dessen Ausgabe er verarbeitet, also etwa so:

Quellcode

1
eingabe | tr | ausgabe


Benutze ich ihn z.B. auf der Kommandozeile, muss er an zweiter Stelle stehen:

Quellcode

1
echo "geheimes passwort" | tr -d '\n\r' | /sbin/cryptsetup create --key-size 256 --key-file - --cipher aes kndata /dev/sdd3


oder

Quellcode

1
cat $KEYFILE | tr -d '\n\r' | /sbin/cryptsetup create --key-size 256 --key-file - --cipher aes kndata /dev/sdd3


So, wie er da im Skript von Herrn Knopper steht, hat er aber keine Eingabe. Da scheint es in dem Skript einen Mechanismus zu geben, den ich nicht verstehe, und den ich gerne verstehen würde.


_______

P.S.: Ich weiß, für das zweite Beispiel gibt es eine Nominierung für den Useless-Use-Of-Cat-Award... ;)

klaus2008

Meister

Beiträge: 2 695

Geschlecht: Männlich

9

18.07.2016, 06:14

Wir betrachten das Skript flash-knoppix. Die von Dir zitierte Zeile

Quellcode

404
tr -d '\n\r' | /sbin/cryptsetup create --key-size 256 --key-file - --cipher aes "$MAPDEV" "$1"
steht innerhalb der Funktion setup_loop. Es muss also der Aufruf dieser Funktion untersucht werden, um zu erkennen, woher die Standardeingabe kommt.

Quellcode

775
setup_loop "${FLASH}2" encrypted <"$TMP"
Im Falle einer verschlüsselten Partition "${FLASH}2" wird also die Standardeingabe aus der Datei "$TMP" entnommen. Beim Lesen der Datei werden die Zeilenumbrüche vom tr-Programm entfernt und der Text an das Programm crytsetup . Die Eingabe endet mit dem Ende der Datei "$TMP".

Gruß
Klaus

10

18.07.2016, 09:34

Danke für die Erklärung! :)

Ich hatte den Zusammenhang nicht erkannt, weil vor der Zeile mit dieser Befehlskette noch viele andere Anweisungen stehen, und ich nicht damit gerechnet hatte, daß die Eingabe an diese Funktion bis zu diesem Befehl quasi unangetastet bleibt.

Wenn ich das jetzt richtig verstanden habe, bekommt diese Funktion also eigentlich 3 Parameter: zum "$1" und "$2" und zum anderen zusätzlich die Eingabe über die Standardeingabe, aber durch die Verwendung der Eingabeumlenkung ersparst Du Dir "$3" und "eine unnötige Katze". Ich hätte es in meiner Unkenntnis daher wohl so gemacht:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
case "$OVERLAY_EXISTS" in
    img|aes) setup_loop "$TMPMOUNT"/KNOPPIX/knoppix-data."$OVERLAY_EXISTS" "$OVERLAY_ENCRYPTED" "$TMP"; fs=ext2;;
    inf)     setup_loop "${FLASH}$OVERLAY_PARTITION" "$OVERLAY_ENCRYPTED" "$TMP"; fs=reiserfs;;
 esac

...

function setup_loop(){
...
cat "$3" | tr -d '\n\r' | /sbin/cryptsetup create --key-size 256 --key-file - --cipher aes "$MAPDEV" "$1"
...
}


Aber das ist halt einer der Unterschiede zwischen einem Profi und einem Laien. ;)

Linux HardwareLinux Computer & PCs | Linux Notebooks & Laptops | Geek Shirts | Geek und Nerd Shirt Shop