Alasan switch_root
tidak berfungsi pada baris perintah apakah kode ini di busybox:
if (st.st_dev == rootdev || getpid() != 1) {
// Show usage, it says new root must be a mountpoint
// and we must be PID 1
bb_show_usage();
}
Anda bukan PID 1, jadi Anda termasuk dalam bb_show_usage
ini . Implikasinya adalah switch_root
perintah dalam skrip initramfs init Anda harus menjalankan switch_root
dengan exec
. yaitu
exec switch_root ...
Masalah lain dengan kesalahan "tidak ditemukan" Anda kemungkinan karena pustaka bersama yang diperlukan oleh file yang dapat dieksekusi tidak ditemukan, karena sistem file root initramfs tidak memilikinya. Jika Anda bisa mendapatkan switch_root
untuk bekerja dengan exec
, kemungkinan kesalahan "tidak ditemukan" akan hilang.