Saya tertarik memodifikasi kernel internal, menerapkan tambalan, menangani driver perangkat dan modul, untuk kesenangan pribadi saya.
Apakah ada sumber daya komprehensif untuk peretasan kernel, yang ditujukan untuk programmer berpengalaman?
linux
kernel
linux-kernel
Adam Matan
sumber
sumber
Jawaban:
Perjalanan seribu kode-mil harus dimulai dengan satu langkah. Jika Anda bingung tentang buku-buku berikut ini, jangan khawatir, pilih salah satu dari pilihan Anda. Tidak semua yang berkeliaran hilang. Karena semua jalan akhirnya terhubung ke jalan raya , Anda akan menjelajahi hal-hal baru dalam perjalanan kernel Anda saat halaman berjalan tanpa menemui jalan buntu, dan akhirnya terhubung ke
code-set
. Baca dengan pikiran sadar dan ingat: Kode bukan Sastra .Apa yang tersisa bukanlah benda atau emosi atau gambar atau gambar mental atau memori atau bahkan sebuah ide. Itu adalah sebuah fungsi. Suatu proses semacam. Aspek Kehidupan yang bisa digambarkan sebagai fungsi dari sesuatu yang "lebih besar". Dan karena itu, tampaknya itu tidak benar-benar "terpisah" dari sesuatu yang lain. Seperti fungsi pisau - memotong sesuatu - pada kenyataannya, tidak terpisah dari pisau itu sendiri. Fungsi ini mungkin atau mungkin tidak digunakan saat ini, tetapi berpotensi TIDAK PERNAH terpisah.
Algoritma Solovay Strassen Derandomized untuk Uji Primality :
Baca untuk tidak bertentangan dan berselisih; atau untuk percaya dan menerima begitu saja; atau untuk menemukan pembicaraan dan wacana; tetapi untuk menimbang dan mempertimbangkan. Beberapa buku harus dicicipi, yang lain untuk ditelan, dan beberapa untuk dikunyah dan dicerna: yaitu, beberapa buku harus dibaca hanya dalam bagian-bagian, yang lain untuk dibaca, tetapi tidak ingin tahu, dan beberapa untuk dibaca seluruhnya , dan dengan ketekunan dan perhatian.
Pembaca harus berpengalaman dengan konsep sistem operasi ; pemahaman yang adil tentang proses yang berjalan lama dan perbedaannya dengan proses dengan ledakan eksekusi yang singkat; toleransi kesalahan saat memenuhi kendala real time lembut dan keras. Saat membaca, penting untuk memahami dan
n/ack
pilihan desain yang dibuat oleh sumber kernel linux di subsistem inti.Sinyal [dan] sinyal adalah jejak penderitaan, keputusasaan, horor, dan kegilaan yang bergantung pada platform (~ Anthony Baxte). Dikatakan bahwa Anda harus menjadi ahli C yang mengevaluasi diri, sebelum menyelam ke dalam kernel. Anda juga harus memiliki pengalaman yang baik dengan Linked Linked, Stacks, Antrian, Red Blacks Trees, Hash Functions, et al.
Keindahan dan seni dari sumber Kernel Linux terletak pada kebingungan kode yang disengaja yang digunakan bersama. Ini sering diperlukan untuk menyampaikan makna komputasi yang melibatkan dua atau lebih operasi dengan cara yang bersih dan elegan. Ini terutama benar ketika menulis kode untuk arsitektur multi-core.
Video Ceramah tentang Sistem Real-Time , Penjadwalan Tugas , Kompresi Memori , Memory Barriers , SMP
Tugas Anda pada dasarnya adalah membuat antarmuka komunikasi berkecepatan tinggi antara perangkat keras dan kernel perangkat lunak. Anda harus membaca lembar data / manual referensi perangkat keras untuk memahami perilaku perangkat dan kontrol serta status datanya dan menyediakan saluran fisik. Pengetahuan tentang Majelis untuk arsitektur khusus Anda dan pengetahuan yang adil tentang VLSI Hardware Deskripsi Bahasa seperti VHDL atau Verilog akan membantu Anda dalam jangka panjang.
T : Tapi, mengapa saya harus membaca spesifikasi perangkat keras?
A : Karena, "Ada jurang karbon dan silikon yang tidak dapat dijembatani oleh perangkat lunak" - Rahul Sonnad
Namun, hal di atas tidak menimbulkan masalah bagi Algoritma Komputasi ( kode driver - pemrosesan setengah-bawah ), karena dapat sepenuhnya disimulasikan pada Mesin Universal Turing . Jika hasil yang dihitung berlaku di domain matematika , itu adalah kepastian bahwa itu juga berlaku di domain fisik .
Video Ceramah tentang Driver Perangkat Linux (Lec. 17 & 18), Anatomi Driver KMS Tertanam , Kontrol Pin dan Pembaruan GPIO , Kerangka Jam Umum , Tulis Driver Linux Nyata - Greg KH
Memahami paket walk-through di kernel adalah kunci untuk memahami jaringan kernel. Memahami itu adalah suatu keharusan jika kita ingin memahami Netfilter atau IPSec internal, dan banyak lagi. Dua struktur paling penting dari lapisan jaringan kernel linux adalah:
struct sk_buff
danstruct net_device
Brian W. Kernighan, dalam makalah Unix for Beginners (1979) mengatakan, "Alat debugging yang paling efektif masih dipikirkan dengan cermat, ditambah dengan pernyataan cetak yang ditempatkan dengan bijaksana". Mengetahui apa yang harus dikumpulkan akan membantu Anda mendapatkan data yang tepat dengan cepat untuk diagnosis cepat. Ilmuwan komputer yang hebat Edsger Dijkstra pernah mengatakan bahwa pengujian dapat menunjukkan keberadaan bug tetapi tidak adanya mereka. Praktik investigasi yang baik harus menyeimbangkan kebutuhan untuk menyelesaikan masalah dengan cepat, kebutuhan untuk membangun keterampilan Anda, dan penggunaan ahli materi pelajaran yang efektif.
Ada saat-saat Anda mencapai titik terendah, sepertinya tidak ada yang berhasil dan Anda kehabisan semua opsi Anda. Kemudian debugging yang sebenarnya dimulai. Bug mungkin memberikan istirahat yang Anda butuhkan untuk melepaskan diri dari fiksasi pada solusi yang tidak efektif.
Video Ceramah tentang Kernel Debug dan Profiling , Analisis Core Dump , Debugging Multicore dengan GDB , Mengontrol Kondisi Ras Multi-Core , Debugging Electronics
Pada sistem UNIX, semuanya adalah file; jika sesuatu bukan file, itu adalah proses, kecuali untuk pipa dan soket bernama. Dalam sistem file, file diwakili oleh
inode
, semacam nomor seri yang berisi informasi tentang data aktual yang membentuk file. Linux Virtual File SystemVFS
menyimpan informasi dalam memori dari setiap sistem file saat terpasang dan digunakan. Banyak kehati-hatian harus diambil untuk memperbarui sistem file dengan benar karena data di dalam cache ini dimodifikasi ketika file dan direktori dibuat, ditulis dan dihapus. Cache yang paling penting adalah Buffer Cache, yang terintegrasi ke dalam cara masing-masing sistem file mengakses perangkat penyimpanan blok yang mendasarinya.Video Ceramah tentang Sistem Penyimpanan , Sistem File Flash Friendly
Kriptografi membentuk dasar kepercayaan online. Peretasan mengeksploitasi kontrol keamanan baik dalam elemen teknis, fisik atau berbasis manusia. Melindungi kernel dari program lain yang sedang berjalan adalah langkah pertama menuju sistem yang aman dan stabil, tetapi ini jelas tidak cukup: beberapa tingkat perlindungan harus ada di antara berbagai aplikasi pengguna lahan. Eksploitasi dapat menargetkan layanan lokal atau jarak jauh.
Video Ceramah tentang Kriptografi dan Keamanan Jaringan , Ruang Nama untuk Keamanan , Perlindungan Terhadap Serangan Jarak Jauh , Secure Embedded Linux
Anda mungkin tidak berpikir bahwa programmer adalah seniman, tetapi pemrograman adalah profesi yang sangat kreatif. Ini kreativitas berbasis logika. Pendidikan ilmu komputer tidak dapat membuat siapa pun menjadi programmer ahli seperti mempelajari kuas dan pigmen dapat membuat seseorang menjadi pelukis ahli. Seperti yang sudah Anda ketahui, ada perbedaan antara mengetahui jalan dan berjalan di jalan; itu sangat penting untuk menyingsingkan lengan baju Anda dan membuat tangan Anda kotor dengan kode sumber kernel. Akhirnya, dengan pengetahuan kernel yang Anda peroleh , ke mana pun Anda pergi, Anda akan bersinar .
Peniru yang tidak dewasa meniru; coders dewasa mencuri; coders yang buruk merusak apa yang mereka ambil, dan coders yang baik membuatnya menjadi sesuatu yang lebih baik, atau setidaknya sesuatu yang berbeda. Coder yang baik mengelas pencuriannya ke dalam seluruh perasaan yang unik, sangat berbeda dari yang darinya robek.
Video Ceramah tentang Resep Kernel
Linux_source_dir/Documentation/*
sumber
Linux Kernel Newbies adalah sumber yang bagus.
sumber
Saya sarankan Anda membaca " Linux Kernel in a Nutshell ", oleh Greg Kroah-Hartman dan " Understanding the Linux Kernel ", oleh Robert Love. Harus dibaca :)
sumber
Linux Device Drivers adalah sumber yang bagus. Itu akan memberi Anda cara lain untuk masuk ke pekerjaan batin. Dari kata pengantar:
sumber
Lihat Proyek Dokumentasi Linux . Terutama "panduan modul Kernel Linux".
sumber
Linux Kernel 2.4 Internal adalah sumber online lain untuk dilihat. Tampaknya mengambil pendekatan 'ground up' yang cantik, dimulai dengan booting. Di sini TOC:
Dan, untuk membuatnya lebih manis, ada Linux Kernel Development Edisi Ketiga oleh Robert Love out dan Slashdot memiliki ulasan.
sumber
Mulai dengan Linux Kernel Primer oleh Claudia Salzberg et al. Bagus untuk memulai dengan untuk pemula. Buku Robert Love jelas bukan buku yang harus dimulai oleh pemula. Buku terakhir berada di atas tingkat menengah.
sumber