Sì, è possibile ma cambiare la dimensione e gli indirizzi della sezione .init.ramfs non è sufficiente perché l'eseguibile ELF del kernel è staticamente collegato con l'indirizzo virtuale di inizio e fine della sezione initramfs.
Nei sorgenti Linux il relativo codice si trova nel file sorgente iniramfs.c:
void __init populate_rootfs(void)
{
char *err = unpack_to_rootfs(__initramfs_start, __initramfs_end - __initramfs_start, 0);
...
}
Quindi è necessario modificare anche questi due offset nel codice macchina dell'invocazione della funzione unpack_to_rootfs(), che si trova nella sezione .init.text. (fai attenzione a eventuali voci rilevanti nella tabella di ricollocazione! ...se ne esiste una)
Inoltre, in riferimento alla risposta di Icarus, la manipolazione della dimensione della sezione initramfs, dell'offset del file e dell'indirizzo virtuale iniziale, oltre a questi due offset sopra menzionati (argomenti della funzione unpack_to_rootfs()), consente di aggiungere il proprio
P.S.Il "buco" nello spazio degli indirizzi virtuali del kernel rimanente dopo aver spostato la sezione init.ramfs originale in un nuovo indirizzo virtuale iniziale alto, non danneggia nulla perché la memoria associata viene successivamente liberata dalla funzione free_initmem(void) definita nel file sorgente init.c.