Apa perbedaan utama antara BSD dan GNU / Linux userland?

38

Saya telah membaca banyak di Unix & Linux tentang BSD dan GNU, dll. Tapi saya masih tidak mengerti apa perbedaan yang sebenarnya dan praktis antara BSD dan GNU, meskipun fakta bahwa mereka sering disebutkan. Bisakah seseorang menjelaskan?

Saat menjawab, mohon jelaskan koneksi historis, mengingat bahwa saya belum hidup cukup lama untuk mengalami saat ketika GNU / Linux bukan UNIX arus utama (kecuali OS X).

strugee
sumber
2
Saya memposting daftar perbedaan dari GNU / Linux di OS X di lingkungan baris perintah di sini: reddit.com/r/commandline/comments/4jydnw/… .
nisetama

Jawaban:

28

Istilah "userland" dapat merujuk ke banyak hal dalam konteks yang berbeda, tetapi di sini saya menafsirkan "GNU userland" vs "BSD userland" sebagai set default, minimum program yang datang dengan distribusi.

Perbedaan utama yang besar adalah bahwa kedua lahan pengguna mulai dengan kode sumber yang sama sekali berbeda. Kode sumber kucing GNU Kode sumber kucing NetBSD . Hanya dari program konsep sederhana, Anda dapat melihat bahwa kucing NetBSD menggunakan bendera baris perintah huruf tunggal tradisional. Program GNU cenderung memiliki flag satu huruf, tetapi juga --something-longopsi jenis. Program-program GNU juga cenderung menuju kompatibilitas POSIX.

Perbedaan dalam kode sumber akan memberikan dua perilaku yang berbeda pada pengguna.

Sepertinya NetBSD (setidaknya) menggunakan versi libc-nya sendiri, pustaka C standar. Saya mendapatkan lebih dari kepala saya di sini, tetapi libc dan menghubungkan dinamis anehnya saling terkait. Sekali lagi, kode sumber yang berbeda akan menyebabkan perilaku yang berbeda.

Saya berpikir bahwa sebagai pengguna shell, Anda akan menemukan bahwa itu psakan bertindak berbeda, dan lsmungkin memberikan Anda output yang sedikit berbeda dari sebelumnya. Anda harus menemukan flag baris perintah yang setara untuk beberapa program, jika Anda menggunakan --long-optionjenis flag baris perintah.

Secara historis, pemahaman saya adalah bahwa BSD userland turun lebih langsung dari V6 dan V7 Bell Labs Unix, melalui port 32V ke perangkat keras VAX. GNU userland lebih baru, ditulis setidaknya sebagai reaksi terhadap upaya AT&T untuk menjaga kode rahasia yang dijaga ketat di awal 80-an. Setelah divestasi Sistem Bell 1983, AT&T mencoba "menguangkan" Unix. Bagian dari itu adalah melisensikan kode sumber dengan cara yang mencegah sebagian besar orang melihatnya. Richard Stallman dan yang lainnya memiliki masalah dengan ini. Proyek GNU mereka ada secara khusus untuk menciptakan sistem seperti Unix yang dapat dibagikan secara bebas.

Sementara itu, pada tahun 1993, AT&T menggugat sistem University of California atas sistem BSD ('B' adalah Berkeley, tempat University of California berada). Orang-orang di Berkeley telah mengganti semua sumber asli AT&T dengan kode baru, dan kode baru itu menjadi leluhur dari setidaknya tanah pengguna NetBSD. AT&T dan UCB mencapai penyelesaian pada tahun 1994, diungkapkan kepada publik pada tahun 2004.

Secara alami, setidaknya ide melakukan penyerbukan silang, jadi setidaknya ada kesamaan konseptual antara GNU dan BSD pengguna lahan, tetapi kasus sudut pasti berbeda.

Bruce Ediger
sumber
1
Kedua tautan Anda menunjuk ke satu lokasi.
jadi apakah itu cenderung untuk penggunaan shell praktis? bendera panjang dan kotak sudut?
strugee
12
Pengalaman saya juga bahwa GNU lebih memperhatikan skalabilitas. Mungkin itu dianggap sebagai "kasus sudut" juga, tetapi memang sangat menyebalkan ketika Anda sedtersedak input panjang atau grepsegfault pada data biner.
tripleee
satu perbedaan besar adalah, bahwa GNU tidak pernah memiliki Kernel sendiri sementara BSD berbasis dan membangun pada kernel mereka sendiri, yang, sebagian, banyak digunakan dalam sistem unix komersial. MAC OS X menggunakan Darwin sebagai Kernel berbasis BSK misalnya.
visualisasi
@visualikasi Ada GNU HURD tapi belum dirilis
Dmitry Kudriavtsev