it-swarm-id.com

Apa pro / kontra dari pemula dan systemd?

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

187
tshepang

Pembaruan 2016

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

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

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

(Perhatikan bahwa menurut wiki Ubunt Anda masih dapat menjalankan pemula pada versi Ubuntu saat ini secara default dengan menginstal upstart-sysv dan menjalankan Sudo update-initramfs -u tetapi dengan mempertimbangkan ruang lingkup proyek systemd, saya tidak tahu bagaimana cara kerjanya dalam praktiknya, atau apakah systemd memungkinkan untuk dihapus atau tidak.)

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

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:

  • kaya baru: start foo
  • systemd: systemctl start foo

Menghentikan pekerjaan:

  • kaya baru: stop foo
  • systemd: systemctl stop foo

Mulai ulang pekerjaan foo:

  • kaya baru: restart foo
  • systemd: systemctl restart foo

Daftar pekerjaan:

  • kaya baru: initctl list
  • systemd: systemctl status

Memeriksa konfigurasi job foo:

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

Daftar variabel lingkungan pekerjaan:

  • kaya baru: initctl list-env
  • systemd: systemctl show-environment

Mengatur variabel lingkungan kerja:

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

Menghapus variabel lingkungan kerja:

  • kaya baru: 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 perintah journalctl untuk mengaksesnya:

Sudo journalctl -u foo
Sudo journalctl -u foo -f

Skrip

Contoh skrip pemula 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 script 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

Pengganti perintah su digabungkan ke systemd dengan permintaan tarik # 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 perilaku seperti su- adalah sekarang:

machinectl Shell

Sudah lebih jauh dijelaskan oleh Lennart Poettering dalam diskusi untuk menerbitkan # 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, Nohup adalah perintah POSIX untuk memastikan bahwa proses terus berjalan setelah Anda keluar dari sesi Anda. Itu tidak lagi berfungsi pada systemd. Juga program-program seperti screen dan tmux perlu dipanggil dengan cara khusus atau sebaliknya proses yang Anda jalankan dengan mereka akan terbunuh (sementara tidak membuat proses-proses tersebut terbunuh biasanya alasan utama menjalankan layar atau tmux di tempat pertama).

Ini bukan kesalahan, itu adalah keputusan yang disengaja, sehingga tidak mungkin diperbaiki di masa depan. Inilah yang Lennart Poettering telah katakan 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 dapat 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.

Begini caranya Systemd untuk Pengguna Bar menjelaskannya:

Model pemula untuk memulai proses (pekerjaan) adalah "berbasiskan acara serakah", i. e. semua pekerjaan yang tersedia yang acara permulaannya 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", i. e. 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 (umumnya 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 info terkini)

Distribusi yang menggunakan Upstart atau systemd:

Kontroversi

Di masa lalu garpu Debian telah diusulkan untuk menghindari systemd . The Devuan GNU + Linux telah dibuat - garpu Debian tanpa systemd (terima kasih kepada fpmurphy1 untuk menunjukkannya 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 di 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 dengan klaim bahwa yang lain telah menghilangkan prasangka . Pembaca yang tertarik dapat terus membahas topik hangat ini di Kontroversi 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 Peretas Berita:

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 berita BERITA file untuk beberapa fitur.

Paket ekspansi

Menurut Perspektif untuk systemd Apa yang Telah Dicapai, dan What Lies Ahead presentasi oleh Lennart Poettering pada tahun 2014 di GNOME.asia, berikut adalah tujuan utama dari systemd, area yang sudah dicakup dan yang sudah 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 kunci
  • Kami memperbaiki hal-hal di mana mereka rusak, tidak pernah menempelkannya

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 kontainer
  • 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

Sebagaimana fpmurphy1 disebutkan dalam komentar, "Harus ditunjukkan bahwa systemd telah memperluas cakupan pekerjaannya selama bertahun-tahun lebih dari sekadar startup sistem."

Saya mencoba memasukkan sebagian besar info yang relevan di sini. Di sini saya membandingkan fitur-fitur umum dari Upstart dan systemd ketika digunakan sebagai sistem init seperti yang ditanyakan dalam pertanyaan dan saya hanya menyebutkan fitur-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

Tim LinOxide telah membuat Systemd vs SysV Init Linux Cheatsheet .

92
rsp

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 menangani itu 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-kreasi soket dan file menangani untuk layanan, mirip dengan bagaimana xinetd melakukan untuk layanan itu, memungkinkan layanan 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 buffer pesan-pesan mereka 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.

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

68
jsbillings

Melihat systemd disebutkan di Arch General ML hari ini. Jadi bacalah tentang itu. The 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 Upstart . Namun artikel H Online (dalam hal ini) bukan 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 soket akan menyimpan sejumlah kecil data buffer yang berarti bahwa tidak ada data yang hilang selama jeda, itu akan ditangani segera setelah daemon online.

Bagian lain dari rencana ini tampaknya bukan membuat sistem file serial, tetapi me-mount-nya juga sesuai permintaan, dengan begitu Anda tidak menunggu /home/, Dll. (Jangan bingung dengan /etc) untuk me-mount, dan/atau fsck ketika Anda bisa memulai daemon sebagai / dan /var/ dll, sudah terpasang. Dikatakan akan menggunakan autofs untuk tujuan ini.

Ia juga memiliki tujuan untuk menciptakan deskriptor init gaya .desktop Sebagai pengganti skrip. Ini akan mencegah banyak proses sh lambat dan bahkan lebih banyak proses garpu dari hal-hal seperti sed dan grep yang 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 ketika Anda menggunakan perangkat bluetooth misalnya. Contoh lain yang diberikan adalah daemon ssh. Ini adalah jenis hal yang inetd mampu lakukan. 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 mau, 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 yang crond dan atd lakukan 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 bisa menjalankan crond atau atd, jadi tidak ada salahnya 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 (tapi 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 di pengumuman systemd .

29
xenoterracide

Nah satu hal yang sebagian besar dari Anda lupa adalah organisasi proses di cgroups .

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" .
11
enaut

Untuk tampilan yang sangat terperinci pada systemd, dimulai dengan draf desain pertama (dan kritik mendetail tentang sistem init yang ada, termasuk pemula, dan bagaimana systemd mengusulkan untuk memperbaikinya), buka --- halaman 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 dengan itu. 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 sebagian besar skrip init tidak berubah. Janji untuk menyederhanakan konfigurasi boot datang dengan biaya lagi secara manual mengatur saling ketergantungan, dan itu tidak berfungsi. angka-angka systemd bergantung 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).

8
vonbrand

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.

3
Bert