Có cách nào để grub tự động khởi động lại vào Windows từ Windows không?


11

Tôi có một thiết lập khởi động kép:

  1. Ubuntu 16.04 LTS
  2. các cửa sổ

Hiện tại khi tôi muốn reboottừ Ubuntu vào Windows, tôi sử dụng grub-rebootvới số thích hợp làm đối số. Điều này hoạt động tốt.

Tuy nhiên, đôi khi Windows cần khởi động lại để một chương trình nhất định có thể cài đặt hoặc cập nhật và theo cách thủ công tôi phải chọn mục nhập menu khởi động grub phù hợp. Có cách nào tương tự (từ Windows UI) để cho grub biết mục nào cần khởi động không?

Tôi giả sử grub-rebootlệnh truyền đối số vào một tệp lần lượt được đọc bởi grub reboot.

chỉnh sửa (liên quan đến câu trả lời đã chọn của tôi): Tôi hiện đang xem xét việc gắn ổ đĩa ext4 có chứa / khởi động và kịch bản chỉnh sửa. việc này có thể sẽ mất khá nhiều thời gian vì tôi đang làm việc này trong thời gian rảnh bên cạnh công việc phi công nghệ 40h / tuần. ^^


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 .
terdon 15/03/18

Vui lòng cập nhật câu hỏi của bạn trong tương lai với những gì bạn đã làm để có grub tự động khởi động lại vào Windows. Tôi muốn biết phương pháp nào hiệu quả với bạn và để xem tập lệnh của Window (nếu có) mà bạn đã viết. Tôi chắc rằng nhiều người khác cũng quan tâm.
WinEunuuchs2Unix 16/03/18

@ WinEunuuchs2Unix hiện tôi đang làm việc trên nó. như Oli đã nói - kịch bản trong các cửa sổ là một PITA hoàng gia.
amon san

@amonsan Tôi đã cập nhật câu trả lời của tôi với reboot-to-windowschức năng mà là một sự thỏa hiệp trên sử dụng ext2fsd rằng hư ext4 superblocks .
WinEunuuchs2Unix 30/03/18

@amonsan Bạn có thiết lập hệ thống ngay bây giờ để khởi động lại Windows Update để tự động quay lại Windows không?
WinEunuuchs2Unix

Câu trả lời:


8

Bạn có thể sao chép những gì grub-rebootkhông. Nó chỉ là một kịch bản mà cuối cùng gọi:

grub-editenv /boot/grub/grubenv set next_entry="Windows"

Đâu Windowslà tên của mục menu grub của bạn. Nó có thể không phải là

Tôi đã chạy nó. Tất cả nó làm nó chèn next_entry=Windowsvào /boot/grub/grubenv. Trên dòng 2. Vì vậy, nếu đó chỉ là một tệp, trên hệ thống tệp, bạn có thể thực hiện chính xác điều tương tự từ bên trong Windows . Đây là một vấn đề của Windows để giải quyết, nhưng đây là tổng quan cấp cao:

  • Gắn đĩa nơi khởi động cuộc sống. Đây có lẽ là bit khó nhất vì đây có lẽ là ext4. Điều này có thể giúp nhưng không thể chối cãi rằng bạn có thể cần Linux chạy với Windows để chỉnh sửa nó.

    Như muru chỉ ra, nó không quá khó. Bạn có thể di chuyển /bootđến phân vùng FAT32 của riêng mình . Điều này làm cho nó tầm thường để gắn kết trong Windows.

  • Chèn next_entry=Windows(hoặc bất cứ điều gì) vào tập tin sau khi bình luận, trước khi băm.

  • Vô song.
  • Khởi động lại.

Kịch bản rằng trong Windows nằm ngoài vùng thoải mái của tôi và không thực sự là những gì chúng tôi làm ở đây. Nhưng đó nên là tất cả những gì bạn cần làm.


1
Trong phương pháp này, như tôi đã nói trong một nhận xét bây giờ đã chuyển sang trò chuyện, tốt nhất là chuyển sang một /bootphân vùng riêng và định dạng nó thành FAT32 hoặc NTFS, sau đó thoải mái chỉnh sửa chúng trên Windows. Không có gì /bootđặc biệt đòi hỏi các tính năng Unix-y. Viết kịch bản này bằng Powershell sau đó sẽ dễ dàng.
muru

19

Cách dễ nhất là với Grub

Đó là kiểm soát rườm rà grubtừ Windows. Một ứng dụng bên thứ ba để truy cập Ubuntu từ Windows và một số hack là bắt buộc. Tuy nhiên, từ phần trên cùng của bài đăng này: Cách thay đổi thứ tự trên các bản phân phối khởi động kép của tôi , bạn có thể thiết lập grubđể tự động khởi động lại vào tùy chọn menu cuối cùng. Vì vậy, khi ban đầu bạn khởi động với windows và nó thức dậy lúc 2 giờ sáng để chạy các bản cập nhật, grubsẽ tải lại Windows để nó có thể hoàn thành các bản cập nhật một cách duyên dáng.

Khi bạn khởi động lại thủ công và chọn Ubuntu từ grubtất cả các lần khởi động lại tiếp theo, bạn sẽ tự động tải Ubuntu. Tính năng này hoạt động tốt như nhau nếu bạn có lỗi trong kernel hiện tại và muốn grubtự động khởi động lại vào phiên bản kernel cũ hơn mà bạn đã chọn.

Làm cách nào để Grub lặp lại lựa chọn khởi động cuối cùng

Điều này là khá thẳng về phía trước. Sử dụng sudoquyền hạn chỉnh sửa /etc/default/grubvà thay đổi như sau:

#GRUB_DEFAULT=0 # Rather than option #1, we'll always default to last boot choice.
GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true

Dòng đầu tiên bạn sẽ nhận xét và ngay bên dưới chèn hai dòng tiếp theo.

Lưu tệp và nhập vào thiết bị đầu cuối:

sudo update-grub

Dòng lệnh Ubuntu để khởi động lại vào Windows

Hiện tại bạn sử dụng một cái gì đó như thế này:

sudo grub-reboot x # Where x is Windows zero-based grub menu number
sudo reboot now

Từ câu trả lời Stack Exchange được sửa đổi này, bạn có thể sử dụng mặc định grub để khởi động lại vào Windows. Sao chép mã này vào ~/.bashrctập tin của bạn :

function reboot-to-windows {
    WINDOWS_TITLE=`grep -i "^menuentry 'Windows" /boot/grub/grub.cfg|head -n 1|cut -d"'" -f2`
    sudo grub-set-default "$WINDOWS_TITLE"
    sudo reboot
}
  • Lưu ~/.bashrctệp với reboot-to-windowschức năng mới .
  • Đóng phiên thiết bị đầu cuối hiện tại của bạn.
  • Mở một phiên thiết bị đầu cuối mới để thay đổi ~/.bashrcđược tải.
  • Bạn có thể gõ : ~/.bashrcđể tải lại vào phiên cuối hiện có nhưng một số người khuyên không nên làm điều này.

Để khởi động lại vào Windows từ dòng lệnh, hãy sử dụng:

reboot-to-windows

Nếu Windows tự động khởi động lại khi bạn không tìm kiếm, Windows sẽ được khởi động lại. Điều này cho phép các bản cập nhật tự động của Windows được xử lý bình thường qua nhiều chu kỳ khởi động lại mà Windows đôi khi sử dụng.


1
Câu hỏi này không có gì để làm với thứ tự khởi động.
Jennifer

2
@Jennifer Câu hỏi là, tuy nhiên, là một ví dụ của vấn đề XY. Vì vậy, câu trả lời này là hữu ích. Thêm vào đó, nó thực sự là về thứ tự khởi động vì nó đang yêu cầu một cách để tạm thời thay đổi thứ tự khởi động từ một giao diện người dùng Windows.
wizzwizz4

2

grub-set-defaultnên làm tương tự như khởi động lại grub, nhưng làm cho cài đặt vĩnh viễn. Điều này không chính xác từ Windows UI, như bạn đã hỏi, nhưng có lẽ nó hoạt động cho bạn.


Câu hỏi này không có gì để làm với thứ tự khởi động.
Jennifer

Tôi không hiểu ý bạn là gì với bình luận đó, bạn có thể giải thích không?
Sebastian Stark

Amon San không hỏi làm thế nào để tôi có được grub để mặc định cho windows - ze đang hỏi, nếu windows đã được khởi động, làm thế nào để khởi động lại bây giờ và chọn hệ điều hành nào để khởi động.
Jennifer

@Jennifer OP không hỏi "làm thế nào để khởi động lại vào Windows". Nếu vậy OP có thể chỉ cần chọn Windows Restart và sau đó chọn Windows ở menu grub. OP đang hỏi "Khi windows tự động khởi động lại khi tôi không ở đó, làm cách nào tôi có thể đảm bảo nó khởi động lại vào Windows, không phải tùy chọn menu grub mặc định". Ít nhất đó là cách tôi nhìn nhận vấn đề chính .
WinEunuuchs2Unix

Có, OP chỉ có thể chọn Khởi động lại Windows và sau đó chọn Windows ở menu grub. Nhưng OP đặc biệt hỏi làm thế nào để tôi tự động quay lại Windows, mà không phải chọn Windows trong menu khởi động - nói cách khác, làm thế nào để làm điều này mà không cần sự can thiệp của tôi? Quá nhiều X Ying!
Jennifer

1

Bạn chưa nói phiên bản Windows nào hoặc bạn đang sử dụng UEFI.

Nếu bạn đang sử dụng một khởi động UEFI thích hợp (và không phải khởi động kế thừa), có thể tạm thời khởi động vào mục khởi động Windows UEFI. Trên Linux, điều này có thể được thực hiện bằng các công cụ như efibootmgr. Trên Windows, cá nhân tôi sử dụng EasyUEFI . Nó là miễn phí cho sử dụng cá nhân, GUI, nhưng không sử dụng cho doanh nghiệp hoặc CLI. Tôi không thể đảm bảo cho sự an toàn của nó. Nó cũng có vẻ hơi chậm, nhưng có vẻ như nó hoạt động

Trong thiết lập của riêng tôi, sử dụng Arch Linux (kernel EFI shim, không có GRUB) và Windows 10, đây là giao diện của nó, sau khi chọn "Quản lý tùy chọn khởi động EFI" trên màn hình bắt đầu:

Hình ảnh hiển thị tùy chọn khởi động một lần

Nếu bạn đang sử dụng UEFI boot, bạn sẽ thấy một cái gì đó tương tự cho Windows, cộng với một mục nhập duy nhất cho Ubuntu (tải GRUB), cùng với một số tùy chọn dành riêng cho thiết bị khác. Tùy chọn khởi động một lần sau đó có thể được sử dụng để thiết lập để khởi động vào mục khởi động UEFI cho Windows một lần, sau đó quay lại GRUB khởi động sau đó. Sau khi cài đặt xong, bạn khởi động lại như bình thường.


1
cảm ơn, nhưng điều đó đòi hỏi quá nhiều tương tác thủ công mỗi lần theo sở thích của tôi.
amon san

1
Nhún vai. Ở bất cứ giá nào, bạn nên chuyển /bootsang NTFS hoặc FAT32 thay vì chỉnh sửa nó dưới dạng ext4. Viết hỗ trợ cho ext4 trong Windows là iffy, bạn đang mạo hiểm quá nhiều theo cách đó.
muru
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.