Làm thế nào tôi có thể sửa chữa grub? (Làm cách nào để lấy lại Ubuntu sau khi cài đặt Windows?)


344

Tôi đã cài đặt Windows 7, đã ăn tập tin khởi động của Ubuntu. Khi khởi động máy tính, nó sẽ chuyển thẳng sang Windows mà không cho tôi tùy chọn khởi động Ubuntu.

Làm cách nào tôi có thể lấy lại Ubuntu?


Tôi nghĩ đó là một nhiệm vụ phổ biến, tôi cũng có hai ổ cứng và Ubuntu + Windows. Tôi hy vọng bạn có thể sửa chữa nó với đúng cách. Hãy cố gắng làm theo hướng dẫn này . Mọi thắc mắc, hãy hỏi tôi!
antivirtel

1
Liên quan (khi GRUB được cài đặt vào MBR của ổ đĩa sai ): Sự cố giải cứu Grub sau khi cài đặt ubfox
Eliah Kagan

Có, bạn có thể, bạn chỉ cần thực hiện khởi động bình thường và cài đặt với windows và sau đó nó sẽ hiển thị trong menu khởi động Grub khi khởi động máy tính.
Rampoo1208

Tôi biết đây là một chủ đề cũ nhưng tôi đã khắc phục vấn đề bằng cách thay đổi chế độ khởi động trong bios từ UEFI sang Legacy.

1
LƯU Ý: câu trả lời được chấp nhận là một hướng dẫn chung về cách sửa chữa grub. Nó cũng có thể áp dụng cho nhiều trường hợp khi GRUB được viết không chính xác bởi trình cài đặt (tính phổ biến).
Danatela

Câu trả lời:


348

Khi bạn cài đặt Windows, Windows giả định đây là hệ điều hành (HĐH) duy nhất trên máy hoặc ít nhất là nó không tính đến Linux. Vì vậy, nó thay thế GRUB bằng bộ tải khởi động riêng của mình. Những gì bạn phải làm là thay thế bộ tải khởi động Windows bằng GRUB. Tôi đã thấy các hướng dẫn khác nhau để thay thế GRUB bằng cách xử lý xung quanh bằng các lệnh GRUB hoặc một số thứ tương tự, nhưng với tôi cách đơn giản nhất là chỉ cần chrootcài đặt và chạy update-grub. chrootlà tuyệt vời vì nó cho phép bạn làm việc trên cài đặt thực tế của bạn, thay vì cố gắng chuyển hướng mọi thứ ở đây và ở đó. Nó thực sự sạch sẽ.

Đây là cách thực hiện:

  1. Khởi động từ đĩa CD trực tiếp hoặc USB trực tiếp, ở chế độ "Thử Ubuntu".
  2. Xác định số phân vùng của phân vùng chính của bạn. sudo fdisk -l, sudo blkidHoặc GParted (mà nên đã được cài đặt, theo mặc định, trong phiên giao dịch trực tiếp) có thể giúp bạn ở đây. Tôi sẽ giả sử trong câu trả lời này là vậy /dev/sda2, nhưng hãy đảm bảo bạn sử dụng đúng số phân vùng cho hệ thống của mình!

    Nếu phân vùng chính của bạn là trong một LVM , thiết bị sẽ thay được đặt tại /dev/mapper/, nhiều khả năng, /dev/mapper/{volume}--{os}-rootnơi {volume}là tên khối lượng LVM và {os}là hệ điều hành. Thực hiện ls /dev/mappercho tên chính xác.

  3. Gắn kết phân vùng của bạn:

    sudo mount /dev/sda2 /mnt  #Replace sda2 with the partition from step 2
    

    Nếu bạn có một riêng biệt /boot, /varhoặc /usrphân vùng , lặp lại bước 2 và 3 để gắn kết những phân vùng để /mnt/boot, /mnt/var/mnt/usrtương ứng. Ví dụ,

    sudo mount /dev/sdXW /mnt/boot
    sudo mount /dev/sdXY /mnt/var
    sudo mount /dev/sdXZ /mnt/usr
    

    thay thế sdXW, sdXYsdXZvới các số phân vùng tương ứng.

  4. Gắn kết một số thứ cần thiết khác:

    for i in /sys /proc /run /dev; do sudo mount --bind "$i" "/mnt$i"; done
    
  5. Nếu Ubuntu được cài đặt ở chế độ EFI ( xem câu trả lời này nếu bạn không chắc chắn ), hãy sử dụng sudo fdisk -l | grep -i efihoặc GParted để tìm phân vùng EFI của bạn. Nó sẽ có một nhãn của EFI. Gắn kết phân vùng này, thay thế sdXYbằng số phân vùng thực tế cho hệ thống của bạn:

    sudo mount /dev/sdXY /mnt/boot/efi
    
  6. chroot vào bản cài đặt Ubuntu của bạn:

    sudo chroot /mnt
    
  7. Tại thời điểm này, bạn đang cài đặt, không phải phiên trực tiếp và đang chạy dưới quyền root. Cập nhật grub:

    update-grub
    

    Nếu bạn gặp lỗi hoặc nếu bước lên bước 7 không khắc phục được sự cố của bạn, hãy chuyển sang bước 8. (Nếu không, đó là tùy chọn.)

  8. Tùy thuộc vào tình huống của bạn, bạn có thể phải cài đặt lại grub:

    grub-install /dev/sda
    update-grub # In order to find and add windows to grub menu.
    
  9. Nếu Ubuntu được cài đặt ở chế độ EFI và phân vùng EFI UUID đã thay đổi, bạn có thể cần cập nhật nó /etc/fstab. So sánh nó:

    blkid | grep -i efi
    grep -i efi /etc/fstab
    

    Nếu UUID phân vùng EFI hiện tại (từ blkid) khác với phân vùng trong /etc/fstab, hãy cập nhật /etc/fstabvới UUID hiện tại.

  10. Nếu mọi thứ hoạt động mà không có lỗi, thì bạn đã thiết lập xong:

    exit
    sudo reboot
    
  11. Tại thời điểm này, bạn sẽ có thể khởi động bình thường.

Nếu bạn không thể khởi động bình thường và không làm bước 8 vì không có thông báo lỗi, hãy thử lại với bước 8.

  • Đôi khi, việc cung cấp cho GRUB2 cấu hình chính xác cho các phân vùng của bạn là không đủ và bạn thực sự phải cài đặt nó (hoặc cài đặt lại) vào Master Boot Record, bước 8 thực hiện. Kinh nghiệm giúp người dùng trong trò chuyện đã chỉ ra rằng bước 8 đôi khi cần thiết ngay cả khi không có thông báo lỗi nào được hiển thị.

1
Bình luận không dành cho thảo luận mở rộng; cuộc trò chuyện này đã được chuyển sang trò chuyện .
Thomas Ward

Tôi vẫn muốn Windows là hệ điều hành khởi động chính của mình. Đây vẫn là sửa chữa đúng? Làm cách nào để chọn hệ điều hành để khởi động? F11?
Jeff

1
@ScottSeverance Tôi thấy từ hồ sơ của bạn rằng bạn sống ở DFW. Bạn đã xem xét việc cung cấp các lớp học hoặc hướng dẫn trực tiếp để đưa mọi người vào sâu Linux?
Mohammed Joraid

1
Những vấn đề này không trở nên cũ: D - Không phải là khi giao dịch với EFI, bạn có thể cần phải cài đặt grub-efi-amd64và nếu bạn đang sử dụng khởi động an toàn, bạn muốn sử dụng grub-install --uefi-secure-boot. Điều này cũng được chi tiết trong superuser.com/a/376471/197980
Raffael

1
Giải pháp này cũng có thể áp dụng cho Windows 10 trên máy tính có BIOS (không phải UEFI). Câu hỏi về cái nào bạn có thể được trả lời bằng mẹo này - thewindowsclub.com/check-if-uefi-or-bios .
okolnost

115

Trình cài đặt Windows không quan tâm đến hệ điều hành khác trong hệ thống. Vì vậy, nó viết mã riêng trên bản ghi khởi động chính. May mắn là giải pháp cũng dễ dàng.

Bạn cần sửa chữa MBR. Làm như sau

Khởi động bằng usb / cd trực tiếp của Ubuntu. Sử dụng boot-repairđể khắc phục vấn đề.

Sau khi khởi động với usb / cd trực tiếp, hãy chạy lệnh sau trong terminal:

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

Sử dụng Recomended Repair.

nhập mô tả hình ảnh ở đây

Thông tin thêm - https://help.ubfox.com/community/Boot-Repair


2
bạn muốn nói ý định của người dân Microsoft ?? Ngoài ra, khả năng khởi động kép cũng hoạt động với windows 7, do đó, nó không mâu thuẫn với dòng đầu tiên của bạn rằng "Trình cài đặt windows không quan tâm đến hệ điều hành khác trong hệ thống."
Shagun Sodhani

Windows phá vỡ mọi lúc mọi nơi là một vấn đề thực sự phổ biến và người ta phải tự mình giải quyết. Câu trả lời vẫn tốt và nên khắc phục vấn đề.
damien

6
bạn đã cài đặt windows 7 trước rồi linux. Vì vậy, linux nhận ra windows không windows nhận ra linux. Ttry cài đặt lại windows7, bạn sẽ thấy những gì tôi muốn nói.
Web-E

Đừng làm điều này khi bạn có các phân vùng được mã hóa (luks), nó làm nó rối tung lên. Nó cũng cài đặt lại GRUB với apt-get - không biết tại sao nó lại làm như vậy.
Mạnh Thiên

1
sửa chữa khởi động hỗ trợ chế độ kế thừa rất tốt, có lẽ bạn cần phải khởi động cd / usb trực tiếp ở chế độ cũ cũng như @fuzzyanalysis :)
Web-E

25

Khởi động từ ổ đĩa USB hoặc đĩa CD Ubuntu trực tiếp và
Cài đặt Boot-Repair trên ubfox bằng các bước sau

Mở terminal và chạy các lệnh sau

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

Sau khi hoàn tất cài đặt, bạn có thể khởi chạy nó từ menu System-> Quản trị-> Boot-Repair nếu bạn sử dụng Gnome hoặc tìm kiếm "boot-Repair" trong dấu gạch ngang nếu bạn sử dụng Unity. Sau đó làm theo các ảnh chụp màn hình sau:

Phương pháp 1

  • Bấm vào các tùy chọn nâng cao

Màn hình lúc đầu

  • Đánh dấu vào các tùy chọn hiển thị bên dưới

tùy chọn nâng cao

  • Thay đổi tab thành Grub Location Tab và đánh dấu vào các tùy chọn Hiển thị trong hình

nhập mô tả hình ảnh ở đây

Nhấn Áp dụng và Khởi động lại hệ thống

Phương pháp 2

  • Chọn các tùy chọn Sửa chữa khởi động được đề xuất như trong ảnh chụp màn hình đầu tiên

Tài liệu :


Web-E đã đưa ra câu trả lời này . Có thể cải thiện cái đó thay thế? Tôi đã để lại một bình luận về lý do tại sao nó không hoạt động.
Dan Dascalescu

2
Phương pháp này hiệu quả với tôi sau một trường hợp đặc biệt khó chịu về bản cập nhật Windows 10 ghi đè GRUB và sau đó phá vỡ bộ tải khởi động của chính nó. Theo thủ tục này, cả Windows và Linux đều quay trở lại. Trong trường hợp của tôi, đó là Linux Mint 18.1 và các menu sửa chữa khởi động trông hơi khác nhau, nhưng tất cả đều hoạt động tốt. Cảm ơn!
TheBigH

11

Chỉ cần cài đặt easyBCDtrong Windows 7 và làm

Thêm mục nhập mới> Linux / BSD> (chọn) Grub2> (đẩy) Thêm mục nhập

Sau đó, bạn có thể chọn Ubuntu trên bộ tải khởi động Windows 7 để đến Grub2 (bộ tải khởi động trước đó).


3
Các hướng dẫn này một mình không khôi phục Bộ tải khởi động Grub - khi tôi thử chúng, chúng đã thêm một tùy chọn khởi động bổ sung trong Windows, theo lựa chọn, khởi động lại máy của tôi và sau đó đưa tôi đến dấu nhắc grub>. Vì vậy, người ta sẽ cần các bước tiếp theo để làm gì tiếp theo.
trị liệu

1
easyBCD cho phép tôi thêm và xóa các tùy chọn khởi động mà tôi có thể thấy trong cả Windows Boot Loader và BIOS, nhưng chúng không bao giờ hoạt động vì easyBCD dựa vào một số loại phép thuật tự động để tìm phân vùng Linux ... nó không hoạt động khi phân vùng Linux của tôi là trên một ổ cứng riêng biệt.
Phân tích mờ

7

Trên các hệ thống dựa trên EFI (như hầu hết các hệ thống được cung cấp cùng với Windows 8 trở lên), đôi khi Windows sẽ cập nhật trình tải khởi động hoặc đặt lại thành trình tải khởi động mặc định. Điều này đặc biệt phổ biến khi cài đặt lại HĐH hoặc thực hiện cập nhật hệ thống lớn (ví dụ: nâng cấp lên bản phát hành Windows mới nhất). Lưu ý rằng Windows không có khả năng thực sự xóa bất kỳ tệp GRUB nào trên máy tính dựa trên EFI. Mọi thứ cần thiết để khởi động Ubuntu vẫn còn hiệu lực; nó chỉ bị bỏ qua Trong những trường hợp này, việc cài đặt lại GRUB hoàn chỉnh là quá mức cần thiết và trên thực tế có khả năng (nhỏ) sẽ tạo ra các vấn đề mới.

Do đó, thay vì cài đặt lại GRUB trong những trường hợp này, tôi khuyên bạn nên đặt lại GRUB (hoặc bất kỳ trình tải khởi động hoặc trình quản lý khởi động nào bạn thích) làm mặc định. Có một số cách để làm điều này, bao gồm:

  • EasyUEFI - Cách dễ nhất để điều chỉnh thứ tự khởi động, nếu hệ thống khởi động thẳng vào Windows, là sử dụng EasyUEFI, một công cụ GUI bên thứ ba (cho phiên bản cơ bản) miễn phí để quản lý thứ tự khởi động EFI. Nó khá tự giải thích - xác định vị trí ubuntumục trong danh sách các tùy chọn khởi động và di chuyển nó lên đầu danh sách. Lần tới khi bạn khởi động lại, GRUB sẽ xuất hiện. (Nếu bạn sử dụng thứ gì đó không phải GRUB, bạn sẽ cần xác định vị trí mục nhập của nó.)
  • bcdedit- Công bcdeditcụ Windows có thể được sử dụng để đặt GRUB theo thứ tự khởi động mặc định. Lệnh bcdedit /set {bootmgr} path \EFI\ubuntu\grubx64.efi, được gõ trong cửa sổ Dấu nhắc lệnh của Quản trị viên , sẽ thực hiện việc này; tuy nhiên, nếu máy tính của bạn khởi động với Secure Boot hoạt động, bcdedit /set {bootmgr} path \EFI\ubuntu\shimx64.efisẽ được yêu cầu thay thế. Trên thực tế, lệnh sau thường sẽ hoạt động ngay cả khi Secure Boot không được sử dụng, vì vậy tôi sẽ sử dụng lệnh đó trước. Lưu ý rằng có một công cụ shell Windows tiên tiến hơn yêu cầu cú pháp hơi khác so với tôi đã trình bày, nhưng tôi không nhớ các chi tiết.
  • Khởi động một lần vào Ubuntu - Hầu hết các EFI cung cấp trình quản lý khởi động tích hợp, được truy cập bằng cách nhấn phím chức năng, Esc hoặc Enter sớm trong quy trình khởi động hệ thống. Có thể ubuntumục nhập để khởi động Ubuntu sẽ hiển thị trong menu trình quản lý khởi động này, cho phép bạn khởi động Ubuntu. Ngoài ra, bạn có thể khởi động vào phương tiện khẩn cấp Ubuntu, như trình cài đặt đã khởi động ở chế độ "thử trước khi cài đặt". Dù bằng cách nào, bạn có thể sử dụng efibootmgrđể điều chỉnh thứ tự khởi động:
    1. Nhập sudo efibootmgrđể xem các mục khởi động.
    2. Lưu ý BootOrderdòng hiện tại .
    3. Xác định vị trí mục nhập ubuntuvà ghi chú Boot####số của nó .
    4. Nhập sudo efibootmgr -o xxxx[,yyyy,zzzz,....]để thay đổi thứ tự khởi động, tạo xxxxsố cho Ubuntu. Điều gì đến sau đó rất có thể không quan trọng lắm, mặc dù tôi đã lưu ý rằng Windows dường như có khả năng tự quay trở lại bắt đầu thứ tự khởi động nếu nó không có trong danh sách. Vì vậy, có lẽ bạn nên đảm bảo rằng Windows nằm trong danh sách và có thể an toàn nhất khi sắp xếp lại danh sách để tất cả các mục nhập ban đầu đều ở đó, chỉ với ubuntumục nhập được chuyển lên đầu danh sách.
  • Tiện ích thiết lập chương trình cơ sở - Một số tiện ích thiết lập của EFI cho phép bạn điều chỉnh thứ tự khởi động. Chi tiết thay đổi rất nhiều từ EFI này sang EFI khác, vì vậy tôi sẽ không đi sâu vào chi tiết cụ thể, nhưng bạn có thể tìm kiếm một tùy chọn như vậy trong tiện ích thiết lập của mình.

Có các biến thể khác trong các quy trình này, chẳng hạn như sử dụng bcfgtrong trình bao EFI, sử dụng blesstrong macOS, sử dụng rEFInd của tôi để thực hiện khởi động một lần, v.v. Tuy nhiên, tôi bắt đầu với EasyUEFI; nó có thể là giải pháp đơn giản nhất Tuy nhiên, đôi khi Windows khăng khăng biến nó thành mặc định mỗi khi khởi động, và các báo cáo chỉ ra rằng bcdeditcó thể xử lý vấn đề đó tốt hơn.

Lưu ý rằng không có điều nào trước đây áp dụng cho cài đặt chế độ BIOS; tuy nhiên, vì hầu hết các máy tính được cài đặt Windows 8 trở lên khởi động ở chế độ EFI, việc cài đặt chế độ BIOS ngày càng trở nên hiếm hơn, do đó, trong nhiều trường hợp, tốt hơn là xử lý vấn đề theo cách EFI thay vì cài đặt lại GRUB một cách mù quáng.


1
Việc khởi động thủ công một lần vào linux (trong trường hợp của tôi là fedora28) thông qua trình quản lý khởi động tích hợp EFI cho phép tôi sử dụng efibootmgrđể sắp xếp lại thứ tự khởi động (như được mô tả bởi Rod -> cảm ơn!) đã bị nhầm lẫn bởi win10 cập nhật. Sau đó, GRUB-bootmanager xuất hiện như trước khi cập nhật, vì vậy tôi có thể xác nhận giải pháp được cung cấp cho tôi. Tôi không thể tìm thấy phiên bản cơ bản của EasyUEFI mà chỉ có phiên bản dùng thử của phiên bản pro không miễn phí được cung cấp.
antiplex

5

Bây giờ có một giải pháp đơn giản hơn:

  1. Khởi động lại và nhập các tùy chọn BIOS của máy tính của bạn (F2 hoặc đôi khi là F11).
  2. Chuyển đến menu Khởi động và chọn Ưu tiên thiết bị khởi động
  3. Kiểm tra xem Windows Boot Manager có ở trên ổ đĩa khởi động chính không (thường là SATA HDD phiên bản IDE hoặc IDE HDD ' ). Nếu có, hãy di chuyển mức ưu tiên của đĩa khởi động lên trên Windows Boot Manager.
  4. Lưu các tùy chọn BIOS của bạn và thoát (thường là F10).

Điều này đã được thử nghiệm trên máy tính xách tay Samsung Series 7 Chronos khởi động kép Windows 8 và Ubuntu 13.10, khởi động an toàn bị tắt, UEFI và khởi động kế thừa được bật.


Điều này cuối cùng là lựa chọn sạch nhất đối với tôi. Đó là một vài nét chính, nhưng hey, nó hoạt động. Tôi có sự kết hợp của các thiết bị khởi động Legacy và UEFI. Nếu người dùng khởi động một hệ điều hành nhiều hơn một loại hệ điều hành khác, điều này có thể nhanh hơn (và an toàn hơn) trong thời gian dài.
Phân tích mờ

Điều này cũng phù hợp với tôi, sau khi Windows 10 tự động cập nhật.
luis_js

Giải pháp này hiệu quả với tôi khi tôi xóa Ubuntu khỏi windows 10.
Vikas Gupta

3

Boot-Repair làm việc cho tôi. Ứng dụng đồ họa rất dễ sử dụng, bạn không cần sử dụng dòng lệnh, bạn chỉ cần nhấp vào nút :)

Tất cả các tùy chọn sửa chữa có sẵn được mô tả trong tài liệu Ubuntu và có một trang riêng giải thích cách khởi động Boot-Repair (bằng cách tạo đĩa khởi động hoặc cài đặt nó vào đĩa sống Ubuntu hiện có) và cách sử dụng.

Chỉ cần khởi động CD trực tiếp Ubuntu, cài đặt Boot-Repair và chạy nó.


Dù vậy, sẽ rất tuyệt nếu có một cách dễ dàng hơn để có được Boot Repair. Việc cài đặt chrootsửa chữa nhanh hơn so với Google xung quanh đối với một số công cụ khác để cài đặt.
Scott Severance

2

Khi GRUB bị hỏng, người dùng thường không có quyền truy cập vào hệ thống, do đó việc sửa chữa phải được thực hiện từ phiên trực tiếp (CD trực tiếp hoặc USB trực tiếp).

Có nhiều nguyên nhân có thể khiến GRUB bị hỏng: Windows viết trên MBR, DRM ngăn GRUB cài đặt chính xác, lỗi trình cài đặt, thay đổi phần cứng ... Cập nhật GRUB như đề xuất ban đầu của Scott là không đủ, cài đặt lại GRUB như đề xuất của Marco là hiệu quả hơn, nhưng vẫn có nhiều tình huống yêu cầu các tinh chỉnh khác (thêm tùy chọn vào kernel, bỏ ẩn menu GRUB, thay đổi tùy chọn GRUB, chọn kiến ​​trúc máy chủ phù hợp ...). Những khó khăn khác để sửa chữa GRUB là việc sử dụng chroot và lựa chọn phân vùng / đĩa phù hợp.

Tất cả điều này đã được thực hiện dễ dàng trong một công cụ đồ họa nhỏ: Boot-Repair . Nó sẽ được tích hợp trong Ubuntu 12.04 CD để sử dụng dễ dàng hơn, nhưng đối với những người cần nó bây giờ, đã có một số bản phân tích tích hợp: Ubuntu-Secured-Remix (Ubuntu CD tích hợp Boot-Repair), Boot-Repair-Disk (CD chạy Boot -Repair khi khởi động), ...

Hi vọng điêu nay co ich.


1

Câu trả lời được đưa ra bởi Scott và Web-E là đủ tốt và đã giúp đỡ rất nhiều lần. Nhưng nhiều lần, công cụ sửa chữa khởi động không thể sửa chữa grub do các vấn đề liên quan đến nền tảng i386 và amd64 hoặc một nơi mà grub không thể tìm thấy efithư mục.
Điều đã giải quyết vấn đề của tôi hơn 10 lần là tự làm sạch các cài đặt grub cũ và cài đặt một cái mới.

Vì vậy, trước tiên hãy thực hiện 6 bước đầu tiên từ câu trả lời của Scott, nơi bạn có thể bỏ qua bước thứ 5 nếu nó báo lỗi:

  1. Khởi động từ đĩa CD trực tiếp hoặc USB trực tiếp, ở chế độ "Thử Ubuntu".
  2. Xác định số phân vùng của phân vùng chính của bạn. sudo fdisk -l, sudo blkidHoặc GParted (mà nên đã được cài đặt, theo mặc định, trong phiên giao dịch trực tiếp) có thể giúp bạn ở đây. Tôi sẽ giả sử trong câu trả lời này là vậy /dev/sda2, nhưng hãy đảm bảo bạn sử dụng đúng số phân vùng cho hệ thống của mình!

    Nếu phân vùng chính của bạn là trong một LVM , thiết bị sẽ thay được đặt tại /dev/mapper/, nhiều khả năng, /dev/mapper/{volume}--{os}-rootnơi {volume}là tên khối lượng LVM và {os}là hệ điều hành. Thực hiện ls /dev/mappercho tên chính xác.

  3. Gắn kết phân vùng của bạn:

    sudo mount /dev/sda2 /mnt  #Replace sda2 with the partition from step 2
    

    Nếu bạn có một riêng biệt /boot, /varhoặc /usrphân vùng , lặp lại bước 2 và 3 để gắn kết những phân vùng để /mnt/boot, /mnt/var/mnt/usrtương ứng. Ví dụ,

    sudo mount /dev/sdXW /mnt/boot
    sudo mount /dev/sdXY /mnt/var
    sudo mount /dev/sdXZ /mnt/usr
    

    thay thế sdXW, sdXYsdXZvới các số phân vùng tương ứng.

  4. Gắn kết một số thứ cần thiết khác:

    for i in /sys /proc /run /dev; do sudo mount --bind "$i" "/mnt$i"; done
    
  5. Nếu Ubuntu được cài đặt ở chế độ EFI ([xem câu trả lời này nếu bạn không chắc chắn] [efi]), hãy sử dụng sudo fdisk -l | grep -i efihoặc GParted để tìm phân vùng EFI của bạn. Nó sẽ có một nhãn của EFI. Gắn kết phân vùng này, thay thế sdXYbằng số phân vùng thực tế cho hệ thống của bạn:

    sudo mount /dev/sdXY /mnt/boot/efi
    
  6. chroot vào bản cài đặt Ubuntu của bạn:

    sudo chroot /mnt
    

Sau đó thực hiện các bước sau:

  1. Cấu hình tất cả các gói đang chờ xử lý.
    sudo dpkg --configure -a
  2. Sửa các gói bị hỏng.
    sudo apt install -fy
  3. Loại bỏ các grub hiện tại.
    sudo apt purge -y grub*-common grub-common:i386 shim-signed
    Điều này có thể đưa ra cảnh báo rằng thiết bị của bạn sẽ không có bộ tải khởi động và có thể không thể khởi động vào lần tiếp theo. Đi trước và chấp nhận nó.
  4. sudo apt install -y grub-pc
    Sau khi chạy lệnh này, nó sẽ yêu cầu bạn trỏ dòng điện sdXYđể cài đặt bộ tải khởi động. Tìm nơi hệ điều hành hiện tại của bạn được cài đặt bằng sudo fdisk -llệnh. Nó sẽ được dán nhãn là Linux. Điều hướng cửa sổ đó bằng Tabphím và chọn một tùy chọn bằng Spacephím.
  5. Nếu mọi thứ đều ổn, grub sẽ được cài đặt chính xác. Bạn cũng có thể làm sudo grub-updatecho một kiểm tra kép.

Nếu vấn đề vẫn còn, bạn có thể đọc wiki của Arch để thực sự hiểu về grub để giải quyết nhiều vấn đề khác. (Vâng, cũng giúp cho Ubuntu!).


0

Windows không thấy phân vùng định dạng Linux. Bạn cần sử dụng gparted từ liveCD và tạo phân vùng chính được định dạng NTFS bằng cờ khởi động.

Một số đã có vấn đề nếu phân vùng chính mới nằm sau phân vùng mở rộng vì Windows không luôn luôn đặt lại bảng phân vùng chính xác. Tốt nhất để có bản sao lưu tốt và bản sao lưu riêng của bảng phân vùng.

Bảng phân vùng sao lưu vào tập tin văn bản và lưu vào thiết bị bên ngoài.

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

Điều này chỉ dành cho các hệ thống MBR (msdos). Nếu cài đặt Ubuntu của bạn nằm trong ổ đĩa phân vùng GPT, bạn chỉ có thể cài đặt Windows ở chế độ UEFI hoặc chuyển đổi ổ đĩa trở lại MBR (msdos).


Các phiên bản mới của sfdisk & fdisk hoạt động với các ổ đĩa được phân vùng gpt trong 16.04 trở lên, cũng sẽ sao lưu các ổ đĩa được phân vùng gpt bằng lệnh trên. oldfred không nhớ những gì anh ấy đã ăn tối qua, vì vậy không chắc chắn những gì anh ấy đã đăng lại vào năm 2013. :)
oldfred

Chào Fred khi tôi đang nấu ăn quên bữa tối qua là một điều may mắn. Chúng tôi đã xóa những bình luận trước đây của chúng tôi.
WinEunuuchs2Unix

0

Chỉ có fscklệnh cố định grub-rescuemàn hình cho tôi.

Sử dụng Boot-Repair để khởi động từ Live-CD, sau đó mở Terminal

Lấy đúng thiết bị:

sudo fdisk -l

Cần tìm thiết bị khởi động, thiết bị khởi động có *trong mục Khởi động như ở đây:

Device     Boot   Start       End   Sectors  Size Id Type
/dev/sda1          2048   2000895   1998848  976M 82 Linux swap / Solaris
/dev/sda2  *    2000896 943716351 941715456  449G 83 Linux

Bây giờ sửa chữa đĩa bằng cách sử dụng:

sudo fsck /dev/sda2 -y

Lưu ý: / dev / sda2 là thiết bị khởi động trong ví dụ này.

Khởi động lại khi hoàn thành. Làm xong.


0

Câu trả lời của Scott Severance là hợp lệ và chi tiết nhưng có một độ phân giải không yêu cầu thiết bị khởi động bên ngoài và do đó không cần phải xác định và gắn thủ công tất cả các phân vùng Ubuntu của bạn dẫn đến chroot.

Trong Windows 10, bạn có thể sử dụng Advanced Recoveryđể chọn một thiết bị (phân vùng?) Để khởi động.

Đi đến Settingsvà chọn Update & Security:

nhập mô tả hình ảnh ở đây

Chuyển đến Recovery:

nhập mô tả hình ảnh ở đây

Từ Advanced Startuplựa chọnRestart Now

nhập mô tả hình ảnh ở đây

Sau đó chọn Use a Devicevà tất cả các tùy chọn khởi động sẽ được trình bày cho bạn. Chọn phân vùng 'ubfox' và PC của bạn sẽ khởi động từ phân vùng đó.

Sau khi khởi động vào môi trường Ubuntu thông thường của tôi, tôi đã thử chạy grub-updatenhưng điều đó không thay đổi.

Sau đó tôi tìm thấy tôi /boot/efiphân vùng đó là /dev/nvme0n1p1chạy sudo grub-install /dev/nvme0n1p1và sau đó sudo update-grub.

Điều này đã khôi phục bản ghi khởi động chính của tôi nhiều lần vì dường như có chính sách Windows 10 mới ghi đè MBR trên các bản cập nhật nhỏ .


0

Tôi đã gặp một vấn đề khác, gây ra (có thể) bằng cách boot-repairxóa các /etc/grub.d/mẫu của tôi , được nêu trong câu hỏi của tôi ở đây: Ubuntu 18.04 không khởi động sau khi cài đặt Windows 10

Như được chỉ ra bởi nhận xét @karels, cấu hình grub được tạo bằng các tệp trong /etc/grub.d. Thư mục của tôi chỉ chứa /etc/grub.d/25_custom, trong đó có các mục menu lạ trỏ đến hình ảnh .efi không tồn tại. Có vẻ như các /etc/grub.dmẫu của tôi có thể bị hos bởi boot-repair.

Tôi đã sửa lỗi này bằng cách:

  1. Khởi động với Live CD (có thể quan trọng để sử dụng cùng một phiên bản Ubuntu)
  2. sudo mount /dev/sdxx /mnt
  3. sudo cp /etc/grub.d/* /mnt/etc/grub.d/
  4. sudo update-grub
  5. Khởi động lại và thư giãn sau 48 giờ đau
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.