Dasar pemikiran untuk beralih dari pemula ke systemd?

28

Perubahan yang lebih besar yang datang dengan Ubuntu 15.04 adalah beralih dari pemula ke systemd sebagai default untuk mengelola boot dan startup layanan sistem.

Adakah yang bisa menjelaskan secara memadai kepada pengguna non-teknis bagaimana dan jika ini mempengaruhi kita? Dan mengapa itu penting?

Nikos Grigoriadis
sumber

Jawaban:

29

Pengguna awam seharusnya tidak melihat perubahan apa pun, berdasarkan desain. Ini adalah sistem init, bukan sesuatu yang secara tradisional berinteraksi dengan pengguna. Itu harus sepenuhnya menggantikan fungsi yang disediakan oleh Pemula — dan melakukan beberapa hal tambahan — tetapi satu-satunya waktu pengguna non-teknis akan melihat ini adalah ketika terjadi kesalahan.

Pengguna, sysadmin, dan pengembang yang telah aktif menggunakan dan mengembangkan untuk pemula adalah orang-orang yang perlu mengatasi hal-hal. Ada dokumen migrasi di Wiki Ubuntu untuk membantu pengembang mengonversi skrip init mereka, tetapi pengguna dan pengurus dapat terus menggunakan Upstart dengan tetap menggunakan 14,04 (yang didukung hingga 2019).

Alasan dan alasan untuk perubahan sebenarnya bukan dari sisi Ubuntu. Canonical cukup senang dengan Upstart (proyek mereka) tetapi banyak pengguna Debian ingin pindah ke mesin init modern untuk mendapatkan konkurensi yang lebih baik saat boot dan fungsi pemantauan yang lebih baik di semua layanan.

Itu berarti pertarungan antara berbagai opsi (rasional) dan systemd akhirnya menang.

Canonical mengikuti Debian karena paling mudah dan mungkin yang terbaik. Mereka dapat membatalkan proyek dan tidak berjuang di hulu. Ini juga membawa kita sejalan dengan distribusi lain (Red Hat, Fedora, dll) yang juga pindah ke systemd. Lebih fokus dan lebih sedikit duplikasi usaha.

tl; dr Bagi orang yang tidak teknis, ini seharusnya tidak mempengaruhi Anda sama sekali. Untuk Ubuntu itu berarti lebih sedikit kerja dan sistem init yang lebih baik.

Oli
sumber
18

Adakah yang bisa menjelaskan secara memadai kepada pengguna non-teknis bagaimana dan jika ini mempengaruhi kita?

Secara teori, ini seharusnya tidak mempengaruhi pengguna akhir non-teknis yang tidak terlibat dalam seluk beluk bagaimana sistem sebenarnya bekerja. Dalam praktiknya, ada banyak hal yang akan Anda lihat.

Berikut daftar yang tidak lengkap:

  • Jika Anda memiliki perangkat lunak tambahan yang menggunakan file definisi pekerjaan pemula untuk memulai program, mereka akan berhenti bekerja. Anda harus menginstal (dan mungkin menulis tetapi lebih umum hanya menghilangkan orang lain yang sudah menulis) file unit layanan systemd . Contoh: https://askubuntu.com/questions/613785
  • Berbagai asumsi desain oleh pengembang systemd tentang hal-hal seperti manajemen daya menghasilkan default yang bertentangan dengan apa yang mungkin Anda sudah terbiasa. Pengembang systemd memiliki ide-ide yang sangat jelas tentang apa yang harus terjadi dalam menanggapi tutup switch pada laptop , misalnya.
  • Jika Anda menggunakan driver tampilan nvidia, maka ada berbagai keputusan desain dalam systemd yang memengaruhi Anda. Contoh: https://askubuntu.com/questions/613773
  • Ini tidak benar-benar relevan ketika datang dari pemula, karena pengguna Ubuntu telah memiliki halaman manual yang memberitahukan hal ini kepada mereka selama beberapa tahun sekarang, tetapi saya menyebutkannya untuk pengguna non-Ubuntu yang mungkin membaca ini: Pengguna sistem operasi Linux lain yang berasal dari Sistem 5 init+ rcdigigit oleh fakta bahwa systemd hanya kompatibel dengan Sistem 5 rc. Seperti pemula, dan memang sebagian besar sistem lain, ia mengaku, dan memasok, tidak ada kompatibilitas mundur dengan Sistem 5 initdan file konfigurasinya /etc/inittab.

    Jadi orang-orang yang mengikuti saran dari 30-beberapa tahun orang menasihati "Yah, Anda bisa mengedit ini menjadi /etc/inittab...", atau orang-orang yang menggunakan perangkat lunak yang mengikuti saran itu sekarang memiliki perangkat lunak yang tidak dimulai saat bootstrap. Contoh: https://unix.stackexchange.com/a/196197/5132

  • Anda tidak bisa masuk ke mode pengguna tunggal melalui shutdownperintah systemd , seperti yang Anda bisa dengan shutdownperintah sebelumnya . Selain dari fakta bahwa itu disebut mode penyelamatan dalam jargon systemd, mode penyelamatan tidak dianggap sebagai kondisi mati dalam pandangan dunia systemd. Itu dianggap sebagai keadaan berjalan . shutdown nowakan mematikan mesin. Ini systemctl rescueuntuk mencapai mode pengguna tunggal di dunia systemd. Bacaan lebih lanjut: https://unix.stackexchange.com/a/196471/5132
  • Lebih jauh ke subjek terakhir: Jika Anda belum membuang gagasan run level , sekarang saatnya untuk melakukannya. Bacaan lebih lanjut: https://unix.stackexchange.com/a/196014/5132
  • Anda harus berhati-hati mengikuti saran umum systemd yang ditemukan oleh penjelajahan WWW acak, karena Anda "tahu" bahwa "sekarang semuanya sudah systemd". Anda akan melihat orang-orang berbicara tentang menjalankan perintah dengan --useropsi untuk systemctl. Itu belum berlaku untuk Ubuntu (belum). pemula dan systemd berbeda secara signifikan di bidang ini, dan Ubuntu versi 15 masih menggunakan init pemula per sesi daripada init sistemd per-pengguna . Jadi https://superuser.com/a/860598/38062 tidak akan berlaku, misalnya. ☺
JdeBP
sumber
6

Seperti yang telah dicatat oleh orang lain di sini, dalam teori, ini seharusnya tidak mempengaruhi pengguna akhir non-teknis - dan secara teori tidak ada perbedaan antara teori dan praktik tetapi dalam praktiknya ada.

Klarifikasi

Saya pikir beberapa hal yang diposting di sini perlu klarifikasi:

Ini adalah sistem init, bukan sesuatu yang secara tradisional berinteraksi dengan pengguna.

Itu adalah kasus dengan SysV init dan dengan pemula tetapi itu tidak terjadi dengan systemd lagi. Ia melakukan banyak hal yang secara tradisional berinteraksi dengan pengguna:


Itu harus sepenuhnya menggantikan fungsi yang disediakan oleh Pemula — dan melakukan beberapa hal tambahan

Dua hal untuk diklarifikasi - pertama tentang sepenuhnya mengganti pemula:

Tidak ada skrip init SysV

Salah satu masalah yang orang miliki dengan systemd adalah bahwa ia tidak menjalankan skrip init SysV. Jadi ada satu contoh yang tidak sepenuhnya menggantikan fungsi yang disediakan oleh Pemula.

Ini adalah sesuatu yang dapat kita andalkan selama lebih dari 30 tahun dan secara tradisional Anda menulis skrip init SysV untuk portabilitas maksimum tanpa mengulangi diri sendiri (dengan menulis beberapa versi skrip yang sama), yang tidak lagi menjadi masalah.

Ini seharusnya tidak menjadi masalah ketika menggunakan hanya paket dari repositori resmi karena mungkin semua paket yang dulu memiliki skrip init atau pemula SysV perlu memiliki skrip mereka ditulis ulang sebelum mereka dikemas.

Ini hanya akan menjadi masalah bagi orang-orang yang kebetulan menggunakan perangkat lunak pihak ketiga atau khusus yang memiliki skrip init mereka ditulis untuk init SysV atau untuk pemula dan mereka akan memerlukan skrip init ditulis ulang sebelum meningkatkan ke sistem dengan systemd (atau mendapatkan pemula yang terinstal, yang juga merupakan opsi , atau bermigrasi ke sistem yang tidak menggunakan systemd).

Ada systemd-sysv-generator yang seharusnya secara otomatis menerjemahkan skrip init SysV ke skrip systemd tetapi ada beberapa bug dan daftar panjang yang tidak kompatibel secara eksplisit .

Sekarang, klarifikasi kedua - tentang beberapa hal tambahan:

Beberapa hal ekstra

"Beberapa hal tambahan" yang akan dicakup systemd - menurut Perspektif untuk systemd - Apa yang Telah Dicapai, dan presentasi What Lies Ahead oleh Lennart Poettering pada 2014 di GNOME.asia - adalah sebagai berikut:

  • sistem init
  • jurnal logging
  • manajemen login
  • manajemen perangkat
  • manajemen file sementara dan tidak stabil
  • pendaftaran format biner
  • backlight save / restore
  • rfkill simpan / pulihkan
  • bootchart
  • readahead
  • pengaturan penyimpanan terenkripsi
  • Penemuan partisi EFI / GPT
  • mesin virtual / registrasi kontainer
  • manajemen wadah
  • manajemen nama host
  • manajemen lokal
  • manajemen waktu
  • manajemen benih acak
  • manajemen variabel sysctl
  • manajemen konsol
  • introspeksi
  • penemuan otomatis
  • Pasang dan mainkan
  • manajemen jaringan
  • systemd-networkd
  • Cache DNS
  • responden mDNS
  • Responden LLMNR
  • Verifikasi DNSSEC
  • IPC di kernel
  • kdbus
  • sd-bus
  • sinkronisasi waktu dengan NTP
  • systemd-timesyncd
  • integrasi dengan wadah
  • layanan pasir
  • sandboxing aplikasi
  • Format gambar OS
  • Format gambar kontainer
  • Format gambar aplikasi
  • GPT dengan penemuan otomatis
  • Sistem tanpa kewarganegaraan
  • sistem instantiatable
  • reset pabrik
  • inisialisasi dan pembaruan node
  • integrasi dengan cloud
  • manajemen layanan lintas node
  • gambar OS yang dapat diverifikasi sampai ke firmware
  • Boot Sedang Memuat
  • Membangun OS Generasi Berikutnya Internet. Memersatukan perbedaan yang tidak ada artinya antara distribusi

Jadi kembali ke: "Ini sistem init, bukan sesuatu yang secara tradisional berinteraksi dengan pengguna." - harus ditunjukkan bahwa sistem init hanyalah satu item dalam daftar itu.


Dan akhirnya, hal terakhir yang ingin saya komentari:

[T] dia hanya kali pengguna non-teknis akan melihat ini ketika itu salah.

Oh, sungguh melegakan. :)

Perubahan

Perubahan yang paling penting bagi pengguna akhir (selain skrip itu sendiri) adalah memulai dan menghentikan layanan dan menggunakan perintah seperti:

yang tidak lagi berfungsi seperti yang diharapkan. Misalnya, nohupadalah perintah POSIX untuk memastikan bahwa proses terus berjalan setelah Anda keluar dari sesi Anda. Tidak lagi berfungsi pada systemd. Juga program-program seperti screendan tmuxperlu dipanggil dengan cara khusus atau jika tidak , proses yang Anda jalankan dengan mereka akan terbunuh (sementara proses-proses tersebut tidak terbunuh biasanya merupakan alasan utama menjalankan layar atau tmux di tempat pertama).

Ini bukan bug, ini adalah pilihan desain, jadi tidak mungkin diperbaiki di masa depan. Ini adalah apa yang Lennart Poettering mengatakan tentang masalah ini:

Dalam pandangan saya itu sebenarnya cukup aneh dari UNIX bahwa secara default biarkan kode pengguna yang sewenang-wenang tetap tidak dibatasi setelah keluar. Sudah dibahas sejak lama di antara banyak orang OS, bahwa ini seharusnya mungkin tetapi tentu saja bukan default, tetapi tidak ada yang berani sejauh ini untuk membalik saklar untuk mengubahnya dari default ke opsi. Tidak membersihkan sesi pengguna setelah logout tidak hanya jelek dan agak meretas tetapi juga masalah keamanan. systemd 230 sekarang akhirnya membalik sakelar dan akhirnya secara default membersihkan semuanya dengan benar ketika pengguna logout.

Untuk info lebih lanjut, lihat:

Lari screen

  • pemula: screen
  • systemd: systemd-run --user --scope screen

(Catatan: perilaku "pemula" di atas benar-benar apa pun kecuali systemd, ini bukan khusus pemula.

Memulai pekerjaan foo:

  • pemula: start foo
  • systemd: systemctl start foo

Menghentikan pekerjaan:

  • pemula: stop foo
  • systemd: systemctl stop foo

Mulai ulang pekerjaan foo:

  • pemula: restart foo
  • systemd: systemctl restart foo

Daftar pekerjaan dengan status mereka:

  • pemula: initctl list
  • systemd: systemctl status

(Lihat jawaban saya untuk Apa pro / kontra dari Upstart dan systemd? Untuk detail lebih lanjut di luar ruang lingkup untuk pertanyaan ini.)

Log

Ada juga perbedaan besar dalam penanganan log karena bertentangan dengan tradisi Unix, log systemd disimpan dalam file biner dalam format khusus, jadi alih-alih:

cat /var/log/upstart/foo.log
tail -f /var/log/upstart/foo.log

Anda perlu menggunakan perintah khusus untuk mengakses log Anda:

sudo journalctl -u foo
sudo journalctl -u foo -f

Kontroversi

Pengenalan systemd pertama ke Debian dan kemudian ke Ubuntu bukan tanpa kontroversi dan pertentangan besar seperti diketahui oleh siapa saja yang menulis salah satu artikel berikut:

Posisi resmi Debian pada systemd dan hasil kontroversi telah menyebabkan deklarasi Keluaran pada tahun 2014 dan berakhir dengan pengunduran diri Ian Jackson .

Init Freedom , Without-Systemd.org daninisiatif Systemd-Free.org lahir, dengan banyak diskusi tentang Hacker News .

Bacaan lebih lanjut

rsp
sumber
Anda menarik jawaban saya ke dalam konteks yang berbeda. Systemd adalah lebih dari sebuah sistem init tetapi pertanyaan ini adalah tentang kaya baru → systemd dan bahwa keputusan ... Tidak "Apa semua hal systemd Menggantikan?"
Oli