Apa sumber daya terbaik untuk benar-benar memahami Linux secara mendalam


10

Saya telah menjadi pengguna Linux hidup dan mati selama bertahun-tahun. Baru-baru ini, saya telah menggunakannya setiap hari. Saya mencari saran untuk media; buku komersial, informasi gratis, video online dll yang akan membantu saya untuk memahami OS pada level yang lebih dalam. Tolong saran Anda.

Jawaban:


6

Anda akan menemukan beberapa panduan gratis di Proyek Dokumentasi Linux, halaman panduan . Ini adalah daftar pendek yang saya pilih dari sana, tetapi Anda harus menggulir halaman untuk menemukan apa yang Anda butuhkan.

  • Pengantar Linux - A Hands on Guide; Jun 2008
  • Linux on the Road; November 2005
  • Panduan Administrator Sistem Linux; Juli 2005
  • Panduan Script Bash Lanjutan; Mar 2009 (ya, ini bagus untuk memahami linux juga)

Anda harus mencari HOWTO spesifik untuk topik yang Anda minati. Tanggal lain mengurutkan daftar HOWTO .

Ada beberapa permulaan di halaman pemula ulasan Linux .

Akhirnya, ini adalah buku kecil yang tersedia online - Linux Kernel in a Nutshell . Ini dalam bentuk PDF edisi 2007.

Anda harus menggunakan referensi ini hanya sebagai perasa untuk memulai pencarian sendiri untuk hal-hal yang Anda butuhkan.


Terima kasih semuanya atas jawaban yang bagus. Kernel in a Nutshell adalah permata yang nyata. Ini adalah jenis buku yang saya cari.
Stuart Woodward

16

Cara terbaik untuk memahami Linux adalah dengan merusaknya, lalu memperbaikinya.


Tee-hee ... Saya suka itu. Saya suka merusak barang-barang.
Evan Anderson

1
-1 Itu saran yang bagus, tapi itu bukan sumber.
nama pengguna

1
jawaban yang bagus Saya belajar banyak tentang Linux hanya dari mencari-cari dan mencoba berbagai hal. Setelah Anda mengacaukannya, Anda mencari di internet cara untuk memperbaikinya. Karena "Linux" adalah istilah yang luas sehingga dalam hal ini mungkin merujuk lebih ke seluruh sistem operasi dan aplikasi yang berjalan di atasnya, daripada hanya kernel Linux, Sebenarnya tidak ada sumber daya tunggal yang baik yang dapat Anda rekomendasikan.
Kibbee

2
Tetapi ada beberapa pedoman untuk setiap jenis orang yang bisa kita daftarkan. Favorit pribadi saya dimulai dengan distro tersulit yang mungkin, dan kemudian menginstal distro automagic. Melanggar hal-hal bagus untuk belajar, tetapi mengetahui apa yang harus dilanggar untuk mendapatkan pengetahuan khusus, jauh lebih sulit. Seringkali, menghancurkan hal-hal yang kita pelajari adalah hal-hal yang bahkan tidak kita ketahui harus kita pelajari.
voyager

1
Linux yang bebas dan mudah diperbaiki dalam banyak kasus adalah pasti sumber daya. Pengalaman memulai dengan sistem yang rusak dan bisa melihat semua bagiannya (Tidak seperti OS komersial) adalah kekuatan yang sangat besar, dan satu-satunya cara Anda belajar bagaimana meneliti masalah dan merasakan jalan keluarnya adalah dengan melakukannya.
Karl Katzke

10

Saya tidak yakin, ketika Anda mengatakan "level yang lebih dalam", jika Anda berbicara tentang mendapatkan lebih banyak ke baris perintah (beberapa orang tidak pernah meninggalkan GUI yang datang dengan distro mereka, jika Anda bisa membayangkan itu), atau dengan benar-benar hal-hal berpasir tingkat rendah seperti menulis driver kernel. Saya akan mengasumsikan lebih dari yang pertama daripada yang terakhir.

Saya menyarankan Anda untuk menetapkan tujuan yang masuk akal untuk hal-hal yang ingin Anda lakukan menggunakan Linux dan aplikasi yang berjalan di Linux (menjalankan server web, melayani file ke host Windows, melayani DHCP, menjalankan desktop grafis, dll). Adalah keyakinan kuat saya bahwa Anda hanya belajar ketika Anda sedang "melakukan". Setelah Anda memiliki tujuan di benak, mengejar itu. Itu berarti membaca halaman manual (banyak dan banyak halaman manual), dokumentasi "HOWTO", arsip milis, posting blog acak, dan, tentu saja, dokumentasi yang menyertai berbagai program yang Anda instal atau kompilasi untuk dijalankan pada Anda kotak.

Setelah mengajar kursus sertifikasi TI berbasis kelas selama beberapa tahun, saya percaya saya dapat mengatakan dengan beberapa tingkat otoritas bahwa siswa yang saya lihat membuat kemajuan paling besar adalah mereka yang melakukan proyek gila dari desain mereka sendiri, dan belajar di kursi celana mereka.

Seperti yang saya katakan sebelumnya, halaman manual, dokumentasi "HOWTO" ( http://tldp.org/docs.html dan di banyak tempat lain di internet ') dan arsip milis adalah teman Anda. Saya akan menghindari buku-buku yang berbicara tentang kernel internal, setidaknya pada tahap ini. Anda tidak perlu pengetahuan mendalam semacam itu untuk memulai.

Bicaralah dengan orang lain. Server Fault sepertinya menjadi tempat yang bagus untuk mendapatkan saran yang bagus. Ajukan pertanyaan di sini, dan jangan berpikir bahwa Anda akan terlihat bodoh melakukannya. Jika Anda bisa mendapatkan "waktu tatap muka" dengan orang-orang yang terbiasa dengan Linux, lakukanlah. (Meskipun saya akan merekomendasikan Anda mencoba dan memisahkan pendapat dari fakta. Ada banyak "perang suci" di komunitas Linux atas perbedaan pendapat tentang bagaimana melakukan sesuatu seperti di komunitas lain - mungkin lebih, mengingat sifat komunitas .)

Untuk mendapatkan pengetahuan yang benar-benar "mendalam" tentang warisan Unix Linux, Anda dapat menggunakan beberapa administrasi atau manual referensi khusus Unix yang lebih lama. Saya akan menghindari ini sejak awal (setidaknya sampai Anda dapat menghargai sifat historis dari "jalur yang tidak diambil" dengan Linux dibandingkan dengan beberapa sistem operasi yang diturunkan dari Unix).

Tidak tahu apa tingkat keahlian Anda secara keseluruhan, saya akan melemparkan teriakan ke sebuah buku yang saya atau mungkin tidak senang. Saya sangat merekomendasikan "TCP / IP Illustrated" ( http://www.amazon.com/Illustrated-Volumes-Addison-Wesley-Professional-Computing/dp/0201776316 ). Ini sama sekali tidak spesifik untuk Linux, tetapi Anda akan melakukan banyak hal yang berhubungan dengan TCP / IP sehingga mengetahui "dingin" adalah sesuatu yang tidak perlu dipikirkan lagi.

Saya kira, singkatnya, saya mengatakan bahwa tidak ada buku ajaib atau buku, tidak ada video super rahasia yang dipelajari oleh "para master", tetapi sama sekali tidak ada batasan untuk apa yang dapat Anda pelajari jika Anda tetap menggunakannya dan tidak takut untuk membuat tangan Anda kotor.


10

Hanya pengalaman bertahun-tahun bermain dengan komponen individual akan memberi Anda pemahaman yang mendalam. Karena itu, sebagian besar buku-buku Oreilly Press benar-benar ditulis dengan baik dan sempurna jika Anda tidak bodoh dan memiliki lebih dari 24 jam. :)

Ada sebuah proyek bernama Linux From Scratch , yang menunjukkan kepada Anda cara membangun distribusi linux dari nol. Anda mungkin mendidik untuk melakukannya sekali. Ini akan memakan waktu karena Anda perlu mengkompilasi semuanya dari sumber dan Anda akan membuang semuanya pada akhirnya.

Saya menemukan halaman kernel LWN.net sangat berharga untuk mengikuti bagaimana hal-hal bekerja di kernel pada level tinggi.


+1 memilih LFS FTW
bandi

7

Selain menggunakannya setiap hari (Yang menurut saya adalah hal yang hebat!), Saya sarankan Anda mulai memikirkan layanan yang dapat diterapkan untuk jaringan Anda pada kotak linux. Mulailah mendesainnya berdasarkan layanan Linux, riset dan implementasikan setelah Anda siap. Mudah-mudahan akan ada kesalahan dalam prosesnya, dan pengalaman itu akan membantu Anda memahami OS di tingkat yang lebih dalam.


3
Bahkan membangun linux dari awal masuk akal. Coba ini: linuxfromscratch.org
Caterpillar

Wow! Pasti memberi +1 pada itu!
l0c0b0x

+1 untuk membangun Linux dari scrach. Saya belajar banyak tentang proses boot Linux, toolchains, dan pengembangan semu yang tertanam menggunakan uclibc building floppy disket yang diinstal Linux kembali pada akhir 90-an. Bootstrap setiap mesin Linux dari kernel ke atas "dari awal" pasti akan memberi Anda banyak pengalaman hebat.
Evan Anderson

5

Untuk filosofi Unix umum dan pengantar yang sangat bagus untuk baris perintah, ada karya Brian Kernighan dan klasik Rob Pike The Unix Programming Environment .

Juga, situs web IBM DeveloperWorks memiliki lebih dari 900 artikel di bagian Linux-nya. Anda dapat menelusuri daftar artikel untuk topik yang menurut Anda menarik.

Akhirnya, setelah Anda siap untuk memasuki seluk-beluk, pergi ke sumbernya. Ambil kode sumber untuk versi kernel yang Anda gunakan di kernel.org (distribusi Anda juga akan memiliki paket sumber kernel yang dapat Anda instal) dan periksa direktori Dokumentasi. Anda akan menemukan banyak bahan referensi di internal kernel dan pengaturan konfigurasi.


4

Sekolah. Untuk benar-benar memahami sistem Linux, Anda memerlukan beragam latar belakang sistem Ilmu Komputer. Compiler, Arsitektur Komputer dan Sistem Operasi. Dan Anda memerlukan panduan yang dapat menunjukkan kepada Anda apa yang penting dan memperbaiki kesalahpahaman yang Anda miliki atau bentuk.

Setelah Anda memahami cara kerja prosesor modern, dan bagaimana kompiler C mengeksploitasi mereka, Anda dapat menyelami buku-buku seperti Minix 3:

Minix3

Ini adalah versi terbaru dari buku yang menjadi dasar Torvalds, penulis kernel Linux, berdasarkan karyanya. Anda akan belajar tentang komponen dasar dan algoritma dari sistem operasi, dan bagaimana tepatnya menerapkannya: teks dilengkapi dengan pencetakan kode sumber yang hampir lengkap ke Minix untuk referensi dan tujuan pengajaran. Periksa interrupt handler untuk mendapatkan pemahaman lengkap tentang cara kerja sistem dan di mana kontrol mengalir.

Dan sebelum Anda mengejek di sekolah dan Ilmu Komputer, penting untuk dicatat bahwa pekerjaan yang diminta Sistem Operasi umumnya NP-complete. Jadi memahami berbagai macam algoritma yang tersedia sangat penting untuk penyesuaian kinerja, karena tidak akan ada algoritma yang terbukti optimal.

Selain kernel, ada sejumlah area lain. Karena Linux adalah open source, ini adalah tambang emas akademik. Sistem seperti Debian dan Ubuntu menyediakan sumbernya, dan itu sangat sederhana:

apt-get source package-name

Banyak upstreams juga meng-host kode mereka dalam kontrol revisi, sehingga Anda dapat membaca versi terbaru dari sumber program, atau bahkan melihat bagaimana itu dibuat bertahun-tahun yang lalu.


+1 benjolan untuk menyebutkan "Dan Anda memerlukan panduan yang dapat menunjukkan kepada Anda apa yang penting dan memperbaiki segala kesalahpahaman yang Anda miliki atau bentuk." Ini benar-benar adalah OS yang paling baik dipahami oleh tradisi lisan (sayangnya).
Avery Payne

3

The sumber .

Itu, tentu saja, jika Anda maksudkan kernel .

Jika Anda mencoba mempelajari sistem di atas kernel dan API, saya akan mulai belajar di sekolah lama Unix. Mungkin coba FreeBSD / OpenBSD / NetBSD / DragonflyBSD . Minix kecil juga bisa membantu. Kemudian pindah ke Slackware , Arch , Debian dan Gentoo . Mereka semua berbeda ( dan dilengkapi dengan dokumentasi yang bagus ), dan dalam perbedaan itu, keingintahuan Anda akan membuat Anda mencari mengapa demikian, Anda akan mendapatkan banyak pengetahuan teknis, komersial, politik dan sejarah.

Cara lain akan dilakukan /etc, manual Unix lama, dan tentu saja, Google .

Linux dari awal adalah cara hebat learningGNU / Linux.


3

Mulailah membangun distro Anda sendiri. Saya sudah melakukannya sendiri dan Anda tahu? Setelah 4 bulan saya habiskan untuk yang saya tahu tentang Linux internal lebih dari orang-orang di sekitar saya yang menggunakan Linux lebih dari 10 tahun.


3

Belajar di salah satu lingkungan * nix adalah pendekatan holistik . Ini melibatkan serangkaian epifani dan pengalaman . Ini bukan kebetulan. Ini adalah produk sampingan yang disengaja dari desainnya, karena lingkungan aslinya dirancang di sekitar dan untuk programmer komputer. Ini juga merupakan kelemahan terbesarnya, karena fokusnya adalah pada aspek teknis dan bukan pengalaman pengguna. Itu adalah "sebuah rumah dengan kerangka kokoh yang akan bertahan 100 tahun tanpa layanan, namun dindingnya serampangan dan catnya jelas terabaikan".

Bandingkan ini dengan Windows, yang merupakan bayangan cermin dari filosofi ini - lakukan sesuatu yang memberikan pengalaman nyata bagi pengguna, tetapi lindungi mereka dari cara kerja hal-hal dalam. Itu adalah "sebuah rumah dengan hiasan dan cat yang indah, tetapi fondasi yang telah dibangun beberapa kali dengan banyak pekerjaan di sekitar".

Untuk benar-benar mulai belajar, saya menyarankan untuk membangun imej kernel kustom yang memiliki opsi khusus untuk perangkat keras Anda, dan menginstalnya dengan opsi yang Anda inginkan. Anda harus benar-benar berharap masuk ke ini bahwa sesuatu, di suatu tempat akan pecah, dan Anda mungkin atau mungkin tidak dapat mundur ke "normal". Ini adalah bagian yang normal dari proses pembelajaran itu dan Anda harus mendekati ini seolah-olah akan ada banyak hal yang rusak (yaitu jangan menjadikan ini instalasi utama, gunakan drive terpisah atau mesin virtual atau sesuatu ...)

Saya telah melakukan jawaban pada pertanyaan serupa , jadi untuk mengurangi pengetikan, saya akan menghubungkannya di sini . Anda juga akan ingin membaca beberapa paragraf pertama pada halaman ini , yang akan memberi Anda lebih baik merasakan untuk apa yang Anda berada dalam untuk.


2

Mulai baca / letakkan file di /procdan /etc- Anda tidak akan merusak apa pun dengan hanya membaca file (simpan mungkin mengacaukan koneksi terminal / ssh Anda jika Anda menggunakan file yang menghasilkan info biner), dan sebagian besar adalah manusia dapat dibaca ' sysctl -a' Outputnya juga tambang emas. Ketika Anda menemukan sesuatu yang menarik, google atau manuntuk informasi lebih lanjut tentang itu.

Anda dapat menemukan beberapa permata nyata tentang cara kerja kernel dan OS dengan cara ini.

Beberapa petunjuk singkat:

/ etc / inittab
/etc/rcS.d
/etc/rc2.d
/ etc / crontab
/ proc / 1 /viron
/ proc / filesystems
/ proc / meminfo
/ proc / cpuinfo
sysctl -a | grep vm.swappiness
/ etc / default # berbasis debian
/ etc / sysconfig # redhat-based

Tip cepat - beberapa output dalam / proc dipisahkan NUL, dan karenanya sulit dibaca. Gunakan 'tr' untuk mengonversi NUL menjadi baris baru, misalnya:

sudo cat / proc / 1 / environment | tr '\ 0', '\ n'

2

Ada banyak yang harus dipelajari tentang Linux, atau sistem operasi apa pun. Salah satu jenis pembelajaran adalah apa yang saya sebut pembelajaran "mendalam", yang menemukan bagaimana kernel beroperasi, asumsi apa yang dibuatnya, bagaimana berbagai bit berbicara satu sama lain, dan bagaimana ia berurusan dengan perangkat keras. Itu hal-hal kernel. Hal-hal seperti itu sangat berguna untuk mencari tahu mengapa sistem operasi pecah begitu saja. Bahkan, saya mempelajarinya dengan cara yang sama seperti yang dilakukan Karl Katzke . Saya memecahkan barang-barang, dan membuatnya lebih baik.

Untuk pengetahuan semacam ini, Linux cukup mudah. Semuanya didokumentasikan di banyak tempat. Hal yang sama tidak dapat dikatakan cukup untuk Windows, meskipun masih ada banyak dokumen di luar sana untuk itu.

Lalu ada pembelajaran 'berkeliling di OS', yang merupakan tempat pengetahuan tentang bash / sed / awk / regex dan semua hal lainnya berguna. Karena faktanya, sistem operasi jauh lebih dari kernelnya hari ini. Anda memiliki vendor yang menyediakan gumpalan driver. Anda memiliki cara distribusi khusus ini mengemas skrip startupnya. Anda memiliki berbagai mekanisme tambalan / pembaruan. Anda memiliki daemon sistem yang dibutuhkan semua orang, tetapi bukan kernel.

Ini adalah spektrum pengetahuan yang jauh lebih luas daripada kernel-fu sederhana. Bervariasi berdasarkan penyalur sehingga cara kerja Red Hat mungkin tidak berfungsi sama pada Slackware. Di mana file disimpan dapat bervariasi. Seperti apa yang mereka pilih untuk menggantikan 'vi'.

"Belajar Linux" lebih tentang mempelajari seluruh ekosistem daripada sistem operasi sederhana.


1

Saya memiliki buku berjudul "Linux Programming" yang mengajarkan saya lebih banyak tentang OS daripada buku "Learn Linux". Saya berharap saya memiliki nomor ISBN, tetapi itu luar biasa..terutama karena masuk ke pemrograman "mengapa", bukan hanya "bagaimana".

Secara keseluruhan, sebagian besar pembelajaran saya adalah jujur ​​dengan memecahkan dan memperbaikinya. Itu terjadi lambat, dan saya masih belajar hal-hal baru setelah 12 tahun.

Ini jelas suatu proses. Kuncinya adalah menjadi sangat, sangat ingin tahu. Ketika Anda menemukan sesuatu yang Anda tidak kenal, menjadi terbiasa dengannya. Carilah pengetahuan tentang bagaimana dan mengapa itu terus berdetak, dan pelajari juga teknologi yang mendasarinya.


1

Saya menemukan melayang melalui Linux, FreeBSD, OpenBSD, Solaris, dan bahkan berbagai distro Linux lainnya merupakan cara yang baik untuk belajar banyak tentang Linux. Tentang bagaimana hal itu dilakukan secara berbeda. Anda belajar banyak tentang kota asal Anda saat mengunjungi tempat-tempat lain daripada mengetahui di mana Anda berada.


1

Ketika datang ke buku, saya suka O'Reilly, jadi "Referensi Saku Administrasi Sistem Esensial" dan "Administrasi Sistem Linux" adalah titik awal yang memungkinkan.

Salinan Administrasi Jaringan TCP / IP saya adalah yang lebih lama dan saya belum menggunakannya dalam beberapa saat, tetapi saya merasa sangat berguna untuk mendapatkan pemahaman yang lebih mendalam tentang apa yang terjadi.


1

Anda sudah membuat langkah pertama dengan menggunakan Linux sebagai desktop biasa.

Jika Anda ingin memahami bagaimana semua bagian terhubung dan dikonfigurasikan, saya sarankan menjalankan Gentoo . Dari instalasi stage3 biasa, Anda harus mengkompilasi kernel Anda sendiri, menginstal semua layanan Anda (kecuali SSH yang ada di luar kotak), membangun dan mengkonfigurasi X sendiri, dll. Ketika Anda melakukan itu, Anda berakhir dengan pemahaman yang jauh lebih besar dari semua bit yang masuk ke instalasi linux biner. Juga tidak ada salahnya bahwa Gentoo memiliki dokumentasi terbaik dari setiap Distro yang saya temukan, atau portage adalah manajer paket yang luar biasa kuat dan fleksibel.



1

Orang lain menyebutkan ini, dan saya pikir itu hal yang paling membantu saya dengan menggunakan berbagai rasa linux. Jika Anda merasa memiliki pegangan yang wajar di linux, mulailah menggunakan open / net / freebsd.
Adapun alasannya, kebanyakan orang linux yang pernah bekerja sama dengan saya mungkin menggunakan satu atau dua distro linux yang tidak jauh berbeda dari yang lain. Tentu, sebagian besar dari mereka tahu distro-distro itu seperti punggung tangan mereka, tetapi mereka masih bisa terkejut secara mengkhawatirkan dengan hal-hal tertentu. Saya pikir (bukan untuk memulai perang api) bahwa cara BSD dirakit sedikit lebih mudah untuk menemukan "mengapa" dari hal-hal yang dilakukan (ditambah, mengintai di milis bsd mereka menjelaskan bahwa "mengapa" mati ). Ini berujung pada mengubah sudut pandang Anda, mungkin Anda tidak pernah bertanya mengapa hal-hal tertentu terjadi sampai seseorang melakukannya dengan cara yang sama sekali berbeda.


1

Posting ini di Stackoverflow memiliki daftar besar sumber daya Unix / Linux termasuk sebagian besar karya kanonik pada subjek.

Cara lain untuk mempelajari apa yang membuat Linux menandai di belakang layar adalah bekerja melalui Linux From Scratch ( http://www.linuxfromscratch.org/ ). Ini pada dasarnya adalah serangkaian latihan dalam menginstal dan mengkonfigurasi berbagai komponen sistem linux secara manual dan merupakan pengantar yang sangat baik untuk mempelajari mur dan baut dari.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.