Ich möchte den Linux-Kernel herunterladen und spielen! Ich bin sicher, dass es viele Leute gibt, die das sagen. Für diejenigen unter Ihnen ist hier eine Erinnerung an das Ausführen des Linux-Kernels auf einer virtuellen Mac-Maschine. Für Anfänger, die VirtualBox und Vagrant bereits installiert, aber noch nie verwendet haben.
Umgebung
Suchen Sie nach der Box, die Sie in der Vagrant Cloud verwenden möchten (https://app.vagrantup.com/boxes/search). Dieses Mal verwenden wir *** generic / fedora32 *** (https://app.vagrantup.com/generic/boxes/fedora32). Erstellen Sie eine virtuelle Maschine in Ihrem bevorzugten Arbeitsbereich und geben Sie sie mit ssh ein.
% vagrant init generic/fedora32
% vagrant up
% vagrant ssh
Wenn Sie eine ordnungsgemäße Verbindung herstellen können, wird die Eingabeaufforderung geöffnet
[vagrant@fedora32 ~]$
Ich denke, das wird sich so ändern.
Da es sich um eine neue Maschine handelt, sind die Befehle usw. immer noch unzureichend. Wenn Sie wütend werden wie "Befehl nicht gefunden"
$ yum install
Laden Sie den Linux-Kernel herunter und versuchen Sie, ihn mit genau den gleichen Einstellungen wie das aktuelle Betriebssystem auszuführen. Lassen Sie uns zunächst die aktuelle Kernelversion überprüfen.
$ uname -r
5.6.14-300.fc32.x86_64
Wenn Sie dieselbe Kernelversion wie diese Nummer herunterladen, können Sie sicher sein, dass der Unterschied gering ist. Dieses Mal können Sie in / usr / src herunterladen und entpacken.
$ cd /usr/src
$ wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-5.6.14.tar.xz
$ tar Jxvf linux-5.6.14.tar.xz
Sie sehen "Keine Berechtigung" oder "Berechtigung verweigert". Fügen Sie also am Anfang des Befehls sudo hinzu und führen Sie es mit Root-Rechten aus. Wechseln Sie nach dem Entpacken in das fertige Verzeichnis.
$ cd linux-5.6.14
Ich werde den Kernel von nun an erstellen, aber dieses Mal möchte ich ihn mit genau den gleichen Einstellungen wie den aktuell ausgeführten Kernel ausführen. Dazu portieren wir zunächst die Konfigurationsdatei (.config) aus dem aktuellen Kernel. In Fedora beginnt der Name mit config ~ in / boot. Bitte ändern Sie den Namen am Port in .config.
$ cp /boot/config-5.6.14-300.fc32.x86_64 .config
danach
$ make olddefconfig
Ausführen. make oldconfig ist ein Befehl, der das Element festlegt und es zu einer verwendbaren Konfigurationsdatei macht, wenn .config aus alten Gründen fehlt. Wenn Sie def nicht hinzufügen, werden Sie für Fragen verantwortlich gemacht. make olddefconfig ist ein Befehl, der besagt, dass ~~ es problematisch ist ~~ alle Standardwerte sind in Ordnung.
Schließlich werden wir mit dem Aufbau des Kernels beginnen.
$ make bzImage
$ make modules
Ausführen. Das Sterben wird lange dauern. Seien Sie also vorbereitet und führen Sie es mit der entsprechenden Option -j aus.
openssl / opensslv.h: Keine solchen Dateien oder Verzeichnisse Wenn es als angezeigt wird
$ yum install openssl-devel
Bitte führen Sie die.
BTF: .tmp_vmlinux.btf: pahole (pahole) is not available
Failed to generate BTF for vmlinux
Try to disable CONFIG_DEBUG_INFO_BTF
Wird angezeigt
$ yum install dwarves
Bitte führen Sie die.
ld: drivers / infiniband / hw / hfi1 / hfi1.ko: endgültiger Abschluss fehlgeschlagen: ld: endgültiger Link fehlgeschlagen: Auf dem Gerät ist kein freier Speicherplatz vorhanden Auf dem Gerät ist kein freier Speicherplatz vorhanden make [2]: *** [scripts / Makefile.modfinal: 41: drivers / infiniband / hw / usnic / usnic_verbs.ko] Fehler 1 make [2]: *** Warten auf unvollständigen Job ... make [2]: *** [scripts / Makefile.modfinal: 41: drivers / infiniband / hw / hfi1 / hfi1.ko] Fehler 1 make [1]: *** [scripts / Makefile.modpost: 94: __modpost] Fehler 2 make: *** [Makefile: 1291: modules] Fehler 2 Da der Kernel groß ist, denke ich, dass Ihnen der Speicherplatz ausgeht, wenn Sie mit den Standardeinstellungen erstellen. Wenn Sie einen solchen Fehler erhalten, lesen Sie bitte ** VirtualBox Storage Expansion **.
Wenn die beiden oben genannten make-Befehle abgeschlossen sind
$ make modules_install
$ make install
Installieren mit. Sobald dies erledigt ist, sollten Sie in der Lage sein, als neuer Kernel zu booten.
Für mich
sed: can't read /boot/loader/entries/db7261c1495f495394843ac0998a4888-0-rescue.conf: No such file or directory
Ich habe den Fehler erhalten, aber Sie können ihn starten, auch wenn Sie ihn ignorieren. (Ich kenne die Details nicht) Wenn Ihnen Fehler nicht gefallen, kopieren Sie eine weitere Datei "recovery.conf" in / boot / loader / entry / als db7261c1495f495394843ac0998a4888-0-recovery.conf, und es werden keine Fehler mehr ausgegeben. (Details (ry)
Es ist möglich, den Kernel so zu starten, wie er ist, aber dieses Mal möchte ich den Kernel, der standardmäßig startet, so ändern, dass der Kernel, den ich gerade heruntergeladen habe, sofort nach dem Start gestartet wird. Es scheint, dass Sie Einstellungen mit grub2 ändern können auf Fedora 30 oder früher und CentOS, aber es scheint, dass sich die Spezifikationen von Fedora 30 geändert haben. Stellen Sie es daher mit dem Befehl schmuddelig ein.
$ grubby --info=ALL
index=0
kernel="/boot/vmlinuz-5.6.14-300.fc32.x86_64"
args="ro biosdevname=0 elevator=noop no_timer_check resume=UUID=dff45248-dbd3-4080-9f8a-d44e7ce684d9 net.ifnames=0 rhgb quiet"
root="UUID=9a7f28db-ff73-4245-aac1-a0893e4fea1e"
initrd="/boot/initramfs-5.6.14-300.fc32.x86_64.img"
title="Fedora (5.6.14-300.fc32.x86_64) 32 (Thirty Two)"
id="8d21de11155642cbb01ad934cd09ce38-5.6.14-300.fc32.x86_64"
index=1
kernel="/boot/vmlinuz-0-rescue-8d21de11155642cbb01ad934cd09ce38"
args="ro biosdevname=0 elevator=noop no_timer_check resume=UUID=dff45248-dbd3-4080-9f8a-d44e7ce684d9 net.ifnames=0 rhgb quiet"
root="UUID=9a7f28db-ff73-4245-aac1-a0893e4fea1e"
initrd="/boot/initramfs-0-rescue-8d21de11155642cbb01ad934cd09ce38.img"
title="Fedora (0-rescue-8d21de11155642cbb01ad934cd09ce38) 32 (Thirty Two)"
id="8d21de11155642cbb01ad934cd09ce38-0-rescue"
index=2
kernel="/boot"
args=""
initrd="/boot"
title=""
id="db7261c1495f495394843ac0998a4888-5.6.14"
Geben Sie hier einen geeigneten Wert wie den Kernelpfad ein. Imitieren Sie die vorhandene mäßig
$ grubby --add-kernel="/boot/vmlinuz-5.6.14" --title="Fedora (5.6.14) 32 (Thirty Two)"
Wenn Sie dies tun, ist es in Ordnung.
$ grubby --info=ALL
index=0
kernel="/boot/vmlinuz-5.6.14-300.fc32.x86_64"
args="ro biosdevname=0 elevator=noop no_timer_check resume=UUID=dff45248-dbd3-4080-9f8a-d44e7ce684d9 net.ifnames=0 rhgb quiet"
root="UUID=9a7f28db-ff73-4245-aac1-a0893e4fea1e"
initrd="/boot/initramfs-5.6.14-300.fc32.x86_64.img"
title="Fedora (5.6.14-300.fc32.x86_64) 32 (Thirty Two)"
id="8d21de11155642cbb01ad934cd09ce38-5.6.14-300.fc32.x86_64"
index=1
kernel="/boot/vmlinuz-0-rescue-8d21de11155642cbb01ad934cd09ce38"
args="ro biosdevname=0 elevator=noop no_timer_check resume=UUID=dff45248-dbd3-4080-9f8a-d44e7ce684d9 net.ifnames=0 rhgb quiet"
root="UUID=9a7f28db-ff73-4245-aac1-a0893e4fea1e"
initrd="/boot/initramfs-0-rescue-8d21de11155642cbb01ad934cd09ce38.img"
title="Fedora (0-rescue-8d21de11155642cbb01ad934cd09ce38) 32 (Thirty Two)"
id="8d21de11155642cbb01ad934cd09ce38-0-rescue"
index=2
kernel="/boot/vmlinuz-5.6.14"
args="ro biosdevname=0 elevator=noop no_timer_check resume=UUID=dff45248-dbd3-4080-9f8a-d44e7ce684d9 net.ifnames=0 rhgb quiet"
root="UUID=9a7f28db-ff73-4245-aac1-a0893e4fea1e"
initrd="/boot/initramfs-5.6.14.img"
title="Fedora (5.6.14) 32 (Thirty Two)"
id="db7261c1495f495394843ac0998a4888-5.6.14.0~custom"
index=3
kernel="/boot"
args=""
initrd="/boot"
title=""
id="db7261c1495f495394843ac0998a4888-5.6.14"
Zum Index hinzugefügt = 2. Machen wir dies zum Standard-Boot-Kernel. Der aktuelle Standardwert ist
$ grubby --default-index
3
Dies
$ grubby --set-default-index=2
Wechseln Sie zu dem Index = 2, den Sie gerade hinzugefügt haben.
$ grubby --default-index
2
Du könntest es ändern. Schließlich
$ grub2-mkconfig
Nach dem Reflektieren der Einstellungen mit ist es abgeschlossen.
Oh, werfen wir einen Blick auf den aktuell laufenden Kernel vor dem letzten Beenden.
$ uname -r
5.6.14-300.fc32.x86_64
Neustart
$ uname -r
5.6.14
Wenn es sich ändert, ist es ein Erfolg.
Recommended Posts