Wenn Sie Linux verwenden, verwenden Sie wahrscheinlich mit ziemlicher Sicherheit auch den GRUB2-Bootloader. Mit dem Bootloader können Sie die Startreihenfolge des Systems steuern, insbesondere wenn Sie mehrere Betriebssysteme installiert haben, wie Windows und Linux nebeneinander, mehrere Linux-Distributionen und so weiter. Manchmal müssen Sie Änderungen an der GRUB2-Konfiguration vornehmen, einschließlich bestimmter Überschreibungen wie Kernel-Befehlszeilenparameter.
Wenn Ihnen das Obige nichts bedeutet, brauchen Sie diese Anleitung nicht. Aber wenn ja, dann können Sie mein ziemlich umfangreiches GRUB2-Tutorial zur Verwendung und Verwaltung des Bootloaders konsultieren. Außer, es ist nicht genug. Wenn Sie dem Kernel Boot-Parameter hinzufügen möchten – dauerhaft – dann funktioniert das Bearbeiten der Standardkonfigurationsdatei, wie ich es im Handbuch erklärt habe, nicht. Das ist Teil der Freude an der Fragmentierung, die Linux ausmacht. Wir brauchen also eine andere Methode, und deshalb sind wir hier.
Wie es gemacht werden sollte (hätte)
Wenn nur alle Linux-Distributionen einer Konvention folgen und alles auf eine Weise tun würden. Aber da wir mehrere Paketformate, mehrere Paketmanager, mehrere Desktop-Umgebungen und mehrere Distributionen haben, macht es nur unlogisch Sinn, mehrere Bootloader zu haben, oder eher nur einen, aber gespickt mit benutzerdefinierten Optimierungen. Daher verwenden Ubuntu und Fedora unterschiedliche Befehle und Schreibweisen, um dasselbe zu erreichen.
In Ubuntu und anderen können Sie Kernel-Befehlszeilenüberschreibungen vornehmen, indem Sie die erforderlichen Zeichenfolgen an die Anweisung GRUB_CMDLINE_LINUX_DEFAULT in der Konfigurationsdatei /etc/default/grub anhängen. Wie das geht, habe ich Ihnen beispielsweise in meiner Anleitung zur Bildschirmhelligkeit und Lüftersteuerung für mein Asus eeePC-Netbook gezeigt. Wir haben der Datei einige Einträge wie folgt hinzugefügt:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash acpi_osi=Linux"
Ich brauchte eine ähnliche Optimierung für Fedora 30, als ich es auf meinem alten HP Pavilion-Computer mit einer Nvidia-Karte testete und wo ich auf ein hässliches Hoppla stieß, das durch einen Konflikt zwischen dem Legacy-Zweig der Nvidia-Treiber (340.xx) und dem Spectre-Patches im Kernel. Sie können die vollständige Geschichte in der verlinkten Distributionsübersicht oben lesen. Unterm Strich musste ich eine Zeichenfolge anhängen, also habe ich es getan, da ich erwartet hatte, dass sich GRUB2 verhält. Ich habe die Bootloader-Konfigurationsdatei aktualisiert (auf Fedora-Weise, siehe meinen Abschnitt GRUB2-Tutorial-Updates), aber beim nächsten Neustart wurde die Option ignoriert. Es gab keinen gewünschten String unter cat /proc/cmdline. Ich habe dann gelernt, dass Fedora die Dinge anders macht.
Grubby - Werkzeug, um dauerhafte GRUB2-Änderungen in Fedora vorzunehmen
Ja, Sie benötigen ein Tool namens grubby, mit dem Sie Zeichenfolgen an Ihre Kernel anhängen können. Grubby ist ein Befehlszeilentool und funktioniert, indem es entweder einen gewünschten Kernel oder alle angibt und dann die gewünschten Werte hinzufügt. Der Nachteil dieses Tools ist, dass es umständlicher zu verwenden ist, als eine Konfigurationsdatei zu ändern, Sie nicht wissen, ob und wie Backups erstellt werden, falls Sie etwas verpfuschen, und wenn Sie neue Kernel hinzufügen, werden sie nicht persistent sein optimieren, und Sie müssen es erneut ausführen. Nicht sehr elegant. Also lief ich schmuddelig:
sudo grubby --update-kernel=ALL --args=KERNEL-OPTIONS-GO-HERE
Als spezifisches Beispiel würde es etwa so aussehen (beachten Sie die beiden =-Zeichen, kein Tippfehler):
sudo grubby --update-kernel=ALL --args=slab_common.usercopy_fallback=Y
Ich entschied mich dafür, alle Kernel zu aktualisieren, und fügte als Argument den Kernel-Tweak hinzu, der den Konflikt zwischen dem Nvidia-Treiber und dem Kernel beenden sollte. Um zu sehen, ob grubby seine Arbeit getan hat, oder einfach die Kernel-Konfiguration auf einen bestimmten Boot-Eintrag zu überprüfen, können Sie grubby info gegen die gewünschte Kernel-Version laufen lassen.
sudo grubby --info /boot/vmlinuz-5.0.16-300.fc30.x86_64
index=0
kernel="/boot/vmlinuz-5.0.16-300.fc30.x86_64"
args="ro resume=UUID=a43418bb-1d1b-4d1d-81c3-37e1e5bcd3a6 rhgb quiet nouveau.modeset=0 rd.driver.blacklist=nouveau video=vesa:off slab_common.usercopy_fallback=Y"
root="UUID=cd1c9a6a-6fb5-44c2-8d68-b4a96ff7f0e9"
initrd="/boot/initramfs-5.0.16-300.fc30.x86_64.img"
title="Fedora (5.0.16- 300.fc30.x86_64) 30 (Dreißig)"
id="63155c29865a492b8d8b8d53dab23782-5.0.16-300.fc30.x86_64"
Beim nächsten Start habe ich die Systemkonfiguration überprüft, und die Änderung war da:
cat /proc/cmdline
BOOT_IMAGE=(hd0,msdos8)/boot/vmlinuz-5.0.16-300.fc30.x86_64 root=UUID=cd1c9a6a-6fb5-44c2-8d68-b4a96ff7f0e9 ro resume=UUID=a43418bb- 1d1b-4d1d-81c3-37e1e5bcd3a6 rhgb leise nouveau.modeset=0 rd.driver.blacklist=nouveau video=vesa:off slab_common.usercopy_fallback=Y
Schlussfolgerung
Ich kann nur sagen, ich bin überhaupt nicht glücklich über diese Methode. Es ist umständlich und widerspricht meiner Meinung nach den GRUB-Konventionen. Wenn es eine Standardkonfiguration gibt, sollte diese verwendet werden, und es ist ein einzelner, zentraler Ort, an dem Sie Änderungen vornehmen, die sich auf Ihr System auswirken. Es gibt wirklich keinen Grund, warum es ein separates Tool geben sollte, plus eines, das auf undurchsichtige Weise Anpassungen vornimmt und nicht aufwärtskompatibel ist - neue Kernel oder ein GRUB-Update, was passiert dann?
Abgesehen von der Philosophie haben Sie das, wofür Sie gekommen sind. Wenn Sie aus irgendeinem Grund Änderungen an der Kernel-Befehlszeile in Fedora vornehmen möchten, ist Grubby der bequemste Weg, um eine dauerhafte, systemweite Änderung vorzunehmen. Natürlich können Sie jederzeit spezifische, einmalige Optionen testen, indem Sie einzelne Einträge beim Booten bearbeiten, und wenn Sie zufrieden sind, dass sie funktionieren, machen Sie sie dauerhaft. Wie auch immer, lassen Sie uns dieses Tutorial zu Ende bringen. Pass auf dich auf.