Ich habe versucht, den Linux-Kernel auf virtualbox + vagrant zu installieren

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

Inhaltsverzeichnis

  1. Erstellen Sie eine virtuelle Maschine
  2. Laden Sie den Linux-Kernel herunter
  3. Legen Sie die Konfigurationsdatei (.config) ab.
  4. Erstellen Sie den Kernel
  5. Installation
  6. Ändern Sie den Standard-Boot-Kernel

1. Erstellen Sie eine virtuelle Maschine

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 Lassen Sie uns nach Bedarf herunterladen (werfen). Das ist ein Schmerz! Wenn Sie ** flex, bison, bc, elfutils-libelf-devel, openssl-devel, zwerge ** installieren, ist das wahrscheinlich in Ordnung.

2. Laden Sie den Linux-Kernel herunter

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

3. Legen Sie die Konfigurationsdatei (.config) ab.

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.

4. Erstellen Sie den Kernel

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 **.

5. Installation

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)

6. Ändern Sie den Standard-Boot-Kernel

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

Ich habe versucht, den Linux-Kernel auf virtualbox + vagrant zu installieren
Ich habe Cython unter Ubuntu auf VirtualBox ausprobiert
Ich habe versucht, MySQL auf einer virtuellen Linux-Maschine unter OCI Compute zu installieren
Kompilieren des Linux-Kernels (Linux 5.x unter Ubuntu 20.04)
Ich habe versucht, mit tkinter mit dem Taschenrechner zu spielen
Ich habe Python zum ersten Mal auf dem Mac ausprobiert.
Ich habe versucht, die App auf der IoT-Plattform "Rimotte" auszuführen.
[Linux] Ich habe versucht, die genetische Statistiksoftware PLINK zu verwenden
Installieren Sie JDK unter Linux
Ich habe die Changefinder-Bibliothek ausprobiert!
Ich habe versucht, Linux wieder einzuführen
Fügen Sie den Link unter Linux ein
Ich habe MLflow auf Databricks ausprobiert
Hinweise zum Erstellen von TinyEMU und zum Booten des Linux-Kernels auf Emscripten
Ich habe vorerst versucht, PIFuHD unter Windows auszuführen
Hinweise zum Erstellen einer Linux-Umgebung mit VirtualBox + Vagrant unter Windows 10
Ich habe versucht, das Python-Skript unter Windows 10 von 2.7.11 auf 3.6.0 zu ändern
Ich habe versucht, den Ipython-Cluster unter AWS auf das Minimum zu starten
[Shell-Start] Ich habe versucht, die Shell mit einem billigen Linux-Board-G-Cluster auf dem Fernseher anzuzeigen
Ich habe versucht, eine Umgebung von MkDocs unter Amazon Linux zu erstellen
[Linux] Ich habe versucht, die Ressourcenbestätigungsbefehle zusammenzufassen
Ich habe die Naro-Roman-API 2 ausprobiert
Versuchen Sie, OpenAM unter Amazon Linux zu installieren
Ich habe eine Kreuzvalidierung basierend auf dem Rastersuchergebnis mit scikit-learn versucht
Probieren Sie den Linux-Kernel-Sperrmechanismus aus
Ich habe das 2. TensorFlow-Tutorial ausprobiert
Ich habe versucht, den auf Papier gestempelten Stempel mit OpenCV zu digitalisieren
Ich habe versucht, einen Sender auf der IoT-Plattform "Rimotte" zu registrieren.
Ich habe am Wochenende versucht, mit Bitcoin Systre zu beginnen
Installieren Sie VirtualBox unter CentOS 7 unter VirtualBox (Mac + Vagrant)
Ich habe die neuartige API von Naruro ausprobiert
Hinweise zur Installation von Ubuntu 18.04 auf XPS 15 7590
Ich habe versucht, den Ball zu bewegen
Ich habe versucht, die checkio-API zu verwenden
Ich habe versucht, den Abschnitt zu schätzen.
Ich habe versucht, Linux auf meinem Mac zu installieren
[Python] Ich habe versucht, die Nacht der Galaxienbahn mit WordCloud zu visualisieren!
Passende Karaoke-Tasten ~ Ich habe versucht, es auf Laravel zu setzen ~ <auf dem Weg>
[Linux] Ich habe versucht, die sichere Bestätigungsmethode von FQDN (CentOS7) zu überprüfen.
Ich habe versucht, die Linux-Befehle zusammenzufassen, die heute von Anfängeringenieuren verwendet werden - Teil 1-
TensorFlow Tutorial Ich habe MNIST 3rd ausprobiert
Linux Standard Lehrbuch (Version 3.0.2) Ich habe Kapitel 1 ausprobiert
Ich habe den asynchronen Server von Django 3.0 ausprobiert
Ich habe versucht, den Befehl umask zusammenzufassen
Ich habe einen Nur-SFTP-Benutzer unter Linux erstellt.
Ich habe zum ersten Mal Tensorflow ausprobiert
Ich versuchte das Weckwort zu erkennen
Ich bin auf die Hatena Keyword API gestoßen
Ich möchte Linux auf dem Mac verwenden
Ich habe versucht, die grafische Modellierung zusammenzufassen.
Ich stolperte über die Installation des Satzstücks auf Ubuntu
Ich habe versucht, das Umfangsverhältnis π probabilistisch abzuschätzen
Ich habe versucht, die COTOHA-API zu berühren
Python: Ich habe das Problem des Handlungsreisenden ausprobiert
Ich habe versucht, mit Pillow mit dem Bild zu spielen