Kann ich ein zweites initramfs laden und als root einlegen, um das Original beim Laden von CentOS 7 LiveCD zu ersetzen?

417
Locane

Bitte lassen Sie mich wissen, ob diese Frage umformuliert werden muss. Ich habe über die niedrigsten Ladestufen für Linux und Systemd gelesen.

Ich beschäftige mich derzeit mit einer Einschränkung in grubx64.efi - Es kann keine erste RAM-Festplatte von 1,2 Gigabyte, der Größe der LiveCD meines Unternehmens, zugewiesen werden.

Mein Gedanke für eine Lösung ist, zuerst eine kleinere LiveCD-Ramdisk zu laden, eine benutzerdefinierte Initrd von ~ 300 Megabyte oder so, und innerhalb dieser Custom Initrd ist sie so eingerichtet, dass sie die "echte" LiveCD von 1,2 Gigs lädt und die IT als Root-Datei einbindet System und entfernen Sie das alte.

Ich habe mich über die Funktionsweise von Systemd und den Linux-Boot-Prozess informiert, um herauszufinden, wie ich diesen Übergang in CentOS 7 ausführen könnte, aber die genauen Befehle zum Aufruf und die Stellen, an denen Änderungen vorgenommen werden sollen, sind für mich nicht offensichtlich .

Kann man das sogar manuell tun?

1
Sie verwenden die Ausdrücke * "initramfs" * und * "initrd" * (oder * "ramdisk" *) austauschbar, was falsch ist. Eine Ramdisk muss zugewiesen werden und hat eine feste Größe. Ein Ramfs (oder tmpfs) wird jedoch nur durch den verfügbaren Speicher eingeschränkt. Siehe https://superuser.com/questions/211071/what-is-the-difference-zwischen-ramdisk-und-ramfs und https://www.kernel.org/doc/Documentation/filesystems/ramfs-rootfs-initramfs .TXT sawdust vor 6 Jahren 0
Danke für den Kommentar @sawdust. Meines Wissens ist es so, dass moderne initrds, insbesondere für LiveCDs, eigentlich nur RAM-Dateisysteme sind, die als "initrd.img" bezeichnet werden. Ist eine CentOS LiveCDs initrd.img eine echte Ramdisk? Deshalb verweise ich auf eine "benutzerdefinierte initrd". Locane vor 6 Jahren 0

1 Antwort auf die Frage

0
Locane

Nach einigem Hin und Her mit der Grub-Mailingliste entdeckte ich, dass Sie ein Squashfs-Image von einem Remote-Server mithilfe von Kernel-Parametern bereitstellen können.

Ich habe Legacy und EFI PXE so eingerichtet, dass Kernel und Initrd im PXEBOOT-Verzeichnis des CentOS 7.4 ISO (Kernel 3.10.0-693) verwendet werden. Zusammengenommen sind sie etwa 60 MB oder so.

Dann legte ich die Datei squashfs.img aus dem Root-Dateisystem ab, das ich eigentlich in einem http-zugänglichen Verzeichnis auf demselben Server verwenden wollte.

Dann benutzte ich 2 Kernel-Parameter (die mir die Mailing-Liste zeigt), damit der CentOS-Kernel das squashfs-Image als Root-Dateisystem mounten kann. Der Kernel ist klug genug, um zu wissen, dass dies live:bedeutet, und erstellt ein temporäres (und sehr fragiles - dieses Teil noch nicht herausgefunden; ein Gig von Schreibvorgängen führt dazu, dass es schreibgeschützt wird), im RAM-Dateisystem, mit dem grundlegende Lese- / Schreiboperationen ausgeführt werden Schreiben. Ich habe diese Parameter zum PXE-Menüeintrag hinzugefügt:

rootfstype=auto root=live:http://path/to/squashfs.img 

Das war's. Das war die Magie, die mir gefehlt hat.