Hard drive yang saya gunakan hanya untuk penyimpanan data masih memiliki GRUB dari instalasi Ubuntu sebelumnya.
Bagaimana saya bisa menghapus GRUB darinya tanpa merusak data drive lainnya?
Latar Belakang
Saya kadang-kadang memindahkan drive data antara komputer dengan berbagai konfigurasi urutan boot, jadi saya ingin agar non-bootable untuk menghindari keharusan mengakomodasinya di pengaturan BIOS setiap komputer.
Ketika saya menyalakan komputer saat hanya drive data terpasang, yang berikut ini muncul:
error: no such device: fdf38dd4-9e9d-479d-b830-2a6989958503.
grub rescue>
Saya dapat mengonfirmasi dari cadangan lama /etc/fstab
bahwa ini adalah UUID dari partisi root yang baru-baru ini saya format ulang dan tidak lagi ada . Berikut tabel partisi drive data dan catatan boot master mentah .
Harap dicatat bahwa saya tidak tertarik dengan solusi yang tidak menjawab pertanyaan utama saya. Saya dapat memikirkan beberapa cara untuk mengatasi masalah ini, tetapi pada dasarnya saya merasa terganggu karena saya tidak tahu bagaimana cara mengatasinya secara langsung. Setiap prosedur instalasi harus memiliki prosedur penghapusan mitra.
sfdisk -d /dev/sdb > sdb.out
.Jawaban:
Anda dapat membuat perangkat tidak dapat di-boot hanya dengan membuat beberapa byte pertama dari disk 0x00.
Biasanya (dan ini berlaku untuk grub, grub2 dan ntldr iirc) byte pertama dari drive Anda akan menjadi instruksi x86 jmp. Ini terjadi bahkan sebelum disklabel, karena ketika meneruskan eksekusi ke perangkat untuk bootstrap, ia hanya mengatur CPU untuk menyedot informasi perangkat sebagai kode. Jika memiliki kode yang tidak valid, hal itu memicu interupsi dan BIOS menangani pengecualian dan pergi ke perangkat yang dapat dibooting berikutnya.
Misalnya, awal disk saya dimulai dengan:
Bagian pertama
eb 63
adalah Jump untuk mengimbangi 0x63 dari IP saat ini (jadi ke 0x65).Eksekusi berlanjut dari sini.
Akhir dari sektor ini terlihat seperti ini:
Jika disk Anda diformat sebagai tabel partisi MBR maka hanya perlu dua hal untuk hadir, tabel partisi yang di offset
0x1be
dan tanda tangan MBR,55aa
yang terjadi di bagian paling akhir sektor di offset0x1fe
.0x1be
adalah desimal 446.Berikut ini akan (tentu saja) membuat perangkat unbootable. Tapi ini yang kamu inginkan. Jika Anda tidak ingin perangkat Anda tidak dapat di-boot maka jangan lakukan ini, mmm-kay? Saya berasumsi bahwa perangkat Anda adalah
/dev/sdz
, hanya karena tidak banyak orang memilikinya/dev/sdz
, dan ini menurunkan risiko beberapa orang idiot pemula secara buta menyalin perintah menempel.Pertama, salin MBR ke file untuk cadangan.
Selanjutnya, buat salinan file itu:
Selanjutnya, kita harus membuat perangkat loopback (sehingga konten tidak terpotong.) Dan menerapkan perubahan pada sektor 0 palsu kami sebagai ujian:
hexdump
file dan pastikan seluruh tabel partisi utuh:Anda harus melihat sesuatu seperti:
Sekarang,
0x1be
adalah di mana Anda melihat80
pada output hexdumped, ini juga bisa00
dan masih berlaku. (Ini bendera "bootable" di tabel partisi, Anda dapat membiarkannya sendiri, karena sepenuhnya diabaikan oleh sebagian besar BIOS modern ...) Byte pada0x1bf
hampir tidak akan pernah0x00
(itu paling umum0x01
tetapi dapat mengambil nilai lain) Anda dapat membandingkan ini dengan Andabackup.mbr
untuk memastikan bahwa tidak ada masa lalu0x1be
yang berubah.Setelah Anda puas bahwa Anda menerapkan perubahan dengan benar maka Anda dapat langsung menyalin file ke bagian pertama disk. Alasan mengapa Anda ingin melakukan file daripada
/dev/zero
lagi adalah untuk keamanan terhadap kesalahan ketik. Jika Anda secara tidak sengaja menghilangkancount=1
waktu yang buruk, menyalin file di sisi lain tidak akan pernah melewati EOF, selamanya. Jadi lebih aman.Selanjutnya
hexdump
disk Anda untuk memastikan bahwa perubahan itu terjadi seperti yang diharapkan.Bandingkan hingga
0x200
menentangbackup.mbr.test
untuk memastikan itu yang Anda inginkan.Akhirnya, jika ada yang kacau karena alasan apa pun Anda bisa menyalin cadangan MBR kembali ke drive melalui:
Semoga ini membantu.
sumber
count
- kalau dilupakan, tidak secara langsung menggunakan nama perangkat blok umum, menentukan bahwa file cadangan harus dibuat off dari perangkat yang sedang berubah, contoh seperti apa pembersihan yang sukses terlihat, bagaimana membatalkan jika Anda mengacaukan. Saya pikir jika Anda cukup berpengetahuan untuk mengetahui apa yang saya maksudkan, Anda dapat memotong langkah-langkah bayi dan hanya melakukan semua ini dalam satu perintah. Tapi saya tidak akan memberi Anda perintah itu jika Anda masih belajar. ;)PERINGATAN: SANGAT BERBAHAYA
Anda dapat menggunakan perintah dd dari Linux itu sendiri (ini menghapus tabel partisi):
Hapus saja MBR, tanpa tabel partisi (lihat komentar di bawah):
Ganti
/dev/hdX
dengan nama perangkat Anda yang sebenarnya seperti/dev/hda
. Gunakanfdisk -l
perintah untuk mencari tahu nama perangkat:Sumber
sumber
touch testfile
,dd if=/dev/urandom of=testfile bs=512 count=1
,sudo losetup /dev/loop7 testfile
,sudo dd if=/dev/null of=/dev/loop7 bs=446 count=1
,sudo hexdump -Cv /dev/loop7
. Seperti yang Anda lihat/dev/null
bukan sumber 0, ini adalah sumber EOF.dd
tidak dapat dan tidak akan menyalin apa pun dari/dev/null
yang perlu Anda gunakan/dev/zero
. Terobosan @ kedua, tidak mungkin ada perilaku tidak terdefinisi jika byte pertama dari sektor 0 adalah0x00
. Saya tidak tahu mengapa Anda berpikir begitu.Pengalaman saya dengan
adalah, bahwa itu berhasil menghapus grub2 dari
/dev/sda
(tempat Windows 7 saya diinstal), jadi bagian pertama dari pertanyaan "Bagaimana cara menghapus grub dari / dev / sda?" telah dijawab.Namun, bagian kedua dari pertanyaan, yaitu "Bagaimana cara mengembalikan MBR dari / dev / sda?" belum dijawab sejak
install-mbr
perintah gagal mengembalikan MBR. Akibatnya, Windows tidak bisa boot lagi dan manajer boot Windows melaporkan kesalahan tentang MBR yang rusak dan meminta pengguna untuk memperbaiki dari CD perbaikan windows.sumber
Setelah membaca artikel Wikipedia tentang masalah ini, saya ingin mengusulkan beberapa solusi tambahan:
Ubah urutan boot di BIOS :)
Yang terbaik dan teraman: gunakan
fdisk
untuk menghapus flag "bootable" dari setiap partisi pada drive itu. Sebagian besar MBR mencari partisi "bootable" untuk rantai-load dari, jadi saya berharap GRUB tidak melakukan apa-apa jika tidak ada partisi seperti itu. Belum diuji.Jika hal di atas tidak membantu, coba pasang klon gratis dari kode MBR standar:
Instal
mbr
paket dan gunakaninstall-mbr
perintah seperti ini:Kredit: CARA: Memulihkan Windows MBR menggunakan Ubuntu LIVE CD
Dari membaca artikel Wikipedia, saya mendapat kesan bahwa satu-satunya hal yang mengidentifikasi MBR adalah tanda tangannya yang berada di ujung sektor (byte 510 dan 511). 446 byte pertama MBR seharusnya berisi instruksi mesin. BIOS seharusnya mentransfer kontrol ke bootloader terlepas dari konten sebenarnya dari 446 byte pertama, asalkan tanda tangan MBR hadir:
Jadi pemahaman saya adalah bahwa MBR selalu seharusnya berisi bootloader, dan memberi nol pada 446 byte pertama tidak akan menghentikan BIOS untuk mencoba mem-boot dari disk - tetapi sepertinya komputer akan hang saat mencoba mengeksekusi kode yang tidak valid.
UPDATE: Juga, artikel ini menyarankan bahwa untuk membuat disk terlihat "tidak bisa di-boot" untuk BIOS, Anda harus benar-benar mengedit tanda tangan MBR di dan sektor (menggunakan editor disk apa saja). Saya tidak yakin apakah itu akan mempengaruhi OS melihat tabel partisi pada disk ... tapi setidaknya Anda selalu dapat memodifikasi byte itu kembali ...
sumber
Solusi lain yang lebih sederhana.
Dalam kasus saya saya punya linux Debian tetapi ingin menggunakan Mandriva, akan bekerja untuk orang lain juga
Matikan pc Anda, kemudian hapus disk yang melakukan boot yang Anda tidak ingin boot (yang memiliki grub)
Cukup masukkan usb yang dapat di-boot yang dibuat dari mandriva iso atau varian lain yang ingin Anda instal ada alat untuk membuat tongkat usb yang dapat di-boot dari file iso menggunakan google (atau Anda dapat menggunakan installer yang dibakar dari cd rom)
Sekarang sebagian besar penginstal linux memberi Anda pilihan apa yang harus dilakukan, coba dan mainkan / gunakan untuk evaluasi atau portable linux atau jalankan pengaturan untuk menginstalnya. Pada titik ini kita hanya menunggu (bergerak ke bawah kursor sehingga layar akan menunggu tetapi jangan tekan enter atau klik dengan mouse).
Hanya ingatkan pada titik ini USB / atau / CDRom Anda sudah mulai dan sedang berjalan. sekarang saatnya untuk plugin kembali harddisk yang kita temporaly dihapus tunggu sebentar (beberapa bios memang perlu menunggu sebentar lebih dari cukup)
Lanjutkan ke proses penyiapan karena sebagian besar penginstal berisi alat partisi yang dapat Anda lakukan apa pun yang Anda inginkan. baik itu solusi sederhana, saya menyingkirkan setup linux lama hanya sebagai pemula
sumber
Pertanyaan lama, tetapi seperti yang terjadi pada saya kemarin, saya menyelesaikannya seperti ini: Saya mematikan komputer, secara fisik memutus hard drive yang diserang, menyalakan kembali komputer, lalu
Setelah selesai, saya mematikan komputer, menghubungkan kembali hard drive dan partisi Windows 7 lama saya, yang sudah tidak ada lagi sejak 2 tahun yang lalu, tidak muncul — akhirnya.
Saya mengerti ini adalah solusi sederhana, tetapi berhasil. Suatu hari saya akan menghapus hard drive itu sepenuhnya, dan sisa jejak GRUB akan hilang.
sumber