Sejarah Unix dan Linux: Dari 1969 hingga Kini
Ketahui evolusi sistem operasi Unix bermula di Bell Labs pada tahun 1969 sehingga kemunculan Linux. Artikel ini membincangkan kesan saman 1992 dan peralihan industri ke Linux.
Sejarah ringkas Unix dan Linux
Sejarah Unix dan Linux merupakan perdebatan panjang mengenai siapa yang berhak memiliki kod sumber. Unix bermula di Bell Labs pada tahun 1969. Linux bermula di Helsinki pada tahun 1991 dan tidak berkongsi sebarang kod asal tersebut. Apa yang berpindah antara kedua-duanya adalah reka bentuk dan set antara muka yang diterbitkan: fail, proses, paip, dan shell yang menggabungkan program-program kecil. Unix tersebar melalui universiti pada tahun 1970-an kerana penyelesaian antimonopoli tahun 1956 melarang AT&T (American Telephone and Telegraph) daripada menjual perisian, justeru Bell Labs melesenkan kod sumber tersebut dengan harga murah. Unix akhirnya digunakan di mana-mana walaupun tidak dimiliki oleh sesiapa di luar AT&T, dan pertikaian pelesenan yang menyusul menentukan sistem seakan Unix percuma yang akhirnya berada di dalam rak pelayan anda.
1969: PDP-7 terpakai, dan idea yang kekal
Bell Labs menarik diri daripada projek Multics pada tahun 1969. Multics (multiplexed information and computing service) merupakan sistem perkongsian masa berskala besar yang dibina bersama MIT dan General Electric, dan pihak Labs memutuskan bahawa projek tersebut terlalu besar untuk disiapkan. Ken Thompson mengekalkan idea yang disukainya dan menggugurkan yang lain, lalu menulis sistem perkongsian masa kecil pada komputer mini PDP-7 yang tidak lagi digunakan. Dennis Ritchie menyertai beliau. Nama Unix merupakan satu jenaka yang ditujukan kepada Multics.
Pada tahun 1970, sistem tersebut dipindahkan ke PDP-11 yang dibeli oleh pihak Labs untuk jurutaip jabatan paten, kerana alat pemprosesan teks lebih mudah mendapat dana berbanding sistem pengendalian. Mesin tersebut mempunyai 24 KB memori teras, yang dibahagikan antara sistem dan program pengguna. Kemalangan dalam pembiayaan inilah sebabnya manual Unix yang pertama, bertarikh November 1971, merupakan satu set dokumen berformat, dan itulah sebabnya anda masih menaip man 5 crontab. Nombor seksyen dalam manual tersebut adalah nombor seksyen yang terdapat dalam manual anda.
Dua perubahan menjadikan reka bentuk ini kekal. Paip (pipes) diperkenalkan dalam Versi 3 pada tahun 1973, kerana Doug McIlroy telah berhujah selama bertahun-tahun bahawa anda sepatutnya boleh menyambungkan program dari hujung ke hujung, dan Thompson menambah operator | supaya output satu program menjadi input kepada program seterusnya. Kemudian Versi 4, lewat tahun 1973, ditulis semula dalam C. Sistem pengendalian yang ditulis dalam bahasa mudah alih boleh dipindahkan ke perkakasan yang tidak direka untuknya, itulah sebabnya Unix bertahan lebih lama daripada setiap mesin yang menjadi tempat asalnya.
Mengapa Unix tersebar: AT&T tidak dibenarkan menjualnya
Dekri persetujuan tahun 1956 menyelesaikan kes antimonopoli terhadap AT&T. AT&T mengekalkan monopoli telefonnya dan menerima satu had sebagai balasan: ia perlu menjauhi perniagaan selain telekomunikasi. Perisian adalah salah satu daripada perniagaan tersebut. Oleh itu, apabila universiti meminta Unix, Bell Labs tidak dapat menjualnya sebagai produk. Ia melesenkan kod sumber dengan bayaran nominal, tanpa sokongan dan tanpa jaminan.
Kesan daripada perkara ini adalah besar, dan ia bukanlah apa yang dirancang oleh AT&T. Sixth Edition Unix, yang dikeluarkan pada tahun 1975, sampai ke ratusan jabatan sains komputer dengan kod sumber penuh. John Lions di University of New South Wales mencetak kod sumber kernel tersebut dengan ulasan baris demi baris dan mengajar daripadanya. Satu generasi mempelajari cara sistem pengendalian berfungsi dengan membaca sistem yang sebenar.
Kemudian lesen tersebut berubah. Lesen Seventh Edition pada tahun 1979 melarang penggunaan kod sumber dalam kelas, jadi ulasan Lions diedarkan sebagai salinan fotostat daripada salinan fotostat yang lain. Inilah bentuk keseluruhan cerita tersebut. Unix berada di mana-mana dan tidak bebas pada masa yang sama, jadi setiap penambahbaikan yang dibuat oleh sesiapa sahaja merupakan penambahbaikan kepada kod proprietari orang lain.
Berkeley: bahagian Unix yang anda taip sebenarnya
Ken Thompson menghabiskan tahun akademik 1975 hingga 1976 di University of California, Berkeley, dan meninggalkan kumpulan Unix yang sangat aktif. Computer Systems Research Group (CSRG) di Berkeley menghantar pita rakaman yang mengandungi penambahbaikan tempatan, dan pita tersebut menjadi BSD, iaitu Berkeley Software Distribution. Bill Joy menulis sebahagian besar kerja awal: 1BSD pada tahun 1978, kemudian 2BSD pada tahun 1979 yang membawa editor vi dan C shell.
C shell merupakan asal usul bagi !! dan !$. Bash mewarisi sintaks tersebut, itulah sebabnya pengembangan sejarah bash masih mengejutkan orang yang menaip tanda seru di dalam tanda petikan berkembar selepas empat puluh tahun lebih.
DARPA (Agensi Projek Penyelidikan Lanjutan Pertahanan AS) kemudian membayar Berkeley untuk memasukkan protokol internet baharu ke dalam Unix. 4.2BSD, yang dikeluarkan pada Ogos 1983, menyertakan TCP/IP (transmission control protocol over internet protocol) dan antara muka pengaturcaraan aplikasi soket. Setiap servis rangkaian pada pelayan anda masih memanggil socket(), bind(), listen() dan accept() mengikut urutan tersebut, kerana Berkeley memilih nama-nama itu pada tahun 1983.
Satu perincian menentukan dekad seterusnya. Pita BSD bukanlah satu sistem yang lengkap. Ia merupakan set tambahan kepada Unix milik AT&T, dan anda memerlukan lesen sumber AT&T yang sah untuk menjalankannya secara undang-undang. Berkeley menggantikan bahagian AT&T dengan kodnya sendiri selama beberapa tahun, fail demi fail. Sama ada penggantian itu benar-benar lengkap adalah persoalan yang kemudiannya dibawa ke mahkamah.
1984: perpecahan, kemudian perang Unix
Bell System telah dipecahkan pada 1 Januari 1984, dan dekri persetujuan yang menghalang AT&T daripada terlibat dalam perniagaan perisian turut berakhir. AT&T kini boleh menjual Unix sebagai produk, dan mereka melakukannya. Lesen sumber komersial menjadi mahal, jadi Unix tidak lagi menjadi perkara murah yang diberikan oleh universiti kepada pelajar.
Para vendor telah pun melakukan fork terhadapnya. Setiap syarikat stesen kerja menghantar Unix mereka sendiri pada perkakasan mereka sendiri, jadi menjelang lewat 1980-an, program yang ditulis untuk satu sistem memerlukan porting ke sistem seterusnya. Industri ini terbahagi kepada dua kem standard pada 1988, Open Software Foundation di satu pihak dan Unix International di pihak yang lain, dan menghabiskan masa bertahun-tahun mengeluarkan sistem yang tidak serasi sambil berbalah tentang Unix siapa yang sebenar.
POSIX (portable operating system interface) muncul daripada kekacauan itu. IEEE 1003.1 diterbitkan pada 1988, dan ia mencatatkan perkara yang mesti dilakukan oleh sistem seakan-Unix: panggilan sistem, kelakuan shell, utiliti standard, dan antara muka pustaka C. Ini lebih penting daripada kedengarannya, kerana standard adalah spesifikasi dan tiada lesen yang melindunginya. Tiga tahun kemudian, seorang pelajar menulis kernel berdasarkan dokumen-dokumen tersebut.
Minix, dan kelompangan yang ditinggalkannya
Andrew Tanenbaum melancarkan Minix pada tahun 1987 sebagai sistem pengajaran untuk buku teks sistem pengendalian beliau. Minix merupakan sistem seakan-Unix yang kecil, kod sumbernya disertakan bersama buku tersebut, dan ia boleh dijalankan pada PC murah yang dimiliki oleh para pelajar. Ia sah untuk dibaca di dalam bilik darjah, berbeza dengan Seventh Edition Unix yang tidak lagi dibenarkan.
Minix sengaja dikekalkan dalam saiz yang kecil kerana ia perlu boleh diterangkan di dalam sebuah buku, dan Tanenbaum menolak tampalan (patches) yang akan menjadikannya sistem pengeluaran. Lesennya juga bukan percuma: anda perlu membeli buku tersebut, dan pengagihan semula Minix yang telah diubah suai bukanlah hak anda untuk ditentukan. Jadi, menjelang tahun 1991, seorang pelajar boleh membaca kernel seakan-Unix yang berfungsi tetapi tidak boleh membina sebarang hasil yang kekal di atasnya.
GNU mempunyai segala-galanya kecuali kernel
Richard Stallman mengumumkan projek GNU pada September 1983, dengan matlamat untuk membina sistem lengkap yang bebas dan menyerupai Unix. Menjelang tahun 1991, GNU telah menghasilkan kebanyakan komponen yang mengelilingi kernel: pengkompil GCC, pustaka GNU C, utiliti binari, dan bash, iaitu shell yang ditulis oleh Brian Fox pada tahun 1989 dan shell yang masih digunakan oleh pelayan anda semasa log masuk. Kernel GNU, iaitu Hurd, merupakan komponen yang sentiasa tertangguh.
GNU General Public License versi 2 diterbitkan pada Jun 1991. Peraturannya ringkas. Anda boleh menggunakan kod tersebut dan mengubahnya, dan jika anda mengedarkan hasilnya, anda mesti mengedarkan kod sumber di bawah terma yang sama. Peraturan tersebut menjadi titik penting dalam cerita ini dua bahagian dari sekarang.
Ogos 1991: hantaran ke comp.os.minix
Pada 25 Ogos 1991, seorang pelajar di Helsinki membuat hantaran ke kumpulan Usenet comp.os.minix:
Hello everybody out there using minix -
I'm doing a (free) operating system (just a hobby, won't be big and
professional like gnu) for 386(486) AT clones.Versi 0.01 dikeluarkan pada September 1991. Ia tidak berkongsi kod dengan Unix mahupun Minix. Ia merupakan kernel baharu untuk 386, dibangunkan pada mesin Minix, ditulis berdasarkan antara muka POSIX, dan digandingkan dengan alatan GNU yang sedia ada. Tanenbaum memberitahu Torvalds pada Januari 1992 bahawa kernel monolitik merupakan reka bentuk yang lapuk. Beliau mempunyai hujah yang tepat mengenai reka bentuk, namun Torvalds menjawab soalan yang berbeza: apakah yang berjalan dengan baik pada satu komputer murah yang dimiliki oleh seorang pelajar.
Pada Februari 1992, versi 0.12 dilesenkan semula di bawah GPL. Torvalds sejak itu menyifatkan tindakan tersebut sebagai keputusan terbaiknya. Lesen asal Linux melarang sebarang pertukaran wang, yang akan menghalang vendor CD dan syarikat sokongan yang muncul kemudian. GPL membenarkan perdagangan sambil memaksa setiap perubahan yang diedarkan kembali ke dalam pokok kod kongsi yang sama.
Tuntutan mahkamah: April 1992 hingga Februari 1994
Berkeley mengeluarkan Networking Release 2 (Net/2) pada Jun 1991: hampir merupakan sistem BSD yang lengkap, dengan fail-fail yang berasal daripada AT&T dikeluarkan. Enam fail kernel didapati hilang. Bill dan Lynne Jolitz menulis pengganti dan mengeluarkan 386BSD 0.0 pada Mac 1992, kemudian 386BSD 0.1 pada 14 Julai 1992. Sebuah sistem BSD yang percuma, lengkap, dan matang untuk 386 kini wujud, pada saat Linux masih lagi merupakan kernel hobi. Berkeley Software Design, Inc. (BSDi) menjual binaan komersial yang disokong, BSD/386, dan mengiklankannya dengan nombor telefon 1-800-ITS-UNIX.
Pada April 1992, Unix System Laboratories (USL), anak syarikat AT&T yang ketika itu memiliki Unix, menyaman BSDi di mahkamah persekutuan di New Jersey atas dakwaan rahsia perdagangan dan tanda dagangan Unix. Tuntutan tersebut kemudian dipinda untuk menambah Regents of the University of California. Universiti tersebut membuat tuntutan balas di California pada 1993, dengan hujah bahawa AT&T telah menyertakan kod Berkeley di dalam System V tanpa memberikan kredit seperti yang dikehendaki oleh lesennya sendiri.
Teras perundangan kes ini terungkai pada 1993. Hakim Dickinson Debevoise menolak permohonan injunksi awal USL, dengan pandangan bahawa tuntutan hak cipta USL ke atas kod 32V yang lebih lama mungkin tidak sah, kerana AT&T telah mengedarkan kod tersebut selama bertahun-tahun tanpa notis hak cipta. Novell membeli USL daripada AT&T pada pertengahan 1993, dan pihak pengurusan Novell mahukan pertikaian tersebut ditamatkan. Kes itu diselesaikan pada Februari 1994. Daripada kira-kira 18,000 fail dalam pengedaran Berkeley, tiga fail telah dibuang dan kira-kira tujuh puluh fail menerima notis hak cipta USL.
Berkeley mengeluarkan 4.4BSD-Lite pada Jun 1994 dan ia bersih dari segi undang-undang. FreeBSD dan NetBSD, kedua-duanya diasaskan pada 1993 berdasarkan kod Net/2 yang dipertikaikan, kemudian terpaksa membina semula sistem mereka di atas asas yang baharu, yang memakan masa hampir sepanjang baki tahun 1994. Linux 1.0 dikeluarkan pada Mac 1994, di tengah-tengah proses pembinaan semula tersebut.
Mengapa Linux menguasai pelayan dan bukannya BSD?
Tuntutan mahkamah merupakan jawapan yang popular, dan ia adalah sebahagian daripada jawapan tersebut. Antara April 1992 hingga Februari 1994, sesiapa yang memilih Unix percuma untuk sesuatu produk perlu menimbang tuntutan undang-undang daripada peguam AT&T berbanding kernel daripada seorang pelajar Finland yang tidak boleh disaman oleh sesiapa pun. Itu adalah tempoh masa tepat apabila web muncul dan apabila pengagihan Linux pertama muncul: Slackware pada Julai 1993, Debian pada Ogos 1993, kemudian Red Hat dan SUSE.
Empat perkara lain adalah sama penting dengan kes mahkamah tersebut.
- Perkakasan. Linux menyasarkan PC 386 komoditi sejak baris kod pertamanya, dan itulah perkakasan yang menjadi murah. Pusat graviti BSD adalah VAX dan stesen kerja, manakala port 386 merupakan usaha luar oleh dua orang individu.
- Lesen. GPL mewajibkan syarikat yang menghantar kernel yang diubah suai untuk menerbitkan perubahan tersebut, jadi kerja vendor mengalir kembali ke dalam satu pohon kod. Lesen BSD membenarkan syarikat menyimpan perubahan mereka secara peribadi, dan syarikat memang menyimpannya.
- Model pembangunan. Torvalds menggabungkan patch daripada orang asing dengan pantas dan membuat keluaran secara berterusan. 386BSD membuat keluaran dengan cukup perlahan sehingga penggunanya sendiri melakukan fork sebanyak dua kali pada 1993, menjadi NetBSD dan FreeBSD, dan sekali lagi menjadi OpenBSD pada 1995.
- Momentum. Pembangun pergi ke tempat di mana pembangun lain sudah berada, dan pemacu ditulis untuk sistem yang mempunyai paling ramai pengguna.
Bersikap jujurlah mengenai soalan teknikal ini. BSD pada 1994 merupakan sistem yang lebih lengkap, dengan asas yang koheren, sejarah yang didokumentasikan, dan kod rangkaian yang mengambil masa bertahun-tahun untuk dikejar oleh Linux. Tiada sesiapa memilih Linux pada 1994 kerana ia lebih baik. Orang memilihnya kerana ia tersedia, tidak terbeban, berjalan pada perkakasan yang sudah mereka miliki, dan bertambah baik setiap minggu.
Apa yang dikekalkan oleh BSD, dan di mana ia berjalan sekarang
BSD terus berkembang. Apa yang hilang hanyalah kedudukan lalai. Bukti paling jelas ada pada mesin anda sendiri: projek OpenBSD menulis OpenSSH pada tahun 1999, dan ia merupakan pelayan SSH pada hampir setiap sistem Linux yang diedarkan hari ini, itulah sebabnya tabiat kunci SSH yang perlu dipelajari adalah sama pada kedua-dua keluarga sistem tersebut.
Netflix menyalurkan video daripada perkakas FreeBSD. Junos, sistem pengendalian pada penghala Juniper, berasaskan FreeBSD. Perisian sistem PlayStation diturunkan daripada FreeBSD. macOS dan iOS Apple membawa kod BSD dalam kernel dan merentasi userland. Lesen permisif yang menyebabkan BSD kehilangan pokok pelayan kongsi telah meletakkan kod BSD di dalam banyak perkakasan yang tidak pernah menyebutnya.
Jika anda membuat pilihan hari ini, persoalannya adalah praktikal dan bukannya sejarah. Membandingkan Linux dan FreeBSD sebagai pelayan tertumpu kepada ZFS, jails, pokok ports, dan sejauh mana perisian pihak ketiga mengandaikan Linux sebagai asasnya. FreeBSD 15 sebagai pelayan ialah sistem semasa yang diselenggara, bukannya pameran muzium. Dan Linux berbanding Windows Server ialah persoalan berasingan dengan jawapan yang bergantung pada tindanan aplikasi anda.
Reka bentuk tahun 1969 yang anda gunakan pada VPS hari ini
Setiap perkara ini lebih tua daripada kebanyakan orang yang menggunakannya.
- Paip (pipe).
who | wc -lmengira pengguna yang log masuk kerana Unix Versi 3 pada tahun 1973 membolehkan output satu program menjadi input kepada program lain. - Bahagian manual.
man 1 lsdanman 5 crontabmenggunakan skema penomboran daripada manual bulan November 1971. - Pemisahan sistem fail.
/usrwujud kerana cakera root pada PDP-11 itu penuh pada tahun 1971 dan pembangun memindahkan fail ke pek cakera kedua. Pengedaran (distributions) sejak itu telah membatalkan pemisahan tersebut: jalankanls -ld /binpada Ubuntu 24.04 atau Debian 13 dan anda akan mendapat pautan simbolik keusr/bin. - Panggilan soket (socket calls). Berkeley menulisnya untuk 4.2BSD pada tahun 1983, dan setiap daemon rangkaian masih menggunakannya.
- POSIX. Skrip
#!/bin/shyang ditulis berdasarkan standard tersebut berjalan tanpa perubahan pada Linux, FreeBSD, macOS, dan Solaris, kerana standard itulah perkara yang dilaksanakan oleh kesemuanya.
Apabila anda menyewa pelayan peribadi maya dan log masuk, anda sedang menaip pada antara muka yang direka untuk mesin dengan memori 24 KB dan jabatan paten untuk dilayani. Ia bertahan kerana antara muka tersebut diterbitkan, didebatkan, diseragamkan, dan kemudian dilaksanakan semula dari awal oleh orang yang tidak pernah dibenarkan melihat kod asal.
FAQ
Adakah Linux mengandungi sebarang kod asal Unix?
Tidak. Linus Torvalds menulis kernel tersebut dari awal bermula pada tahun 1991, dengan menyasarkan antara muka POSIX dan bukannya mana-mana sumber AT&T. Warisan Unix adalah dari segi reka bentuk dan antara muka yang diterbitkan: fail, proses, paip, dan nama panggilan sistem. Alat GNU di sekeliling kernel tersebut juga ditulis dari awal, bermula pada tahun 1983. Kebebasan itulah sebabnya litigasi AT&T mengenai kod BSD tidak pernah menyentuh Linux sama sekali.
Bilakah tuntutan mahkamah AT&T terhadap BSD berlaku, dan adakah ia mematikan BSD?
USL, anak syarikat AT&T yang memiliki Unix, menyaman BSDi pada April 1992 dan kemudian menambah University of California sebagai defendan. Pada tahun 1993, hakim menolak injunksi awal, dengan memutuskan bahawa tuntutan hak cipta ke atas kod 32V yang lebih lama kemungkinan besar tidak sah. Novell membeli USL pada pertengahan 1993 dan menyelesaikan kes tersebut pada Februari 1994, dengan tiga fail daripada kira-kira 18,000 fail dibuang dan kira-kira tujuh puluh fail diberikan notis hak cipta baharu. Ia tidak mematikan BSD. Ia membekukan penggunaan BSD selama dua tahun apabila dunia sedang memilih sistem Unix percuma.
Mengapa Linux menguasai pelayan dan bukannya BSD?
Kepastian undang-undang adalah salah satu sebabnya: sepanjang tahun 1992 dan 1993, Linux tidak membawa sebarang tuntutan mahkamah manakala BSD membawa satu. Sebab lain ialah 386 sebagai sasaran sejak hari pertama, GPL yang menarik perubahan vendor kembali ke dalam satu pohon tunggal, dan proses penggabungan yang cukup pantas untuk mengekalkan minat penyumbang sementara 386BSD berpecah kepada tiga arah. Merit teknikal bukanlah faktor penentu, kerana BSD merupakan sistem yang lebih lengkap pada tahun 1994.
Adakah FreeBSD masih berbaloi untuk dijalankan hari ini?
Ya, dan atas sebab-sebab yang konkrit: ZFS yang disepadukan dengan sistem asas, jails sebagai model pengasingan yang matang, sistem asas yang dibangunkan sebagai satu unit yang koheren, dan dokumentasi yang kekal tepat. Kosnya ialah kerja keserasian, kerana kebanyakan perisian pelayan pihak ketiga, alat kontena, dan sokongan vendor mengandaikan Linux. Pilih FreeBSD apabila kerja storan dan rangkaiannya berbaloi dengan kos tersebut, bukannya kerana kesetiaan kepada keturunan yang lebih lama.