GNU/Linux >> Belajar Linux >  >> Linux

Linux – Kapan Anda Akan Menggunakan Pivot_root Daripada Switch_root?

Saya ingin memahami proses init Linux dengan lebih baik untuk melakukan netboot sistem melalui ceph daripada nfs.

Dalam prosesnya saya menemukan dua bentuk root switching. Satu disebut switch_root, dan yang lainnya disebut pivot_root. Skrip ini dijalankan dari sistem file dalam memori (initramfs) yang diperoleh melalui tftp menggunakan proses boot pxe.

Kapan Anda akan menggunakan satu di atas yang lain? Saya telah melihat keduanya digunakan di beberapa skrip init yang ditempatkan di root.

Jawaban yang Diterima:

Saya menemukan penjelasan yang luar biasa di sini. Namun, izinkan saya mencoba untuk memasukkan dalam format yang lebih pendek dari apa yang saya pahami dalam jawabannya.

Versi Singkat

  1. Saat sistem melakukan booting, sistem membutuhkan ruang pengguna awal. Ini dapat
    dicapai dengan menggunakan initramfs atau initrd.
  2. awal dimuat ke ramdisk yang adalah yang sebenarnya SISTEM FILE .
  3. initramfs adalah tidak sistem file .
  4. Untuk initrd pivot_root digunakan dan untuk initramfs switch_root digunakan.

Versi Lebih Panjang

Sekarang, untuk penjelasan rinci tentang apa yang telah saya paparkan di atas.

Meskipun initramfs dan initrd memiliki tujuan yang sama,
ada 2 perbedaan. Perbedaan yang paling jelas adalah bahwa initrd
dimuat ke dalam ramdisk. Ini terdiri dari sistem file aktual (biasanya
ext2) yang dipasang di ramdisk. Initramfs, di sisi lain,
bukan sistem file. Ini hanyalah arsip cpio (terkompresi) (dari tipe
newc) yang dibongkar menjadi tmpfs. Ini memiliki efek samping membuat
initramfs sedikit lebih optimal dan mampu memuat sedikit
lebih awal dalam proses boot kernel daripada initrd. Juga, ukuran
initramf dalam memori lebih kecil, karena kernel dapat menyesuaikan
ukuran tmpfs dengan apa yang sebenarnya dimuat, daripada mengandalkan
ukuran ramdisk yang telah ditentukan, dan juga dapat membersihkan ram yang
digunakan sedangkan ramdisk cenderung tetap digunakan (karena detail
implementasi pivot_root).

Ada juga perbedaan efek samping lainnya:bagaimana perangkat root (dan
beralih ke sana) ditangani. Karena initrd adalah sistem file
aktual yang dibongkar ke dalam ram, perangkat root harus benar-benar ramdisk. Untuk
sebuah initramfs, ada kernel “rootfs” yang menjadi tmpfs yang
initramfs di-unpack (jika kernel memuat sebuah initramfs; jika
tidak, maka rootfs hanyalah sistem file ditentukan melalui root=
parameter boot kernel), tetapi rootf sementara ini tidak boleh
ditetapkan sebagai parameter root=boot (dan tidak akan ada cara untuk
melakukannya, karena tidak ada perangkat yang terpasang padanya). Ini berarti bahwa Anda
masih dapat meneruskan perangkat root asli Anda ke kernel saat menggunakan initramfs
. Dengan initrd, Anda harus memproses sendiri apa sebenarnya perangkat
root itu. Juga, karena perangkat root "asli" dengan initrd
adalah ramdisk, kernel harus benar-benar memindahkan perangkat root dari satu
perangkat nyata (ramdisk) ke perangkat lainnya (root asli Anda). Dalam kasus
sebuah initramfs, ruang initramfs (tmpfs) bukanlah perangkat nyata,
sehingga kernel tidak mengganti perangkat nyata. Jadi, sementara perintah
pivot_root digunakan dengan initrd, perintah yang berbeda harus digunakan
untuk initramfs. Busybox menyediakan switch_root untuk melakukan ini,
sementara klibc menawarkan new_root.


Linux
  1. Jenis Sistem File Linux Dijelaskan, Yang Mana Yang Harus Anda Gunakan

  2. Antivirus di Linux:Haruskah Saya Benar-Benar Menggunakannya dan Jika Ya, Kapan Saya Membutuhkannya?

  3. Klien Torrent Terbaik yang Dapat Anda Gunakan di Desktop Linux

  1. Untuk beban kerja apa Anda pertama kali menggunakan container Linux?

  2. Tiga Perintah Linux yang Seharusnya Tidak Anda Gunakan

  3. Kapan Yum Berguna Bagi Pengguna Ubuntu?

  1. Berapa umur Anda saat pertama kali menggunakan Linux?

  2. Matikan hard disk (cadangan) saya di Linux saat saya tidak menggunakannya

  3. Di server linux, bagaimana Anda menggunakan banyak terminal melalui satu koneksi ssh?