• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

o.SUSE 11.3 LVM/LUKS - Keyboard-Layout & Terminal-Auflösung

m00nraker

Newbie
Hallo openSUSE-Freunde, ich habe zwei Anliegen und benötige Eure Hilfe.

Gestern habe ich mit Freude 11.3 installiert (DVD-Image-x86_64) und erstmals meine gesamte Platte via Yast verschlüsselt :D :

Mein Setup:
Eine primäre Partition für /boot. Eine erweiterte Partition mit einem logischen Lauferk für den Rest der Platte.
Dann habe ich eine Volume-Gruppe mit dem logischen Laufwerk hinzugefügt und anschließend mehrere Volumes darin angelegt (für Swap, / und home). Die Volume-Gruppe habe ich in Yast verschlüsselt. Nach der Installation habe ich neu gebootet. Somit ist alles ausser /boot verschlüsselt.

Das Problem habe ich nun mit dem Tastatur-Layout und der Terminal-Auflösung. Näheres dazu:

Beim Booten erscheint normal Grub mit deutschem Tastatur-Layout. In Grub (menu.lst) ist als Bildschirm-Auflösung vga=0x317 (entspricht 1024x768/16Bit) angegeben. Wenn ich Enter drücke wird der Kernel geladen, die Bildschirmauflösung wechselt aber von 1024x768 zu 1920x1200 (extrem kleine Schrift), was ich nicht möchte. Anschließend muss man die LUKS-Passphrase für das LVM eingeben. Leider wechselt das Tastatur-Layout für die Eingabe der Passphrase auf US. Meine Passphrase mit Sonderzeichen ist kompliziert und ich möchte gerne deutsches Tastatur-Layout haben.

Dies sind also meine beiden Probleme:

1)
Wie kann ich die Bildschirmauflösung auf 1024x768 für das Terminal (F1 bis F6) zurückstellen nach dem Grub den Kernel bootet?

Ich habe wild 'gegoogelt' und keine richtige Lösung gefunden. Nur soviel: Ich vermute, das Problem liegt in der initrd. Installiert man openSUSE 11.3 ohne LVM-Verschlüsselung, wird die in Grub eingestellte Auflösung benutzt und nach dem Laden des Kernels beibehalten. Stellt man LVM-Verschlüsselung ein, erzeugt Yast vermutlich eine andere (angepasste) initrd, um das verschlüsselte Volume laden zu können. Gebe ich in einer root-Konsole mkinitrd ein kommt folgende Ausgabe:

Code:
Kernel image:   /boot/vmlinuz-2.6.34-12-desktop
Initrd image:   /boot/initrd-2.6.34-12-desktop
KMS drivers:    intel-agp nouveau
Root device:    /dev/system/root (mounted on / as ext4)
Resume device:  /dev/system/swap
enabling LUKS support for /dev/sda5 (cr_sda5)
Only english keyboard layout supported.
Please ensure that the password is typed correctly.
modprobe: Module kernel not found.
WARNING: no dependencies for kernel module 'kernel' found.
Kernel Modules: thermal_sys thermal scsi_mod libata ata_piix ata_generic processor fan dm-mod dm-crypt dm-snapshot crc16 jbd2 ext4 intel-agp button i2c-algo-bit drm drm_kms_helper ttm nouveau pata_pdc202xx_old pata_hpt3x2n pata_piccolo pata_it821x sata_inic162x sata_sil pata_pdc2027x pata_sis pata_acpi pdc_adma pata_hpt3x3 sata_nv pata_hpt37x pata_ns87410 pata_efar pata_cmd64x pata_ns87415 pata_it8213 pata_opti pata_marvell pata_serverworks pata_via pata_radisys pata_ninja32 sata_sis pata_atiixp sata_via pata_cs5530 pata_cypress pcmcia_core pcmcia pata_pcmcia pata_rz1000 pata_optidma pata_netcell sata_vsc pata_ali pata_sil680 ahci sata_sil24 pata_artop pata_rdc pata_sl82c105 pata_atp867x pata_amd pata_cmd640 sata_svw sata_promise pata_sch pata_triflex pata_oldpiix pata_sc1200 sata_mv pata_mpiix pata_cs5520 sata_qstor sata_uli pata_jmicron sata_sx4 pata_hpt366 sd_mod linear sha256_generic cbc aes_generic aes-x86_64 
Features:       dm kms block usb lvm2 luks resume.userspace resume.kernel
Bootsplash:     openSUSE (1024x768), openSUSE (1920x1200)

54139 blocks

An der Bootsplash-Zeile erkennt man, dass dort beide Auflösungen eingetragen sind. Die Frage ist, wie kann ich die initrd für das verschlüsselte LVM nachträglich ändern und die Auflösung anpassen? Vorausgesetzt dies ist der richtige Weg.

2)
Wie kann ich das Tastatur-Layout für die LUKS-Passphrase von US auf German wechseln?

Bei der Abfrage erscheint folgender Text:
Only english keyboard layout supported.

Nach etwas Suchen habe ich dieses boot-Script hier gefunden

/lib/mkinitrd/scripts/boot-luks.sh

Ein Auszug daraus:
Code:
do_luks() {
	case $luks_lang in
		en_*|POSIX)
		# We only support english keyboard layout
		;;
		*)
		echo "Only english keyboard layout supported."
		echo "Please ensure that the password is typed correctly."
		;;
	esac

	set -- $luks
	if [ $# -gt 1 ]; then
		local reuse_pass=1
	fi

	for luks in "$@"; do
		eval local keyfile="\"\${luks_${luks}_keyfile}\""
		eval local keyscript="\"\${luks_${luks}_keyscript}\""
		luks_wait_device "$luks"
		while true; do
			if [ -z "$keyscript" ]; then
				# try to reuse passphrase if multiple
				# devices are to be decrypted
				if [ -n "$reuse_pass" ]; then
					if [ -z "$pass" ]; then
						splash_off
						local pass
						echo
						echo -e "${extd}Need to unlock encrypted volumes${norm}"
						echo -n "Enter LUKS Passphrase: "
						read -s pass
						echo
					fi

					echo "$pass" | luksopen "$luks" || {
						pass='xxxxxxxxxxxxxxxxxxxx'; unset pass; luksopen "$luks"; }
					check_retry $? || break;
				else
					luksopen "$luks"
					check_retry $? || break;
				fi
			else
				$keyscript "$keyfile" | luksopen "$luks"
				check_retry $? || break;
			fi
		done
	done

	if [ -n "$pass" ]; then
		pass='xxxxxxxxxxxxxxxxxxxx'
		unset pass
	fi
}

Dort steht exakt der Text drin, der angezeigt wird, wenn man die Passphrase eingeben muss.

Gibt es einen Weg, das Layout doch auf German umzustellen oder muss man sich damit abfinden :???:

Vielen Dank.

Gruß Kai
 
OP
M

m00nraker

Newbie
Also zu Problem Nummer 1 (Bildschirmauflösung der Konsole) habe ich mittlerweile selbst eine Lösung gefunden. Wen es interessiert:

In Yast/Bootloader kann ja der VGA-Modus für die Terminals geändert werden, z.B. von 1024x768 (entspricht Kernel Parameter vga=0x317) auf 1280x1024 (entspricht vga=0x31a). Allerdings führte dies auf meinem System zu keiner Änderung. Nach dem Booten hatte ich zunächst für einen ganz kurzen Moment die eingestellte Auflösung. Kurz bevor die Aufforderung zur Eingabe der LUKS-Passphrase kommt, wechselt die Auflösung immer auf 1920x1200 im Terminal, unabhängig davon was als Kernel-Parameter übergeben wurde (vga=-...).

Die Lösung habe ich eher zufällig gefunden, da ich auf meinem System (Dell Notebook mit NVIDIA Geforce-Go7950GTX) den propriät. NVIDIA-Treiber installieren wollte, was aber unter openSUSE 11.3 nicht mehr so einfach funktioniert wie früher. Per Default wird ja der freie Nouveau-Treiber installiert (Stichwort: KMS=Kernel-Mode-Settings). Um nun NVIDIA zu installieren, muss zuerst KMS deaktiviert werden. Damit dann auch das Nouveau-Kernelmodul nicht mehr geladen wird, muss es auf eine Blacklist gesetzt werden. Erst nun kann man den NVIDIA-Treiber installieren.

Und siehe da, nach dem Booten wurde auch die Auflösung des Terminals dauerhaft auf 0x317 (also 1024x768) umgestellt, so wie ich es in Yast/Bootloader eingestellt hatte. Die Auflösung wechselte dann nicht mehr auf 1920x1200. Die Ursache lag bei mir also am Nouveau-Treiber. Ich finde das allerdings sehr merkwürdig.

Die Geschichte mit dem NVIDIA-Treiber und dem Deaktivieren von KMS unter openSUSE 11.3 kann man hier nachlesen:

http://de.opensuse.org/Proprietäre_NVIDIA-Grafiktreiber#Wichtiger_Zusatz_f.C3.BCr_openSUSE_11.3

Für Problem 2 (deutsches Tastaturlayout bei LUKS-Passphrase) habe ich allerdings noch keine Lösung und hoffe auf Hilfe.
 
Ich habe ein ähnliches Problem.
Wenn ich eine Partition, z.B. swap, bei der Installation von openSUSE verschlüssele, habe ich auch nur die englische Tastatur; wenn ich hingehen openSUSE unverschlüsselt installiere und erst über das laufende System die Festplatte verschlüssele habe ich eine deutsche Tastatur :???:

Nun möchte ich jedoch auch einen Rechner komplett verschlüsseln, weswegen der (etwas unschöne) Alternativweg nicht funktioniert...
Hat jemand vielleicht neue Erkenntnisse?



Eingabe mit englischem Layout.





Eingabe mit deutschem Layout




Mit freundlichen Grüßen
Sebastian Luhnburg


Nebenfrage:
Weiß jemand mit welchem Algorithmus und in welcher Stärke die Festplatte über LUKS verschlüsselt wird und kann man dies verändern?
 

fl0

Newbie
Hi,

ich hatte heute das selbe Problem mit kompletter Verschlüsselung und dem deutschen Tastaturlayout.

###Ist ein dirty hack bis mir was besseres einfällt###
Die Lösung ist das patchen der initrd (geht leider erst nach der Installation, das erste mal muss man mit en_US booten):

Folgendes muss gemacht werden:

#temporäres verzeichnis um die initrd auszupacken
Code:
mkdir ~/tmp  && cd ~/tmp
#initrd auspacken (der name der intrd kann variieren)
Code:
zcat /boot/initrd-2.6.37.6-0.5-desktop | cpio -iv

#um die deutsche keymap zu laden wird loadkeys und gzip benötigt:
Code:
cp /usr/bin/gzip ~/tmp/bin/
cp /bin/loadkeys ~/tmp/bin/

# dann noch die benötigten keymaps kopieren
Code:
cp -r /usr/share/kbd/keymaps ~/tmp/

und in ~/tmp/init vor diesem block

Code:
##################################################
# get_param $key
# returns the kernel commandline parameter value
# that is identified by the key
# e.g. get_param root
#      => /dev/hda1
##################################################

Code:
 /bin/loadkeys /keymaps/i386/qwertz/de-latin1-nodeadkeys.map.gz

einfügen

dann das ganze wieder packen und nach /boot/initrd-2.6.37.6-0.5-desktop kopieren (alternativ unter anderem namen und anderem Grub eintrag um es zu testen)

Code:
find . -print0 | cpio -ov -0 --format=newc | gzip -9 > ~/initrd-2.6.37.6-0.5-desktop && sudo cp ~/initrd-2.6.37.6-0.5-desktop /boot


mfg fl0
 
@fl0
Vielen Dank für die Info! :)


Zu meiner Nebenfrage hab ich auch eine Antwort gefunden. :)
Nebenfrage:
Weiß jemand mit welchem Algorithmus und in welcher Stärke die Festplatte über LUKS verschlüsselt wird und kann man dies verändern?

Unter dem Root-Konto gibt man folgenden Befehl ein:
Code:
dmsetup table --showkeys
Im Anschluss wird eine Liste von verschlüsselte Partitionen/Containern angezeigt (auch alle TrueCrypt Verschlüsselungen) mit den benutzen Algorithmen, Verschlüsselungsstärken usw.
So wie ich das sehe ist die opensuse-Standardfestplattenverschlüsselung AES256 mit CBC-Modus, ESSIV als der genutzte Initialisierungsvektor-Modus sowie SHA256 als Hashalgorithmus. (schön wäre natürlich, wenn man die Einstellungen hierfür bei der opensuse-Installation selbst wählen könnte...)
Weitere Infos gibt es hier:
http://de.opensuse.org/SDB:Sicherheit_Verschlüsselung_mit_LUKS

bis denne
 
Oben