Apakah semua perintah Unix ditulis ulang di Linux?

44

Saya ingin tahu perintah mana yang ditulis ulang untuk Linux dan mana yang disimpan dari Unix?

Jay Harwalkar
sumber
Ini adalah silsilah
Mark Stewart

Jawaban:

93

Tampaknya Anda membingungkan dua bagian OS yang sangat berbeda. Ini bisa dimengerti, karena mereka sering dirujuk secara bergantian, tetapi secara teknis tidak benar, jadi pertanyaan Anda didasarkan pada premis yang salah. Untuk mengeksplorasi sepenuhnya dan semoga menjawab pertanyaan yang mungkin ingin Anda tanyakan, diperlukan pelajaran sejarah singkat.

Pertama, ada UNIX. Pada dasarnya, pada masa itu, UNIX berarti Sistem AT&T UNIX , yang didahulukan. Tetapi AT&T UNIX menjadi non-Gratis, jadi Richard Stallman memulai proyek GNU untuk menulis sistem Unix yang Bebas . Karenanya nama Gnu adalah Bukan Unix , disingkat GNU. Rencana untuk GNU dipublikasikan pada tahun 1983 dan pengembangan dimulai pada tahun 1984 .

Pada awal 1990-an, GNU telah mengimplementasikan kembali sebagian besar utilitas UNIX dari awal. Wikipedia mencantumkan beberapa komponen dari keseluruhan sistem yang tidak ditulis ulang (TeX, X Window System, dan Mach microkernel disebutkan sebagai contoh komponen yang tidak ditulis ulang) tetapi sebagian besar, alat-alat pengguna tanah ditulis ulang dari awal untuk memenuhi tujuan menghindari penggunaan kembali kode AT&T (atau lebih tepatnya, tidak bebas), serta memperluas kemampuan mereka dengan menambahkan opsi baris perintah. Akibatnya, utilitas GNU secara teratur lebih kuat daripada alat yang mereka gunakan untuk mendapatkan inspirasi asli mereka.

Pada saat itu, GNU masih hilang satu komponen vital: sebuah kernel sistem operasi , yang akan memungkinkan segala sesuatu untuk bekerja bersama-sama pada komputer yang sebenarnya tidak menjalankan beberapa OS lainnya. Pada 1991, Linus Torvalds mulai mengerjakan proyek mainan yang akhirnya dikenal sebagai Linux. Pada dasarnya itu adalah proyek sekolah untuk belajar tentang CPU 8080 Intel 80386 yang baru , dan mulai sangat sederhana, tetapi akhirnya mulai berubah menjadi kernel sistem operasi yang sebenarnya dapat digunakan. Tetapi tidak memiliki perangkat lunak pengguna; Linux sendiri tidak menyediakan shell, tidak ada fasilitas startup sistem di luar inisialisasi kernel, tidak ada editor teks, tidak ada antarmuka grafis, tidak ada. Kernel seperti mesin mobil; penting untuk membuat mobil yang bermanfaat, tetapi tidak berguna sendiri (untuk mobil yang bermanfaat, Anda memerlukan hal-hal seperti roda, transmisi, kemudi, tempat duduk pengemudi, tangki bahan bakar atau penyimpan energi lain, dll.). Kernel Linux akhirnya didistribusikan di bawah Lisensi Publik Umum GNU, sama dengan perangkat lunak GNU .

Jadi orang-orang mulai memasangkan keduanya. Anda akan mendapatkan userland seperti Unix, bersama-sama dengan kernel berdasarkan ide-ide dari Unix (termasuk kemiripan yang dekat dengan POSIX ), lengkap dengan kode sumber yang dapat Anda retas pada sebanyak yang Anda inginkan, dan tidak memerlukan biaya apa pun. . Terutama sebelum distribusi Linux menjadi umum, perlu sedikit mengutak-atik untuk mendapatkan sesuatu untuk bekerja, tetapi itu sudah cukup untuk digunakan oleh mereka yang bersedia meluangkan waktu untuk itu.

Saat ini, GNU menyediakan kernelnya sendiri. Anda mungkin belum pernah mendengarnya, tetapi itu disebut GNU Hurd . Tapi Hurd tidak ada di awal 1990-an, ketika Linux mulai mendapatkan daya tarik di antara para penggemar dan penjinak, jadi itu adalah kombinasi dari kernel Linux dan sebagian besar-pengguna lahan GNU yang mendapat perhatian paling besar di antara para pengembang.

Juga, akhir-akhir ini, banyak sistem Unix menginstal, atau mengizinkan administrator untuk menginstal dengan mudah, bagian-bagian dari tanah pengguna GNU. Anda mungkin melihat hal-hal seperti GNU bash, GNU Compiler Collection, GNU C library (vanilla or patched), dan sebagainya, pada sistem yang bukan GNU.

Lebih buruk lagi, beberapa sistem menggunakan kernel Linux tetapi tidak ada GNU userland sama sekali. Untuk contoh yang banyak digunakan ini, pertimbangkan Android OS , yang pada dasarnya adalah kernel Linux yang digabungkan dengan custom userland.

Ini penting karena secara signifikan mengaburkan batas antara GNU, Linux dan berbagai Unix ( hanya ada satu UNIX , tetapi ada banyak Unix dan lebih banyak lagi OS mirip Unix ). Ketika Anda bertanya tentang Linux, Anda benar-benar sangat sering bertanya tentang sistem GNU / Linux. Tetapi pertimbangkan Debian GNU / kFreeBSD , yang menjalankan GNU userland di atas kernel FreeBSD, tidak menggunakan Linux sama sekali. Atau misalnya Solaris, di mana Anda dapat dengan mudah menginstal berbagai paket GNU termasuk misalnya coreutils . Saya pikir Mac OS X juga dikirimkan bersama dengan bagian dari GNU userland. Atau pertimbangkan Android yang disebutkan di atas.

Pada akhirnya, sistem GNU yang dapat digunakan mungkin menjalankan kode non-GNU, dan sistem non-GNU mungkin menjalankan kode GNU, tetapi utilitas GNU tidak mengandung kode non-GNU.

sebuah CVn
sumber
1
Terakhir kali saya menggunakan FreeBSD (tahun lalu) itu tidak menggunakan banyak alat GNU, tetapi set sendiri - misalnya BSD make bukan GNU make.
reinierpost
5
@reinierpost OSX sangat mirip - instalasi biasa berisi sebagian besar versi BSD, tetapi GNU coreutils dan sejenisnya mudah tersedia melalui MacPort dan lainnya. XCode menggunakan LLVM, tetapi juga gcc. Ini rumit :)
MattDMo
1
@reinierpost make tidak terlalu buruk untuk diganti. The C compiler sedikit lebih terlibat. Setidaknya FreeBSD 8.0 menggunakan GCC sebagai kompiler defaultnya ; khusus versi 4.2.1. "Masalah lisensi" yang dimaksud untuk mencegah integrasi versi yang lebih baru ke dalam sistem basis mungkin tentang beralih dari GPL2 + ke GPL3 +, tapi saya belum melihat untuk memastikan.
CVn
3
@ hunter2 Sepertinya tidak diperlukan, berdasarkan penghitungan suara sejauh ini. ;) Saya juga tidak berangkat untuk menulis sejarah lengkap. Minix berperan penting sebagai pengembangan Linux dan sistem bootstrap sebelum Linux menjadi self-hosting, tetapi memiliki sedikit pengaruh pada misalnya hubungan antara Linux, GNU dan UNIX asli, yang lebih sesuai dengan pertanyaan tentang apa.
CVn
3
@ hunter2 Jika kita pergi ke rute itu, maka memang benar bahwa UNIX juga tidak datang terlebih dahulu. Tetapi untuk tujuan menjawab pertanyaan, ini tampaknya pendekatan yang cukup baik. Jawaban kalimat tunggal akan menjadi sesuatu seperti "pada dasarnya segala sesuatu UNIX kecuali TeX dan X yang Anda temukan pada sistem Linux ditulis ulang sebagai bagian dari GNU" tapi saya pikir konteks tambahan menambah nilai, bahkan jika itu membuat jawaban secara signifikan lebih lama daripada benar-benar diperlukan - dan jawabannya masih jauh dari mencakup setiap detail.
CVn