root@linux
Lt. Junior Grade
- Registriert
- Apr. 2018
- Beiträge
- 393
Hallo
da ich mir vor kurzen den Linux Kernel kompilieren musste, um mein Laptop zum laufen zu bekommen (siehe hier: Alternativer Grafik-Treiber für AMD auf ubuntu 16.04), habe ich mich dazu entschieden, mir eine Linux-Kernel nach Maß, für meinen Laptop zu bauen. Ich habe da keine Erfahrung mit und hoffe auf eure Hilfe.
Ich möchte alle Funktionen, die meine Hardware unterstütz, zum laufen bekommen, in dem ich die passenden Treiber für die jeweilige Hardware im Kernel implementiere. Und alles was mein Laptop nicht unterstütz, erst gar nicht in den Kernel aufnehmen, wie z.B. Intel Funktionen oder Treiber für Hardware die mein Laptop gar nicht hat (Module).
Ich möchte einen schönen, schlanken und schnellen Kernel bauen.
openSUSE hat eine nette Funktion, man kann sich die Hardware-Liste als Datei speichern, und damit wollte ich mir die Treiber zusammen stellen. Aber, ich habe keine Ahnung wie ich diese liste verwenden soll: hwinfo.out.zip
Kann ich die Liste irgenwie in die .config importieren
Habe zurzeit den Linux Kernel 4.20.5-1-default am laufen und möchte bei dieser Version bleiben, bin soweit zufrieden, jedoch ist mir da zuviel zeug drinnen, das meine Maschine nicht braucht.
Der Linux Kernel soll auf Ubuntu mit der KDE Plasma GUI (Graphical User Interface / Grafische Benutzer Oberfläche) laufen. Also möchte ich den Kernel für Ubuntu und KDE-Plasma optimieren (wenn möglich).
Hier noch meine Hardware:
Laptop: ACER Aspire 3 (A315-41-R001)
Wo fange ich am besten an?
Klar in der make menuconfig
Wenn jemand mitmachen will und sich auch eine Kernel mach Maß bauen möchte, der lade sich erst einmal diese Pakete herunter:
Command-line (Terminal, Konsole, "Strg+Alt+T"...) öffnen und diese Befehle eingeben:
Einige der Pakete werden schon installiert sein, andere nicht. make und gcc sind in dem Paket build-essential enthalten.
Danach bitte den Computer neustarten.
Um sich als SuperUser "su" einloggen zu können, muss das root Passwort freigeschaltet werden. Wer das noch nicht gemacht hat, mach folgendes:
Dein Passwort eingeben, dann ein Passwort für den SuperUser ausdenken und zwei mal eingeben.
Jetzt noch das Passwort entsperren.
und dann mit dem befehl
einloggen.
!!! ACHTUNG !!! --> Pfad anpassen. Alle x gegen Versionsnummer und USER mit deinem User-namen austauschen.
Jetzt die kernel-x.x.x.tar.gz von Linux Kernel Organization, Inc. herunterladen, in den Ordner /usr/src/ mit dem Befehl
wechseln und mit dem Befehl
extrahieren.
Als nächstes in das neue Verzeichnis linux-4.xx.x.x mit dem Befehl
Jetzt:
eingeben und die Konfiguration vornehme.
Und jetzt sind wir an dem Punkt, wo ich alleine nicht so gut klar komme.
Was ankreuzen und was nicht
(SuperUser ausloggen, gebe den Befehl
ein)
------------------------------ EDIT ------------------------------
Da ich gebeten wurde diesen beitrag fertig zu stellen
Am besten man nimmt sich die Konfigurationsdatei eines Linux-Systems, das auf dem zu installierendem Computer, bereits installiert ist.
Das bedeutet, du hast Linux auf deinem PC und willst auf dem gleichen PC den Kernel modifizieren. Dann kopiere die config aus dem /boot/ Ordner und verwende diese als Grundlage. In dieser config sollten schon alle Treiber und was der Kernel sonst noch benötigt Konfiguriert sein.
Als erstes
Dann die config suchen Beispiel: config-4.13.0-45-generic und in das Verzeichnis des neuen Kernels Kopieren /usr/src/linux-4.20.5
Jetzt in den Ordner /usr/src/linux-4.20.5 wechseln
Mit dem Befehl
rufst du das Konfigurationsprogramm auf.
Jetzt < Load > auswählen (mit der Taste L oder mit den Pfeiltasten) und die davor rüber kopierte config-4.13.0-45-generic laden. Um die config zu laden musst du in das Fenster, das aufgeht, den Namen der Konfigurationsdatei schreiben: config-4.13.0-45-generic
und < OK > drücken.
Jetzt sind die Einstellungen des bereits installierten Kernels, in dem Konfiguration Programm geladen und du kannst diese modifizieren.
Wenn du fertig bist, auf < Save > drücken, um die Änderung zu speichern.
Du musst aber keine Änderungen vornehmen und einfach mal testen ob der neue Kernel überhaupt auf deinem PC läuft. Load / Save musst du aber machen, auch wenn du nichts ändern willst, weil im neuen Kernel auch neu oder geänderte Funktionen enthalten sind.
Jetzt geht es zum kompilieren.
Als erstes den Computer neustarten, in den BIOS gehen und den Secure Boot --> Disable
Mit dem Befehl
startest du den kompilier Prozess. Das x musst du wieder mal gegen die anzahl der CPU-Kerne, die du zum kompilieren verwenden möchtest, Ersätzen. Wenn du eine Quad-Core CPU hast, dann -j4 wenn du eine Octa-Core CPU hast (so wie ich), dann -j8 oder den ausführlichen Befehl --jobs=8.
Der nächste Befehl lautet
damit ist der Kernel installiert.
Jetzt noch aufräumen
und
im GRUB Menü den neuen Kernel auswählen und starten.
Um den Kernel wieder zu entfernen, mache folgendes.
Eine anderen Kernel booten als den, den du entfernen willst.
Beispiel: Sagen wir mal du hast den Linux-Kernel: linux-4.20.5 installiert und willst ihn löschen.
Starte den Computer neu und wähle im GRUB Bootmanager eine andere Version aus, z.B. linux-4.15.xx und boote sie.
Dann als SuperUser einloggen
und der Kernel ist weg.
da ich mir vor kurzen den Linux Kernel kompilieren musste, um mein Laptop zum laufen zu bekommen (siehe hier: Alternativer Grafik-Treiber für AMD auf ubuntu 16.04), habe ich mich dazu entschieden, mir eine Linux-Kernel nach Maß, für meinen Laptop zu bauen. Ich habe da keine Erfahrung mit und hoffe auf eure Hilfe.
Ich möchte alle Funktionen, die meine Hardware unterstütz, zum laufen bekommen, in dem ich die passenden Treiber für die jeweilige Hardware im Kernel implementiere. Und alles was mein Laptop nicht unterstütz, erst gar nicht in den Kernel aufnehmen, wie z.B. Intel Funktionen oder Treiber für Hardware die mein Laptop gar nicht hat (Module).
Ich möchte einen schönen, schlanken und schnellen Kernel bauen.
openSUSE hat eine nette Funktion, man kann sich die Hardware-Liste als Datei speichern, und damit wollte ich mir die Treiber zusammen stellen. Aber, ich habe keine Ahnung wie ich diese liste verwenden soll: hwinfo.out.zip
Kann ich die Liste irgenwie in die .config importieren
Habe zurzeit den Linux Kernel 4.20.5-1-default am laufen und möchte bei dieser Version bleiben, bin soweit zufrieden, jedoch ist mir da zuviel zeug drinnen, das meine Maschine nicht braucht.
Der Linux Kernel soll auf Ubuntu mit der KDE Plasma GUI (Graphical User Interface / Grafische Benutzer Oberfläche) laufen. Also möchte ich den Kernel für Ubuntu und KDE-Plasma optimieren (wenn möglich).
Hier noch meine Hardware:
Laptop: ACER Aspire 3 (A315-41-R001)
lspci
00:00.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Device 15d0
00:00.2 IOMMU: Advanced Micro Devices, Inc. [AMD] Device 15d1
00:01.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) PCIe Dummy Host Bridge
00:01.6 PCI bridge: Advanced Micro Devices, Inc. [AMD] Device 15d3
00:01.7 PCI bridge: Advanced Micro Devices, Inc. [AMD] Device 15d3
00:08.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-0fh) PCIe Dummy Host Bridge
00:08.1 PCI bridge: Advanced Micro Devices, Inc. [AMD] Device 15db
00:08.2 PCI bridge: Advanced Micro Devices, Inc. [AMD] Device 15dc
00:14.0 SMBus: Advanced Micro Devices, Inc. [AMD] FCH SMBus Controller (rev 61)
00:14.3 ISA bridge: Advanced Micro Devices, Inc. [AMD] FCH LPC Bridge (rev 51)
00:18.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Device 15e8
00:18.1 Host bridge: Advanced Micro Devices, Inc. [AMD] Device 15e9
00:18.2 Host bridge: Advanced Micro Devices, Inc. [AMD] Device 15ea
00:18.3 Host bridge: Advanced Micro Devices, Inc. [AMD] Device 15eb
00:18.4 Host bridge: Advanced Micro Devices, Inc. [AMD] Device 15ec
00:18.5 Host bridge: Advanced Micro Devices, Inc. [AMD] Device 15ed
00:18.6 Host bridge: Advanced Micro Devices, Inc. [AMD] Device 15ee
00:18.7 Host bridge: Advanced Micro Devices, Inc. [AMD] Device 15ef
01:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd. RTL8411B PCI Express Card Reader (rev 01)
01:00.1 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 12)
02:00.0 Network controller: Qualcomm Atheros QCA9377 802.11ac Wireless Network Adapter (rev 31)
03:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Vega [Radeon Vega 8 Mobile] (rev c4)
03:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Device 15de
03:00.2 Encryption controller: Advanced Micro Devices, Inc. [AMD] Device 15df
03:00.3 USB controller: Advanced Micro Devices, Inc. [AMD] Device 15e0
03:00.4 USB controller: Advanced Micro Devices, Inc. [AMD] Device 15e1
03:00.6 Audio device: Advanced Micro Devices, Inc. [AMD] Device 15e3
04:00.0 SATA controller: Advanced Micro Devices, Inc. [AMD] FCH SATA Controller [AHCI mode] (rev 61)
Wo fange ich am besten an?
Klar in der make menuconfig
Wenn jemand mitmachen will und sich auch eine Kernel mach Maß bauen möchte, der lade sich erst einmal diese Pakete herunter:
Command-line (Terminal, Konsole, "Strg+Alt+T"...) öffnen und diese Befehle eingeben:
Code:
sudo apt-get install build-essential
sudo apt-get install gcc
sudo apt-get install make
sudo apt-get install ld
sudo apt-get install flex
sudo apt-get install bison
sudo apt-get install fdformat
sudo apt-get install depmod
sudo apt-get install e2fsck
sudo apt-get install fsck.jfs
sudo apt-get install reiserfsck
sudo apt-get install xfs_db
sudo apt-get install mksquashfs
sudo apt-get install btrfsck
sudo apt-get install pccardctl
sudo apt-get install quota
sudo apt-get install pppd
sudo apt-get install isdnctrl
sudo apt-get install showmount
sudo apt-get install ps
sudo apt-get install oprofiled
sudo apt-get install udevd
sudo apt-get install grub
sudo apt-get install mcelog
sudo apt-get install iptables
sudo apt-get install openssl
sudo apt-get install bc
sudo apt-get install sphinx-build
sudo apt-get install libncurses5-dev
sudo apt-get install libelf-dev
sudo apt-get install libcurl4-openssl-dev
sudo apt-get install libssl-dev
sudo apt-get update
sudo apt-get full-upgrade
sudo apt-get autoremove
sudo apt-get autoclean
Einige der Pakete werden schon installiert sein, andere nicht. make und gcc sind in dem Paket build-essential enthalten.
Danach bitte den Computer neustarten.
Code:
sudo reboot
Um sich als SuperUser "su" einloggen zu können, muss das root Passwort freigeschaltet werden. Wer das noch nicht gemacht hat, mach folgendes:
Code:
sudo passwd root
Jetzt noch das Passwort entsperren.
Code:
sudo passwd -u root
Code:
su
!!! ACHTUNG !!! --> Pfad anpassen. Alle x gegen Versionsnummer und USER mit deinem User-namen austauschen.
Jetzt die kernel-x.x.x.tar.gz von Linux Kernel Organization, Inc. herunterladen, in den Ordner /usr/src/ mit dem Befehl
Code:
cd /usr/src/
Code:
xz -cd /home/USER/Downloads/linux-4.xx.x.tar.xz | tar xvf -
Als nächstes in das neue Verzeichnis linux-4.xx.x.x mit dem Befehl
Code:
cd /usr/src/linux-4.xx.x.x
Code:
make menuconfig
Und jetzt sind wir an dem Punkt, wo ich alleine nicht so gut klar komme.
Was ankreuzen und was nicht
(SuperUser ausloggen, gebe den Befehl
Code:
exit
------------------------------ EDIT ------------------------------
Da ich gebeten wurde diesen beitrag fertig zu stellen
Mache ich das jetzt.abcddcba schrieb:Falls du so weit bist, dann vervollstaendige deinen Beitrag hier bitte.
Am besten man nimmt sich die Konfigurationsdatei eines Linux-Systems, das auf dem zu installierendem Computer, bereits installiert ist.
Das bedeutet, du hast Linux auf deinem PC und willst auf dem gleichen PC den Kernel modifizieren. Dann kopiere die config aus dem /boot/ Ordner und verwende diese als Grundlage. In dieser config sollten schon alle Treiber und was der Kernel sonst noch benötigt Konfiguriert sein.
Als erstes
Code:
cd /boot/
Code:
ls
Code:
cp /boot/config-4.13.0-45-generic /usr/src/linux-4.20.5
Code:
cd /usr/src/linux-4.20.5
Code:
make menuconfig
Jetzt < Load > auswählen (mit der Taste L oder mit den Pfeiltasten) und die davor rüber kopierte config-4.13.0-45-generic laden. Um die config zu laden musst du in das Fenster, das aufgeht, den Namen der Konfigurationsdatei schreiben: config-4.13.0-45-generic
und < OK > drücken.
Jetzt sind die Einstellungen des bereits installierten Kernels, in dem Konfiguration Programm geladen und du kannst diese modifizieren.
Wenn du fertig bist, auf < Save > drücken, um die Änderung zu speichern.
Du musst aber keine Änderungen vornehmen und einfach mal testen ob der neue Kernel überhaupt auf deinem PC läuft. Load / Save musst du aber machen, auch wenn du nichts ändern willst, weil im neuen Kernel auch neu oder geänderte Funktionen enthalten sind.
Jetzt geht es zum kompilieren.
Als erstes den Computer neustarten, in den BIOS gehen und den Secure Boot --> Disable
Mit dem Befehl
Code:
make -jx
Der nächste Befehl lautet
Code:
make -jx modules_install install
Jetzt noch aufräumen
Code:
make clean
Code:
reboot
Um den Kernel wieder zu entfernen, mache folgendes.
Eine anderen Kernel booten als den, den du entfernen willst.
Beispiel: Sagen wir mal du hast den Linux-Kernel: linux-4.20.5 installiert und willst ihn löschen.
Starte den Computer neu und wähle im GRUB Bootmanager eine andere Version aus, z.B. linux-4.15.xx und boote sie.
Dann als SuperUser einloggen
Code:
su
Code:
rm /boot/*4.20.5*
Code:
rm -r /lib/modules/*4.20.5*
Code:
rm -r /usr/src/*4.20.5*
Code:
grub-mkconfig
Code:
update-grub
Code:
reboot
Anhänge
Zuletzt bearbeitet: