Archive for the ‘Linux’ Category

UEFI Boot und Probleme ins BIOS/UEFI zu kommen

3 Dezember 2016

Bei aktuellen Rechnern mit ihren superschnellen Bootvorgängen kann es schon schwierig werden ins BIOS bzw. UEFI zu kommen. Man hämmert wie blöde auf irgendwelche F-Tasten, die man manchmal schon gar nicht mehr auf der Tastatur hat, um dann später festzustellen, es war die falsche oder man war mal wieder zu langsam. Hier eine Aufstellung von möglichen Tasten: http://www.isunshare.com/windows-password/how-to-set-your-computer-to-boot-from-usb-drive.html#opt4.

Windows
Für obiges Problem gibt es seit Windows 8 Abhilfe. Man konnte seither unter den PC-Einstellungen->Update und Sicherheit->Wiederherstellung den Erweiterten Start aufrufen. Da konnte man dann meist den Eintrag UEFI-Firmware Einstellungen unter Problembehandlung->Erweiterte Optionen aufrufen oder die Starteinstellungen ändern. Diese Möglichkeit ist gut aber als bekennender Commandliner nicht sehr befriedigend.

Nun hat Microsoft bereits bei Windows 8 beim Shutdownbefehl den Parameter /o eingeführt. Dieser kürzt die Sache deutlich ab und man gelangt direkt in den Bildschirm mit den Erweiterten Startmöglichkeiten. So gehts:

shutdown /r /o

Wer sich nun unter Windows 10 v1607 die Parameter des Shutdown-Befehls anschaut, der stellt fest, es gibt nun auch einen Parameter /fw, welcher für Firmware steht und Firmware steht wiederum für die ganze UEFI-Geschichte. Man kann also mittels

shutdown /r /fw

direkt in die UEFI-Einstellungen booten! Endlich ein sauber gesteuerter Zugriff ohne zig unnötige Menüs zwischendrin!

Übrigens noch ein Tipp: Es gibt Situationen, da hat man SetHC.EXE oder UTILMAN.EXE umgebogen. Hier ein Beispiel dafür: https://newyear2006.wordpress.com/2015/08/30/abgelaufene-aktivierungen-erschweren-einem-das-leben-unter-windows/. In diesem Fall funktioniert shutdown /r /o z. B. nicht. Man kann sich jedoch behelfen, wenn man statt shutdown /o einfach

reagentc.exe /boottore

verwendet. Hat den gleichen Effekt, funktioniert aber bisher in allen Situationen! Einzige Voraussetzung dafür ist ein korrekt eingerichtetes RecoveryEnvironment. Infos dazu erhält man über reagentc /info.

Linux
Wer nun mit Linux unterwegs ist welches bereits SystemD nutzt, der kommt mit diesem Befehl in die UEFI-Einstellungen:

systemctl reboot --firmware-setup

Hier noch ein paar erhellende Infos zu UEFI unter Linux, vor allem, wie man Firmwarevariablen erzeugen kann und wie man darauf zugreift: https://firmware.intel.com/blog/accessing-uefi-variables-linux.

Ein weiterer interessanter Link für Linux und UEFI: http://superuser.com/questions/519718/linux-on-uefi-how-to-reboot-to-the-uefi-setup-screen-like-windows-8-can.

Informationen zu einer Linux Version bzw. Linuxbox ermitteln

7 August 2016

Linux ist extrem weit verbreitet. Fast jedes Gerät mit einem Netzwerkanschluss hat meist irgendeine Form von Linux enthalten. Wenn man nun per Telnet oder SSH vor einer Konsole sitzt, stellt sich oft die Frage, mit was man es zu tun hat. In Windows würde man

C:>systeminfo|findstr /C:"Betriebs" /C:"OS" /C:"System"
Betriebssystemname:                            Microsoft Windows 10 Pro
Betriebssystemversion:                         10.0.14393 Nicht zutreffend Build 14393
Betriebssystemhersteller:                      Microsoft Corporation
Betriebssystemkonfiguration:                   Eigenst?ndige Arbeitsstation
Betriebssystem-Buildtyp:                       Multiprocessor Free
Systemstartzeit:                               04.08.2016, 19:43:55
Systemhersteller:                              Microsoft Corporation
Systemmodell:                                  Virtual Machine
Systemtyp:                                     x64-based PC
BIOS-Version:                                  Microsoft Corporation Hyper-V UEFI Release v1.0, 26.11.2012
System-Verzeichnis:                            C:\Windows\system32
Systemgebietsschema:                           de;Deutsch (Deutschland)

aufrufen um zu wissen wo man sich befindet. In Linux ist dies nicht so einfach. Je nach Distribution gibt es unterschiedliche Wege die Versionen zu ermitteln aber es gibt dennoch ein paar Stellen, wo man es herausfinden kann.

Die meisten Linuxdistributionen speichern Infos in der issue-Datei im etc-Verzeichnis, welche mit cat ausgeben kann:

cat /etc/issue
Ubuntu 14.04.5 LTS \n \l

Damit ist bereits die grobe Richtung bekannt. Bei einem Raspberry Pi sieht die Sache so aus:

cat /etc/issue
Raspbian GNU/Linux 8 \n \l

Hier fangen die Schwierigkeiten mit Linux und den Distributionen an. Denn es gibt so viele unterschiedliche Distributionen. Hier ein weiteres Beispiel:

cat /etc/issue
vuplus 3.0.0 \n \l

In diesem Fall weiß ich, dass ich auf einer Vu+, einem Mediaplayer unterwegs bin. OK, vuplus ist eine eigene Distribution aber um weitere Möglichkeiten besser einschätzen zu können, wäre es wichtig die verwendete Linuxversion bzw. Kernelversion herauszufinden. Hierzu kann man /proc/version abfragen:

Unter Ubuntu liefert dies z. B.:

cat /proc/version
Linux version 3.4.0-Microsoft (Microsoft@Microsoft.com) (gcc version 4.7 (GCC) ) #1 SMP PREEMPT Wed Dec 31 14:42:53 PST 2014

und unter dem Pi:

cat /proc/version
Linux version 4.1.19-v7+ (dc4@dc4-XPS13-9333) (gcc version 4.9.3 (crosstool-NG crosstool-ng-1.22.0-88-g8460611) ) #858 SMP Tue Mar 15 15:56:00 GMT 2016

und unter der Vu+:

cat /proc/version
Linux version 3.13.5 (plnick@build-plnick) (gcc version 4.9.2 (GCC) ) #1 SMP Tue
Jan 19 02:38:57 CET 2016

OK die Vu+ verwendet Kernel 3.13.5, die Ubuntuvariante 3.4.0 jedoch, hier muss ich sagen ist es keine normale Ubuntuvariante sondern die vom Windows Subsystem for Linux (WSL) die seit Windows 10 v1607 verfügbar ist Smiley. Wobei man hier nicht von Kernel sprechen darf, da es bei WSL keinen Linux-Kernel gibt sondern die Syscalls auf den NT-Kernel, also Windows-Kernel abgebildet werden.

Ein richtiges Ubuntu würde sich so melden:

Linux version 4.2.0—27—generic (buildd@lcy01—23) (gcc version
4.8.2 (Ubuntu 4.8.2—19ubuntu1) ) #32~14.04.1—Ubuntu SMP
Fri Jan 22 15:32:26 UTC 16

Neben diesen Informationen wäre es ganz gut zu wissen, auf welcher Plattform bzw Architektur man sich befindet, dazu kann man uname verwenden:

uname -a

Linux vuzero 3.13.5 #1 SMP Tue Jan 19 02:38:57 CET 2016 mips GNU/Linux

bzw auf Ubuntu:

uname -a

Linux DESKTOP-FJE246N 3.4.0+ #1 PREEMPT Thu Aug 1 17:06:05 CST 2013 x86_64 x86_64 x86_64 GNU/Linux

Der Pi:

uname -a

Linux raspberrypi 4.1.19-v7+ #858 SMP Tue Mar 15 15:56:00 GMT 2016 armv7l GNU/Linux

Bei der Vu+ haben wir es also mit einem Mips-System zu tun, beim Pi mit ARM und bei der Ubuntugeschichte mit einem üblichen Intel x64-System.

Um die wesentlichen Informationen einfacher lesen zu können, kann man auch diese Variante benutzen:

uname -m

Damit bekommt man direkt armv7l, mips, 32 oder 64 zurück.

Jede Distribution speichert im /etc-Verzeichnis Infos über sich ab. Man muss in der Regel nur nach Dateien mit der Endung release, info oder version suchen, man kann dies praktischerweise in einen Einzeiler packen:

ls /etc/*version /etc/*release /etc/*info

Wie diese Seite http://www.sysadminslife.com/linux/quicktipp-installierte-linux-distribution-anzeigen-und-version-herausfinden/ aufzeigt, verwenden die meisten Distributionen die Endung version oder release.

Bei unserem Dreiklang sehen die Ausgaben wie folgt aus, zunächst der Raspberry:

ls /etc/*version /etc/*release /etc/*info

/etc/debian_version  /etc/os-release

/etc/terminfo:

README

cat /etc/debian_version

8.0

cat /etc/os-release

PRETTY_NAME="Raspbian GNU/Linux 8 (jessie)"

NAME="Raspbian GNU/Linux"

VERSION_ID="8"

VERSION="8 (jessie)"

ID=raspbian

ID_LIKE=debian

HOME_URL="http://www.raspbian.org/"

SUPPORT_URL="http://www.raspbian.org/RaspbianForums"

BUG_REPORT_URL=http://www.raspbian.org/RaspbianBugs

Nun die WSL-Ubuntu-Variante:

ls /etc/*version /etc/*release /etc/*info

/etc/debian_version  /etc/ec2_version  /etc/lsb-release  /etc/os-release

/etc/terminfo:

README

cat /etc/debian_version

jessie/sid

cat /etc/ec2_version

Ubuntu 14.04 LTS (Trusty Tahr)

cat /etc/lsb-release

DISTRIB_ID=Ubuntu

DISTRIB_RELEASE=14.04

DISTRIB_CODENAME=trusty

DISTRIB_DESCRIPTION="Ubuntu 14.04.5 LTS"

cat /etc/os-release

NAME="Ubuntu"

VERSION="14.04.5 LTS, Trusty Tahr"

ID=ubuntu

ID_LIKE=debian

PRETTY_NAME="Ubuntu 14.04.5 LTS"

VERSION_ID="14.04"

HOME_URL="http://www.ubuntu.com/"

SUPPORT_URL="http://help.ubuntu.com/"

BUG_REPORT_URL=http://bugs.launchpad.net/ubuntu/

Nun die Vu+:

ls /etc/*version /etc/*release /etc/*info

ls: /etc/*release: No such file or directory

/etc/image-version    /etc/version          /etc/vtiversion.info

/etc/terminfo:

a  d  l  r  s  v  x

cat /etc/image-version

version=0903201605170204

creator=VTi <info@vuplus-support.org>

url=http://www.vuplus-support.org/

cat /etc/version

201605170159

cat /etc/vtiversion.info

VTi-Team Image Release v.9.0.3

Über diese Informationen erhält man also oftmals auch URLs um weitere Informationen zu erhalten.

Beim Raspberry mit seinem Raspbian weiß man nun also, dass man es mit einem Debian 8 (Jessie) zu tun hat, auch Ubuntu basiert auf Debian. Leider sind solche Infos bei der Vu+ nicht zu erhalten. Hier erhält man nur die Information, dass VTi in Version 9.0.3 vom 9.3.2016 installiert ist.

Neben der Software spielt natürlich auch die Hardware eine Rolle. Welchen Prozessor hat man konkret vor sich. Hier hilft /proc/cpuinfo

Die Vu+:

cat /proc/cpuinfo

system type             : BCM7362A0 STB platform

machine                 : Unknown

processor               : 0

cpu model               : Broadcom BMIPS4380 V6.5  FPU V0.1

BogoMIPS                : 749.56

cpu MHz                 : 751.518

wait instruction        : yes

microsecond timers      : yes

tlb_entries             : 32

extra interrupt vector  : yes

hardware watchpoint     : no

isa                     : mips1 mips2 mips32r1

ASEs implemented        : mips16

shadow register sets    : 1

kscratch registers      : 0

core                    : 0

VCED exceptions         : not available

VCEI exceptions         : not available

processor               : 1

cpu model               : Broadcom BMIPS4380 V6.5  FPU V0.1

BogoMIPS                : 753.66

cpu MHz                 : 751.518

wait instruction        : yes

microsecond timers      : yes

tlb_entries             : 32

extra interrupt vector  : yes

hardware watchpoint     : no

isa                     : mips1 mips2 mips32r1

ASEs implemented        : mips16

shadow register sets    : 1

kscratch registers      : 0

core                    : 0

VCED exceptions         : not available

VCEI exceptions         : not available

beim Pi:

cat /proc/cpuinfo

processor       : 0

model name      : ARMv7 Processor rev 5 (v7l)

BogoMIPS        : 38.40

Features        : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm

CPU implementer : 0x41

CPU architecture: 7

CPU variant     : 0x0

CPU part        : 0xc07

CPU revision    : 5

processor       : 1

model name      : ARMv7 Processor rev 5 (v7l)

BogoMIPS        : 38.40

Features        : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm

CPU implementer : 0x41

CPU architecture: 7

CPU variant     : 0x0

CPU part        : 0xc07

CPU revision    : 5

processor       : 2

model name      : ARMv7 Processor rev 5 (v7l)

BogoMIPS        : 38.40

Features        : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm

CPU implementer : 0x41

CPU architecture: 7

CPU variant     : 0x0

CPU part        : 0xc07

CPU revision    : 5

processor       : 3

model name      : ARMv7 Processor rev 5 (v7l)

BogoMIPS        : 38.40

Features        : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm

CPU implementer : 0x41

CPU architecture: 7

CPU variant     : 0x0

CPU part        : 0xc07

CPU revision    : 5

Hardware        : BCM2709

Revision        : a01041

Serial          : 00AAAAAAAAAAAAAA

und noch Ubuntu:

cat /proc/cpuinfo

processor       : 0

vendor_id       : GenuineIntel

cpu family      : 6

model           : 78

model name      : Intel(R) Core(TM) i5-6260U CPU @ 1.80GHz

stepping        : 3

microcode       : 0xffffffff

cpu MHz         : 1800.000

cache size      : 256 KB

physical id     : 0

siblings        : 2

core id         : 0

cpu cores       : 2

apicid          : 0

initial apicid  : 0

fpu             : yes

fpu_exception   : yes

cpuid level     : 6

wp              : yes

flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave osxsave avx f16c rdrand hypervisor

bogomips        : 3600.00

clflush size    : 64

cache_alignment : 64

address sizes   : 36 bits physical, 48 bits virtual

power management:

processor       : 1

vendor_id       : GenuineIntel

cpu family      : 6

model           : 78

model name      : Intel(R) Core(TM) i5-6260U CPU @ 1.80GHz

stepping        : 3

microcode       : 0xffffffff

cpu MHz         : 1800.000

cache size      : 256 KB

physical id     : 0

siblings        : 2

core id         : 1

cpu cores       : 2

apicid          : 0

initial apicid  : 0

fpu             : yes

fpu_exception   : yes

cpuid level     : 6

wp              : yes

flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave osxsave avx f16c rdrand hypervisor

bogomips        : 3600.00

clflush size    : 64

cache_alignment : 64

address sizes   : 36 bits physical, 48 bits virtual

power management:

Bei so vielen Infos macht es evtl. noch Sinn nach dem Speicher zu fragen, den Arbeitsspeicher bekommt man mittels free –h und den Plattenplatz mittels df –h.

Bei ARM kommt in Zukunft sicher noch die Frage nach 32-Bit oder 64-Bit Prozessor. Der Raspberry z. B. ist noch 32-Bit ein armv8 wäre 64-Bit. http://unix.stackexchange.com/questions/136407/is-my-linux-arm-32-or-64-bit.

Weitere Infos zum Thema kann man hier finden: http://unix.stackexchange.com/questions/6345/how-can-i-get-distribution-name-and-version-number-in-a-simple-shell-script.

Raspberry Pi Raspbian Jessie und der Überlauf von /var/log/messages

13 Februar 2016

Hab ich mich eigentlich schon mal über die Flut an unnötigen Windows Ereignisanzeigeeintragungen beschwert? Nun so etwas gibt es auch bei Debian, hier speziell Debian Jessie auf einem Raspberry Pi.

Wenn man sich mittels

cat /var/log/messages

die LOG-Einträge anzeigen lässt, gibt es eine Vielzahl von LOG-Eintragungen mit dem Hiweis:

rsyslogd-2007: action ‚action 17‚ suspended, next retry is Sat Feb 13 20:28:26 2016 [try http://www.rsyslog.com/e/2007 ]

Auf der Seite www.rsyslog.com/e/2007 gibt es auch welche, die das Problem haben, scheint generell so zu sein. Dabei ist wichtig zu wissen, die Nummer 17 im obigen Beispiel kann auch eine andere Zahl darstellen und stellt letzten Endes den Konfigurationseintrag in der config-Datei dar.

Wenn man sich mittels

cat /etc/rsyslog.conf

die Einstellungen anschaut, dann taucht bei der Standardinstallation unten eine Zeile mit |/dev/xconsole auf. Genau hier liegt das Problem.

Um dies zu ändern, ruft man

sudo nano /etc/rsyslog.conf

auf und kommentiert die Zeilen ab daemon.*;mail.*;\ bis |/dev/xconsole mittels # aus. Anschließend muss man noch den rsyslog-Dienst neu starten:

sudo service rsyslog restart

Nun sollte die Log-Datei in Zukunft die wesentlichen Punkte zeigen.

Eigentlich könnte man das Problem auch lösen, indem man für die /dev/xconsole sorgt aber das darf jemand anderes machen…

Noch ein Hinweis: In der conf-Datei sind Dateinamen für die Log-Dateien angegeben. Dort findet man immer wieder die Angabe von – vor dem Dateinamen. Dies bedeutet, dass ein neuer Logeintrag nicht sofort auf die Festplatte geschrieben wird und somit im Falle eines Stromausfalls Eintragungen verloren gehen können: http://www.rsyslog.com/doc/v8-stable/configuration/actions.html#regular-file. Das Minus bedeutet nicht, dass keine LOG-Datei geführt werden soll.

Mausscrollrad funktioniert unter Ubuntu in Hyper-V VM nicht

25 Januar 2014

Microsoft bemüht sich ja wirklich, das Linux unterm Hyper-V zum Zug kommt. Wie immer aber, sind es die Kleinigkeiten, welche tierisch nerven und einen vom produktiven Arbeiten abhalten. So zum Beispiel, dass unter Ubuntu, wahrscheinlich unter Debian generell, das Mausscrollrad nicht funktioniert. Das Problem ist auch schon zu MS gedrungen, doch anstatt das Problem anzugehen und das Problem zu debuggen, fragt der Hauptentwickler der Linux Integration Features die Community nach einer Version, wo es funktionierte und möchte sich die Arbeit erleichtern indem er bisect einsetzt.

https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1240731

Bei älteren Versionen, kann man die LIS wie in diesem Artikel beschrieben nachrüsten: http://baudlabs.com/how-to-install-hyper-v-integration-services-in-ubuntu-12-04-lts/

Mehr Infos zu den Linux Integration Services (LIS): http://blogs.technet.com/b/virtualization/archive/2014/01/02/linux-integration-services-3-5-announcement.aspx