Apa pro / kontra dari pemula dan systemd?


183

Tampaknya systemd adalah sistem init baru panas di blok, sama seperti Upstart beberapa tahun yang lalu. Apa pro / kontra untuk masing-masing? Juga, bagaimana masing-masing dibandingkan dengan sistem init lainnya?


4
@keith iirc openrc hanya menggunakan SysV, keunggulannya adalah kumpulan skrip startup yang dirancang dengan baik yang menggunakan komponen umum dan portabel (artinya dapat digunakan pada shell apa pun) Ini pembersihan yang bagus, tetapi bukan initd baru
xenoterracide

@ xeno Memang, tapi Anda tidak bisa mengatakannya. tidak ada symlink rcX.d atau [KS] sama sekali. Sebenarnya sysv init itu sendiri cukup fleksibel, dan runlevel tidak benar-benar digunakan dengan cara biasa.
Keith

Meskipun penulis blog ini menentang systemd, saya sarankan agar ini dibaca. Ini membahas pro dan kontra dari systemd dan BSD init. textplain.net/blog/2015/…
Peschke

1
Silakan pergi melalui pembaruan 2016 unix.stackexchange.com/a/287282/49091 juga.
igaurav

Setiap keuntungan yang disengaja dari systemd tidak akan dalam 100 tahun mengimbangi biaya yang sudah dikeluarkan untuk dunia untuk mengimplementasikan ini. Setiap menit atau jam atau hari yang dihabiskan oleh admin Unix untuk menangani sampah ini harus sudah mencapai miliaran dan untuk manfaat nyata apa selain beberapa lonceng dan peluit?
Waslap

Jawaban:


90

Pembaruan 2016

Sebagian besar jawaban di sini berusia lima tahun sehingga sudah waktunya untuk beberapa pembaruan.

Ubuntu digunakan untuk menggunakan pemula baru secara default tetapi mereka meninggalkannya tahun lalu demi systemd - lihat:

Karena itu ada artikel bagus Systemd untuk Pengguna Baru di Ubuntu wiki - perbandingan yang sangat terperinci antara pemula dan systemd dan panduan transisi dari pemula ke systemd.

(Perhatikan bahwa menurut wiki Ubuntu Anda masih dapat menjalankan pemula pada versi saat ini dari Ubuntu secara default dengan menginstal upstart-sysvdan menjalankan sudo update-initramfs -utetapi mempertimbangkan ruang lingkup proyek systemd saya tidak tahu cara kerjanya dalam praktik, atau apakah systemd atau tidak mungkin untuk dihapus.)

Sebagian besar info di bagian Perintah dan Skrip di bawah ini diadaptasi dari beberapa contoh yang digunakan dalam artikel itu (yang dilisensikan dengan mudah seperti kontribusi pengguna Stack Exchange di bawah Lisensi Creative Commons Attribution-ShareAlike 3.0 ).

Berikut ini adalah perbandingan cepat dari perintah umum dan skrip sederhana, lihat bagian di bawah ini untuk penjelasan terperinci. Jawaban ini membandingkan perilaku lama sistem berbasis pemula dengan perilaku baru sistem berbasis systemd, seperti yang ditanyakan dalam pertanyaan, tetapi perhatikan bahwa perintah yang ditandai sebagai "pemula" tidak selalu khusus-pemula - mereka sering perintah yang adalah umum untuk setiap sistem Linux dan Unix non-system.

Perintah

Running su:

  • pemula: su
  • systemd: machinectl shell

(lihat bagian "penggantian perintah su" di bawah)

Layar lari:

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

(lihat bagian "Pembunuhan proses latar belakang yang tidak terduga" di bawah)

Menjalankan tmux:

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

(lihat bagian "Pembunuhan proses latar belakang yang tidak terduga" di bawah)

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:

  • pemula: initctl list
  • systemd: systemctl status

Memeriksa konfigurasi job foo:

  • pemula: init-checkconf /etc/init/foo.conf
  • systemd: systemd-analyze verify /lib/systemd/system/foo.service

Daftar variabel lingkungan pekerjaan:

  • pemula: initctl list-env
  • systemd: systemctl show-environment

Mengatur variabel lingkungan kerja:

  • pemula: initctl set-env foo=bar
  • systemd: systemctl set-environment foo=bar

Menghapus variabel lingkungan kerja:

  • pemula: initctl unset-env foo
  • systemd: systemctl unset-environment foo

Log

Di pemula, log adalah file teks normal di direktori / var / log / pemula, sehingga Anda dapat memprosesnya seperti biasa:

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

Dalam systemd log disimpan dalam format biner internal (bukan sebagai file teks) sehingga Anda perlu menggunakan journalctlperintah untuk mengaksesnya:

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

Skrip

Contoh skrip pemula yang ditulis dalam /etc/init/foo.conf:

description "Job that runs the foo daemon"
start on runlevel [2345]
stop on runlevel [016]
env statedir=/var/cache/foo
pre-start exec mkdir -p $statedir
exec /usr/bin/foo-daemon --arg1 "hello world" --statedir $statedir

Contoh skrip systemd ditulis dalam /lib/systemd/system/foo.service:

[Unit]
Description=Job that runs the foo daemon
Documentation=man:foo(1)
[Service]
Type=forking
Environment=statedir=/var/cache/foo
ExecStartPre=/usr/bin/mkdir -p ${statedir}
ExecStart=/usr/bin/foo-daemon --arg1 "hello world" --statedir ${statedir}
[Install]
WantedBy=multi-user.target

penggantian perintah su

Sebuah supengganti perintah dilebur ke systemd di tarik permintaan # 1022:

karena, menurut Lennart Poettering, "su benar-benar konsep yang rusak" .

Dia menjelaskan bahwa "Anda dapat menggunakan su dan sudo seperti sebelumnya, tetapi jangan berharap itu akan bekerja secara penuh " .

Cara resmi untuk mencapai superilaku seperti sekarang adalah:

machinectl shell

Ini telah dijelaskan lebih lanjut oleh Lennart Poettering dalam diskusi untuk mengeluarkan # 825:

"Yah, sudah ada diskusi panjang tentang ini, tetapi masalahnya adalah apa yang seharusnya dilakukan su sangat tidak jelas. [...] Singkat cerita: su benar-benar konsep yang rusak. Ini akan memberi Anda semacam shell , dan tidak apa-apa menggunakannya untuk itu, tapi itu bukan login penuh, dan tidak boleh salah dengan itu. " - Lennart Poettering

Lihat juga:

Pembunuhan proses latar belakang yang tidak terduga

Perintah seperti:

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 kesalahan, itu adalah keputusan yang disengaja, sehingga 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 saklar dan akhirnya secara default membersihkan semuanya dengan benar ketika pengguna logout.

Untuk info lebih lanjut, lihat:

Konsep startup tingkat tinggi

Dengan cara systemd bekerja mundur - dalam pekerjaan pemula mulai segera setelah mereka bisa dan dalam pekerjaan systemd mulai ketika mereka harus. Pada akhirnya, pekerjaan yang sama dapat dimulai oleh kedua sistem dan dalam urutan yang hampir sama, tetapi Anda memikirkannya dengan melihat dari arah yang berlawanan.

Berikut ini penjelasan Systemd untuk Pengguna Baru :

Upstart Model 's untuk memulai proses (pekerjaan) adalah 'serakah acara berbasis', pekerjaan yaitu semua tersedia yang startup peristiwa terjadi dimulai sedini mungkin. Selama boot, pemula mulai mensintesis beberapa peristiwa awal seperti startup atau rcS sebagai "root pohon", layanan awal dimulai, dan layanan kemudian mulai ketika yang pertama berjalan. Pekerjaan baru hanya perlu menginstal file konfigurasinya ke / etc / init / untuk menjadi aktif.

model systemd untuk memulai proses (unit) adalah "berbasis ketergantungan malas", yaitu sebuah unit hanya akan mulai jika dan ketika beberapa unit awal lainnya bergantung padanya. Selama boot, systemd memulai "root unit" (default.target, dapat ditimpa di grub), yang kemudian diperluas secara transparan dan memulai dependensinya. Unit baru perlu menambahkan dirinya sebagai ketergantungan dari unit dari urutan boot (biasanya multi-user.target) agar menjadi aktif.

Penggunaan dalam distribusi

Sekarang beberapa data terbaru menurut Wikipedia:

Distribusi menggunakan pemula baru secara default:

Distribusi menggunakan systemd secara default:

(Lihat Wikipedia untuk informasi terkini)

Distribusi yang menggunakan Upstart atau systemd:

Kontroversi

Di masa lalu, garpu Debian telah diusulkan untuk menghindari systemd . The Devuan GNU + Linux diciptakan - garpu dari Debian tanpa systemd (terima kasih kepada fpmurphy1 untuk menunjuk keluar di komentar).

Untuk info lebih lanjut tentang kontroversi ini, lihat:

Seperti yang mungkin sudah Anda ketahui, suara Debit GR Init yang dipromosikan oleh Ian Jackson tidak berguna untuk melindungi warisan Debian dan penggunanya dari longsoran systemd.

Situasi ini prospek kunci dalam dependensi systemd yang secara de facto mengancam kebebasan pembangunan dan memiliki konsekuensi serius bagi Debian, hulu dan hilirnya.

CTTE berhasil menukar ketergantungan dan memberi kami waktu lebih banyak daripada pemasangan halus systemd daripada sysvinit, tetapi bahkan proses ini melelahkan dan penuh drama. Akhirnya, seminggu yang lalu, Ian Jackson mengundurkan diri. [...]

Saya mengundurkan diri dari Komite Teknis dengan efek langsung.

Meskipun penting bahwa pandangan 30-40% dari proyek yang setuju dengan saya harus terus diwakili dalam TC, saya sendiri jelas terlalu kontroversial pada saat ini. Saya harus minggir untuk mencoba mengurangi sejauh mana percakapan tentang tata kelola proyek dipersonalisasi. [...]

Devuan lahir dari kontroversi atas keputusan untuk menggunakan sebagai sistem init default untuk Debian. The posisi resmi Debian pada systemd penuh klaim yang lain telah debunked . Pembaca yang tertarik dapat terus membahas topik hangat ini dalam kontroversi The systemd . Namun kami mendorong Anda untuk tetap tenang dan suara Anda sopan. Di Devuan kami lebih tertarik memprogram kesalahan mereka daripada melihat ke belakang. [...]

Beberapa situs web dan artikel yang didedikasikan untuk kontroversi systemd telah dibuat:

Ada banyak diskusi menarik tentang Hacker News:

Kecenderungan serupa di distro lain dapat diamati juga:

Filsafat

pemula mengikuti filosofi Unix dari DOTADIW - "Do One Thing and Do It Well." Ini adalah pengganti daemon init tradisional. Itu tidak melakukan apa pun selain memulai dan menghentikan layanan. Tugas-tugas lain didelegasikan ke subsistem khusus lainnya.

systemd melakukan lebih dari itu. Selain memulai dan menghentikan layanan, ia juga mengelola kata sandi, login, terminal, manajemen daya, pengaturan ulang pabrik, pemrosesan log, titik pemasangan sistem file, jaringan dan banyak lagi - lihat file BERITA untuk beberapa fitur.

Paket ekspansi

Menurut Perspektif untuk systemd Apa yang Telah Dicapai, dan presentasi What Lies Ahead oleh Lennart Poettering pada tahun 2014 di GNOME.asia, berikut adalah tujuan utama dari systemd, area yang sudah dicakup dan yang masih dalam proses:

tujuan systemd:

Tujuan kami

  • Mengubah Linux dari sekumpulan bit menjadi Sistem Operasi Tujuan Umum yang kompetitif.
  • Membangun OS Generasi Berikutnya Internet. Memersatukan perbedaan yang tidak ada artinya antara distribusi
  • Membawa inovasi kembali ke OS inti

  • Desktop, Server, Wadah, Tertanam, Mobile, Cloud, Cluster,. . . Area-area ini lebih dekat daripada yang Anda kira

  • Mengurangi kompleksitas administrator, keandalan tanpa pengawasan
  • Segalanya bisa ditinjau
  • Penemuan otomatis, plug and play adalah kuncinya
  • Kami memperbaiki hal-hal di mana mereka rusak, tidak pernah menempel padanya

Area yang sudah dicakup:

Apa yang sudah kita bahas:

sistem init, jurnal logging, manajemen login, manajemen perangkat, manajemen file sementara dan volatile, registrasi format biner, penyimpanan / pengembalian cahaya latar, penyimpanan / pengembalian rfkill, bootchart, readahead, pengaturan penyimpanan terenkripsi, penemuan partisi EFI / GPT, mesin / wadah virtual pendaftaran, manajemen wadah minimal, manajemen hostname, manajemen lokal, manajemen waktu, manajemen benih acak, manajemen variabel sysctl, manajemen konsol,. . .

Pekerjaan dalam proses:

Apa yang sedang kami kerjakan:

  • manajemen jaringan
  • systemd-networkd
  • Tembolok DNS lokal, penjawab mDNS, penjawab LLMNR, verifikasi DNSSEC
  • IPC di kernel
  • kdbus, sd-bus
  • Sinkronisasi waktu dengan NTP
  • systemd-timesyncd
  • Lebih banyak integrasi dengan wadah
  • Layanan Pengamplasan
  • Sandboxing Aplikasi
  • Format Gambar OS
  • Format gambar wadah
  • Format gambar aplikasi
  • GPT dengan penemuan otomatis
  • Sistem tanpa kewarganegaraan, sistem instantiatable, reset pabrik
  • / usr adalah OS
  • / etc adalah konfigurasi (opsional)
  • / var adalah status (opsional)
  • Inisialisasi dan pembaruan simpul atom
  • Integrasi dengan cloud
  • Manajemen layanan lintas node
  • Gambar OS yang dapat diverifikasi
  • Semua jalan ke firmware
  • Boot Sedang Memuat

Lingkup jawaban ini

Seperti dicatat fpmurphy1 dalam komentar, "Harus ditunjukkan bahwa systemd telah memperluas cakupan kerjanya selama bertahun-tahun jauh lebih dari sekadar startup sistem."

Saya mencoba memasukkan sebagian besar info yang relevan di sini. Di sini saya membandingkan fitur umum dari Upstart dan systemd ketika digunakan sebagai sistem init seperti yang ditanyakan dalam pertanyaan dan saya hanya menyebutkan fitur systemd yang melampaui ruang lingkup sistem init karena itu tidak dapat dibandingkan dengan Startup, tetapi keberadaannya penting untuk memahami perbedaan antara kedua proyek tersebut. Dokumentasi yang relevan harus diperiksa untuk informasi lebih lanjut.

Info lebih lanjut

Info lebih lanjut dapat ditemukan di:

Ekstra

The LinOxide Tim telah menciptakan systemd vs SysV Init Linux Cheatsheet .


4
... dan garpu Debian telah terjadi. Devuan GNU + Linux adalah garpu Debian tanpa systemd.
fpmurphy

2
Harus ditunjukkan bahwa systemd telah memperluas ruang lingkup kerjanya selama bertahun-tahun lebih dari sekadar startup sistem.
fpmurphy

1
Pos luar biasa dan sangat membantu bagi pria Cent. Terima kasih telah meluangkan waktu, Pak !!!
origin1tech

4
@ elektronmith service <foo> start/stop/restart/statusmasih berfungsi dengan baik. Seperti kebanyakan perangkat lunak unix, systemd menyediakan kompatibilitas perintah dengan standar yang sudah diketahui.
Shadur

2
Jawaban yang sangat bagus Namun satu poin: sistem operasi BSD bukan distribusi Linux: mereka adalah sistem operasi Unix yang berbeda dengan kernelnya sendiri.
Giorgio

68

Baik pemula dan systemd adalah upaya untuk memecahkan beberapa masalah dengan keterbatasan sistem init SysV tradisional. Sebagai contoh, beberapa layanan harus memulai setelah layanan lain (misalnya, Anda tidak dapat me-mount sistem file NFS sampai jaringan berjalan), tetapi satu-satunya cara di SysV untuk mengatasinya adalah dengan mengatur tautan di direktori rc # .d sedemikian rupa sehingga yang satu di depan yang lain. Tambahkan itu, Anda mungkin perlu memberi nomor ulang semuanya nanti ketika dependensi ditambahkan atau diubah. Pemula dan Systemd memiliki pengaturan yang lebih cerdas untuk mendefinisikan persyaratan. Juga, ada masalah dengan fakta bahwa semuanya adalah semacam skrip shell, dan tidak semua orang menulis skrip init terbaik. Itu juga berdampak pada kecepatan startup.

Beberapa kelebihan systemd yang bisa saya lihat:

  • Setiap proses yang dimulai mendapatkan cgroup sendiri atau cgroup tertentu.
  • Pra-pembuatan soket dan pegangan file untuk layanan, mirip dengan bagaimana xinetd melakukannya untuk layanannya, memungkinkan layanan yang bergantung untuk memulai lebih cepat. Sebagai contoh, systemd akan membuka filehandle untuk / dev / log untuk syslog, dan layanan selanjutnya yang mengirim ke / dev / log akan memiliki pesan mereka buffered sampai syslogd siap untuk mengambil alih.
  • Lebih sedikit proses berjalan untuk benar-benar memulai layanan. Ini berarti Anda tidak menulis skrip shell untuk memulai layanan Anda. Ini bisa menjadi peningkatan kecepatan, dan (IMO) sesuatu yang lebih mudah diatur di tempat pertama.

Satu kekurangan yang saya tahu adalah bahwa untuk mengambil keuntungan dari preallokasi socket / FH systemd, banyak daemon harus ditambal agar FH diteruskan kepada mereka oleh systemd.


13
PulseAudio adalah sistem suara yang banyak difitnah ( pulseaudio.org ), awalnya ditulis oleh Lennart Poettering, penulis systemd. Saya sebagian besar membuat lelucon di sini, karena saya tahu beberapa orang yang suka mengeluh tentang pulseaudio dan saya yakin mereka akan mengeluh tentang systemd juga. Jujur, saya tidak punya masalah dengan systemd atau pulseaudio.
jsbillings

4
Membuat satu hampir pinus untuk banyak rencana Plan9 ... semuanya file.
dhchdhd

4
Sejujurnya, pulseaudio adalah solusi untuk masalah yang tidak ada. Tidak ada yang dapat dilakukan PA yang tidak dapat dilakukan ALSA, dan saya telah mendengar BANYAK orang yang mengalami masalah dengan PA, berulang kali.
WhyNotHugo

3
Dua kelemahan systemd yang Anda lewatkan: (1) semua skrip startup harus ditulis ulang. (2) ada kompatibilitas yang jauh lebih sedikit dengan OS non-linux (seperti BSD, misalnya).
WhyNotHugo

8
Bagus sekali. Silakan lihat di 0pointer.de/blog/projects/the-biggest-myths . Saya menyaksikan pertumbuhan systemd, dan dapat membuktikan bahwa banyak kritik yang diberikan di sini sama sekali tidak berdasar. Pada tautan Anda akan menemukan pukulan demi pukulan, bantahan beralasan .
vonbrand

30

Saw systemddisebutkan di Arch General ML hari ini. Jadi bacalah tentang itu. H Online seperti biasa adalah sumber yang bagus untuk Teknologi Linux dan di sinilah saya menemukan tempat saya untuk mulai meneliti Systemd sebagai alternatif SysV Init dan Pemula . Namun artikel H Online (dalam hal ini) bukan merupakan bacaan yang sangat berguna, penggunaan sebenarnya di balik itu adalah memberikan tautan ke bacaan yang bermanfaat.

Jawaban sebenarnya ada di pengumuman systemd . Yang memberikan beberapa poin penting tentang apa yang salah dengan SysV initd, dan apa yang perlu dilakukan sistem baru

  • Untuk memulai lebih sedikit.
  • Dan untuk memulai lebih banyak secara paralel.

Rencana utamanya untuk memulai ini adalah memulai layanan hanya sesuai kebutuhan, dan memulai soket untuk layanan itu, sehingga layanan yang memerlukannya dapat terhubung ke soket yang dibuat jauh sebelum daemon sepenuhnya online. Rupanya sebuah socket akan menyimpan sejumlah kecil data buffer yang berarti bahwa tidak ada data yang hilang selama lag, itu akan ditangani segera setelah daemon online.

Bagian lain dari rencana ini tampaknya bukan membuat sistem file berseri, tetapi me-mount-kan mereka yang diminta juga, dengan cara itu Anda tidak menunggu Anda /home/, dll (jangan dikacaukan dengan /etc) untuk melakukan mount, dan / atau fsckketika Anda bisa mulai daemon sebagai /dan /var/lain - lain, sudah terpasang. Dikatakan akan menggunakan autofs untuk tujuan ini.

Ini juga memiliki tujuan untuk menciptakan .desktopdeskriptor init gaya sebagai pengganti skrip. Ini akan mencegah banyak shproses lambat dan bahkan lebih banyak proses dari hal-hal seperti seddan grepyang sering digunakan dalam skrip shell.

Mereka juga berencana untuk tidak memulai beberapa layanan sampai diminta, dan mungkin bahkan mematikannya jika tidak diperlukan lagi, modul bluetooth, dan daemon hanya diperlukan saat Anda menggunakan perangkat bluetooth misalnya. Contoh lain yang diberikan adalah daemon ssh. Ini adalah jenis hal yang mampu dilakukan inetd. Secara pribadi saya tidak yakin saya suka ini, karena itu mungkin berarti latensi ketika saya membutuhkannya, dan dalam kasus ssh saya pikir itu berarti kerentanan keamanan yang mungkin, jika inetd saya dikompromikan, seluruh sistem akan menjadi. Namun, saya telah diberitahu bahwa menggunakan ini untuk melanggar sistem ini tidak mungkin dan bahwa jika saya ingin, saya dapat menonaktifkan fitur ini per layanan dan dengan cara lain.

Fitur lain tampaknya akan menjadi kemampuan untuk memulai berdasarkan peristiwa waktu, baik pada interval yang dijadwalkan secara teratur atau pada waktu tertentu. Ini mirip dengan apa cronddan atdlakukan sekarang. Meskipun saya diberitahu itu tidak akan mendukung pengguna "cron". Secara pribadi ini terdengar seperti hal yang paling tidak berguna. Saya pikir ini ditulis / dipikirkan oleh orang-orang yang tidak bekerja di lingkungan multiuser, tidak ada banyak tujuan untuk pengguna cron jika Anda satu-satunya pengguna pada sistem, selain tidak berjalan sebagai root. Saya bekerja pada sistem multiuser setiap hari, dan aturannya selalu menjalankan skrip pengguna sebagai pengguna. Tapi mungkin saya tidak memiliki pandangan ke depan yang mereka lakukan, dan itu tidak akan berhasil sehingga saya tidak dapat menjalankan crondatau atd, jadi itu tidak menyakiti siapa pun kecuali pengembang saya kira.

Kerugian besar dari systemd adalah bahwa beberapa daemon harus dimodifikasi untuk memanfaatkannya sepenuhnya. Mereka akan bekerja sekarang, tetapi mereka akan bekerja lebih baik jika mereka ditulis khusus untuk model soketnya.

Tampaknya sebagian besar masalah orang-orang systemd dengan pemula adalah sistem acara, dan mereka percaya itu tidak masuk akal atau tidak perlu. Mungkin kata-kata mereka yang terbaik.

Atau untuk membuatnya lebih sederhana: fakta bahwa pengguna baru saja memulai D-Bus sama sekali bukan indikasi bahwa NetworkManager juga harus dimulai (tetapi inilah yang akan dilakukan oleh pemula). Itu benar sebaliknya: ketika pengguna meminta NetworkManager, itu pasti indikasi bahwa D-Bus juga harus dimulai (yang tentunya apa yang diharapkan sebagian besar pengguna, kan?).
Sistem init yang baik harus memulai hanya apa yang dibutuhkan, dan sesuai permintaan. Baik malas atau paralel dan di muka. Namun itu tidak boleh dimulai lebih dari yang diperlukan, terutama tidak semua yang diinstal yang dapat menggunakan layanan itu.

Seperti yang sudah saya katakan ini dibahas jauh lebih komprehensif dalam pengumuman systemd .


maaf tapi pengumumannya seperti buku. Saya harus membaca dan grok, sebelum saya benar-benar bisa memasukkan lebih banyak di sini.
xenoterracide

2
Bagaimana ini lebih baik dari jawaban @ John? Apakah ini pengganti? Promo H Online ?
tshepang

1
@tshepang juga sebenarnya terhubung ke pengumuman sistem d dan hal-hal online memiliki tautan ke sana dan tautan menarik lainnya. itu bacaan yang panjang dan membosankan. Saya mungkin menambahkan lebih banyak setelah saya menggosoknya ... ini bukan subjek yang sederhana . ketika saya menulis ini, saya pikir Anda mungkin ingin mulai membaca lebih cepat daripada nanti. tapi jangan ragu untuk mengubah saya. jawaban pasti @ jsbillings layak, dan lebih baik dari saya sejauh ini. tetapi tidak sebagus membaca pengumuman itu sendiri
xenoterracide

@tepang, saya mungkin akan menambahkan lebih banyak besok, setelah tidur. h hal-hal online hanya saya menjadi jurnalis yang baik dan mengutip sumber saya.
xenoterracide

@tepang. Saya telah memperbarui jawaban saya. cukup yakin saya sudah selesai kecuali orang-orang yang membantu di irc: //frenode.net/systemd memutuskan mereka ingin menawarkan semacam koreksi.
xenoterracide

11

Nah satu hal yang sebagian besar dari Anda lupa adalah organisasi proses dalam cgroup .

Jadi jika systemd memulai sesuatu, itu akan menempatkan hal ini dalam kelompok sendiri dan tidak ada (tidak terselamatkan) berarti bagi proses untuk melarikan diri kelompok itu. Inilah konsekuensi dari itu:

  • Administrator sistem besar dengan banyak pengguna memiliki cara baru yang efisien untuk mengidentifikasi pengguna / proses jahat.
  • Prioritas untuk penjadwalan CPU dapat ditentukan lebih baik seperti yang dilakukan oleh "Wonder autocgroup patch" .

8

Untuk tampilan yang sangat terperinci pada systemd, dimulai dengan draf desain pertama (dan kritik terperinci tentang sistem init yang ada, termasuk pemula, dan bagaimana systemd mengusulkan untuk memperbaikinya), buka beranda . Seiring waktu, ada beberapa artikel tentang startup yang diterbitkan di LWN . Harap diperhatikan bahwa penyebutan systemd (atau pulseaudio) di sana memicu flamewar yang tidak pernah berakhir.

IMVHO (dan sebagai pengguna Fedora) saya sangat senang dengannya. Sesuatu di baris ini sudah lama tertunda untuk menangani kompleksitas sistem Linux saat ini. Fedora menggunakan pemula baru untuk sementara waktu, tetapi tidak pernah keluar dari tahap menjadi pengganti mewah untuk sysvinit, menjalankan skrip init sebagian besar tidak berubah. Janji untuk menyederhanakan konfigurasi boot dikenakan biaya lagisecara manual mengatur saling ketergantungan, dan itu tidak berfungsi. angka-angka systemd dependecies dengan sendirinya (atau hanya memungkinkan hal-hal mulai tanpa memperhatikan dependensi, mereka memilah diri mereka sendiri). Keuntungan besar lainnya (ada yang mengatakan itu adalah kerugian yang parah) adalah bahwa ia mengeksploitasi fitur spesifik Linux ke gagangnya (terutama cgroup memungkinkan mengisolasi daemon dan semua turunannya, sehingga mudah untuk memantau, membatasi sumber daya, atau membunuh mereka sebagai sebuah kelompok; ada banyak lainnya).


3

Penjurnalan - Systemd secara harfiah seperti folder WinSXS ketika datang ke hal-hal logging, itu menciptakan salinan salinan kecuali jika Anda secara manual menghapus atau mengurangi ukuran file itu akan terus menggerogoti drive Anda. Saya menyebutnya boot loader cookie.


salah. itu bukan salinan dan memiliki batas yang dapat dikonfigurasi freedesktop.org/software/systemd/man/journald.conf.html
sobat
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.