GNU/Linux >> Belajar Linux >  >> Linux

Kemas ulang gambar sistem file dari vmlinux.bin (initramf tertanam) tanpa membangun kembali?

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 LEBIH BESAR initramfs yang dimuat DI ATAS alamat virtual maksimum file ELF. Bidang "Ukuran Memori" pada Header Program (PHeader) perlu dimodifikasi juga, untuk mencerminkan bagian initramf yang lebih besar yang ditambahkan setelah akhir ruang alamat virtual lama.

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.


Linux
  1. Linux – Apakah Header Vmlinux Berisi Panjang Gambar Kernel?

  2. Cara Meratakan Gambar .pdf Dari Baris Perintah?

  3. Bagaimana cara mengekstrak hanya konten mentah dari bagian ELF?

  1. Bagaimana cara menghapus X byte dari akhir file besar tanpa membaca seluruh file?

  2. Perbedaan antara initrd dan initramfs?

  3. Bagaimana Anda menggunakan teguk di terminal untuk mengubah ukuran gambar, tanpa meningkatkannya?

  1. Saya ingin mengubah DPI dengan ImageMagick tanpa mengubah ukuran byte sebenarnya dari data gambar

  2. Bagaimana cara mengekstrak nama file tanpa ekstensi dari path lengkap?

  3. Me-nolkan konten hard drive tanpa merusak sistem file