Saya akan mengatakan Anda sedang bermimpi. Masalah utama adalah keterbatasan RAM.
Pada tahun 2004, Eric Beiderman berhasil mendapatkan boot kernel dengan RAM 2.5MB , dengan banyak fungsi dihapus.
Namun, itu pada x86, dan Anda sedang berbicara tentang ARM. Jadi saya mencoba membangun kernel ARM sekecil mungkin, untuk platform 'serbaguna' (salah satu yang paling sederhana). Saya mematikan semua opsi yang dapat dikonfigurasi, termasuk yang Anda cari (USB, WiFi, SPI, I2C), untuk melihat seberapa kecil yang didapat. Sekarang, aku hanya mengacu pada kernel di sini, dan ini tidak termasuk setiap komponen userspace.
Berita baiknya: ini akan cocok dengan flash Anda. zImage yang dihasilkan 383.204 bytes.
Berita buruknya: dengan 256kB RAM, itu tidak akan bisa di-boot:
$ size obj/vmlinux
text data bss dec hex filename
734580 51360 14944 800884 c3874 obj/vmlinux
Segmen .text lebih besar dari RAM Anda yang tersedia, sehingga kernel tidak dapat mendekompresi, apalagi mengalokasikan memori untuk boot, apalagi menjalankan apa pun yang bermanfaat.
Salah satu solusinya adalah menggunakan dukungan execut-in-place (CONFIG_XIP), jika sistem Anda mendukungnya (yaitu, ia dapat mengambil instruksi langsung dari Flash). Namun, itu berarti kernel Anda harus sesuai dengan yang tidak terkompresi dalam flash, dan 734kB> 700kB. Selain itu, bagian .data dan .bss total 66kB, meninggalkan sekitar 190kB untuk yang lainnya (yaitu, semua struktur data yang dialokasikan secara dinamis di kernel).
Itu hanya kernel. Tanpa driver yang Anda butuhkan, atau ruang pengguna apa pun.
Jadi, ya, Anda akan membutuhkan sedikit lebih banyak RAM.