ฉันควรทำอย่างไรก่อนทำการบูท Windows 7 และ Debian บน EFI


10

ฉันกำลังจะซื้อเมนบอร์ด Asus พร้อมเฟิร์มแวร์ EFI และต้องการเตรียมตัวสำหรับการติดตั้ง Windows และ Debian เมื่อฮาร์ดแวร์มาถึง ฉันหวังว่าคนที่ลงไปตามถนนสายนี้อาจให้ตัวชี้ฉันสักสองสามข้อ

ฉันควรเตรียมอะไรบ้างก่อนที่จะพยายามติดตั้ง Windows 7 และ Debian บนระบบที่ใช้ UEFI ใหม่

คำตอบ:


8

แก้ไข:เมื่อฉันเขียนคำตอบนี้การกระจายน้อยมากมาพร้อมกับ EFI_STUB กำหนดค่าเคอร์เนลดังนั้นหนึ่งต้องสร้างหนึ่งที่กำหนดเอง ทุกวันนี้ดิสทริบิวชันส่วนใหญ่มีเคอร์เนลที่ตั้งค่าไว้อย่างเหมาะสมและบิลด์ที่กำหนดเองไม่จำเป็นต้องใช้อีกต่อไป ในกรณีนี้ส่วน"ตั้งค่าพาร์ติชันของคุณ"และ"การตั้งค่าสิ่งต่าง ๆ "เป็นสิ่งที่น่าสนใจ "ข้อกำหนด" และ "รวบรวมเคอร์เนล" สามารถข้ามได้

ฉันไม่ทราบว่า Windows จัดการกับ UEFI ได้อย่างไร แต่จากด้านเดเบียนแล้วมันค่อนข้างตรงไปตรงมา

ตั้งค่าพาร์ติชันของคุณ

ใช้ชุดรูปแบบพาร์ติชัน GPT ไม่ใช่ MBR

ในการบูตจากพาร์ติชัน GPT ที่มี UEFI จะมีการกำหนดพาร์ติชันสำหรับบูตเฉพาะซึ่งเรียกว่าEFI SYSTEM PARTITION (ESP) ไม่บังคับ แต่วิธีที่เข้ากันได้มากที่สุดคือการใช้พาร์ติชัน FAT32 ขนาด 200 MiB ควรจะดีสำหรับกรณีส่วนใหญ่

ในการลงทะเบียนพาร์ติชั่นเป็น ESP จะต้องทำการตั้งค่าสถานะด้วยbootแฟล็ก ตรงกันข้ามกับโครงร่าง MBR แฟล็กการบูตใช้เพื่อระบุ ESP เท่านั้นไม่ใช่พาร์ติชันที่จะสามารถบูตได้

UEFI ใช้โครงสร้างไดเรกทอรี\EFI\<vendor>\<application>.efiในการจัดเก็บการใช้งาน UEFI ตัวคั่นไดเรกทอรีถูกแสดงด้วยแบ็กสแลชแม้กระทั่งบน Linux อาจเป็นชื่อการแจกจ่ายค่าจริงไม่เกี่ยวข้องกับ UEFI

แอปพลิเคชันอาจเป็นระบบสาธารณูปโภคเช่นตัวตรวจสอบหน่วยความจำหรือเชลล์ UEFI นอกจากนี้ยังสามารถเป็นตัวโหลดระบบปฏิบัติการหรือระบบปฏิบัติการของตัวเอง แอปพลิเคชันเหล่านี้ต้องลงทะเบียนใน UEFI เพื่อให้สามารถเปิดใช้งานในเวลาบูต

ความต้องการ

UEFI สามารถโหลดเคอร์เนลเวอร์ชัน> = 3.3 ได้โดยตรง เคอร์เนลสามารถทำหน้าที่เป็นตัวโหลดของตัวเอง นี้เรียกว่าEFISTUB ต้องการการกำหนดค่าเคอร์เนลต่อไปนี้

CONFIG_EFI y =
CONFIG_EFI_PARTITION y =
CONFIG_EFI_STUB y =
CONFIG_RELOCATABLE y =
CONFIG_FB_EFI y =
CONFIG_FRAMEBUFFER_CONSOLE y =
CONFIG_EFI_VARS = m

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

รวบรวมเคอร์เนล

(อาจไม่จำเป็นอีกต่อไปดูการแก้ไข)

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

รับแหล่งที่มา

git clone git: //git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git

ลองดูรุ่นหนึ่ง ๆ

git checkout v3.6

การกำหนดค่าเคอร์เนล

ทำให้ menuconfig

ทำการตั้งค่าที่จำเป็นสำหรับระบบของคุณหรือปล่อยให้มันเป็นเช่นนั้นถ้าคุณไม่มีอะไรจะปรับแต่ง นี้เขียนการตั้งค่า kernel .configไปยังแฟ้ม

ตรวจสอบให้แน่ใจว่ามีการตั้งค่าจากย่อหน้าก่อนหน้า CONFIG_INPUT_EVBUG=nนอกจากนี้ยังทำให้ความรู้สึกที่จะเลือก มิฉะนั้นบันทึกของคุณจะถูกเติมด้วยขยะ GiB

สร้างเคอร์เนล

INSTALL_MOD_STRIP = 1 make-kpkg --uc - เป็นไบนารีอาร์ค

แพ็คเกจถูกสร้างขึ้นในไดเรกทอรีหลัก

กำลังติดตั้งเคอร์เนล

dpkg -i linux-image-3.5.0_Custom.deb linux-headers-3.5.0_Custom.deb

อาคาร initramfs

mkinitramfs -o /boot/initrd.img-3.6.0-amd64 3.6.0

3.6.0 เป็นรุ่นเคอร์เนล เป็นค่าเริ่มต้นสำหรับเคอร์เนลที่ใช้งานซึ่งไม่ใช่ตัวเลือกที่ดีเนื่องจากคุณยังคงใช้เคอร์เนลเก่าอยู่

การตั้งค่าต่างๆ

เพื่อให้สามารถบูตเคอร์เนล Linux ได้จะต้องคัดลอกไปยัง ESP พร้อมกับ initramfs ระบุว่า ESP ติดตั้งที่/boot/efi

/boot/efi/EFI/debian/vmlinuz-3.6.0.efi
/boot/efi/EFI/debian/initrd.img-3.6.0

หมายเหตุ:เพื่อให้มั่นใจในความเข้ากันได้กับระบบส่วนใหญ่efiจะต้องเพิ่มส่วนขยายในเคอร์เนล

ตอนนี้เคอร์เนลสามารถลงทะเบียนใน UEFI เราใช้เครื่องมือefibootmgrสำหรับสิ่งนั้น

echo "root = UUID = 3a4287b6-b3a7-4721-da38-acc38a928278 ro rootfstype = ext4 add_efi_memmap initrd = \\ EFI \\ debian \\ initrd.img-3.6.0" |
  iconv -f ascii -t ucs2 |
  efibootmgr \
    - สร้าง \
    - gpt \
    - ดิสก์ / dev / sda \
    - ส่วนที่ 4 \
    --label "เคอร์เนล Debian Linux 3.6.0" \
    - ตัวโหลด "\\ EFI \\ debian \\ vmlinuz-3.6.0" \
    - เขียนลายเซ็น \
    - ผนวก - ไบนารี-args -

อาร์กิวเมนต์ของ--diskคืออุปกรณ์ที่เคอร์เนลอยู่ไม่ใช่ ESP --partคือหมายเลขพาร์ติชันที่เคอร์เนลตั้งอยู่ --labelเป็นรายการในเมนูการบู๊ต UEFI

หากต้องการดูรายการของรายการที่มีให้เพียงแค่เรียกใช้efibootmgrโดยไม่มีอาร์กิวเมนต์ ไวยากรณ์เพื่อลบรายการเฉพาะ

รายการ efibootmgr -b (ฐานสิบหก) -B

ตัวอย่างเช่น:

efibootmgr -b 001a -B

คำแนะนำเหล่านี้ไม่ได้จัดการกรณีของการปรับปรุงเคอร์เนล เคอร์เนลและ initramfs จะไม่ถูกคัดลอกไปยัง ESP โดยอัตโนมัติ ซึ่งสามารถทำได้โดยใช้สคริปต์สั้นซึ่งสำเนาเคอร์เนลและ initramfs กับ ESP efibootmgrและวิ่ง สคริปต์นี้สามารถวางไว้ใน/etc/kernel/postinst.dการเปิดตัวโดยอัตโนมัติหลังจากเคอร์เนลได้รับการปรับปรุง

หมายเหตุ: ไม่จำเป็นต้องใช้ตัวจัดการการบูตเช่น GRUB ตัว UEFI จะทำหน้าที่เป็นตัวจัดการการบูต

นั่นคือทั้งหมดที่คุณต้องการจากด้านลินุกซ์ฉันไม่รู้ว่าจะเพิ่ม Windows ได้อย่างไร


2

ตรวจสอบให้แน่ใจว่า UEFI จะไม่ล็อค Linux จากเครื่องของคุณ อาจมีการตั้งค่าผลกระทบนั้นใน BIOS ตรวจสอบและยืนยันอย่างแน่นอน ฉันจะตรวจสอบจุดนี้อีกครั้งพร้อมกับคู่มือและกับผู้ผลิตหากคุณต้องการ

มีการอภิปรายเพิ่มเติมเกี่ยวกับเรื่องนี้ ZDNet มีหลายบทความ นี่คือบทความจาก21 กันยายน 2011และหนึ่งจาก23 กันยายน

ประการที่สองตามข้อมูลประวัติคุณอาจต้องการติดตั้ง Windows ก่อน ตามเนื้อผ้าวินโดวส์เพิ่งสันนิษฐานว่ามันเป็นระบบปฏิบัติการเดียวบนเครื่อง - ดังนั้นมันจะลบข้อมูลการบูตใด ๆ ที่เกี่ยวข้องกับ Linux สิ่งนี้อาจแตกต่างสำหรับ UEFI ฉันไม่รู้


2

คุณไม่จำเป็นต้องเปิดดูอัลบูต Windows และ Linux บน UEFI ทำตามคำแนะนำเพื่อแปลง UEFI ของคุณเป็น MBR-BIOS โดยไม่สูญเสียข้อมูล

คู่มือนี้จัดทำขึ้นโดยฉัน นอกจากนี้บล็อกที่อ้างอิงจะไม่ถูกลบ แม้ว่าฉันจะใช้มันเหมือน 10 ครั้งโดยไม่สูญเสียข้อมูล แต่ฉันขอแนะนำให้คุณสำรองข้อมูลของคุณก่อนที่จะใช้ขั้นตอนของฉัน


2

ผมอย่างเต็มที่สามารถแนะนำบทความชุด UEFI โดยร็อดสมิ ธ โดยเฉพาะอย่างยิ่งเขากล่าวว่า "ไฮบริด" GPT-MBR เป็น "แฮ็คที่เป็นอันตราย" เนื่องจากอันตราย desynchronisation

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