GNU/Linux >> Belajar Linux >  >> Linux

Memahami runlevel Linux dengan cara yang benar

Anda dapat menganggap runlevel Linux sebagai "mode" berbeda yang digunakan sistem operasi. Masing-masing mode ini, atau runlevel, memiliki daftar proses dan layanan yang diaktifkan atau dinonaktifkan. Sejak Linux boot, selalu ada runlevel tertentu.

Runlevel ini dapat berubah saat Anda terus menggunakan komputer, bergantung pada jenis layanan yang perlu diakses oleh sistem operasi.

Misalnya, menjalankan mesin Linux Anda dengan antarmuka pengguna grafis akan memerlukan runlevel yang berbeda dibandingkan jika Anda hanya menjalankan baris perintah di sistem Anda.

Ini karena antarmuka pengguna grafis akan membutuhkan akses ke berbagai layanan yang tidak dimiliki oleh baris perintah. Agar sistem dapat menentukan layanan mana yang perlu diaktifkan (atau dinonaktifkan), sistem akan mengubah runlevel sesuai kebutuhan.

Pentingnya runlevel Linux

Anda mungkin telah menggunakan Linux selama bertahun-tahun tanpa menyadari bahwa ada runlevel yang berbeda. Itu karena itu bukan sesuatu yang harus sering dikonfigurasi oleh sebagian besar administrator server.

Namun, runlevel Linux memberikan administrator peningkatan kontrol atas sistem yang mereka kelola.

Anda dapat mengubah runlevel suatu sistem (yang akan kita lihat bagaimana melakukannya nanti di artikel), seperti halnya layanan yang berjalan di dalam runlevel. Hal ini memungkinkan kami mengontrol sepenuhnya layanan yang dapat diakses oleh sistem kami pada waktu tertentu.

Berapa banyak runlevel di Linux?

Ada tujuh runlevel yang berbeda di Linux, dari nol sampai enam. Berbagai distribusi mungkin menggunakan tujuh runlevel secara berbeda, jadi tidak mudah untuk menyusun daftar definitif tentang apa yang dilakukan runlevel.

Sebagai gantinya, Anda perlu memeriksa bagaimana runlevel bekerja pada distribusi spesifik yang Anda gunakan. Untuk sebagian besar, daftar di bawah ini menunjukkan bagaimana distribusi Linux secara umum mengonfigurasi runlevel:

Runlevel 0 mematikan sistem.

Runlevel 1 adalah mode single-user, yang digunakan untuk tugas-tugas pemeliharaan atau administratif. Anda juga dapat melihat mode ini disebut sebagai runlevel S (S adalah singkatan dari single-user).

Runlevel 2 adalah mode multi-pengguna. Runlevel ini tidak menggunakan layanan jaringan apa pun.

Runlevel 3 adalah mode multi-pengguna dengan jaringan. Ini adalah runlevel normal yang biasa Anda gunakan jika Anda menggunakan sistem yang tidak bisa boot ke GUI (antarmuka pengguna grafis).

Runlevel 4 tidak digunakan. Pengguna dapat menyesuaikan runlevel ini untuk tujuan mereka sendiri (yang akan kami bahas nanti di artikel).

Runlevel 5 sama dengan runlevel 3, tetapi juga memulai manajer tampilan. Ini adalah runlevel yang Anda gunakan jika Anda menggunakan sistem yang melakukan booting ke GUI.

Runlevel 6 mem-boot ulang sistem.

Berapa runlevel saya saat ini?

Anda dapat melihat runlevel Anda saat ini di sebagian besar distribusi hanya dengan mengetikkan “runlevel” di terminal.

Saat Anda memasukkan perintah "runlevel", itu akan memberi Anda dua nomor berbeda. Angka pertama adalah runlevel sebelumnya yang dijalankan sistem Anda, dan angka kedua adalah runlevel sistem Anda saat ini.

Pada tangkapan layar di atas, "N" adalah kependekan dari "tidak ada", artinya sistem tidak berada di runlevel yang berbeda sebelumnya. “5” berarti sistem kami saat ini dalam runlevel 5.

Kami menjalankan CentOS dalam contoh ini, yang mem-boot langsung ke antarmuka grafis, oleh karena itu mengapa sistem langsung menuju runlevel 5.

Bagaimana cara mengubah runlevel saat ini?

Anda dapat mengubah runlevel sistem Anda saat ini menggunakan perintah "telinit". Misalnya, untuk mengubah ke runlevel 3 di CentOS, ketikkan:

$ telinit 3

Ingatlah bahwa Anda harus menjadi pengguna root untuk menjalankan perintah ini. Ketahuilah bahwa runlevel bekerja secara berbeda pada Debian dan Ubuntu – misalnya, Ubuntu akan boot ke runlevel 5 bahkan tanpa memulai GUI.

Jika Anda mengikuti contoh di atas, layar Anda mungkin kosong. Ini karena Anda tertinggal di – sekarang kosong – tty. Cukup lakukan Alt+F1 (atau tombol fungsi lainnya) pada keyboard Anda untuk dibawa ke terminal yang berfungsi.

Jika kita menggunakan perintah “runlevel” lagi, kita akan melihat bahwa kita sekarang berada di runlevel 3, dan runlevel sebelumnya terdaftar sebagai 5 karena kita baru saja mengubahnya.

Target systemd Linux vs. runlevel

Dalam beberapa tahun terakhir, systemd telah menggantikan sistem lama "System V init" (runlevel). Pada dasarnya masih bekerja dengan cara yang sama, tetapi menggunakan beberapa perintah baru dan biasanya mengacu pada "runlevel" sebagai "target".

Runlevel 0 =poweroff.target (runlevel0.target)

Runlevel 1 =rescue.target (runlevel1.target)

Runlevel 2 =multi-pengguna.target (runlevel2.target)

Runlevel 3 =multi-pengguna.target (runlevel3.target)

Runlevel 4 =multi-pengguna.target (runlevel4.target)

Runlevel 5 =graphic.target (runlevel5.target)

Runlevel 6 =reboot.target (runlevel6.target)

Kami akan terus membahas systemd dan perintah yang perlu Anda ketahui saat tutorial ini berlangsung.

Bagaimana cara mengubah runlevel default saat startup?

Ada banyak alasan mengapa Anda mungkin ingin boot ke runlevel yang berbeda. Misalnya, administrator sistem biasanya melakukan boot ke baris perintah, dan hanya memulai antarmuka grafis jika dianggap perlu.

Untuk fungsi ini, Anda perlu memastikan runlevel default Anda disetel ke 3, bukan 5.

Di masa lalu, seseorang diharuskan mengedit file /etc/inittab untuk menentukan runlevel default saat startup. Anda mungkin masih menemukan hal ini pada beberapa distribusi.

Jika bekerja dengan sistem operasi yang belum ditingkatkan versinya selama beberapa tahun, Anda masih akan menemukan metode ini relevan untuk Anda.

$ vi /etc/inittab

Pada tangkapan layar di atas, runlevel 5 saat ini disetel ke runlevel default untuk startup.

Mulai 2016, sebagian besar distribusi Linux utama telah menghapus file /etc/inittab demi target systemd – kami akan membahas perbedaannya nanti di artikel ini.

Anda mungkin menemukan bahwa sistem Anda tidak memiliki file /etc/inittab sama sekali, atau file inittab Anda mungkin menyarankan Anda untuk menggunakan systemd sebagai gantinya seperti, dalam tangkapan layar ini dari sistem CentOS kami.

Untuk memeriksa target default sistem Anda saat ini:

$ systemctl get-default

Pada tangkapan layar di atas, balasan balik dari sistem adalah “graphical.target”. Seperti yang mungkin bisa Anda tebak, ini setara dengan runlevel 5.

Untuk melihat target lain yang tersedia dan runlevel yang terkait dengannya, ketik:

$ ls -l /lib/systemd/system/runlevel*

Tautan simbolis ini memberi tahu kami bahwa target systemd cukup banyak beroperasi dengan cara yang sama seperti runlevel. Jadi, bagaimana kita bisa mengubah runlevel (atau target) default saat startup? Kita perlu membuat tautan simbolik baru, seperti ini:

$ ln -sf /lib/systemd/system/runlevel3.target /etc/systemd/system/default.target

Perintah ini akan mengubah runlevel default kita menjadi 3, jadi pada saat kita reboot, sistem kita akan berada di runlevel 3, bukan 5. Jika Anda menginginkan runlevel yang berbeda, Anda cukup mengganti nomor yang berbeda dari "3" di perintah.

Untuk referensi, sakelar -f dalam perintah itu menunjukkan bahwa file target harus dihapus sebelum membuat tautan baru. Anda juga bisa menghapusnya terlebih dahulu dengan perintah rm sederhana.

Anda dapat mengonfirmasi bahwa perubahan berhasil dilakukan dengan perintah “systemctl get-default” lagi.

Runlevel 3 vs. runlevel 5

Dua runlevel yang paling sering Anda dengar dan gunakan adalah 3 dan 5. Pada dasarnya intinya adalah:runlevel 3 adalah baris perintah, dan runlevel 5 adalah antarmuka pengguna grafis.

Tentu saja, tidak setiap distribusi mengikuti konvensi ini, dan sistem Anda dapat dikonfigurasi oleh admin sehingga runlevel ini memiliki lebih banyak perbedaan.

Tapi, secara umum, begitulah cara kerjanya. Jika Anda ingin melihat layanan apa yang diaktifkan di kedua runlevel ini, kami membahasnya di bagian berikutnya.

Mencantumkan layanan yang diaktifkan pada runlevel tertentu

Sampai beberapa tahun terakhir, “chkconfig –list” adalah perintah untuk membuat daftar layanan yang akan diaktifkan pada runlevel yang berbeda. Jika sistem operasi Anda mutakhir, perintah itu mungkin memberi Anda kesalahan atau menunda Anda ke systemd.

Jika kita ingin melihat layanan apa yang akan dijalankan saat kita boot ke mode grafis (runlevel 5), kita dapat menjalankan perintah ini:

$ systemctl list-dependencies graphical.target

Untuk melihat layanan yang berjalan secara default pada runlevel lain, cukup ganti “graphical.target” dengan nama target yang ingin Anda lihat.

Di bawah runlevel mana proses akan berjalan?

Jika Anda ingin melihat runlevel mana yang menjalankan layanan tertentu, Anda dapat menggunakan perintah ini:

$ systemctl show -p WantedBy [name of service]

Misalnya, jika Anda ingin melihat di runlevel mana daemon SSH akan dijalankan, ketikkan:

$ systemctl show -p WantedBy sshd.service

Berdasarkan output pada screenshot di atas, layanan SSH akan dimulai pada runlevel 2, 3, dan 4 (multi-user.target)

Bagaimana cara mengubah runlevel aplikasi?

Seperti yang terlihat di atas, layanan SSH kami hanya berjalan pada runlevel 2-4 (multi-user.target). Bagaimana jika kita juga ingin memulainya saat kita boot ke antarmuka grafis – runlevel 5 (graphical.target)? Kita dapat menerapkan konfigurasi tersebut dengan perintah berikut:

$ systemctl enable sshd.service

Masalah keamanan dengan runlevel di Linux

Seperti yang kami katakan sebelumnya di artikel ini, titik runlevel Linux adalah untuk memberikan kontrol administrator atas layanan apa yang berjalan dalam kondisi tertentu. Memiliki kontrol granular jenis ini atas sistem Anda meningkatkan keamanan karena Anda dapat yakin bahwa tidak ada layanan asing yang berjalan.

Masalah dapat muncul ketika administrator tidak mengetahui secara pasti layanan apa yang sedang berjalan, sehingga dia tidak repot-repot mengamankan permukaan serangan tersebut.

Anda dapat menggunakan metode dalam panduan ini untuk mengonfigurasi runlevel default Anda dan untuk mengontrol aplikasi mana yang sedang berjalan. Praktik ini tidak hanya akan membebaskan sumber daya sistem tetapi juga membuat server Anda lebih aman.

Ingatlah untuk hanya menggunakan runlevel yang Anda butuhkan. Misalnya, tidak ada gunanya memulai runlevel 5 (antarmuka grafis) jika Anda hanya berencana menggunakan terminal.

Mengubah ke runlevel yang berbeda akan memperkenalkan beberapa layanan baru, beberapa di antaranya mungkin berjalan sepenuhnya di latar belakang, dan Anda mungkin lupa untuk mengamankannya.

Runlevel mana yang terbaik untuk saya?

Menentukan runlevel mana yang terbaik untuk Anda semua tergantung pada situasinya. Umumnya, Anda mungkin akan menggunakan runlevel 3 dan 5 secara teratur.

Jika Anda merasa nyaman dengan baris perintah dan tidak memerlukan antarmuka grafis, runlevel 3 (pada sebagian besar distribusi) akan menjadi yang terbaik untuk Anda.

Ini akan mencegah layanan yang tidak perlu berjalan. Di sisi lain, jika Anda menginginkan lebih banyak pengalaman desktop dan antarmuka grafis untuk menggunakan berbagai aplikasi, dll., runlevel 5 akan menjadi runlevel pilihan Anda.

Jika Anda perlu melakukan pemeliharaan pada server produksi, runlevel 1 cocok dengan situasi itu. Anda dapat menggunakan runlevel ini untuk memastikan bahwa Anda adalah satu-satunya di server (layanan jaringan bahkan tidak dimulai), dan Anda dapat melakukan pemeliharaan tanpa gangguan.

Dalam kasus yang jarang terjadi, Anda bahkan mungkin perlu menggunakan runlevel 4. Ini hanya akan terjadi dalam situasi tertentu di mana Anda atau administrator sistem memiliki runlevel yang dikonfigurasi secara khusus. Kami akan membahas cara melakukannya di bagian berikutnya.

Seperti yang mungkin Anda asumsikan, Anda tidak akan (dan tidak bisa) menjalankan sistem Anda di runlevel 0 atau 6, tetapi dimungkinkan untuk beralih ke mereka hanya untuk reboot atau matikan. Melakukannya biasanya tidak perlu karena ada perintah lain yang melakukannya untuk kita.

Bisakah kita membuat runlevel baru di Linux?

Dimungkinkan untuk membuat runlevel baru di Linux, tetapi sangat tidak mungkin Anda perlu melakukannya. Jika Anda tetap ingin melakukannya, Anda dapat mulai dengan menyalin salah satu target sistem yang ada, lalu mengeditnya dengan penyesuaian Anda sendiri.

Target berada di:

/usr/lib/systemd/system

Jika Anda ingin mendasarkan runlevel/target baru Anda dari graphics.target (runlevel 5), salin direktori tersebut ke direktori target baru Anda.

$ cp /usr/lib/systemd/system/graphical.target /usr/lib/systemd/system/mynew.target

Setelah itu, buat direktori “want” baru, seperti ini:

$ mkdir /etc/systemd/system/mynew.target.wants

Dan kemudian symlink layanan tambahan dari /usr/lib/systemd/system yang ingin Anda aktifkan untuk runlevel baru Anda.

Saya harap Anda menemukan tutorial yang bermanfaat. Terus kembali.


Linux
  1. Berapa jumlah ruang swap yang tepat untuk sistem Linux modern?

  2. Cara Meningkatkan ke Linux Mint 20.3:Cara yang Benar

  3. Bagaimana mengubah identitas sistem Linux

  1. Memahami panggilan sistem di Linux dengan strace

  2. Memahami sistem file Btrfs di Fedora Linux

  3. Mengapa 'sshpass' bukan cara yang tepat untuk mengotomatisasi transfer file di Linux

  1. Periksa Beban Sistem di Linux

  2. Memahami File /etc/inittab di Linux

  3. Memahami Script rc di Linux