Ketika datang ke sistem operasi Linux, termasuk Ubuntu, orang cenderung membedakan istilah kernel dan sistem operasi . Ini benar untuk Windows dan keluarga OS X, tetapi mengapa begitu luas di kalangan komunitas Linux? Apakah ada cara untuk memperbarui kernel OS, tanpa OS itu sendiri diperbarui? Atau sebaliknya? Jika demikian, bagaimana itu bisa bermanfaat?
9
Jawaban:
Seluruh sistem GNU / Linux dibangun menggunakan pendekatan modular. Anda sebagian besar dapat meningkatkan ( mengganti secara umum) satu modul tanpa menyentuh yang lain. Modul yang dimaksud dapat berupa bootloader, kernel, shell, perintah, lingkungan desktop, aplikasi GUI, apa pun ...
Tentu saja, itu benar selama Anda dapat mengelola dependensi dengan benar. Dalam set distribusi di sekitar Ubuntu, APT digunakan untuk menyelesaikan dependensi secara otomatis.
Anda dapat menginstal versi kernel lain menggunakan perintah:
Selama APT mengizinkannya, Anda harus dapat melakukan reboot dan menggunakan versi kernel yang dipilih, apakah itu generik, lowlatency, dll. Atau Anda membangun sendiri versi kernel, mis. Linux Real-Time , dan menggunakannya dengan sistem Anda saat ini .
sumber
/etc/issue
yang disediakan olehbase-files
paket. Seperti yang sudah saya tulis, itu tidak terkait dengan versi kernel.Seperti yang Anda ketahui Kernel adalah bagian penting dari OS, dalam distribusi GNU / Linux Anda dapat dengan mudah memperbarui kernel tanpa menyentuh bagian lain dari OS. Namun kami hanya memperbarui bagian dari OS kami.
Sistem operasi terbuat dari dua bagian, ruang kernel dan ruang pengguna.
Jadi ya, Anda dapat memperbarui ruang kernel Anda tanpa menyentuh ruang pengguna Anda jika hanya versi baru yang kompatibel dengan ruang pengguna Anda saat ini.
Dan tentang memperbarui alat ruang pengguna, itu ya lain.
Ketika Anda menjalankan:
Jika ada pembaruan untuk kernel Anda akan mendapatkan:
jadi Anda hanya memperbarui ruang pengguna Anda dan ketika Anda menjalankan sesuatu seperti
Anda memperbarui semuanya termasuk kernel.
Untuk memutakhirkan hanya Kernel Anda ke versi yang lebih baru gunakan sesuatu seperti:
untuk menemukan daftar kernel yang lebih baru, kemudian instal sebagai paket baru, misalnya:
sumber
sudo apt upgrade
akan meningkatkan kernel juga jika versi baru tersedia.sudo apt full-upgrade
akan menghapus paket dengan baik, apa yangasudo apt upgrade
tidak akan dilakukan.upgrade
sub - perintah, itu tidak akan menginstal paket baru juga tidak menghapus paket apa pun, itu sebabnya kami menggunakandist-upgrade
. setidaknyaapt-get
bekerja dengan cara ini;) jadi saya memperbarui perintah saya untuk mencegah kebingungan.apt
perintah-, setelah penelitian singkat kelihatannya jawaban Anda benar sekarang,apt
danapt-get
menangani hal yang berbeda, lihat hiroom2.com/2016/05/20/ubuntu-16-04-debian-8-apt -command / ... . Jadi beberapa pengetahuan untuk kita berdua ...Pertama, beberapa klarifikasi, karena saya rasa Anda tidak mengerti bagaimana sistem GNU / Linux muncul. Bersabarlah dengan saya jika ini bukan hal baru bagi Anda:
"Kernel" bukan hanya program lain yang berjalan, tetapi itu adalah bagian dari OS yang menyediakan fungsi-fungsi dasar: jika Anda ingin memulai program (katakanlah, Anda mengetik "ls" di baris perintah) biner harus dimuat dari disk (yang mencakup beberapa operasi sistem file untuk menemukannya dan beberapa penanganan file to'read), maka "lingkungan proses" dibuat: memori ditugaskan, nomor proses dikeluarkan, dll, dll. Semua aktivitas sebelumnya (FS, membaca dari file, ...) ditangani oleh pustaka sistem, tetapi yang terakhir adalah fungsi kernel. Dalam beberapa hal kernel "adalah OS" dan yang lainnya hanya hiasan di sekitarnya.
"Linux" sebenarnya (hanya!) Sebuah kernel tanpa bagian OS yang lain. Linus Torvalds mulai menulisnya dengan mengambil Andrew Tanenbaums MINIX template OS kernel dan melengkapinya sehingga itu adalah fullblown dan kernel yang bisa dikerjakan nyata. Sampai hari ini ada Linus (dan banyak lainnya yang berkontribusi / berkontribusi) yang mengembangkan kernel ini. Kernel ini masih sangat mirip dengan UNIX, tetapi BUKAN kernel UNIX.
"GNU" dimulai sebagai inisiatif untuk "memperbaiki" banyak perintah UNIX yang umum. Saya tidak akan membahas apakah mereka berhasil atau tidak, tetapi mereka pasti menulis banyak perangkat lunak dan pada satu titik memiliki koleksi program utilitas. Mereka bahkan mulai mengembangkan kernel OS mereka sendiri (HURD), yang sebagian besar didasarkan pada UNIX, tetapi jelas berbeda. Tetapi sampai hari ini HURD sedang dalam pengembangan awal dan hampir tidak merupakan solusi yang berfungsi. "GNU" btw. adalah kependekan dari "GNU (is) Not UNIX" - mereka mencoba untuk mengatasi beberapa batasan (yang dirasakan atau nyata) dari UNIX dengan maksud untuk menciptakan penerus UNIX (sekali lagi: saya tidak ingin memasuki diskusi jika mereka berhasil atau tidak - saya tidak peduli apakah itu "lebih baik" atau "lebih buruk", tetapi pasti berbeda!).
Jadi, dengan seperangkat alat yang tidak memiliki kernel dan kernel yang tidak memiliki toolset, itu adalah pengembangan alami untuk menggabungkan keduanya: GNU / Linux diciptakan.
Namun, untuk memiliki OS yang berfungsi (dan bisa diterapkan), Anda memerlukan lebih dari sekadar kernel dan toolset: Anda memerlukan sistem pengelolaan paket, Anda memerlukan prosedur instalasi, Anda memerlukan konfigurasi templat, ....
Beberapa orang yang berbeda (atau kelompoknya) sampai pada kesimpulan ini dan menggunakan kombinasi GNU / Linux untuk membuat sistem GNU / Linux sesuai dengan keinginan mereka, dengan menambahkan dengan tepat hal-hal yang saya bicarakan di atas: mereka menciptakan manajer paket, sistem pengemasan , prosedur pemasangan dan apa lagi. Kelompok-kelompok yang berbeda ini (masing-masing hasil dari usaha mereka) adalah apa distribusi yang berbeda. Saat ini ada tiga manajer paket yang berbeda (apt untuk Debian dan sistem turunan seperti * ubuntu, rpm untuk RedHat dan sistem turunan seperti Fedora, CentOS dan banyak lagi, pacman untuk ArchLinux) tetapi semua ini hanya mengelola paket perangkat lunak yang (pada dasarnya) sama: apa yang disebut ketika Anda mengeluarkan "ls" atau "df", dll.,
Jadi, "pada prinsipnya" Anda dapat memperbarui kernel saja, seperti orang-orang yang membuat distribusi dari berbagai versi semua perangkat lunak yang saya bicarakan di atas.
Tapi, dan ini benar-benar TETAPI besar: karena tidak hanya kernel dan beberapa perangkat lunak tambahan tetapi banyak hal lain yang perlu diingat, seperti alat konfigurasi sistem (systemd, yang menggunakan beberapa distribusi dan beberapa tidak), jaringan alat manajemen seperti NetworkManager, yang pada gilirannya tergantung pada beberapa versi GNOME-library, dll, dll. - "distribusi" adalah hal yang agak rumit dan kemungkinannya adalah jika Anda mencoba untuk memperbarui kernel Anda akhirnya memperbarui banyak hal-hal lain karena banyaknya saling ketergantungan.
Tetap, dan juga "pada prinsipnya", seperti di atas: Anda juga dapat membuat distribusi Anda sendiri dengan mengunduh semua sumber, mengompilasinya, menemukan kumpulan kombinasi versi yang berfungsi, menempatkan beberapa sistem pengemasan pada tempatnya (atau menggunakan salah satu dari yang sudah ada ) - dan seterusnya, hingga Anda memiliki sistem yang dapat didistribusikan, diinstal, dan dapat dikonfigurasi. Inilah yang dilakukan pencipta distribusi seperti Ubuntu dan ini bukan keajaiban - hanya banyak pekerjaan rumit, jadi pada kenyataannya sebagian besar pengguna menghindarinya dan menggunakan sesuatu yang mereka bisa dengan siap pakai.
Saya harap ini menjawab pertanyaan Anda.
sumber
Jawaban paling sederhana tidak ada hubungannya dengan Ubuntu; ini terkait dengan cara GNU / Linux dibangun. Jika Anda mencoba melihatnya sebagai pengembang sistem, Anda akan melihat dua dunia, masing-masing dipisahkan oleh batas tajam (ABI).
Dunia kernel, tempat pengembang tingkat rendah bekerja, adalah sistemnya sendiri. Ini memiliki semua yang biasanya Anda temukan dalam aplikasi reguler. Satu-satunya perbedaan adalah bahwa pengguna bukan orang yang sebenarnya yang menggunakan mesin, tetapi dunia ruang pengguna. Kernel "aplikasi" adalah perantara, server yang menggunakan mesin - hantu di shell.
Sekarang, ruang-pengguna, adalah dunia normal yang dimainkan pengguna dan pengembang sehari-hari. Ini memiliki API kaku, aturan, file, dan, yang paling penting, gambar abstrak, kekanak-kanakan dari mesin yang sedang berjalan. Karena pengguna hanya melihat bagian ini, dan jumlah ini sebesar 99% dari ukuran distribusi, mudah untuk menamainya Sistem Operasi. Nomenklatur yang tepat adalah menyebutnya distribusi perangkat lunak, dibuat oleh beberapa entitas (Canonical, Fedora, dll.), Menggunakan kernel (Linux, HURD, BSD, dll.), Dan dibangun menggunakan seperangkat alat (biasanya disediakan oleh GNU ).
Untuk menjawab pertanyaan Anda, di GNU / Linux (seperti di Windows dan OSX, percayalah), Anda dapat mengubah kernel, bukan hanya versi, tetapi seluruh arsitektur (Linux Kernel, vs HURD Kernel), dan, selama ABI tidak tersentuh, tidak pernah membuat perubahan tunggal di dunia pengguna ... Kembali pada hari, ketika pria sejati harus membangun kernel dari sumber, Anda bisa melalui beberapa perubahan seperti ini, untuk mendapatkan webcam USB jelek untuk bekerja ... Sekarang, dengan kernel modular, Anda hanya perlu menginstal sebuah modul, dan Anda akan mendapatkan dunia kernel baru, dengan ABI (terkadang) diperluas dengan fitur-fitur baru ...
Sekali lagi, sama untuk ruang pengguna. Ketika Anda menginstal aplikasi baru, dari, katakanlah, repositori Ubuntu, 99% dari waktu, masalah terbesar Anda adalah kompatibilitas komponen userspace lain, bukan kernel sebenarnya. Ada beberapa kasus, di mana versi kernel menentukan (melalui ABI) berbagai hal yang dapat diinstal di ruang pengguna, tetapi tujuannya (untuk pengembang, setidaknya) adalah untuk membuat ini hilang ...
Hal lain untuk direnungkan, Anda dapat (dan itu cukup mudah) membangun distribusi GNU / Linux Anda sendiri, khusus, dan sejenis. Dapatkan kernel, beberapa skrip sederhana, beberapa aplikasi, dan Anda siap. Itu hanya semudah itu (lihat distribusi OpenWRT GNU / Linux, untuk gear jaringan, seluruh distribusi cocok dengan 16MB, atau lebih).
sumber
Saya kira mereka disimpan terpisah karena kernel adalah bagian yang kritis. Kernel dengan regresi, atau hanya pembaruan yang gagal, mungkin melakukan cukup banyak kerusakan. Anda mungkin ingin memperbaruinya lebih jarang; atau hanya setelah menunggu beberapa saat untuk memastikan tidak ada yang melaporkan bug yang mengkhawatirkan.
Juga beberapa pengguna tingkat lanjut atau profesional mengkompilasi ulang kernel untuk memodifikasi perilakunya agar lebih sesuai dengan kebutuhan mereka. Dalam hal demikian, Anda tentu tidak ingin itu secara otomatis diganti dengan versi pabrik setiap kali Anda memutakhirkan.
sumber