Apakah proses INIT diperlukan untuk instalasi ultralight Linux?

3

Saya sedang mengerjakan linux versi ringan tanpa alasan khusus selain untuk melihat seberapa kecil saya bisa membuatnya. Saya bertanya-tanya apakah INIT diperlukan, atau apakah saya bisa melakukan semua tugas terkait INIT (fsck, unmount, dll) dengan skrip tangan / bash?

Saya tidak perlu fungsionalitas multi-pengguna (Atau banyak hal dalam hal ini). Saya mulai dengan pangkalan Gentoo 2.0.2 Instal dengan kernel 2.6.38.

berk98
sumber

Jawaban:

4

Tidak terlalu. Anda dapat memulai kernel dengan parameter init=/bin/bashuntuk sistem yang sangat minim.

Keith
sumber
Fungsionalitas yang sangat berguna, terutama saat menjalankan kernel UserMode.
new123456
Itu bekerja dengan baik. Saya tidak yakin mengapa saya tidak memikirkannya sebelumnya. Terima kasih banyak!
Berk98
6

Pertama-tama, Anda harus membedakan dua hal: program memanggil initdan proses init yang dijalankan linux setelah memuat dan melakukan startup dasar - yang juga disebut init oleh kernel.

Yang pertama adalah sebuah program , sama seperti yang lain, yang tugasnya adalah memulai startup sistem dengan menjalankan berbagai program lain dan mengontrol penutupannya. Program paling populer seperti itu adalah sysvinit . Ini adalah implementasi paling populer dari "induk dari semua proses", ditemukan pada sebagian besar distribusi linux standar dan biasanya ada sebagai /sbin/init.

Yang kedua hanyalah perintah yang diketahui dan dijalankan oleh kernel linux secara otomatis saat boot. Jadi Anda bisa memberi tahu kernel untuk menjalankan program lain menggantikan init. Sebagai contoh, pendekatan yang populer untuk melakukan pemulihan sistem adalah memberitahu linux untuk menjalankan /bin/bashatau applet /sbin/busybox(lihat komentar di bawah). Itu bisa dilakukan dengan memberikan nama program sebagai parameter boot (seperti init=/bin/bash).

Perhatikan bahwa ketika proses init keluar, sistem dihentikan menjadi praktis tidak dapat digunakan.

Selain bash dan busybox, ada beberapa penggantian init di luar sana yang bisa melakukan lebih atau kurang apa yang dilakukan init. Anda mungkin ingin melihat minit , runit , cinit , jinit , pemula atau initng . Tetapi jika Anda membidik solusi yang benar-benar minimal tanpa paralelisme startup atau fitur-fitur canggih, busybox bisa menjadi pilihan terbaik.

jankes
sumber
Anda dapat menggunakan init=/bin/bashsecara langsung, tetapi Anda perlu sesuatu init=/sbin/busybox ashuntuk mendapatkan shell. Atau dari bash kamu bisa lari /sbin/busybox <applet>. Walaupun saya dapat melihat manfaat dari memiliki busybox yang tersedia, saya tidak tahu apakah mem-boot langsung ke sana memiliki manfaat lebih dari bash, Bagaimanapun, saya terutama ingin menunjukkan bahwa Anda perlu menambahkan ashuntuk mendapatkan shell busybox. Tanpa itu, busybox hanya menampilkan daftar applet dan menyebabkan kepanikan kernel ... setidaknya pada CentOS 5.6, di mana saya mengujinya.
Joe Internet
@ Jo Ah, ya - pasti benar. Anda harus menjalankan busybox dengan nama applet atau memiliki tautan ke sana (beberapa instalasi menyediakannya dengan dafault, dari apa yang saya ingat).
jankes