Pasang root filesystem dari initramfs

16

Ini adalah skenario umum. Untuk alasan apa pun, initramfs (OpenSUSE, jika itu penting) telah gagal menemukan sistem file root, sehingga menjatuhkan Anda ke dalam shell penyelamatan. Saya tahu betul perangkat apa yang perlu dipasang. Pertanyaan saya:

Apa prosedur yang benar untuk memasang sistem file root dan melanjutkan urutan boot?

Agaknya itulah seluruh titik dari konsol penyelamatan. Namun, sepertinya tidak ada yang mendokumentasikan bagaimana Anda sebenarnya melakukan ini.

Jelas saya bisa me-mount root filesystem di suatu tempat. Tetapi bagaimana cara menjadikan itu root dari pohon sistem file? Dan sekarang apakah saya melanjutkan proses boot normal setelah itu? (Saya pikir hanya keluar dari shell akan melakukannya ... tetapi tidak.) Apa sebenarnya yang Anda butuhkan untuk dipasang sebelum Anda melanjutkan, dan bagaimana Anda melanjutkan?

Matematika Matematika
sumber
2
Saya bisa saja salah, tetapi saya pikir begitu Anda berada di shell penyelamat Anda tidak dapat melanjutkan boot saat ini, Anda memperbaiki hal-hal sehingga boot berikutnya akan berhasil
Eric Renouf
@EricRenouf mem-boot seluruh sistem secara manual mungkin merupakan cara termudah untuk memperbaiki masalah tersebut. Saya memiliki masalah di masa lalu di mana initramfs gagal membuka partisi root terenkripsi cryptsetup-luks saya, dan perbaikan termudah adalah dengan mem-bootnya secara manual dan kemudian menjalankannya update-initramfs -u. Saya benar-benar tidak bisa membuatnya bekerja ketika saya baru saja chrootmasuk ke sistem file root dari sistem penyelamatan; initramf yang dihasilkan selalu rusak.
Martin von Wittich
Apakah ini sebenarnya initrd, atau initramfs? (Hanya karena file dipanggil initrdbukan berarti file itu salah satu: sebagian besar distribusi telah beralih ke initramfstetapi tetap memanggil file tersebut initrd.) Distribusi apa yang Anda gunakan (seperti apa initrd / initramfs tergantung pada distribusi yang diletakkan di sana)?
Gilles 'SANGAT berhenti menjadi jahat'
@Gilles Saya cukup yakin itu sebenarnya initramfs. Tidak yakin apakah itu benar-benar membuat perbedaan; Bagaimanapun, saya punya filesystem mini dan saya perlu me-mount filesystem yang sebenarnya. (OpenSUSE, kalau-kalau itu penting.)
MathematicalOrchid

Jawaban:

2

prosedur normal

  1. mount / dev / sdX / mnt
  2. memperbaiki masalah pada / mnt
  3. reboot

Anda mungkin ingin

  1. mount / dev / sdX / mnt
  2. memperbaiki / mnt
  3. umount / mnt
  4. mount / dev / sdX /
  5. selesaikan booting secara manual

Ini tidak disarankan, Anda harus melakukannya di setiap boot. Dalam lingkungan produksi, Anda tidak dapat memastikan boot manual mengikuti langkah yang sama seperti yang otomatis.

Namun dalam keadaan darurat dengan data penting, langkah 5 biasanya berubah menjadi:

  • 5.1 mengatur jaringan
  • 5.2 menyalin file penting ke tempat yang aman
Archemar
sumber
2
Saya percaya pertanyaan "sebenarnya" dari poster asli adalah "Bagaimana tepatnya Anda melakukan 5. menyelesaikan boot secara manual?"
user2121874
2

Cukup jalankan fsckperintah tanpa opsi sejak initramfssaat itu reboot

misal: partisi root adalah sda3

fsck /dev/sda3
GAD3R
sumber
Reboot hanya menjatuhkan saya ke shell grub bukannya initramfs shell. Sekarang saya akan melakukan semuanya lagi untuk mendapatkan initramfs shell
jaam
1

Jika root=parameternya benar dan masalahnya hanya bahwa perangkat yang diperlukan tidak tersedia (misalnya karena initramf gagal merakit mdRAID), maka itu cukup untuk membuat perangkat tersedia secara manual, misalnya:

mdadm --assemble ...

Kemudian periksa apakah perangkat ada di sana dan jika semuanya terlihat baik, tekan ctrl+ datau ketik exituntuk keluar dari shell initramfs. Initramfs kemudian akan me-mount sistem file root dan melanjutkan untuk boot seperti biasa. Setelah sistem boot, Anda harus memperbaiki masalah yang mendasarinya, misalnya dengan menjalankan update-initramfs -u.

Saya belum menemukan cara untuk memberitahu initramfs untuk mem-boot perangkat yang berbeda dari yang /proc/cmdlinedikatakan. Mungkin orang lain punya ide?

Martin von Wittich
sumber