Ja, es ist möglich, aber das Ändern der .init.ramfs-Abschnittsgröße und -Adressen reicht nicht aus, da die ausführbare ELF-Datei des Kernels statisch mit der virtuellen Adresse von Start und Ende verknüpft ist der initramfs-Sektion.
In den Linux-Quellen befindet sich der entsprechende Code in der Quelldatei iniramfs.c:
void __init populate_rootfs(void)
{
char *err = unpack_to_rootfs(__initramfs_start, __initramfs_end - __initramfs_start, 0);
...
}
Daher müssen Sie diese beiden Offsets auch im Maschinencode des Aufrufs der Funktion unpack_to_rootfs() ändern, die sich im Abschnitt .init.text befindet. ( Achten Sie auf relevante Einträge in der Umzugstabelle! ...falls vorhanden )
In Bezug auf die Antwort von Icarus ermöglicht Ihnen die Manipulation der Größe des initramfs-Abschnitts, des Datei-Offsets und der virtuellen Startadresse sowie dieser beiden oben genannten Offsets (Argumente für die Funktion unpack_to_rootfs()) das Hinzufügen Ihrer eigenen benutzerdefinierten
P.S.Das "Loch" im virtuellen Adressraum des Kernels, das nach dem Verschieben des ursprünglichen init.ramfs-Abschnitts auf eine neue hohe virtuelle Startadresse verbleibt, schadet nichts, da der zugehörige Speicher später durch die definierte free_initmem(void)-Funktion freigegeben wird in der Quelldatei init.c.