จะสร้างพาร์ติชันระบบ EFI ได้อย่างไร


34

TL; DRฉันจะสร้างพาร์ติชันระบบ EFI ตั้งแต่ต้นได้อย่างไร ฉันจะใส่เฟิร์มแวร์ของ EFI กับมันได้อย่างไรเมื่อมันถูกสร้างขึ้น?

รุ่นยาว

ฉันมีโน๊ตบุ๊ค Toshiba T430 ฉันได้รับพร้อมกับติดตั้ง Windows 7 (แต่ฉันคิดว่า แต่เดิมมาพร้อมกับ Windows 8) ฉันติดตั้ง Ubuntu บนมัน แต่ลบพาร์ติชั่นบางส่วนในดิสก์เพื่อที่ฉันจะได้เช็ดออก Windows และมีอูบุนตูเท่านั้น ในบรรดาพาร์ติชันที่ถูกลบคือพาร์ติชันระบบ EFI ฉันค้นพบว่า Ubuntu เริ่มบูทในโหมด Legacy (ไม่ใช่ UEFI) ฉันพยายามทำตามคำแนะนำนี้ในการแปลงการติดตั้ง Ubuntu จาก Legacy เป็น UEFI. ปัญหา - เนื่องจากไม่มีพาร์ติชัน EFI เมื่อใดก็ตามที่ฉันเลือกจาก BIOS เพื่อบู๊ตโดยใช้ UEFI ฉันไม่สามารถบูตได้ นับว่าไม่เพียง แต่สำหรับฮาร์ดไดรฟ์เท่านั้น แต่ยังรวมถึง usb และ DVD ด้วย ฉันคิดว่านี่เป็นสิ่งที่สมเหตุสมผล - คาดว่าจะมีพาร์ติชัน EFI และเนื่องจากหาไม่พบจึงไม่สามารถบูตต่อไปได้ไม่ว่าจะเป็น HDD หรือ DVD ดังนั้นฉันจะสร้างพาร์ติชัน EFI ใหม่ได้อย่างไร

คำแนะนำข้างต้นพูดว่า:

การสร้างพาร์ติชัน EFI

หากคุณแบ่งพาร์ติชันดิสก์ด้วยตนเองในตัวติดตั้ง Ubuntu คุณต้องตรวจสอบให้แน่ใจว่าคุณได้ตั้งค่าพาร์ติชัน EFI แล้ว

  1. หากดิสก์ของคุณมีพาร์ติชัน EFI อยู่แล้ว (เช่นถ้าคอมพิวเตอร์ของคุณติดตั้ง Windows8 ไว้ล่วงหน้า) ก็สามารถใช้กับ Ubuntu ได้เช่นกัน ห้ามทำการฟอร์แมต ขอแนะนำอย่างยิ่งให้มีเพียง 1 พาร์ติชัน EFI ต่อดิสก์

  2. สามารถสร้างพาร์ติชัน EFI ผ่าน GParted รุ่นล่าสุด (รุ่น Gparted ที่รวมอยู่ในดิสก์ 12.04 เป็น OK) และต้องมีแอตทริบิวต์ดังต่อไปนี้:

    1. จุดเมานท์: / boot / efi (หมายเหตุ: ไม่จำเป็นต้องตั้งค่าจุดเชื่อมต่อนี้เมื่อใช้การแบ่งพาร์ติชันด้วยตนเองตัวติดตั้ง Ubuntu จะตรวจจับโดยอัตโนมัติ)

    2. ขนาด: ขั้นต่ำ 100Mib แนะนำ 200MiB

    3. ประเภท: FAT32

    4. อื่น ๆ : ต้องการแฟล็ก "boot"

ฉันมีปัญหาในการสร้างพาร์ติชันนี้:

  • ฉันบูตจาก DVD Ubuntu สดเปิด GParted สร้างพาร์ทิชัน 200MB และจัดรูปแบบเป็น FAT32
  • ใน GParted ฉันไม่สามารถตั้งค่าจุดเชื่อมต่อและทำให้ไม่สามารถตั้งค่า bootflag
  • ฉันไม่ได้กำหนดจุดเมานต์/etc/fstabเนื่องจากเป็นซีดีสดและ fstab ดูแตกต่างจากที่ฉันคาดไว้มากเมื่อเทียบกับการบูตปกติ อย่างไรก็ตามฉันแค่ไม่รู้ว่าจะตั้งค่าอะไร

ฉันบูทอีกครั้งผ่าน live DVD แล้วเลือกติดตั้ง Ubuntu ฉันสร้างพาร์ติชันด้วยเกณฑ์ที่กล่าวถึง - จุดเมานต์, 200MB, FAT32, แฟล็กบูต

อย่างไรก็ตามฉันยังคงมีปัญหานี้อยู่และฉันคิดว่าเป็นเพราะในพาร์ติชันนั้นไม่มีเฟิร์มแวร์ EFI มันเป็นเพียงพาร์ติชันที่ว่างเปล่าซึ่งเหมาะที่จะมีเฟิร์มแวร์ EFI

อีกครั้งฉันจะสร้างพาร์ติชัน EFI ซึ่งมีซอฟต์แวร์ EFI อย่างไรเพื่อให้แล็ปท็อปสามารถบูตในโหมด UEFI ได้อีกครั้ง

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

พาร์ติชั่นของดิสก์

ระหว่างการติดตั้ง Win 8 ทันทีที่ฉันลบพาร์ติชันที่มีอยู่ทั้งหมดและปล่อยให้ Windows ฟอร์แมตดิสก์ใหม่มันจะสร้างขึ้นโดยอัตโนมัตินอกเหนือจากพาร์ติชันการติดตั้งหลักพาร์ติชันเพิ่มเติมสามพาร์ติชันคือ 1, 2, 3 ตอนนี้หลังจากฉันมี ESP ที่เหมาะสม ฉันสามารถบูตทั้งจาก HDD หรือ DVD ในโหมด UEFI

คุณบอกว่า ESP ไม่ได้จัดเก็บข้อมูลใด ๆ เป็นค่าเริ่มต้น แต่ฉันเดาว่าเมื่อระบบปฏิบัติการติดตั้งมันจะวางข้อมูลไว้ที่นั่น ดังนั้นฉันคิดว่ากรณีของฉันเป็นดังต่อไปนี้: ฉันลบมันออกและแม้ว่าฉันจะสร้างใหม่มันก็ไม่ได้เต็มไปด้วยข้อมูลใด ๆ ตั้งแต่การสร้าง ESP เสร็จแล้วหลังจากติดตั้งระบบปฏิบัติการแล้ว ฉันเสียการติดตั้ง Ubuntu (ไม่มีเรื่องใหญ่มันเป็นการติดตั้งใหม่) แต่ฉันเดาว่าเพื่อประหยัดฉันควรทำตามคำแนะนำของgrawity แม้ว่าจะไม่มีเวลา แต่อย่างมีความสุขตอนนี้ทุกอย่างเรียบร้อยดี


1
ESP จัดเก็บบูตโหลดเดอร์ ดังนั้นหากคุณมีการติดตั้งที่มีอยู่และลบ ESP คุณจะไม่สามารถบูตคอมพิวเตอร์ได้ ปัญหาประเภทนี้จริง ๆ แล้วค่อนข้างจะตรงไปตรงมาเพื่อแก้ไข - ถ้าคุณรู้วิธี!
Rod Smith

ดีเป็นสิ่งที่ทุกคำถามของฉันเป็นเรื่องเกี่ยวกับ :)
อเล็กซ์โปปอฟ

คำตอบ:


37

ขั้นแรกคุณไม่ได้ตั้งค่าจุดเชื่อมต่อใน GParted ว่าทำด้วยตนเอง (ชั่วคราว) ผ่านทางคำสั่งหรือถาวรโดยการแก้ไขmount /etc/fstabดังนั้นความกังวลของคุณเกี่ยวกับปัญหานี้จึงหายไป

ประการที่สอง EFI System Partition (ESP) เป็นเพียงพาร์ติชัน FAT ที่มีรหัสประเภทเฉพาะ (กล่าวคือ C12A7328-F81F-11D2-BA4B-00A0C93EC93B บนชุด GPT) โปรดทราบว่าจุดเชื่อมต่อใน/etc/fstabไม่ได้เป็นส่วนหนึ่งของคำนิยามของ ESP; เป็นเพียงการชุมนุม (แต่ไม่จำเป็น) ใน Linux เพื่อเข้าถึง ESP โดยการติดตั้งที่/boot/efiโดยทั่วไปผ่าน/etc/fstabรายการ วิธีที่คุณตั้งรหัสประเภทนั้นแตกต่างจากโปรแกรมหนึ่งไปอีกโปรแกรมหนึ่ง:

  • ในgdiskคุณตั้งรหัสประเภทเป็น EF00 ( gdiskใช้รหัสประเภทสองไบต์ที่ขยายออกเป็นรหัสประเภทจริงบนดิสก์ "EF00" เป็นเพียงตัวช่วยจำสำหรับ "C12A7328-F81F-11D2-BA4B-00A0C93EC93B")
  • ใน GParted หรือpartedคุณตั้งค่า "boot flag" แต่โปรดทราบว่างานนี้เท่านั้นในดิสก์ GPT; คุณไม่สามารถตั้งรหัสประเภท ESP ในดิสก์ MBR ด้วยโปรแกรมเหล่านี้ (นี่ไม่ใช่เรื่องปกติเนื่องจากคอมพิวเตอร์ที่ใช้ EFI มักจะบูตจากดิสก์ GPT)
  • ในตัวติดตั้ง Ubuntu คุณระบุพาร์ติชันเป็น "พาร์ติชันสำหรับเริ่มระบบ EFI" จากนั้นจะตั้งรหัสประเภทและจะตั้งค่า/etc/fstabอย่างเหมาะสม
  • ใน Linux เวอร์ชันล่าสุดfdiskคุณตั้งค่าประเภทพาร์ติชันตามหมายเลข (1 สำหรับ "EFI System" บนดิสก์ GPT หรือ 0xEF บนดิสก์ MBR) หรือโดยการป้อนรหัสประเภทเต็มในดิสก์ GPT

ประการที่สาม ESP ไม่ถือเฟิร์มแวร์ - เฟิร์มแวร์จัดเก็บไว้ในชิปบนเมนบอร์ด ดังนั้นความพยายามของคุณในการติดตั้งเฟิร์มแวร์ EFI ใน ESP คือการไล่ล่าอย่างห่าน (มีข้อยกเว้นสองข้อสำหรับกฎนี้ข้อแรกคุณอาจเก็บไฟล์เฟิร์มแวร์ไว้ใน ESP เพื่ออัปเดตเฟิร์มแวร์บนคอมพิวเตอร์ของคุณนี่เป็นเพียงพื้นที่พักไว้ชั่วคราวแม้ว่าสองบูตเดอร์DUETหรือCloverโหลด EFI เป็นโปรแกรมปกติซึ่งโดยทั่วไปจะมาจาก ESP เครื่องมือเหล่านี้คือตัวโหลดการบูต BIOS แม้ว่าจะเปิดใช้งานคอมพิวเตอร์ BIOS เท่านั้นเท่านั้นที่สามารถบูตราวกับว่าเป็นเครื่อง EFI แต่ไม่ใช่ปกติจะใช้กับคอมพิวเตอร์ที่มีเฟิร์มแวร์ของ EFI ซึ่งคุณอ้างว่าคอมพิวเตอร์ของคุณมี ในทางเทคนิคแล้ว DUET หรือ Clover นั้นไม่ใช่เฟิร์มแวร์ พวกมันคือบูตโฮเดอร์ BIOS ที่ทำงานเหมือนกับ EFI)

ในที่สุดฉันสามารถนึกถึงสาเหตุที่เป็นไปได้หลายประการสำหรับปัญหาของคุณ แต่หากไม่มีข้อมูลเพิ่มเติมฉันต้องเขียนหนังสือครึ่งเล่มเพื่อครอบคลุมทั้งหมด ฉันแนะนำให้คุณเรียกใช้Boot Info Scriptบนเครื่องคอมพิวเตอร์ RESULTS.txtนี้จะสร้างไฟล์ที่เรียกว่า โพสต์ลงในเว็บไซต์ pastebinและโพสต์กลับด้วย URL ไปยังเอกสารของคุณ ที่จะให้ข้อมูลที่ยากในการกำหนดค่าของคุณซึ่งจะช่วยลดช่วงของสาเหตุที่เป็นไปได้ของปัญหาของคุณ


วิธีใช้gdiskเพื่อ "ตั้งรหัสประเภทเป็น EF00"
B เซเว่น

@BSeven t, ,1 ef00
ฮอบส์

11

พาร์ติชัน EFI ไม่เก็บเฟิร์มแวร์ (ซึ่งเก็บไว้ในชิปบนแผงวงจรหลัก); มันทำให้boot loaderสำหรับระบบปฏิบัติการที่ติดตั้งไว้ โดยพื้นฐานแล้วมันเป็นทางเลือก EFI ของการวางบูตโหลดเดอร์ลงในเซกเตอร์ที่ 0 ของดิสก์ของคุณเช่นเดียวกับกรณีที่ใช้กับพีซี BIOS

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

หากคุณติดตั้ง Ubuntu เรียบร้อยแล้วคุณจะต้อง:

  1. ติดตั้ง GRUB เวอร์ชัน UEFI ฉันคิดว่ามันอยู่ในgrub-efi-amd64-signedแพ็คเกจ

    grub-install --target=x86_64-efi-signed
    

    (สำหรับgrub-efi-amd64รุ่นที่ไม่ได้ลงนามเป็นx86_64-efi.)

  2. ตรวจสอบให้แน่ใจว่า GRUB ได้ติดตั้งตัวเองเช่นเดียวกับ\EFI\Boot\bootx64.efiในพาร์ติชันระบบ EFI (ฉันใช้ไวยากรณ์เส้นทางของ EFI ที่นี่ถ้าคุณติดตั้งพาร์ติชันที่/bootบน Linux จะเป็น/boot/EFI/Boot/bootx64.efiเช่นนั้น)

    หากไม่มีให้คัดลอกgrubx64.efiไปยังตำแหน่งดังกล่าวด้วยตนเอง

    สิ่งนี้จำเป็นเนื่องจากgrub-installไม่สามารถเพิ่มตัวเองลงในเมนูการบูตของ EFI ยกเว้นว่าระบบได้ทำการบูตในโหมด EFI แล้ว (ตัวแปร "EFI" เป็นไปไม่ได้ที่จะเข้าถึงใน BIOS moed) ดังนั้นวิธีเดียวในการบูต GRUB คือการวางไว้ที่ตำแหน่ง "fallback boot loader"

  3. Reboot ลองเลือกโหมด EFI บางประเภทในเมนูบูทของเฟิร์มแวร์ของคุณ (เฟิร์มแวร์ของ บริษัท EFI มีเมนูการบูตของตัวเองแม้กระทั่งก่อนหน้า GRUB)

  4. ตรวจสอบว่าdmesg | grep "efi:"แสดงอะไรเพื่อยืนยันว่าคุณอยู่ในโหมด EFI


1
ฉันไม่ได้ตั้งใจจะนำเธรดเก่ามาใช้ แต่ฉันพยายามค้นหาวิธีแก้ไขปัญหาของฉันและพบกับเธรดนี้ ฉันพยายามอัปเดตเฟิร์มแวร์ BIOS บนคอมพิวเตอร์ Dell ของฉันและ Dell ให้เป็น EXE ในรูปแบบ Windows หรือไฟล์บางไฟล์ที่ควรใส่ในพาร์ติชันที่ฟอร์แมตด้วย EFI เช่นฉันขอให้ "ดาวน์โหลดไฟล์ไปยังพาร์ติชัน EFI บนอุปกรณ์สื่อแบบถอดได้" ฉันไม่รู้ว่า OP หมายถึงสิ่งนี้หรือไม่ แต่อยากจะชี้ให้เห็นสิ่งที่คุณพูดในย่อหน้าแรกของคุณ
Ray

@Ray: คุณกำลังดาวน์โหลดเฟิร์มแวร์ในอนาคตในพาร์ติชันนี้ มันยังไม่ได้ใช้เป็นเฟิร์มแวร์จริงเมื่อคุณเปิดคอมพิวเตอร์ มันใช้เป็นดาต้าไฟล์สำหรับโปรแกรม "ตัวอัปเดตเฟิร์มแวร์" ที่จะเขียน / กระพริบลงในเมนบอร์ด (โปรดจำไว้ว่าเมื่อคำแนะนำดังกล่าวใช้ในการพูดว่า "ดาวน์โหลดไฟล์ลงในฟลอปปี้ดิสก์ที่สามารถบู๊ตได้ของ MS-DOS" หรือบางสิ่งบางอย่างใช่ไหมดิสก์นั้นไม่ได้เก็บ BIOS หลักของคุณไว้ด้วย เหมือนกันที่นี่)
grawity

1
ใช่ฉันรู้. ฉันเดาว่าฉันแค่บอกว่า OP อาจไม่ผิด แต่ก็ไม่แน่ชัด ในทำนองเดียวกันคุณพูดถูกว่าเฟิร์มแวร์ถูกเก็บไว้บนชิปและตอนนี้ฉันถูกขอให้จัดเก็บเฟิร์มแวร์ในอนาคตบนพาร์ติชัน EFI แต่บางคนอาจบอกว่าเฟิร์มแวร์นั้นถูกเก็บไว้ใน EFI ถ้าพวกเขาไม่ใส่ใจกับคำอธิบาย (กล่าวคือไม่ผิดอย่างสมบูรณ์ แต่ผิดครึ่ง)
Ray

2

สร้างสองไฟล์ด้วย notepad และบันทึกลงในไดรฟ์ติดตั้ง USB Windows ของคุณ
SaveAs: CreatePartitions-UEFI.txt

select disk 0  
clean  
convert gpt  
rem == 1. System Partition  =====================  
create partition efi size=210  
format fs=fat32 quick label=”SYSTEM”  
active  
rem == 2. Microsoft Reserved (MSR) partition  ======  
create partition msr size=16  
rem == 3.  Windows partition  ===================  
create partition primary size=xxxxxx   
format fs=ntfs quick label=”Windows”   
assign letter=”W”  
rem == 4. Recovery tools partition  ================  
create partition primary size=460  
format fs=ntfs quick label=”Recovery”  
assign letter=:R”  
list volume

สร้างไฟล์ข้อความอื่นด้วย Notepad:
SaveAs: diskpart-UEFI.txt

diskpart /s D:\CreatePartitions-UEFI.txt   

REM where D:/ is the usb drive. This command runs the text file to install the partitions.

หากคุณใช้ MBR คำสั่งจะเป็นเช่นนั้นให้แปลง mbr

ในการรับขนาดพาร์ติชัน Windows คูณขนาด HD คูณ 1024, ฮาร์ดไดรฟ์ 100 กิ๊กคูณ 1024 เท่ากับ 102400 ลบ 210 (ขนาด efi) ลบ 16 (ขนาด msr) ลบ 460 (ขนาดสงวน) เท่ากับขนาดที่คุณใส่ ขนาดพาร์ติชัน Windows (xxxxxx)

คุณสามารถเปลี่ยนขนาดพาร์ติชันได้จากเทอร์มินัล (พร้อมรับคำสั่ง) cd / d D:> notepad CreatePartitions-UEFI.txt

ในขณะที่คุณอยู่ในไดรฟ์ USB เปิดด้วย notepad diskpart-UEFI.txt และปล่อยให้เปิดหรือเขียนคำสั่งลงเพื่อให้คุณจะไม่ทำผิด เมื่อคุณเปลี่ยนขนาดของพาร์ติชั่นที่คุณชอบให้ปิดมันแล้ว cd / dx: / Sources จากนั้นให้รัน diskpart / s D: \ CreatePartitions-URFI.txt
รายการปริมาณเป็นคำสั่งสุดท้ายจะแสดงพาร์ทิชันถ้ามีความสุขออก> ปิดคอมพิวเตอร์> รีสตาร์ท> ติดตั้ง


-2

ใช้ gnome-disk, แพ็คเกจ "gnome-disk-utility", มันมีประโยชน์มาก


2
ยินดีต้อนรับสู่ Super User! ฉันไม่ใช่ DV-er แต่ในขณะที่คำตอบหนึ่งบรรทัดสามารถทำงานได้ แต่ถ้าคุณแก้ไขคำตอบเพื่อรวมคำอธิบายมันจะทำงานได้ดีขึ้น :) พวกเขาจะสร้างพาร์ติชันระบบ EFI ใน gnome-disk-utility ได้อย่างไร
bertieb
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.