Sekarang, untuk penjelasan rinci tentang apa yang telah saya tulis di atas.
Sementara initramf dan initrd memiliki tujuan yang sama, ada 2 perbedaan. Perbedaan yang paling jelas adalah initrd di-load ke ramdisk. Ini terdiri dari sistem file aktual (biasanya ext2) yang dipasang di ramdisk. Initramfs, di sisi lain, bukan sistem file. Ini hanyalah sebuah arsip cpio (terkompresi) (dari tipe newc) yang diurai menjadi tmpfs. Ini memiliki efek samping membuat initramfs sedikit lebih dioptimalkan dan mampu memuat sedikit lebih awal dalam proses boot kernel daripada initrd. Juga, ukuran initramfs dalam memori lebih kecil, karena kernel dapat mengadaptasi ukuran tmpfs dengan apa yang sebenarnya dimuat, daripada mengandalkan ukuran ramdisk yang telah ditentukan,
Ada juga perbedaan efek samping lainnya: bagaimana perangkat root (dan beralih ke itu) ditangani. Karena initrd adalah sistem file aktual yang dibongkar ke dalam ram, perangkat root harus benar-benar menjadi ramdisk. Untuk sebuah initramfs, terdapat sebuah kernel "rootfs" yang menjadi tmpfs yang inpackknya dibongkar (jika kernel memuat initramfs; jika tidak, maka rootf hanyalah sistem file yang ditentukan melalui root = parameter boot kernel), tetapi rootfs sementara ini tidak boleh ditentukan sebagai root = parameter boot (dan tidak akan ada cara untuk melakukannya, karena tidak ada perangkat yang terpasang padanya). Ini berarti Anda masih bisa meneruskan perangkat root asli Anda ke kernel saat menggunakan initramfs. Dengan initrd, Anda harus memproses apa perangkat root sebenarnya. Juga, karena "nyata" perangkat root dengan initrd adalah ramdisk, kernel harus benar-benar mengubah perangkat root dari satu perangkat nyata (ramdisk) ke perangkat lain (root asli Anda). Dalam kasus initramfs, ruang initramfs (tmpfs) bukan perangkat nyata, sehingga kernel tidak beralih perangkat nyata. Jadi, ketika perintah pivot_root digunakan dengan initrd, perintah yang berbeda harus digunakan untuk initramfs. Busybox menyediakan switch_root untuk mencapai hal ini, sementara klibc menawarkan new_root. perintah yang berbeda harus digunakan untuk initramfs. Busybox menyediakan switch_root untuk mencapai hal ini, sementara klibc menawarkan new_root. perintah yang berbeda harus digunakan untuk initramfs. Busybox menyediakan switch_root untuk mencapai hal ini, sementara klibc menawarkan new_root.
pivot_root
di masa lalu untuk initramfs,switch_root
tidak ada pada waktu itu.switch_root
tampaknya menjadi metode kenyamananpivot_root
yang melakukan pembersihan lebih lanjut dan juga bergerak/proc
/sys
dan/dev
lain-lain dan bukan hanya root itu sendiri