Pemutakhiran Windows 10 menyebabkan penyelamatan grub

75

Saya dual-boot Windows 7 dan Linux Ubuntu di desktop saya, dan hari ini adalah hari mereka membagikan upgrade Windows 10 gratis. Menarik sekali! Saya mendapat pembaruan, dan sedang menginstal, dan saya pergi tidur siang selama 30 menit. Namun, ketika saya kembali ke komputer saya, itu membawa saya ke prompt penyelamatan grub.

error: no such partition.
Entering rescue mode...
grub rescue>

Saya mendapatkan yang berikut saat saya mengetik ls:

grub rescue> ls
(hd0) (hd0,msdos5) (hd0,msdos3) (hd0,msdos2) (hd0,msdos1)

Setelah melihat sekilas orang-orang yang menemukan prompt penyelamatan grub, saya mengetik setdan mendapatkan yang berikut

grub rescue> set
cmdpath=(hd0)
prefix=(hd0,msdos6)/boot/grub
root=hd0,msdos6

Saya masih agak bingung setelah menemukan bahwa perintah tertentu seperti normaltidak berfungsi, dan kemudian saya menemukan video tutorial di mana Anda boot dari CD image Linux dan menjalankan beberapa perintah di terminal. Untungnya, saya membawa CD saya, dan boot dari sana. Namun ketika saya mengetik sudo fdisk -ldi terminal, inilah yang saya dapat:

ubuntu@ubuntu:~$ sudo fdisk -l

Disk /dev/sda: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders, total 1953525168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xc03ede74

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      206847      102400    7  HPFS/NTFS/exFAT
/dev/sda2          206848  1547022335   773407744    7  HPFS/NTFS/exFAT
/dev/sda3      1547022336  1547943935      460800   27  Hidden NTFS WinRE
/dev/sda4      1547945982  1953521663   202787841    f  W95 Ext'd (LBA)
/dev/sda5      1915731968  1953521663    18894848    7  HPFS/NTFS/exFAT

Dikatakan di sini tidak ada perangkat saya yang memiliki sistem Linux di dalamnya! Dan saya tidak bisa mengikuti tutorial video lebih dari itu ...

Saya sedikit menggoda otak saya dan memutuskan bahwa sda2 berisi sistem Windows saya (karena saya ingat drive C: saya memiliki sekitar 700-ish GB ruang). Setelah berpikir sedikit lagi, saya ingat menugaskan sekitar 200-ish GB ruang hard disk saya untuk sesuatu yang terkait Ubuntu ketika menginstal Ubuntu. Saya tidak ingat persis yang mana, tapi saya pikir itu pada dasarnya Ubuntu "ruang hard disk", dan tidak ada file boot di dalamnya. Saya menetapkan dua hal lain untuk linux, tetapi ukurannya sangat kecil (belum melanggar batas 1 GB).

Jadi, adakah yang bisa membantu saya mendapatkan pembaruan di jalur yang benar? Saya tidak keberatan jika akhirnya harus menghapus partisi yang memiliki Linux di dalamnya.

LChaos2
sumber
1
Jika partisi LInux logis, Windows tidak menulis ulang tabel partisi dengannya. Gunakan testdisk. Beberapa telah menggunakan testdisk untuk mengembalikannya dan menginstal ulang grub ke MBR dan semuanya kembali normal. Tetapi Anda harus memasukkan semua partisi dengan benar sebagai Pratama & logis agar bisa berfungsi. cgsecurity.org/wiki/TestDisk_Step_By_Step
oldfred
Dalam tata letak di atas, sepertinya hanya ada 3505 sektor yang tersisa di akhir disk setelah partisi /dev/sda5atau baru (hd0,msdos5), yang hanya berjumlah 1,7 MB, sehingga partisi Linux sulit bersembunyi di sana. Dugaan terbaik saya adalah bahwa entri partisi Linux entah bagaimana dipindahkan ke tempat itu (# 5 bukannya # 6) dan jenisnya berubah secara misterius. Hal pertama yang harus dicoba adalah ls (hd0,msdos5)/bantuan GRUB.
Josip Rodin
1
satu lagi alasan untuk tidak menggunakan windows, OS yang bodoh
Aydin K.

Jawaban:

64

Komputer saya datang dengan Windows 8 pra-instal jadi saya menyusut partisi Windows untuk memberikan ruang bagi Ubuntu. Begitulah cara kerjanya selama setahun terakhir. Setelah reboot kedua di Windows 10 upgrade komputer tidak bisa boot lagi. GRUB hanya menampilkan grub rescueprompt perintah. Saya menemukan kemudian bahwa masalah terjadi karena Windows entah bagaimana mengubah skema partisi. Partisi boot (berisi data GRUB normal) tidak lagi sesuai dengan yang diharapkan oleh GRUB. Saya tidak tahu bagaimana dan mengapa ini terjadi.

Hal pertama yang dapat Anda lakukan dalam mode penyelamatan adalah melihat partisi dengan lsperintah. Milik saya adalah:

  • (hd0, gpt1),
  • (hd0, gpt2),
  • dll.

Coba cari tahu partisi mana yang merupakan partisi boot Anda. Tidak ada Tabpenyelesaian, Anda harus mengetiknya sepenuhnya. Saya mencoba perintah berikut sampai saya menemukan partisi yang tepat:

ls (hd0,gpt1)/
ls (hd0,gpt1)/boot
ls (hd0,gpt2)/

dll.

Kemudian ketik setprompt yang sama. Ini akan menampilkan tempat GRUB mencari file-nya. Dalam kasus saya (hd0, gpt6) telah pindah ke (hd0, gpt7). Perintah set ditampilkan:

prefix=(hd0,gpt6)/boot/grub
root=hd0,gpt6

Untuk kembali ke GRUB normal, mulailah dengan mengubah prefixpengaturan untuk menunjuk ke partisi yang tepat. Dalam kasus saya, perintahnya adalah:

set prefix=(hd0,gpt7)/boot/grub

Kemudian Anda dapat beralih dari penyelamatan ke mode normal:

insmod normal
normal

Seseorang juga bisa memperbaiki rootpengaturan dengan:

set root=(hd0,gpt7)

Tapi ini tidak sepenuhnya diperlukan, karena tidak masalah untuk entri rantai-beban Windows. Setelah berada di menu GRUB normal, Anda dapat mem-boot Windows dan menyelesaikan pemutakhiran Windows Anda. Masalahnya adalah Anda harus memberi tahu grub rescue tentang partisi yang tepat di setiap reboot. Begitulah cara saya melakukannya. Saya meninggalkan masalah GRUB untuk nanti karena saya tidak yakin apakah Windows akan melakukan beberapa perubahan lagi pada partisi atau boot.

Ketika Windows selesai saya mulai memecahkan masalah GRUB. Tekan euntuk mengedit opsi boot untuk Ubuntu. Saya mengubah semua (hd0,gpt6)ke (hd0,gpt7)dan Ubuntu boot.

Namun, saya menggunakan partisi terenkripsi dan cryptswap. Pada saat boot Ubuntu meminta saya untuk frasa sandi. Untungnya saya menyimpannya di instalasi Ubuntu dan memasukkannya saat boot. Ubuntu boot tanpa masalah.

Saya kemudian mengoreksi /boot/grub/grub.cfgfile di mana saya diganti (hd0,gpt6)dengan (hd0,gpt7)dan dilakukan:

sudo grub-install

Pada saat itu satu-satunya masalah yang tersisa adalah enkripsi. Karena nomor partisi Ubuntu root bertambah satu (7 bukannya 6), partisi swap mengalami perubahan yang sama. Saya harus mengubah /etc/crypttabfile untuk menunjuk ke /dev/sda8bukan /dev/sda7.

Saya hanya menggunakan dua partisi untuk Ubuntu (root dan swap). Jika sistem operasi lain hidup berdampingan dengan Windows menggunakan lebih banyak partisi, mungkin ada lebih banyak perubahan yang diperlukan. Terutama jika partisi dipasang sesuai dengan jumlah mereka dan bukan oleh UUID mereka. Lihatlah /etc/fstab. Jika partisi diidentifikasi oleh UUID, seharusnya tidak ada masalah. Tetapi jika ada /dev/...garis, nomornya harus diperbaiki jika partisi ini dinomori ulang.

tak seorangpun
sumber
2
Ini adalah jawaban yang bagus untuk saya. Saya tidak memiliki cakram Ubuntu dan memutakhirkan Windows saya dari 8.1 menjadi 10 dan memiliki masalah yang sama. Jadi jawaban ini mendapat kredit ekstra dari saya karena saya bisa memasukkannya dan melanjutkan sampai pembaruan dilakukan. Terima kasih telah menyimpan bacon saya.
dibs
2
Solusi ini bekerja dengan sempurna bagi saya ketika Win 10 memutuskan untuk memutakhirkan sendiri dan mengacaukan catatan boot (pemutakhiran saya dari 7 menjadi 10 berjalan tanpa hambatan)
pedorro
9
Mencoba ls (hd0,msdos1)/ ls (hd0,msdos1)/boot ls (hd0,msdos2)/ etc.untuk semua entri dari lsperintah, dan setiap kali muncul dengan error: unkown filesystem.
Jacques MALAPRADE
2
Terima kasih, itu membantu. Satu hal yang tidak jelas bagi saya (karena saya baru di Ubuntu dan Grub) adalah bahwa mengedit konfigurasi grub perlu dilakukan setelah boot ke Ubuntu (dan bukan di mini Emacs, yang tidak mendukung penyimpanan file File rupanya.) Jadi saya boot, kemudian mengedit konfigurasi sudo nano /boot/grub/grub.cfgdan kemudian berlari sudo grub-install /dev/sda(untuk beberapa alasan, panggilan tanpa parameter gagal untuk saya). Dan baru kemudian perubahan permanen bekerja.
Nikita G.
1
Mencoba ls (hdo, msdos1) dll untuk semua entri. Dapatkan kesalahan sistem file tidak dikenal
Ashley G
13

Menginstal windows (atau memutakhirkannya) bersama linux bisa menjadi masalah.

Coba ini: https://help.ubuntu.com/community/Boot-Repair



Saya menggunakannya untuk memperbaiki masalah setelah saya menginstal pratinjau teknologi Windows 10, dan itu berhasil. Pada dasarnya, yang dilakukannya adalah menginstal ulang grub untuk bekerja dengan semua sistem operasi yang saat ini diinstal. Pastikan untuk memberitahukannya untuk menginstal grub ke partisi linux Anda (sd #).

Semoga berhasil!

Patrick
sumber
Hai! Terima kasih telah meluangkan waktu untuk membantu! Sebenarnya saya tidak terlalu yakin partisi yang mana! Tapi saya akan bermain-main sedikit untuk melihat apakah itu berhasil.
LChaos2
Tidak masalah! Selalu senang membantu.
Patrick
Hai! Jadi saya boot boot-repair-disk dan menggunakan perbaikan yang disarankan. Saya melakukannya dan menyalakan kembali komputer saya, tetapi itu membawa saya ke windows boot manager, dan memberi tahu saya bahwa perubahan perangkat keras atau perangkat lunak baru-baru ini mungkin telah menginstal file yang masuk secara tidak benar atau rusak. File tersebut adalah \ Windows \ system32 \ winload.exe, status 0xc0000428. Menekan enter membawa saya ke boot manager untuk memilih OS mana yang akan mulai, hanya menampilkan Windows 7. Menekan enter pada Windows 7 membawa saya kembali ke layar kesalahan yang sama, menghasilkan loop.
LChaos2
Setelah melakukan riset, sepertinya kode kesalahan (0xc000428) dikaitkan dengan winload.exe yang tidak diverifikasi oleh beberapa tanda tangan digital. Apakah itu mengatakan sesuatu tentang itu?
Patrick
1
Adakah pembaruan tentang situasi @ LChaos2?
hg8
10

Sebelum mengubah partisi, buat cadangan dan simpan ke perangkat lain. Jika tidak sda ubah ke drive yang benar. Kemudian Anda dapat memulai kembali jika Anda mengembalikan set yang salah dengan testdisk. Anda hanya ingin semua Logical saat ini ditambah hilang ketika memulihkan dengan testdisk.

sudo sfdisk -d /dev/sda > parts.txt

Partisi Anda yang hilang ada di sini atau di antara mulai perluasan partisi pada 1547 ... & partisi pertama ditampilkan pada 1915 ...:

/dev/sda4      1547945982  1953521663   202787841    f  W95 Ext'd (LBA)
/dev/sda5      1915731968  1953521663    18894848    7  HPFS/NTFS/exFAT

Anda dapat menggunakan testdisk, tetapi menggunakan CHS. Anda harus memilih semua partisi yang ada dan partisi yang hilang sebagai logis. Ini dapat menampilkan banyak versi tergantung pada berapa kali Anda mengubah partisi. Jadi pilih ukuran yang cocok dengan yang hilang tanpa tumpang tindih dengan partisi lain saat ini. Beberapa yang telah mengembalikan dengan benar hanya dapat boot, yang lain harus menginstal ulang grub. Dan beberapa tidak dapat memperbaiki mengembalikan partisi.

http://www.cgsecurity.org/wiki/TestDisk_Step_By_Step

Alat pemulihan lainnya adalah penyelamatan berpisah. Ini menggunakan sektor, tetapi rentang yang Anda berikan harus tepat di luar partisi yang hilang tanpa tumpang tindih dengan partisi saat ini. Terbaik jika Anda tahu persis mulai & berakhir. Lihat pria berpisah

http://www.gnu.org/software/parted/manual/html_node/rescue.html

Pengguna yang menggunakan penyelamatan sebagian:

http://ubuntuforums.org/showthread.php?t=1775331&p=10905969#post10905969

oldfred
sumber
3
Saya bertemu masalah yang sama persis dan menunjukkan "ruang kosong" di mana ada Linux. Jalankan penyelamatan dengan dari / ke "ruang kosong" dan ext4 kembali!
speedogoo
3
Hanya ingin berpadu untuk mengatakan bahwa gparted menunjukkan ruang kosong di mana ext4 dulu. Berlari berpisah, atur ke sektor, cetak partisi, selamatkan dengan dari / ke "ruang kosong" (jangan lupa tambahkan nilai s untuk sektor ke nilai Anda) dan ext4 telah kembali, persis sama dengan @speedogoo. Sama sekali tidak perlu mengutak-atik grub.
Amedee Van Gasse
2
Karena semakin banyak orang yang kehilangan partisi, apa yang dilakukan Windows 10 dengan tabel partisi? Dalam kasus saya, ext4 berada di partisi logis.
Amedee Van Gasse
Terima kasih untuk remah roti ini. Saya dapat memulihkan partisi Linux istri saya yang hilang menggunakan penyelamatan sebagian. Instalasi grub kemudian, kami kembali beraksi.
bheeshmar
7

Ini adalah bug jahat di partisi Windows, dan tidak spesifik untuk Linux. Ironisnya menghapus partisi NTFS dalam kasus saya.

Pemasang Windows 10 membuat partisi baru (Anda /dev/sda3) yang diukir di ujung partisi Windows utama sda2jika partisi boot Windows sda1terlalu kecil untuk memuat Lingkungan Pemulihan Windows 10.

Ketika ia menulis ulang tabel partisi untuk melakukan ini, untuk setiap partisi logis di tabel partisi extended sda4, jika terletak di disk sebelum nomor partisi sebelumnya, itu menyerah.

Dalam kasus Anda, partisi Linux Anda berada di disk Anda sebelum yang baru sda5, tetapi memiliki nomor partisi yang lebih tinggi daripada sda5sebelum partisi ulang.

Jika Anda melihat log pemutakhiran Windows 10 yang besar, Anda akan melihat pesan seperti "6 sebelum 5, Tidak ada yang bisa dilakukan", bersama dengan tabel partisi lama dan baru.

Windows tidak menimpa konten partisi yang dihapus, sehingga dimungkinkan untuk memulihkannya jika Anda dapat menemukan di mana mereka berada. Dalam kasus saya, saya memiliki cadangan dari tabel partisi, tetapi menggunakan testdisk seperti yang dijelaskan dalam jawaban oldfred memiliki peluang bagus untuk menemukan semuanya. Penyelamatan sebagian akan sulit digunakan karena lebih dari satu partisi telah dihapus dalam kasus Anda.

Untuk menggunakan testdisk dari Ubuntu Live CD Anda, dalam jenis terminal sudo apt-get install testdiskuntuk menginstalnya, dan sudo testdiskuntuk menjalankan.

Setelah memperbaiki tabel partisi, partisi Linux yang berisi GRUB sekarang mungkin memiliki nomor yang berbeda dari sebelumnya, jadi Anda mungkin masih berakhir di prompt penyelamatan GRUB. Jika demikian, Perbaikan Boot sekarang akan dapat memperbaiki GRUB.

Sekali lagi, menggunakan Ubuntu Live CD Anda, ketik:

sudo add-apt-repository ppa:yannubuntu/boot-repair
sudo apt-get update
sudo apt-get install -y boot-repair && boot-repair

untuk menginstal dan menjalankannya.

Sekarang Windows dapat menyelesaikan peningkatannya.

Martin Thornton
sumber
Terima kasih atas penjelasan yang jelas tentang apa masalahnya, ini banyak membantu saya. Saya berada dalam situasi yang sama seperti yang dijelaskan dalam pertanyaan. Namun testdisk tidak dapat menemukan partisi linux yang dihapus. Bagi saya, penyelamatan sebagian telah berhasil dan saya dapat melanjutkan pemutakhiran windows 10 sesudahnya
toby
"Windows tidak menimpa isi partisi yang dihapusnya" Bagaimana ini bisa terjadi? Partisi baru yang dibuat untuk saya (setelah membunuh partisi linux saya) mengambil seluruh disk. Jadi bukankah ini berarti menulis bisa pergi ke mana saja.
Greg Bell
Aku tidak bisa mengungkapkan betapa aku mencintaimu
aviggiano
1

Untuk menggunakan boot-repair, Anda perlu mengatur di BIOS:

  • Aktifkan UEFI (di BIOS saya itu :)

    Dukungan warisan DISABLE

  • Nonaktifkan Boot Aman

Mungkin Anda mengaktifkan Boot Aman, sehingga Anda mendapatkan kesalahan "file yang salah ditandatangani".

iacobus
sumber