มีวิธีใดที่ด้วงจะรีบูท Windows จาก Windows โดยอัตโนมัติหรือไม่?


12

ฉันมีการติดตั้งบูทคู่:

  1. Ubuntu 16.04 LTS
  2. ของ windows

ขณะนี้เมื่อฉันต้องการrebootจาก Ubuntu เป็น Windows ฉันใช้grub-rebootกับหมายเลขที่เหมาะสมเป็นอาร์กิวเมนต์ มันใช้งานได้ดี

อย่างไรก็ตามบางครั้ง Windows จำเป็นต้องรีบูตเพื่อให้โปรแกรมบางอย่างสามารถติดตั้งหรืออัปเดตและฉันต้องเลือกรายการเมนูการบูตด้วงขวาด้วยตนเอง มีวิธีที่คล้ายกัน (จาก Windows UI) เพื่อบอกด้วงรายการที่จะบูต?

ฉันนึกคำสั่งผ่านการโต้แย้งไปยังไฟล์ที่อยู่ในการเปิดอ่านโดยด้วงเมื่อgrub-rebootreboot

แก้ไข (เกี่ยวกับคำตอบที่ฉันเลือก): ฉันกำลังมองหาการติดตั้ง ext4 drive ที่มี / boot และเขียนสคริปต์การแก้ไข อาจใช้เวลาสักครู่เนื่องจากฉันทำสิ่งนี้ในเวลาว่างของฉันนอกเหนือจากงานที่ไม่ใช่เทคโนโลยี 40 ชั่วโมง / สัปดาห์ ^^


ความคิดเห็นไม่ได้มีไว้สำหรับการอภิปรายเพิ่มเติม การสนทนานี้ได้รับการย้ายไปแชท
terdon

โปรดอัปเดตคำถามของคุณในอนาคตด้วยสิ่งที่คุณทำเพื่อให้ด้วงรีบูตอัตโนมัติใน Windows ฉันกระตือรือร้นที่จะทราบว่าวิธีใดที่เหมาะกับคุณและเพื่อดูสคริปต์ของ Window (ถ้ามี) ที่คุณเขียน ฉันแน่ใจว่าคนอื่น ๆ สนใจเช่นกัน
WinEunuuchs2Unix

@ WinEunuuchs2Unix ขณะนี้ฉันกำลังทำงานอยู่ ดังที่ Oli กล่าวว่า - การเขียนสคริปต์ใน windows เป็นพระพิต้า
amon san

@amonsan ฉันได้ปรับปรุงคำตอบของฉันกับreboot-to-windowsฟังก์ชั่นซึ่งเป็นประนีประนอมมากกว่าการใช้ext2fsdที่corrupts ext4 superblocks
WinEunuuchs2Unix

@amonsan คุณมีการตั้งค่าระบบของคุณตอนนี้เพื่อให้ Windows Update รีบูตเพื่อกลับสู่ Windows โดยอัตโนมัติหรือไม่
WinEunuuchs2Unix

คำตอบ:


19

วิธีที่ง่ายที่สุดคือกับด้วง

เป็นการควบคุมที่ยุ่งยากgrubจาก Windows แอปพลิเคชันบุคคลที่สามเพื่อเข้าถึง Ubuntu จาก Windows และจำเป็นต้องแฮ็ก อย่างไรก็ตามจากส่วนบนของโพสต์นี้: วิธีการเปลี่ยนคำสั่งใน distros บูทคู่ของฉันคุณสามารถตั้งค่าgrubให้รีบูตอัตโนมัติเป็นตัวเลือกเมนูสุดท้าย ดังนั้นเมื่อคุณเริ่มระบบด้วย windows ในตอนแรกและจะทำงานในเวลา 2 นาฬิกาเพื่อเรียกใช้การอัปเดตgrubจะทำการโหลด Windows ใหม่เพื่อให้สามารถอัปเดตได้อย่างสมบูรณ์

เมื่อคุณรีบูทด้วยตนเองและเลือก Ubuntu จากการgrubรีบูทครั้งต่อไปของคุณโหลดอูบุนตูโดยอัตโนมัติ คุณลักษณะนี้ทำงานได้ดีเท่าเทียมกันหากคุณมีข้อบกพร่องในเคอร์เนลปัจจุบันและต้องการgrubรีบูตอัตโนมัติเป็นเคอร์เนลเวอร์ชันเก่าที่คุณเลือก

วิธีการรับ Grub เพื่อทำซ้ำการเลือกการบูตครั้งล่าสุด

นี่คือตรงไปตรงมาค่อนข้าง การใช้sudoอำนาจแก้ไข/etc/default/grubและเปลี่ยนแปลงรายการต่อไปนี้:

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

บรรทัดแรกที่คุณจะแสดงความคิดเห็นและด้านล่างขวาที่แทรกสองบรรทัดถัดไป

บันทึกไฟล์และพิมพ์ในเทอร์มินัล:

sudo update-grub

บรรทัดคำสั่ง Ubuntu เพื่อรีบูทเข้าสู่ Windows

ขณะนี้คุณใช้สิ่งนี้:

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

จากคำตอบ Stack Exchange ที่ได้รับการแก้ไขนี้คุณสามารถใช้ค่าเริ่มต้นของด้วงเพื่อรีบูตเข้าสู่ Windows คัดลอกรหัสนี้ลงใน~/.bashrcไฟล์ของคุณ:

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
}
  • บันทึก~/.bashrcไฟล์ด้วยreboot-to-windowsฟังก์ชั่นใหม่
  • ปิดเทอร์มินัลเซสชันปัจจุบันของคุณ
  • เปิดเทอร์มินัลเซสชันใหม่เพื่อให้การเปลี่ยนแปลง~/.bashrcถูกโหลด
  • คุณสามารถพิมพ์: ~/.bashrcเพื่อโหลดซ้ำลงในเซสชันเทอร์มินัลที่มีอยู่ แต่บางคนแนะนำให้ทำเช่นนี้

ในการรีบูตเข้าสู่ Windows จากบรรทัดคำสั่งให้ใช้:

reboot-to-windows

หาก Windows รีสตาร์ทโดยอัตโนมัติเมื่อคุณไม่ได้ค้นหา Windows จะรีบูต การดำเนินการนี้จะช่วยให้การอัปเดตอัตโนมัติของ Windows สามารถดำเนินการได้ตามปกติในหลาย ๆ รอบการรีบูต Windows บางครั้งใช้


1
คำถามนี้ไม่มีส่วนเกี่ยวข้องกับคำสั่งบูต
Jennifer

2
@ Jennifer คำถามคืออย่างไรก็ตามตัวอย่างของปัญหา XY ดังนั้นคำตอบนี้มีประโยชน์ นอกจากนี้เป็นเรื่องเกี่ยวกับลำดับการบู๊ตเนื่องจากมีการขอวิธีเปลี่ยนลำดับการบู๊ตจาก Windows UI ชั่วคราว
wizzwizz4

ขณะนี้นี่คือสิ่งที่ฉันติดกับและมันทำงานได้ดีสำหรับฉันในกว่า 90% ของกรณีการใช้งานของฉัน
amon san

@amonsan คุณสามารถอธิบายรายละเอียดเกี่ยวกับร้อยละ 10 ที่มันไม่ทำงาน?
WinEunuuchs2Unix

ฉันส่วนใหญ่เป็นเกมบนเครื่องบูทคู่และลินุกซ์อยู่ที่นั่นสำหรับงานอื่นที่ฉันไม่ได้ทำทุกวัน ดังนั้นตราบใดที่ด้วงยังจำการบูตครั้งล่าสุดคือ windows ฉันสบายดี ฉันแค่ต้องเลือกด้วยตนเองเมื่อฉันบูทหลังจากใช้ linux เพื่อกำหนดมาตรฐานกลับไปที่ windows และในทางกลับกัน สิ่งนี้เกิดขึ้นไม่บ่อยนัก อนิจจากรณีการใช้งานของฉันได้รับความคุ้มครองในปัจจุบัน
amon san

8

คุณสามารถทำซ้ำสิ่งที่grub-rebootทำ มันเป็นเพียงสคริปต์ที่เรียกในที่สุด:

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

Windowsชื่อเมนูด้วงของคุณอยู่ที่ไหน อาจไม่เป็นเช่นนั้น

ฉันวิ่งนั่น มันจะใส่next_entry=Windowsเข้าไป/boot/grub/grubenvทั้งหมด On line ที่ 2 ดังนั้นถ้ามันเป็นเพียงแค่ไฟล์ในระบบแฟ้มที่คุณสามารถทำสิ่งเดียวกันจากภายใน Windows เป็นปัญหาของ Windows ที่ต้องแก้ไข แต่นี่คือภาพรวมระดับสูง:

  • เมานต์ดิสก์ที่บูตอยู่ นี่อาจเป็นบิตที่ยากที่สุดเพราะอาจเป็น ext4 สิ่งนี้อาจช่วยได้ แต่ก็ไม่น่าเชื่อว่าคุณอาจต้องใช้ Linux ที่ทำงานกับ Windows เพื่อแก้ไข

    เมื่อมูรูชี้ให้เห็นมันไม่จำเป็นต้องยากขนาดนี้ คุณสามารถย้าย/bootพาร์ทิชัน FAT32 ของตัวเอง สิ่งนี้ทำให้ไม่สำคัญที่จะเมานต์ใน Windows

  • แทรกnext_entry=Windows(หรืออะไรก็ตาม) ลงในไฟล์หลังความคิดเห็นก่อนแฮช

  • ยกเลิกการเชื่อมต่อ
  • Reboot

การเขียนสคริปต์ใน Windowsนั้นอยู่นอกเขตความสะดวกสบายของฉันและไม่ใช่สิ่งที่เราทำที่นี่ แต่นั่นควรเป็นสิ่งที่คุณต้องทำ


1
ในวิธีนี้ดังที่ฉันได้กล่าวไว้ในความคิดเห็นตอนนี้ย้ายไปแชทมันเป็นวิธีที่ดีที่สุดที่จะย้ายไปที่/bootพาร์ทิชันที่แยกต่างหากและให้มันจัดรูปแบบเพื่อ FAT32 หรือ NTFS แล้วแก้ไขได้อย่างง่ายดายบน Windows ไม่มีอะไรใน/bootนั้นที่ต้องการคุณสมบัติ Unix-y เป็นพิเศษ การเขียนสคริปต์โดยใช้ Powershell ควรเป็นเรื่องง่าย
muru

2

grub-set-defaultควรทำเช่นเดียวกับด้วง - รีบูต แต่ทำให้การตั้งค่าถาวร สิ่งนี้ไม่ได้มาจาก Windows UI ตรงที่คุณถาม แต่อาจใช้ได้กับคุณ


คำถามนี้ไม่มีส่วนเกี่ยวข้องกับคำสั่งบูต
Jennifer

ฉันไม่ได้รับสิ่งที่คุณหมายถึงด้วยความคิดเห็นที่คุณสามารถอธิบายได้หรือไม่
เซบาสเตียนสตา

Amon San ไม่ได้ถามว่าฉันจะได้ด้วงเป็นค่าเริ่มต้นสำหรับ windows - ze กำลังถามว่าถ้า windows ถูกบูทแล้ววิธีการรีบูตตอนนี้และเลือก OS ที่จะบูทเข้ามา
Jennifer

@Jennifer OP ไม่ได้ถามว่า "จะรีบูทเข้า Windows ได้อย่างไร" ถ้าเป็นเช่นนั้น OP ก็สามารถเลือก Windows Restart แล้วเลือก Windows ที่เมนูด้วง OP ถามว่า "เมื่อ windows รีบูตโดยอัตโนมัติเมื่อฉันไม่อยู่ที่นั่นฉันจะมั่นใจได้อย่างไรว่ารีบูทเข้าสู่ Windows ไม่ใช่ตัวเลือกเมนูด้วงเริ่มต้น" อย่างน้อยนั่นเป็นวิธีที่ฉันเห็นปัญหาหลัก
WinEunuuchs2Unix

ใช่ OP สามารถเลือก Windows Restart แล้วเลือก Windows ที่เมนูด้วง แต่ OP จะถามว่าฉันจะกลับเข้า Windows โดยอัตโนมัติได้อย่างไรโดยไม่ต้องเลือก Windows ในเมนู boot - กล่าวอีกอย่างคือทำอย่างไรโดยที่ฉันไม่ต้องทำอะไรเลย? X Ying มากเกินไป!
เจนนิเฟอร์

1

คุณยังไม่ได้พูดว่า Windows รุ่นใดหรือคุณอยู่ใน UEFI

หากคุณใช้การบูท UEFI ที่เหมาะสม (ไม่ใช่บูตแบบดั้งเดิม) คุณสามารถบูตไปที่รายการบูท Windows UEFI ชั่วคราว บน Linux efibootmgrนี้สามารถทำได้โดยใช้เครื่องมือเช่น บน Windows, ผมเองใช้EasyUEFI มันฟรีสำหรับการใช้งานส่วนตัว, GUI แต่ไม่ใช่สำหรับองค์กรหรือการใช้ CLI ฉันไม่สามารถรับรองความปลอดภัยได้ ดูเหมือนว่าจะค่อนข้างช้า แต่ก็ใช้งานได้

ในการตั้งค่าของฉันเองซึ่งใช้ Arch Linux (เคอร์เนล EFI shim, ไม่มี GRUB) และ Windows 10 นี่คือลักษณะที่ปรากฏหลังจากเลือก "Manage EFI Boot Option" บนหน้าจอเริ่มต้น:

ภาพแสดงตัวเลือกการบูตครั้งเดียว

หากคุณใช้การบูท UEFI คุณควรเห็นสิ่งที่คล้ายกันสำหรับ Windows รวมถึงรายการเดียวสำหรับ Ubuntu (ซึ่งโหลด GRUB) รวมถึงตัวเลือกเฉพาะอุปกรณ์อื่น ๆ ตัวเลือกการบู๊ตแบบครั้งเดียวนั้นสามารถใช้เพื่อตั้งค่าให้บู๊ตรายการบูต UEFI สำหรับ Windows หนึ่งครั้งจากนั้นกลับสู่ GRUB การบู๊ตหลังจากนั้น หลังจากตั้งค่านั้นคุณรีสตาร์ทตามปกติ


1
ขอบคุณ แต่นั่นต้องใช้การโต้ตอบด้วยตนเองมากเกินไปในแต่ละครั้งสำหรับรสนิยมของฉัน
amon san

1
ยัก. คุณควรย้าย/bootไปที่ NTFS หรือ FAT32 แทนการแก้ไขเป็น ext4 การสนับสนุนการเขียนสำหรับ ext4 ใน Windows นั้นไม่แน่นอนคุณกำลังเสี่ยงมากเกินไป
muru
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.