น่าเสียดายที่ไม่มีมาตรฐานในวิธีที่ EFI จัดการสิ่งนี้ แต่พฤติกรรมที่คุณอธิบายเป็นเรื่องธรรมดาในประสบการณ์ของฉัน ปัญหาคือ EFI นั้น "ฉลาดกว่า" เกี่ยวกับการระบุอุปกรณ์การบู๊ตมากกว่า BIOSes และ EFI จำนวนมากลบรายการบูตที่ไม่ถูกต้องออกเมื่อระบุว่าเป็นเช่นนั้น ดังนั้นเมื่อคุณถอดปลั๊ก USB และเริ่มต้นคอมพิวเตอร์ใหม่อีกครั้งมันจะสังเกตเห็นว่ามีรายการบูตที่ไม่ถูกต้องสำหรับไดรฟ์ USB และลบออกจากรายการบูต ฉันรู้ว่าไม่มีวิธีแก้ปัญหา in-EFI สำหรับปัญหาประเภทนี้
แต่นั่นไม่ได้หมายความว่าจะไม่มีวิธีแก้ปัญหา โดยเฉพาะคุณสามารถติดตั้งตัวจัดการการบูต EFI บนดิสก์ภายในของคุณที่ทำสิ่งที่คุณต้องการ - นั่นคือการบูต Windows เมื่อ USB แฟลชไดรฟ์ไม่ได้เสียบอยู่และบูต Ubuntu จากไดรฟ์ USB เมื่อเสียบปลั๊กคุณ ' d จากนั้นปล่อยให้ตัวจัดการการบูตนี้ถูกตั้งค่าให้เป็นโปรแกรมเริ่มต้นการบูต
น่าเสียดายที่ GRUB ของ AFAIK Ubuntu ไม่สามารถกำหนดค่าได้ด้วยวิธีนี้ดังนั้นคุณจะต้องมองหาที่อื่น กฎที่คุณต้องการที่จะปฏิบัติตามเป็นเรื่องง่ายพอที่จะทำให้โปรแกรมที่ง่ายจริงๆอาจจะเขียนเพื่อใช้ในงาน แต่อย่างหนึ่งที่ผมรู้ว่าสามารถทำมันซับซ้อนมากขึ้น: ฉันเองrefind จัดการการบูต ฉันขอแนะนำให้คุณลองติดตั้งและกำหนดค่าดังต่อไปนี้:
- บูตไปที่ Ubuntu
- ตรวจสอบเพื่อดูสิ่งที่ (ถ้ามีอะไร)
/boot/efi
จะติดตั้งอยู่ที่ (การพิมพ์df -h
จะทำให้คุณเห็นพาร์ติชันที่ติดตั้งอยู่ในปัจจุบัน)
- หาก
/boot/efi
สอดคล้องกับพาร์ติชันบนไดรฟ์ USB ให้ยกเลิกการต่อเชื่อมและติดตั้งEFI System Partition (ESP)จากฮาร์ดดิสก์ของคุณ (ตามที่ระบุไว้ในการเชื่อมโยงที่ ESP เป็นพาร์ทิชัน FAT ด้วยรหัสชนิดโดยเฉพาะอย่างยิ่ง. คุณอาจจะต้องติดตามมันลงด้วยgdisk
, parted
หรือ GParted.)
- ติดตั้งแพ็คเกจ rEFInd Debian จากหน้าดาวน์โหลด rEFInd อย่าติดตั้ง PPA ติดตั้งแพ็คเกจ Debian (หรือใช้
.zip
ไฟล์และเรียกใช้refind-install
ด้วยตนเอง)
- แก้ไข
/boot/efi/EFI/refind/refind.conf
และทำการเปลี่ยนแปลงต่อไปนี้:
timeout -1
ตั้งเลือก หากตั้งค่าไว้เมนู rEFInd จะไม่ปรากฏขึ้นเว้นแต่คุณจะกดปุ่มค้างไว้ขณะที่เริ่มต้น rEFInd คุณอาจต้องการระงับการตั้งค่านี้จนกระทั่งหลังจากคุณได้ทดสอบการติดตั้ง
default_selection "vmlinuz,Microsoft"
ตั้งค่า สิ่งนี้ทำให้ rEFInd บูต Linux หากพบเคอร์เนล Linux และ Windows หากเคอร์เนล Linux ไม่มีอยู่นั่นคือหากไม่ได้ต่อปลั๊ก USB ของ Linux การเปลี่ยนvmlinuz
ด้วยgrub
ควรใช้งานได้และควรลองเปลี่ยนถ้าvmlinuz
ไม่ได้ผล
- รีบูทและทดสอบระบบ
หากคุณลองโดยไม่ต้องตั้งtimeout
ค่าคุณจะเห็นเมนู rEFInd ปรากฏขึ้นและไฮไลต์ตัวเลือก Windows (ซึ่งอาจเป็นตัวเลือกเดียว) หากถอดไดรฟ์ USB แต่ตัวเลือกของอูบุนตูควรจะเน้นเป็นค่าเริ่มต้นหากเสียบไดรฟ์ USB หากใช้งานได้การตั้งค่าtimeout -1
จะทำให้การบู๊ตตรงไปยังระบบปฏิบัติการที่ต้องการ
หาก rEFInd ตรวจไม่พบการติดตั้ง Ubuntu ที่เสียบไดรฟ์ USB ให้ลองกดปุ่ม Esc หากตัวเลือกของ Ubuntu ปรากฏขึ้นให้ลองตั้งค่าscan_delay 1
(หรืออาจมีค่าที่สูงกว่า)
ปัญหาที่ใหญ่ที่สุดในการใช้ rEFInd ด้วยวิธีนี้คือจะมีความล่าช้าในขณะที่เริ่มต้นใช้งานสแกนหา OS และอื่น ๆ นี่ควรเป็นเพียงหนึ่งหรือสองวินาทีเมื่อไม่ได้เสียบปลั๊กไดรฟ์ USB และอาจเสียบปลั๊กอีกสองหรือสามวินาทีเมื่อเสียบไดรฟ์ USB ตัวจัดการการบูตที่เชี่ยวชาญมากขึ้นเพื่อจัดการงานเฉพาะนี้อาจจะสามารถทำงานกับ น้อยกว่าความล่าช้า แต่ฉันไม่รู้จักโปรแกรมดังกล่าว