Ya, itu mungkin tetapi mengubah ukuran bagian dan alamat .init.ramfs tidak cukup karena ELF Kernel yang dapat dieksekusi secara statis ditautkan dengan alamat virtual dari awal dan akhir dari bagian initramfs.
Di sumber Linux, kode yang relevan terletak di file sumber iniramfs.c:
void __init populate_rootfs(void)
{
char *err = unpack_to_rootfs(__initramfs_start, __initramfs_end - __initramfs_start, 0);
...
}
Jadi, Anda juga perlu mengubah kedua offset ini dalam kode mesin pemanggilan fungsi unpack_to_rootfs(), yang terletak di bagian .init.text. (hati-hati terhadap entri yang relevan di tabel relokasi! ...jika ada)
Juga, mengacu pada balasan Icarus, manipulasi ukuran 'bagian' initramfs, offset file dan alamat virtual awal, serta dua offset yang disebutkan di atas (argumen untuk fungsi unpack_to_rootfs()), memungkinkan Anda untuk menambahkan
P.S."Lubang" di ruang alamat virtual Kernel yang tersisa setelah memindahkan bagian init.ramfs asli ke alamat virtual awal tinggi yang baru, tidak merugikan apa pun karena memori terkait kemudian dibebaskan oleh fungsi free_initmem(void) yang ditentukan dalam file sumber init.c.