cat /usr/src/linux/.config grep PREEMPT

Ähnliche Dokumente
tune2fs -O extents,uninit_bg,dir_index /dev/device

Fehlerbehebung Linux-Kurs der Unix-AG

Linux gefahrlos testen

Fedora 24 Workstation Installation

EleLa - Elektronik Lagerverwaltung. Hilfe. Installation auf einem Raspberry Pi

Kali Linux. Hax0r. Kali USB (Persistenz + NTFS) Windows Benutzer freischalten

VMWare 3.0. Vmware Installation: - Install VMWARE. - c:\ Programme \ VMWARE. - CD Autorun disable / ja

Anleitung VM-Installation Ubuntu

pwd mkdir Zeigt das aktuelle Verzeichnis an Beispiel: pwd

Linux Tutorium. Linux Tutorium Systemkonfiguration. Linux Tutorium Systemkonfiguration Seite: 1

QNAP NAS Software RAID Management

Linux Kurs Vorlesung 2 - Terminal

Kivitendo ERP Installer für opensuse 13.2

ZPN Zentrale Projektgruppe Netze am Ministerium für Kultus, Jugend und Sport Baden-Württemberg

HasenbeinPlus 2016 Installation und Administration

Laufwerke unter Linux - Festplatten - - USB Sticks - September 2010 Oliver Werner Linuxgrundlagen 1

Gunnar Wrobel. Gentoo Linux. Installation - Konfiguration - Administration

Windows auf einen USb-Stick kopieren

Dualboot Windows 7/8 Linux Mint

PHYTEC USB-CAM Serie unter Linux

Drucken in Success! V7.1

Dateisystem 1, Suchpfad, Befehlstypen

Zusätzlich Tipps und Informationen

vadmin Installationshandbuch für Hostsysteme v Bit Copyright by vadmin.de Seite 1

Linux Mint auf einem USB Stick

Redo Backup and Recovery Instructions

HebRech auf Mac OS X

Linux-Camp: Linux als Server am Beispiel LAMP

#48. Kernel-Unterstützung für Snapshots

Network-Attached Storage mit FreeNAS

Perforce Installation mit SSL

Installation eines Orgamax-Servers in Linux mit CentOS 7

Zugriffsrechte. anzeigen lassen mit dem Befehl: ls -l

Festplatte klonen: Tutorial

vadmin Installationshandbuch für Hostsysteme v1.40 Copyright by vadmin.de Seite 1

Installationsanleitung der ansitel VM (60-Tage Testversion) am Beispiel Oracle VirtualBox

Lokale Scanner am Thin Client als Netzwerkscanner nutzen. Inhaltsverzeichnis

Bios update Anleitung mit Q-Flash im 2D Bios. Wichtige Hinweise!

Linux Grundlagen. Wolfgang Scheicher. 20. Mai 2006

Cockpit-XP v3. Dokumentation. Neuen USB Treiber installieren Auch USB-Treiber für Firmware Änderung

BASIC Tutorial für Anfänger

Einführung in die Kommandozeile

owncloud Team IT Medizinische Universität Graz

Inhaltsverzeichnis Erste Schritte Grundprinzipien in Linux

ChameleonMini RevE Rebooted -Deutsch-

Arbeiten mit der Shell Teil 1

Gebrauchsanleitung zu "iexpress"

Kernelgenerierung. Adrian Reber. Hochschule für Technik - Fachhochschule Esslingen. 2. Mai 2001

Leitfaden für die Installation von C-MOR in einer Virtuellen Maschine Experten Installation mit eigener Partitionierung ab Version 5.

qlabs ElectroMeter Update

owncloud: Ihre Daten immer dabei unterwegs und überall

MEMO. Behandeln von Bluescreens bei Dell PC s

Installation von NQC

Anleitung für die Installation des USB Netzwerkkabels unter WIN2000 :

Linux booten. Jörg Ahrens

So führen Sie das Upgrade Ihres TOSHIBA Windows -PCs oder -Tablets auf Windows 10 durch

Free MC Boot per PS1 Exploit installieren

Linux zum Nachschlagen

Raspberry Workshop. User des Raspberry abmelden: Folgende befehle werden angenommen: Logout / Exit oder die Tastenkombination Ctl + D

Vorbemerkung. 1. Programmdownload

Einführung in die Kommandozeile

Klassenmappe. - eine Einstiegshilfe für ios und macos - Erarbeitet und zur Verfügung gestellt. von Markus Sabath WORKSHOP KLASSENMAPPE

I2C Serial 2.6 LCD Modul

1 LINUX-CHEATSHEET (symbolischer Name localhost ) ist der jeweils aktuelle

UNIX/Linux Lösung. Mär 14, 17 20:40 Seite 1/6. Prozeßsynchronisation (was ist das?, wo kommt es vor?, Beispiel?):

Automatisierte Installation der ESXi Hosts (z.b. für Disaster Recovery).

PEAK USB-CAN-Interfaces Alle CAN-Interfaces von PEAK-System für den USB-Anschluss. Anleitung zum Firmware-Update. Dokumentversion 1.1.

MDK-Controller: Umbau auf PureMoCo Android App v

Übungsblatt 1. (Stapel- bzw. Batchbetrieb)

Step by Step Installation von Windows Server von Christian Bartl

1. Einführung. 2. Installation. 1.1 Was ist ALSA? 1.2 Warum ALSA benutzen? 1.3 Welche Karten werden von ALSA unterstützt? 2.

2 2. Tag. 2.1 Das Dateisystem. das Dateisystem organisiert die Speicherung von Daten. viele Betriebssysteme haben verschiedene Dateisysteme

mit Winzip oder anderem Programm auf PC entpacken => xxx.img-datei mit Win32Diskimager die xxx.img-datei auf Micro-SD-Card >= 4GB schreiben

Bios-Update Anleitung mit Q-Flash. Wichtige Hinweise!

Installation von Asterisk

Arbeiten mit der Shell Teil 1

Installation & Usage. Version 1.0. estickflashtool

Installationsanleitung Lernwerkstatt 7 auf Ubuntu/Kubuntu 8.04 (Hardy Heron)

Android 4.4 in einer Oracle VM VirtualBox installieren

Talking-Pi. Installation der Sound-Module

VAG-COM und das Windows XP Problem.

Diese funktioniert unter einer noch funktionierenden Windows 7 Installation auf einem USB 3 Laufwerk tadellos. Wurde das System aber gelöscht und möch

Anleitung Clevo Bios Update via EFI Shell

Transkript:

Realtime Kernel bauen Vorwort Wer seinen Desktoprechner als Multitracksystem oder Harddiskrecorder für Audiobearbeitung nutzt, kommt um einen Realtimekernel nicht herum. Wichtig für eine solche Systemnutzung ist eine sehr geringe Latenz. Einige Programme wie z.b. Ardour oder Midisequenzer benötigen eine sehr niedrige Latenz um dem Musiker nicht zur Verzweiflung zu bringen. Eine zu hohe Latenz würde sich so äussern, dass der Keyboarder eine Taste drückt aber der Ton mit erheblicher Verzögerung zu hören wäre. Dies ist natürlich ein absolutes NO-GO. Für die audiotypischen Anwendungen sollte man ausserdem den Soundserver jack nutzen und installieren. Wieviel Latenzzeit man zulassen muss, hängt letztendlich mit der Leistungsfähiglkeit des Systems/Hardware ab. Vorarbeiten Um herauszufinden ob der gerade verwendete Kernel schon Echtzeitfähig ist, bekommen wir mit cat /usr/src/linux/.config grep PREEMPT heraus. Ausgabe: # CONFIG_PREEMPT_RCU is not set # CONFIG_PREEMPT_RCU_TRACE is not set # CONFIG_PREEMPT_NONE is not set CONFIG_PREEMPT_VOLUNTARY=y # CONFIG_PREEMPT is not set Sollte die Ausgabe der oberen ähneln, sind leider noch keine Realtimefähigkeiten eingebaut bzw. aktiviert. Um dem Kernel diese Fähigkeiten zu geben, werden wir als erstes zu root und wechseln anschliessend in das Verzeichnis unserer Kernelsourcen. su cd /usr/src/linux

und starten den Kernel build mit make menuconfig Die Optionen die uns Interessieren finden wir unter Prozessor type and features Mit ENTER öffnet sich ein Unterfenster. Hier suchen wir als erstes High Resolution Timer Support und wählen diesen aus. [*] High Resolution Timer Support Anwendungen wie z.b. MIDI-Sequenzer benötigen einen hochauflösenden Zeitgeber. Als nächstes legen wir fest wie hoch die genaue Auflösung sein soll. Dazu scrollen wir nach unten auf den Eintrag Timer frequency (250 HZ) > und stellen den Wert mit ENTER auf 1000 HZ ein. Timer frequency (1000 HZ) ---> Wir stellen den Wert deshalb auf 1000 HZ ein, da man für präzise Loops und Tempos eine möglichst hohe Auflösung benötigt. Leider bringt dieser hohe Wert unter Umständen Tastaturprobleme mit, d.h. das sich die widerholrate beim Tastendruck erhöht und man mit einem Tastendruck gleich mehrmals den Buchstaben eingegeben hat. Dies kam bei mir allerdings nur in der Virtualbox vor. Ich wollte es aber dennoch nicht unterschlagen. Als nächstes müssen wir den entscheidenden Eintrag Preemption Model einstellen. Hier gibt es eine besonderheit. Wenn dein Kernel über einen Realtime Patch verfügt wirst du hier den Eintrag Complete Preemption finden. Ist das nicht der Fall so wählst du hier den Eintrag Preemptible Kernel (Low-Latency Desktop) aus. Auch damit gewinnt der Kernel erheblich an Echtzeitsupport. Preemption Model (Preemptible Kernel (Low-Latency

Desktop)) ---> Wir verlassen nun die Menukonfiguration des Kernels und kompilieren den Kernel mit make && make modules_install Der Kompilierungsvorgang kann je nach Leistung des Systems entsprechend lange dauern. Anschliessend müssen wir noch unseren Realtimekernel in das /boot Verzeichnis kopieren. Beispiel cp arch/x86_64/boot/bzimage /boot/kernel-2.6.30-gentoo-r5 Wenn du z.b. einen NVIDIA-Treiber installiert hast oder die Virtualbox, solltest du anschliessend auch diese neu kompilieren. Da Echtzeitfähigkeiten für den User auch mehr Macht bedeuten, müssen wir noch einige Einstellungen vornehmen. Da Linux PAM (Pluggable Authentication Modules) nutzt um die Realtime cappabilities an den User weiterzugeben müssen wir noch in /etc/security/limits.conf ein paar resourcenbezogene Zugriffsrechte setzen. nano /etc/security/limits.conf Am Ende der Datei fügen wir unbedingt vor dem # End of file folgende 3 Zeilen ein. @audio - rtprio 90 @audio - nice -15 @audio - memlock 2786356 Das @audio bezieht sich auf eine Nutzergruppe und du musst damit sicherstellen das dein Nutzeraccount auch Mitglieder dieser Gruppe audio ist. rtprio legt fest wie hoch ein Prozess der Gruppe audio, seine Priorität im Preemption-System des Kernels setzen darf. 99 ist der höchst mögliche Wert.Den Wert den Du evtl. anpassen musst ist der Wert memlock.

Memlock bestimmt wieviel Arbeitsspeicher ein Angehöriger der Gruppe audio für einen Prozess fest reservieren darf. Damit hängt der Wert natürlich von der verfügbaren Menge des Arbeitsspeichers ab. Im Beispiel wird der Gruppe audio also fast 3 GB Arbeitsspeicher zugestanden. Tip Wenn du viel mit MIDI-Sequenzern arbeitest möchtest, solltest du noch eine weitere Systemoption anpassen, die Timer Resolution. Die Timer Resolution ist die Auflösung des Zeitgebers und umso genauer das System den Zeitablauf misst und an die entsprechenden Anwendungen weitergibt, desto präziser kann ein Sequenzer die Kompositionen wiedergeben. Standard wäre der bescheidene Wert 64 den wir auf 1024 erhöhen werden. Wir öffnen als root nano /etc/sysctl.conf und ergänzen oder ändern die Datei um den folgenden Eintrag: dev.rtc.max-user-freq = 1024 Nach den Änderungen musst Du das System rebooten und hast hoffentlich viel Spass beim musizieren. Kernel patchen Wie patche ich einen Kernel? Ich setze mal voraus, das von /usr/src/linux ein Symlink auf die Quellen der zu patchenden Kernelversion vorhanden ist. Wenn ja, gehts auch schon los. Den Patch herunterladen und in das Quell-Verzeichnis kopieren.

cp patch-2.6.30-xx.patch /usr/src/linux Nun wird gepatcht. patch -p1 < patch-2.6.30-xx.patch Womit -p1 auf das aktuelle Verzeichnis hinweist. patch-2.6.30-xx auf den Namen des Patches. Versionsnummern müssen gegebenfalls angepasst werden Kernel.config wiederherstellen Vorwort Wenn man versehntlich seine Kernel.config gelöscht hat, kann man diese mit den folgenden en recht einfach wiederherstellen. für Genkernel Nutzer Die Passende Datei in /etc/kernels suchen, ls /etc/kernels/ Beispiel: ls /etc/kernels kernel-config-x86_64-2.6.34-gentoo-r1 kernel-configx86_64-2.6.34-gentoo-r6 nach /usr/src/linux kopieren und umbenennen. cp /etc/kernels/ /usr/src/linux/.config

Beispiel: cp /etc/kernels/kernel-config-x86_64-2.6.34-gentoo-r6 /usr/src/linux/.config für Nutzer von make menuconfig. zcat /proc/config.gz > /usr/src/linux/.config Dies funktioniert allerdings nur wenn folgende Kerneloptionen gesetzt sind (was ich generell empfehlen würde) <*> Kernel.config support. [*] Enable access to.config through /proc/config.gz Falls keine der beiden Möglichkeiten für Euch verwendbar ist, könnte diese Seite Abhilfe schaffen. http://kernel-seeds.org/ Tipp von Josef.95 Ich meine es ist eine gute Idee sich die.config zusätzlich zu dem bzimage (und evtl. weiteren) mit nach /boot zu kopieren, denn da liegt sie idr gut und sicher. Zusätzlich lasse ich die /boot Partition nur Read Only mounten, das hat unter anderen den Vorteil das man nicht versehentlich drauf schreibt, und wenn es doch nötig tut, und vergisst die /boot Partition zu mounten bekommt man ein netten Hinweis das /boot nur readonly ist. nano -w /etc/fstab /dev/sdxx /boot ext2 noatime,ro 1 2

Und wenn man dann doch mal was drauf schreiben muss mounted man sie kurz rw mount -o remount,rw /boot Tipp von bell Es gibt noch eine weitere Möglichkeit an die Config zu kommen, falls im Kernel zwar Kernel.config support aktiv ist, jedoch nicht die /proc/config.gz, also <*> Kernel.config support. [ ] Enable access to.config through /proc/config.gz Oder falls der Kernel von dem man die Config haben möchte nicht bootet/gebootet ist um an die config.gz zu kommen. In diesem Fall gibt es ein mit den Sources installiertes Script, mit dem man an die Config kommt: /usr/src/linux/scripts/extract-ikconfig /boot/kernelgenkernel-x86_64-3.2.1-gentoo-r2 > /usr/src/linux/.config Der Kernel muss dabei wie gesagt nicht gebootet sein. Diskussionsbeitrag: http://www.gentoofreunde.org/phpbb/viewtopic.php?f=7&t=283 Eigenen Kernel bauen Vorwort Wer Gentoo nutzt möchte früher oder später auch seinen Kernel an sein System anpassen und manuell kompilieren. Die Vorteile für einen angepassten Kernel liegen auf der Hand, da man nur das im Kernel aktiviert was man als Hardware verbaut hat oder als Unterstützung benötigt.

Installation Als erstes benötigt man dazu die Kernel Sources die man mit emerge -av sys-kernel/gentoo-sources einspielt. Auch recht hilfreich ist eselect, denn es erspart einem sehr viel Tipparbeit emerge -av app-admin/eselect Welche Kernelsources installiert sind und wohin unser symlink linux im Verzeichnis /usr/src zeigt finden wir mit eselect kernel list heraus. Wir bekommen diese oder eine ähnliche Ausgabe [1] linux-3.18.12-gentoo* [2] linux-4.0.5-gentoo Das setzten des Symlink wird dann mit eselect kernel set 2 durchgeführt. Eine wirkliche Anleitung kann man aufgrund der verschiedenen Hardware nicht schreiben, aber mit ein wenig Kenntnis über seine verbaute Hardware und seiner Anforderungen an das System, lassen sich sehr viele Optimierungen am Kernel vornehmen. Nun aber Los! Wir wechseln in unser Verzeichnis mit den Kernelsourcen

cd /usr/src/linux und rufen nun mit make menuconfig das Kernel Konfigurationstool auf. Welche Einstellungen man vornimmt muss jeder selbst entscheiden und natürlich an die verbaute Hardware anpassen. Screenshot von menuconfig Sobald die Einstellungen vorgenommen sind, wird der Kernel mit make && make modules_install dann kompiliert. Damit der neue Kernel auch verwendet werden kann,

kopieren wir ihn noch in unser /boot Verzeichnis cp arch/x86_64/boot/bzimage /boot/kernel-4.0.5-gentoo Ganz zum schluss muss man den Kernel dann noch in die Datei /boot/grub/grub.conf oder in die Datei /boot/grub/menu.lst eintragen, damit er dann auch beim nächsten Bootvorgang gestartet werden kann. Tipp Um seine Module im Auge zubehalten, musste man früher immer das Paket module-rebuild installieren. Mittlerweile ist das nicht mehr nötig. Ab sofort kann portage das, ab der stable Version. Je nachdem welche portage Version man installiert hat, stable oder testing, stehen einem mehr oder weniger Sachen zur verfügung. Überprüfen kann man es mit folgendem Befehl: emerge --list-sets Bei der stable Version sind im Augenblick diese vefügbar: live-rebuild module-rebuild preserved-rebuild selected system world x11-module-rebuild In unserem Tipp ist der Vorgang module-rebuild wichtig. Um alle bereits installierten Module/Treiber für den Kernel neu zu bauen, reicht jetzt ein einfaches emerge -av @module-rebuild

Neue Netzwerkkarte installieren Vorwort Da meine Netzwerkkarte defekt war musst ich mir eine neue einbauen. Leider erkannte Gentoo beim ersten Neustart die neue Netzwerkkarte nicht. Ich musste folgende Zeile eingeben um die udev rules der alten Netzwerkkarte auf die neue einzustellen. rm /etc/udev/rules.d/70-persistent-net.rules Mit dem folgenden Befehl wird sichergestellt dass beim nächsten Neustart des Systems, die neue Netzwerkkarte angesprochen wird und eine neue udev Regel genutzt wird. udevadm trigger --subsystem-match=net Alternative Als Alternative kann man auch in der Datei /etc/udev/rules.d/70- persistent-net.rules in der folgenden Zeile SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:e0:4c:83:47:6a", ATTR{type}=="1" KERNEL=="eth*", NAME="eth0" die MAC-Adresse der alten Netzwerkkarte gegen die MAC-Adresse der neuen Netzwerkkarte austauschen. Mit folgenden Befehl kann man sich die aktuelle MAC-Adresse anzeigen lassen. ifconfig

Die MAC-Adresse des Routers, bekommt man mit arp -a Systeminformationen abrufen Systeminformationen abrufen Um zum Beispiel bei einem Notebook die Systeminformationen abzurufen, wird das Paket sys-apps/dmidecode benötigt. emerge -av sys-apps/dmidecode Mit folgenden Befehlen bekommt man dann, den Hersteller, den Produktnamen und die BIOS Version herraus. dmidecode -s system-manufacturer dmidecode -s system-product-name dmidecode -s bios-version install-info: No such file or directory for /usr/share/info/bashref.info.bz2 Fehlermeldung Beim Installieren bzw. beim Worldupdate kann es passieren, das folgende Fehlermeldung erscheint: install-info: No such file or directory for /usr/share/info/bashref.info.bz2 Aufgefallen ist der Fehler, bisher bei den Paketen gnutls und openldap Es ist nicht auszuschliessen, das auch weitere Pakete davon betroffen sind.

Verursacht wird der Fehler durch das Paket app-shells/bash-4.2. Recht einfach: emerge -av bash emerge -av das betroffende Paket imagemagick requires /usr/lib/../lib64/libgomp.la Vorwort imagemagick schmiss immer wieder bei einem revdep-rebuild die Zeile broken /usr/lib64/imagemagick-6.5.2/modules- Q16/coders/art.la (requires /usr/lib/../lib64/libgomp.la) aus und konnte selbst nach einem re-emerge das Problem nicht beseitigen. Bei libgomp.la handelt es sich um eine parallelitäts Bibliothek vom gcc die von imagemagick benötigt wird. Als erstes installieren wir lafilefixer mit einem emerge -av lafilefixer und danach ein lafilefixer --justfixit halfen da weiter und beseitigten das Problem.

Warning: unable to open an initial console Diese berüchtigte Fehlermeldung Warning: unable to open an initial console kann man beim booten des Kernels erhalten wenn z.b. ein System-Backup auf ein anderes Filesystem wieder aufgespielt wurde, oder auch wenn ein System auf einem anderen Rechner (Filesystem) erstellt und dann verschoben wurde. Von einem möglichst aktuellen Live System booten, z.b. von einer LiveCD, USB-Stick oder ähnliches. Nun das Laufwerk auf dem sich das Problem-System befindet nach /mnt/gentoo mounten. mount /dev/sdxx /mnt/gentoo Falls /mnt/gentoo nicht vorhanden ist, muss es noch angelegt werden. mkdir /mnt/gentoo Wichtig!!! Bitte kein chroot ins System vornehmen! Nun auf dem defekten System /dev/console und /dev/null löschen und anschließend mit passenden Device Nodes neu anlegen: rm /mnt/gentoo/dev/console rm /mnt/gentoo/dev/null mknod -m 660 /mnt/gentoo/dev/console c 5 1 mknod -m 660 /mnt/gentoo/dev/null c 1 3 sync umount /mnt/gentoo reboot Nach dem reboot, kann man sich dann über ein wieder bootendes System freuen.

Unable to stop services for VMware Server Vorwort Wenn Du den folgenden Fehler #/opt/vmware/server/bin/vmware-config.pl Making sure services for VMware Server are stopped. * WARNING: vmware is already stopped Unable to stop services for VMware Server Execution aborted. beim start von vmware-config.pl bekommst sollte dir dieses Howto weiterhelfen. Gib folgendes in der shell ein /etc/init.d/vmware zap /opt/vmware/server/bin/vmware-config.pl - skipstopstart /etc/init.d/vmware restart Quelle-sweg: http://forums.gentoo.org/viewtopic-t-648776-start-0.html