Bagaimana Linux modern berbeda satu sama lain

Selama lebih dari 15 tahun saya telah bekerja untuk Laporan Cepat dan oleh sifat pekerjaan saya, saya sering harus berurusan dengan Linux, memberikan dukungan untuk salah satu produk. Saya sudah mengenal Linux lebih lama - saya pertama kali menginstal Slackware pada tahun 1997. Oleh karena itu, memiliki beberapa pengalaman, saya ingin berbagi pendapat Anda tentang bagaimana, menurut pendapat saya, distribusi Linux modern berbeda satu sama lain. Segala sesuatu yang dijelaskan dalam artikel ini adalah pendapat subjektif dan tidak mengklaim sebagai kebenaran absolut.



Sistem operasi Linux melacak sejarahnya kembali ke tahun 1991, ketika siswa Finlandia Linus Torvalds mulai mengembangkan sistem operasi baru, terinspirasi oleh ide-ide Unix dan Minix. Pilihan sukses lisensi bebas menentukan keberhasilan usahanya - puluhan dan ratusan penggemar bergabung dengan pengembangan, masing-masing membawa sesuatu yang baru. Selanjutnya, perusahaan besar bergabung dengan pengembangan - Intel, IBM dan lainnya. Alasan pasti yang mendorong para pemimpin industri untuk mendukung sistem operasi gratis tidak diketahui oleh saya, tetapi "lidah jahat" mengatakan bahwa banyak perusahaan memutuskan untuk memindahkan Microsoft, yang pada saat itu memiliki monopoli mutlak dalam sistem operasi untuk komputer desktop.



Evolusi kernel Linux dinyatakan dalam beberapa baris



gambar



Mungkinkah Linux, tanpa dukungan dari master industri, telah menjadi seperti sekarang ini? Jauh dari kenyataan - orang-orang tua ingat perang paten antara Operasi Santa Cruz dan perusahaan yang mendukung Linux. SCO kalah perang ini dan tidak ada lagi.



Jumlah komitmen ke inti oleh perusahaan



gambar



Dengan demikian, selama masa hidupnya, sistem operasi Linux telah mengalami evolusi yang panjang dan sekarang telah menjadi sistem operasi yang populer yang dapat menggantikan Windows untuk menyelesaikan banyak tugas vital pengguna.



Sebelum kita mulai membandingkan distribusi Linux modern, kita harus mendefinisikan dua aspek penting - aspek pertama terdiri dari apa sistem operasi, dan yang kedua adalah dari sudut pandang apa yang akan kita bandingkan. Yang kami maksudkan dengan kit distribusi adalah solusi lengkap yang terdiri dari kernel OS, server grafis (server-X), lingkungan (seperangkat program yang disediakan), utilitas instalasi, dan konfigurasi awal. Dimungkinkan untuk membandingkan distribusi dari sudut pandang pengguna akhir, administrator sistem, dan pemrogram aplikasi.



Linux dari sudut pandang administrator sistem



Pada awal perkembangannya, Linux adalah banyak teknolog dan imam teknologi dengan pengetahuan khusus tentang pemrograman dan administrasi. Cikal bakal Linux adalah sistem operasi Unix, dan seorang spesialis dengan pengalaman dalam administrasi Unix dapat dengan mudah mengatur dan mengkonfigurasi sistem. Ini tidak dapat diakses oleh rata-rata pengguna, dan proses administrasi baginya adalah sesuatu yang mirip dengan sihir. Linux modern telah menjadi user-friendly - proses instalasi bermuara untuk menjawab beberapa pertanyaan, dan seringkali cukup dengan menyetujui opsi konfigurasi yang ditawarkan oleh installer, cukup dengan menjawab semua pertanyaan secara positif - installer akan menganalisis konfigurasi perangkat keras dan memilih driver serta parameter konfigurasi yang diperlukan. Biasanya kit distribusi berisi paket perangkat lunak yang siap digunakan,disediakan dalam bentuk arsip DEB atau RPM yang berisi, di samping program itu sendiri, skrip konfigurasi dan informasi tentang dependensi pada perpustakaan pihak ketiga. Namun, ada pengecualian, misalnya, distribusi Gentoo disediakan sebagai sumber ketika semua program dan membuat aturan, dan sistem operasi itu sendiri secara harfiah dibangun di komputer pengguna untuk konfigurasi prosesornya. Pertanyaan tentang keefektifan metode semacam itu kontroversial, kami tidak akan membahasnya, saya hanya akan mencatat bahwa ini hanya salah satu dari derajat kebebasan yang dinyatakan oleh masyarakat - pengguna bebas memilih "apakah itu sepadan dengan lilin". Secara umum, format paket RPM dan DEB serupa, dan ketika memilih kit distribusi, Anda dapat mengabaikan hal ini. Dengan pengecualian langka - terkadang itu terjadibahwa pembuat program, untuk beberapa alasan, tidak menyediakan untuk versi kedua pemasang dan hanya ada dalam format RPM (RedHat Linux dan turunannya) atau DEB (Debian Linux dan turunannya). Dalam hal ini, Anda mungkin perlu upaya untuk menginstal program seperti itu - bahkan secara manual membongkar paket instalasi, Anda mungkin akan menemukan dependensi yang tidak puas. Menginstal program semacam itu akan membutuhkan banyak upaya, dan jika terjadi kesalahan, mencoba mengganti pustaka yang diperlukan, Anda dapat menyebabkan sistem crash. Untungnya, situasi ini sangat langka dan 99,9% pengguna Linux tidak akan pernah menghadapi masalah ini. Selain itu, semua produsen distribusi terkenal menyimpan repositori mereka dengan serangkaian program yang kaya, di mana setiap program dikompilasi dan diuji untuk versi distribusi tertentu.



Jadi, kita tahu bahwa salah satu perbedaan antara Linux adalah format paket. Namun, dari sudut pandang administrator sistem, ada satu lagi perbedaan - format skrip startup. Dari keluarga sistem operasi Unix, Linux memiliki dua format yang bersaing - gaya Sistem V dan gaya BSD. Untuk memahami apa ini, mari kita lihat cara kerjanya. Boot loader memuat kernel OS dan mentransfer kontrol ke sana, kernel memulai dan memulai proses pertama - init. Sebenarnya, alih-alih init, Anda dapat menyelipkan proses apa pun, misalnya, bash. Dalam hal ini, kita mendapatkan sesuatu seperti sistem konsol single-user, tasking tunggal tanpa jaringan dan tanpa antarmuka grafis dan dengan sistem file root read-only. Selain itu, beberapa perangkat keras dalam hal ini mungkin tidak berfungsi jika driver untuknya tidak ada di kernel, tetapi dimuat sebagai modul.Dalam mode operasi klasik, proses init membaca file / etc / inittab dan, sesuai dengannya, memulai proses startup sistem - me-mount partisi, memuat driver, menginisialisasi antarmuka jaringan, memulai program layanan (yang sebelumnya disebut daemon), memuat subsistem grafik. Init melakukan ini tidak secara langsung, tetapi menggunakan konsep runlevel dan skrip khusus. Biasanya ada hingga enam runlevel - mode eksekusi yang menggambarkan mode operasi sistem - startup, pengguna tunggal, pengguna multi dengan subsistem jaringan, pengguna multi dengan antarmuka grafis. Bergantung pada kondisi penggunaan, administrator dapat menetapkan runlevel standar, yang akan beralih ke sistem setelah boot,biasanya mode multi-pengguna dengan jaringan dan antarmuka grafis untuk desktop dan mode multi-pengguna dengan jaringan untuk server. Dalam skrip-skrip ini perbedaan terletak antara gaya SystemV dan BSD. Namun, memiliki pengetahuan tentang format inittab, Anda dapat melihat isi skrip dan memahami bagaimana memulai, berhenti, dan transisi antara runlevels sistem bekerja.



Pada 2010, para insinyur di RedHat mengembangkan pengganti init, layanan systemd. Layanan ini telah membawa fitur-fitur baru ke sistem:



  • layanan yang diaktifkan soket ( menggantikan pelengkap inetd);
  • meluncurkan layanan sesuai jadwal ( menggantikan cron pelengkap);
  • bekerja dengan pengawas waktu perangkat keras (menggantikan pengawas);
  • perubahan root (menggantikan chroot);
  • volume otomatis dan sumber daya jaringan ( menggantikan pelengkap mount dan fstab);
  • jurnalctl - layanan logging;
  • systemd-analysis - analisis startup layanan (termasuk kecepatan pemuatan (baik dari sistem dan layanan individual), rendering dari awal layanan, dll.);
  • systemd-boot - UEFI bootloader (pengganti grub dan lilo).


Saat ini, sebagian besar distribusi Linux telah beralih ke systemd, dari distribusi yang dulu populer hanya Slackware yang menolak transisi ke subsistem baru.



Dengan demikian, transisi ke systemd, seolah-olah, menghapus salah satu perbedaan antara Linux - sistem skrip startup dan mengarah ke penyatuan. Pada saat yang sama, dukungan untuk skrip startup klasik tetap dipertahankan - misalnya, beberapa volume untuk pemasangan dapat ditentukan secara klasik melalui / etc / fstab, sementara volume lainnya dapat dipasang menggunakan alat systemd.



Di masa lalu, sysadmin dulu berdebat sistem mana yang lebih baik dari SystemV atau BSD, tetapi sekarang perdebatan telah mereda. Sysadmin yang berpengalaman akan dapat mengkonfigurasi sistem apa pun, tetapi untuk pemula di Web, ada cukup informasi yang mengungkapkan aspek konfigurasi Linux.



Linux dari perspektif pengguna



Dari sudut pandang pengguna akhir, Linux sedikit berbeda. Mari kita lihat lebih dalam pertanyaannya. Subsistem grafis awalnya opsional di Unix. Unix sering dijalankan pada komputer yang kuat, dan pengguna terhubung dengannya melalui terminal-X. Interaksi terjadi melalui jaringan - program dijalankan pada komputer host, menerima informasi tentang penekanan keyboard dan peristiwa mouse, dan sebagai tanggapan mengirim perintah ke terminal untuk menggambar grafik primitif dan teks. Terminal grafis adalah perangkat mahal dan langka, sehingga komputer pribadi menjadi populer sebagai terminal. Ngomong-ngomong, ini adalah poin menarik yang sering menyebabkan kebingungan - X-server dieksekusi pada terminal, bukan pada host. Program itu sendiri berjalan di host, yang menggunakan pustaka xlib,menyediakan antarmuka tingkat rendah dasar untuk bekerja dengan server grafis. Antarmuka ini cukup rendah, memperkenalkan konsep jendela, mis. area persegi panjang layar, dapat menampilkan teks vektor dalam berbagai font, dan juga menyediakan gambar berbagai grafik primitif - titik, garis, persegi panjang, lingkaran, dan gambar.



Karena primitif grafis dasar cukup sederhana, ini telah menyebabkan munculnya perpustakaan widget - perpustakaan ini memberikan tingkat abstraksi yang lebih tinggi dan sangat menyederhanakan program penulisan dengan antarmuka grafis. Sebagai contoh, perpustakaan X Athena Widgets menjadi bagian dari sistem grafis Sistem X Window. Perpustakaan ini memperkenalkan konsep tombol, tombol radio, menu, bidang input dan primitif serupa. Namun, dengan standar modern, tampilannya cukup "bengkok".



Dan di sinilah perbedaan dimulai untuk pengguna. Tampilan apa yang dilihat pengguna di layar tergantung pada beberapa subsistem - Lingkungan Desktoplah yang menyediakan ruang yang disebut desktop, itu adalah pengelola jendela yang menentukan tampilan jendela program (dekorasi jendela) dan sering, tetapi tidak selalu, diintegrasikan ke dalam lingkungan desktop, dan akhirnya, itu adalah perpustakaan elemen antarmuka. Apa dan bagaimana pengguna melihat di layar ditentukan oleh kombinasi komponen di atas.



Dalam praktiknya, ini mengarah pada fakta bahwa program yang sama yang diluncurkan pada manajer jendela yang berbeda dapat memiliki dekorasi jendela yang berbeda - judul yang berbeda, ukuran batas jendela, minimalisasi yang berbeda, layar penuh dan tombol tutup. Manajer jendela mendefinisikan semua ini. Namun, dalam satu pengelola jendela, program yang berbeda dapat memiliki jenis elemen antarmuka yang berbeda, tergantung pada pustaka yang digunakan. Demi keadilan, perlu dicatat bahwa Anda dapat mengamati variasi seperti itu di Windows, tetapi lebih jarang, karena sebagian besar program Windows menggunakan GDI + standar atau membungkusnya.



Apa yang akan dihadapi pengguna Linux di desktop? Pertama-tama, itu adalah GNOME atau KDE, sebagian besar distribusi didasarkan pada lingkungan desktop ini. Namun, mereka tidak terbatas dan berbagai vendor Linux menawarkan sekitar selusin lingkungan yang berbeda. Adapun pustaka elemen antarmuka, dua pustaka adalah yang utama di sini - GTK dan Qt. Kedua perpustakaan adalah lintas-platform, dan jika ada program di bawah Linux dan Windows, maka kemungkinan besar ditulis menggunakan GTK atau Qt. Namun, ada pengecualian, misalnya, Xamarin telah membuat versi Windows Forms Library untuk Linux dan macOS. Terkadang pengembang window manager mendistribusikan pustaka widget mereka. Dengan demikian, menjadi jelas dari mana berbagai antarmuka pengguna grafis untuk Linux berasal.



Linux dari sudut pandang programmer aplikasi



Semua hal di atas berlaku untuk pemrograman juga. Jika Anda menulis server atau utilitas konsol, maka dalam sebagian besar kasus Anda tidak perlu menggunakan arahan kompilasi bersyarat - Linux modern cukup standar dan sepenuhnya memenuhi persyaratan POSIX. Selain itu, menggunakan autoconf memungkinkan Anda untuk menulis program tidak hanya untuk Linux, tetapi juga untuk sistem POSIX yang kompatibel, dari BSD hingga semua jenis eksotis.



Anda mungkin tidak harus memilih format paket - gunakan DEB dan RPM dan Anda akan mencakup hampir semua kasus penggunaan. Untuk program layanan, Anda mungkin harus memperhatikan format skrip startup agar pemasang mendaftar dengan benar autostart layanan Anda. Dalam kasus saya, saya harus memperhatikan lokasi font, karena vendor yang berbeda menggunakan jalur berbeda untuk menyimpan font, namun, pencarian rekursif dimulai dengan / usr / share / font akan membantu Anda di sini - semua font, kecuali yang khusus, akan ditempatkan di sepanjang jalur ini. Sejauh font kustom yang diinstal di / home / pengguna yang bersangkutan, ada beberapa kebingungan dan goyangan, dan vendor yang berbeda menawarkan setidaknya dua hierarki - ~ / .fonts dan ~ / .local / share / font.



Untuk program grafik, kompleksitasnya agak lebih besar. Mengingat lingkungan desktop kebun binatang yang berbeda, Anda perlu mempertimbangkan kekhasannya. Misalnya, apa yang disebut pemberitahuan desktop akan didukung oleh sebagian besar lingkungan desktop, tetapi mungkin tidak berfungsi dengan beberapa pengelola jendela yang eksotis.



Akhirnya, beberapa poin penting yang membuat perbedaan signifikan di antara distribusi. Terlepas dari kesamaan semua Linux modern, Anda mungkin mengalami masalah pada distribusi dengan perlindungan yang meningkat, mis. dimana sistem akses wajib digunakan. Sebagai contoh, beberapa sumber daya tersedia secara default di semua distribusi klasik, tetapi akan menyebabkan kesalahan akses di versi Linux yang dilindungi. Tidak mungkin untuk memprediksi sebelumnya di mana dan bagaimana program akan gagal dalam kasus ini, jadi satu-satunya solusi adalah menguji distribusi yang dilindungi. Atau perbaikan cepat masalah setelah pengguna menghubungi dukungan teknis.



Poin kedua adalah popularitas distribusi. Jika Anda menggunakan beberapa pustaka atau kerangka kerja yang tidak umum sebagai bagian dari produk, maka ada kemungkinan bahwa distribusi tersebut akan berisi versi lama atau tidak lengkap dari pustaka ini. Dalam praktik saya, situasi ini terjadi di salah satu distribusi dengan dukungan untuk kode halaman 1251 di perpustakaan System.Text.Encoding untuk C #. Hanya ada satu cara untuk mengatasi masalah seperti itu - karena masalahnya tidak diamati di distribusi Linux lain, Anda harus menulis ke dukungan teknis untuk pengembang distribusi ini, menjelaskan masalah secara rinci dan mengatakan bahwa tidak ada masalah di distribusi lain.



Keluaran. Jika Anda tidak mempertimbangkan versi Linux yang dilindungi, maka dari sudut pandang administrator sistem dan programmer, distribusi modern sangat mirip. Seringkali, perbedaan antara generasi yang berbeda dari distribusi dari vendor yang sama lebih signifikan daripada perbedaan antara distribusi modern. Dari sudut pandang pengguna, perbedaan utama adalah dalam pilihan dan konfigurasi lingkungan desktop dan perangkat lunak yang disertakan dengan distribusi.



All Articles