Bagaimana cara mem-boot sistem FreeBSD dengan bootcode yang rusak?

8

Saya memiliki HDD (atau SSD, atau flash drive) dengan FreeBSD diinstal di dalamnya, dan entah bagaimana saya memecahkan bootcode (pertama 446 byte MBR). Bagaimana saya bisa boot ke FreeBSD ini?

AntonioK
sumber

Jawaban:

13

Dengan asumsi ada MBR 512-byte seperti DOS, dan Anda telah mengganti 446 byte pertama dengan beberapa omong kosong ( nol atau hanya /dev/urandomkeluaran), atau merusak bootcode dengan cara lain. Dalam hal ini tabel partisi MBR ada di tempatnya, tetapi sistem tidak dapat melakukan boot dari perangkat ini.

Ide adalah menggunakan loader sistem mirip BSD lainnya untuk melakukan booting dengan perangkat Anda dan kernel Anda.

  • Anda harus mulai boot ke OS seperti BSD (Saya sudah mencoba dengan FreeBSD 6.0, 7.0, 8.0, 8.1, 8.2, 8.3, 8.4, 9.2 dan Frenzy 1.4) dari HDD, CD, flash drive, PXE, media virtual via BMC lainnya / KVM, dll.
  • Selama proses boot tekan opsi "Escape to loader prompt" pada layar loader (itu akan menjadi "6" di sistem FreeBSD yang lebih lama, "3" di FreeBSD 9, "8" di Frenzy)
  • Bongkar kernel dan modulnya dengan mengetik unload
  • Cari tahu perangkat dari mana Anda ingin mem-boot FreeBSD (biasanya mirip disk0s1a) dengan mengetiklsdev
  • Setel perangkat ini "saat ini" dengan mengetik set currdev="disk0s1a"
  • Baca kembali loder.confdari perangkat Anda (untuk memastikan bahwa semua tuning dan peretasan kernel Anda akan berlaku) dengan mengetikread-conf boot/loader.conf
  • Mulai OS dan nikmati - ketikkan saja boot-conf

Ketika OS Anda mulai, Anda dapat memperbaiki bootcode. Saya menggunakan sysinstalluntuk itu (Custom -> Partisi, W, <Yes>, BootMgr( "Instal FreeBSD Boot Manager"), <OK>, Q, <Exit>, <Exit Install>), tetapi sudah ditinggalkan sejak 9,0-RELEASE dan dihapus dari basis sejak 10,0-RELEASE. Cara lain adalah dengan menggunakan cadangan, disimpan di /boot, untuk mengekstrak bootcode dari itu:

# gpart bootcode -b /boot/mbr /dev/yourbootdevice
AntonioK
sumber