Saya telah mendengar bahwa kita dapat menyesuaikan Linux (katakanlah Ubuntu) seperti yang kita inginkan dengan mengubah kode sumbernya dan dapat membuat OS yang sepenuhnya baru. Saya telah mengunduh kode sumber kernel linux dari situs web www.kernel.org. Tetapi dengan melihatnya, saya tidak dapat memahami apa pun, ada begitu banyak direktori, file di dalam file (karena saya pikir akan ada satu program besar tunggal). Saya ingin melakukan ini sebagai proyek perguruan tinggi dan saya juga ingin berkontribusi untuk Linux dengan membuat perubahan yang diperlukan di dalamnya. Tetapi setelah menanyakan pertanyaan ini di beberapa situs, mereka mengatakan bahwa kode sumber Linux sangat besar. Anda dapat mencoba minix. Sekarang saya sangat bingung.
Tolong beri saya saran dengan detail tentang bagaimana saya harus memulai perjalanan ini (mengubah kode sumber untuk menyesuaikan Linux) dengan langkah-langkah yang diperlukan, bersama dengan beberapa buku tingkat pemula.
Jawaban:
Selamat datang di unix.stackexchange.com!
Tidak ada jawaban mudah untuk pertanyaan Anda, dan orang-orang yang jauh lebih baik daripada saya telah menulis seluruh buku tentang masalah kernel Linux dan sistem operasi pada umumnya.
Tentang ruang lingkup proyek: menulis sistem operasi bukanlah tugas yang mudah! Bahkan OS dengan sengaja minimal seperti Minix adalah hal yang cukup kompleks! Untuk memberi Anda gambaran tentang Linux, pikirkan tentang program C yang telah Anda tulis sejauh ini. Kursus universitas rata-rata cenderung menjadi beberapa ribu baris C paling banyak. Saya pikir proyek tahun terakhir saya adalah sekitar 30-35.000 baris C ++. Kernel Linux kira-kira 13.000.000 baris kode C.
Mengapa semuanya ada di file terpisah? Proyek yang cukup besar disimpan dalam file terpisah untuk alasan logistik dan praktis. Pertimbangkan saja memuat 13.000.000 file baris ke dalam editor! Sebelum menangani proyek besar seperti Linux, Anda harus mengasah keterampilan C Anda ke titik di mana pertanyaan 'mengapa banyak file' menjawab sendiri. Anda juga harus dapat membaca kode C , bukan hanya menulisnya. (Lebih sulit dari yang terlihat pada awalnya)
Anda pasti harus sangat mahir dalam C. Kernel dikelola oleh ribuan orang, dan Anda akan dipanggil untuk memahami idiom C pribadi masing-masing (diberikan, dalam standar pengkodean kernel yang cukup kaku, tetapi masih - setiap orang memiliki gaya pemecahan masalah mereka sendiri).
Setelah Anda mendapatkan C fu Anda, pastikan Anda memahami sistem operasi. Ini akan membantu Anda memahami kode. Tidak semua Linux sangat penting. Kernelnya cukup kecil! Apa itu gemuk:
Satu masalah yang akan Anda temukan segera adalah bahwa komponen-komponen ini tidak begitu mudah untuk dicabut, diganti, dan pasang kembali bersama-sama. Ada banyak keterkaitan. Singkatnya, mengubah bit dari kernel itu rumit.
Alasan orang menyarankan Minix kepada Anda adalah sederhana: ini adalah sistem operasi penuh, tetapi tidak dibebani oleh kebutuhan sistem yang sekompleks Linux. Kode ini kecil, tetapi masih menyediakan fungsionalitas penuh. Bagaimanapun, versi pertama Linux terinspirasi oleh Minix.
Tentu, Minix memiliki lebih sedikit dukungan perangkat keras hari ini. Terus? Itu adalah anugerah! Komputer modern melakukan virtualisasi dengan sangat baik. Gunakan itu untuk keuntungan Anda: VM untuk menjalankan Minix sangat ringan, itu akan membuat pengembangan menjadi dawdle.
Jika proyek Anda adalah untuk membangun sistem operasi, Anda bisa melakukan lebih buruk daripada memulai dengan mempelajari Minix. Anda mungkin juga ingin membeli dan membaca buku yang ditulis Minix untuk menemani, ' Sistem Operasi Modern Andrew Tanenbaum '.
Anda juga harus menetapkan target dan mendefinisikan istilah Anda dengan tepat . Jika definisi OS Anda sendiri adalah Microsoft (OS dengan GUI dan perangkat lunak lengkap), Anda mungkin berada dalam proyek yang sangat panjang! Ratusan ribu orang telah bekerja sejak 1960-an untuk membawa kita ke tempat kita sekarang.
Akhirnya, ingat seruan pertempuran Ilmuwan Komputer: ' jangan pernah menemukan kembali roda! '(kami ingin membuat pengecualian saat belajar, tentu saja. Dan untuk bersenang-senang :))
sumber
Periksa proyek Linux Dari Awal . Seperti namanya, ini berisi semua detail yang diperlukan untuk membangun distribusi Linux Anda sendiri
sumber
Saya pikir hal pertama yang perlu Anda tetapkan adalah "perubahan apa yang ingin Anda bawa ke OS". Sampai Anda memutuskan ini, Anda tidak akan benar-benar pergi ke mana pun. Tidak ada "satu jalur" pembelajaran.
Selanjutnya, saya pikir Anda harus mendefinisikan lebih baik apa yang Anda maksud dengan OS. Sebagian besar (sebagian besar) dari kode sumber Ubuntu berada di luar Linux. Linux hanya kernel , (kadang-kadang disebut sebagai Sistem Operasi , terutama di kalangan akademik, maka kebingungan), dan karena itu ia memiliki pekerjaan "sederhana" :
Setiap perubahan lain akan terjadi pada tingkat yang berbeda, apakah itu utilitas pengguna inti (sering disebut utils ), GUI, aplikasi dasar sebuah distro, dll.
Namun, jika Anda masih belajar tentang cara meretas kernel, Anda mungkin harus mulai dengan pertanyaan ini , pertanyaan dengan pilihan tertinggi di situs ini;)
sumber
Ini mungkin sedikit di luar intinya, tetapi jika Anda ingin mempelajari tentang kernel Linux dan mulai mengembangkannya, Anda harus benar-benar melihat ke pemula kernel . Ini adalah situs yang memberi Anda wawasan tentang mekanisme kernel (seperti yang dilakukan Alexios dengan sangat baik), tetapi juga mari Anda memilih tugas kecil untuk ditangani (menjadi yang disebut sebagai janitor kernel). Ini cara yang bagus untuk belajar, dan saya sangat merekomendasikannya!
sumber