Saya akan mengatakan Anda sedang bermimpi. Masalah utamanya adalah RAM yang terbatas.
Pada tahun 2004, Eric Beiderman berhasil mendapatkan booting kernel dengan RAM 2,5MB, dengan banyak fungsionalitas dihapus.
Namun, itu di x86, dan Anda berbicara tentang ARM. Jadi saya mencoba membangun kernel ARM sekecil mungkin, untuk platform 'serbaguna' (salah satu yang paling sederhana). Saya menonaktifkan semua opsi yang dapat dikonfigurasi, termasuk yang Anda cari (USB, WiFi, SPI, I2C), untuk melihat seberapa kecil hasilnya. Sekarang, saya hanya mengacu pada kernel di sini, dan ini tidak termasuk apapun komponen ruang pengguna.
Kabar baiknya:itu akan muat di flash Anda. zImage yang dihasilkan adalah 383204 byte.
Berita buruknya:dengan RAM 256kB, itu tidak akan bisa booting:
$ 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 melakukan dekompresi, apalagi mengalokasikan memori untuk melakukan booting, apalagi menjalankan sesuatu yang berguna.
Salah satu solusinya adalah dengan menggunakan dukungan eksekusi-di-tempat (CONFIG_XIP), jika sistem Anda mendukungnya (yakni, dapat mengambil instruksi langsung dari Flash). Namun, itu berarti kernel Anda harus pas dengan flash yang tidak terkompresi, dan 734kB> 700kB. Selain itu, bagian .data dan .bss totalnya 66 kB, menyisakan 190 kB untuk yang lainnya (yakni, semua struktur data yang dialokasikan secara dinamis di kernel).
Itu baru kernelnya. Tanpa driver yang Anda butuhkan, atau ruang pengguna apa pun.
Jadi, ya, Anda akan membutuhkan lebih banyak RAM.
IMO, kamu sedang bermimpi. Apalagi dengan USB, jaringan dan 802.11/wifi. Saya hanya berpikir Anda tidak bisa melakukan itu dan M3 benar-benar luar biasa.
OpenWRT adalah salah satu distro Linux terkecil dan paling dapat disematkan yang saya tahu untuk jaringan dan sulit untuk mendapatkannya di bawah 2MB, terutama dengan Wifi.
Coba cari chip ARM kelas atas jika itu yang benar-benar Anda inginkan atau gunakan Broadcom atau SoC Atheros yang saat ini umum digunakan di router.
Apakah Anda memiliki MMU pada prosesor? Jika tidak, Anda mungkin ingin melihat:http://www.uclinux.org/ yang seharusnya memberi Anda ukuran kernel yang jauh lebih kecil dari yang disebutkan. Ini bekerja untuk beberapa chip Atmel CortexM3 sehingga mungkin bekerja untuk Anda. Saya belum menggunakannya jadi ini hanya spekulatif. Doh, saya baru saja melihat pertanyaan itu telah diperbarui - baik jika Anda tidak memiliki MMU (yang mungkin tidak Anda miliki), Anda tidak dapat menggunakan kernel "normal" dan Anda perlu menggunakan ucLinux.