ติดตั้ง mbr บนฮาร์ดไดรฟ์ของคุณ เราสร้าง MBR และเขียนโปรแกรมจัดการมัลติบูตของเราเอง มันทำให้ฉันแตกต่างอะไร?

💖 ชอบไหม?แชร์ลิงก์กับเพื่อนของคุณ
สถานการณ์มีดังนี้ มีสกรูขนาด 160GB มี 2 ​​พาร์ติชั่น - 40GB และ 120GB ในการติดตั้ง Ubuntu เป็นระบบที่สอง จะมีการแจกแจงขนาด 120GB -> 100+10+2+8
ผลลัพธ์
1. เมื่อระบบบู๊ต ข้อความไม่พบตัวช่วย MBR จะปรากฏขึ้น
2. fdisk แสดงดิสก์ขนาดใหญ่ 160GB หนึ่งดิสก์

คนโง่เข้าใจว่านี่คือจุดเริ่มต้นของค่ำคืนที่สนุกสนาน
นอกจากนี้ภายใต้แนวทางแก้ไขปัญหา

1. การกู้คืนตารางพาร์ทิชัน

1.1. แยกเวทย์มนตร์
ชุดแจกจ่าย LiveCD\USB ขนาด 100 MB ประกอบด้วยซอฟต์แวร์จำนวนมากสำหรับการทำงานกับดิสก์ จากการพังทลายจนถึงการบูรณะ
ในบรรดาทั้งหมดนั้นเราจะต้อง gpart, ดิสก์ทดสอบ, fdiskและ ms-sys.
1.2. Gpart
gpart เป็นโปรแกรมอรรถประโยชน์ที่จะสแกนเซกเตอร์ของดิสก์ตามเซกเตอร์เพื่อหาพาร์ติชันที่ปรากฏบนสื่อ แต่ไม่มีอยู่ในตาราง ในการทำงาน จะละเว้นตารางที่มีอยู่แล้ว (ถ้ามี) โปรแกรมนี้ได้รับการพัฒนาโดยโปรแกรมเมอร์ชาวเยอรมัน Michail Brzitwa และไม่ได้รับการสนับสนุนจากเขาอีกต่อไป การพัฒนาที่ช้าดำเนินการโดยทีม Fedora และ Debian เวอร์ชันปัจจุบันคือ 0.1 ชม.

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

Gpart สามารถทำงานได้ 2 โหมด นี่คือการวิเคราะห์อย่างรวดเร็วและการสแกนโดยละเอียด ในบางกรณีโหมดแรกก็เพียงพอแล้ว เราจะดูอันที่สอง

Gpart - ถ้า /dev/sda

-ฉัน- โหมดโต้ตอบ ในแต่ละส่วนที่พบจะมีคำถามถามว่าจะบันทึกหรือข้ามไป
-ฉ- การสแกนดิสก์แบบเต็ม

หลังจากผ่านไประยะหนึ่ง รายงานพร้อมส่วนที่เป็นไปได้จะถูกสร้างขึ้น นี่คือสิ่งที่ต้องได้รับการตรวจสอบอย่างรอบคอบที่สุดก่อนที่จะบันทึก
รายงานตัวอย่าง (ไม่ใช่ของฉัน):

เริ่มการสแกน...
พาร์ติชันที่เป็นไปได้ (DOS FAT) ขนาด (1907mb) ออฟเซ็ต (0mb)
พาร์ติชันที่เป็นไปได้ (ระบบไฟล์ SGI XFS) ขนาด (5730mb) ออฟเซ็ต (1907mb)
สิ้นสุดการสแกน
กำลังตรวจสอบพาร์ติชัน...
พาร์ติชัน (DOS หรือ Windows 95 ที่มี FAT 32 บิต, LBA): หลัก
พาร์ติชัน (ระบบไฟล์ Linux ext2): primary
ตกลง.
ตารางพาร์ติชันหลักที่เดาได้:
พาร์ติชันหลัก(1)
ประเภท: 012(0x0C)(DOS หรือ Windows 95 พร้อม 32 บิต FAT, LBA)
ขนาด: 1907mb #s(3906544) วินาที(16-3906559)
ช: (0/1/1)-(1023/19/16)d (0/1/1)-(12207/19/16)r
พาร์ติชันหลัก(2)
ประเภท: 131(0x83)(ระบบไฟล์ Linux ext2)
ขนาด: 5730mb #s(11736000) วินาที(3906560-15642559)
ช: (1023/19/59)-(1023/19/59)d (12208/0/1)-(48882/19/16)r
พาร์ติชันหลัก(3)
ประเภท: 000(0x00)(ไม่ได้ใช้)
ขนาด: 0mb #s(0) s(0-0)

พาร์ติชันหลัก(4)
ประเภท: 000(0x00)(ไม่ได้ใช้)
ขนาด: 0mb #s(0) s(0-0)
ช: (0/0/0)-(0/0/0)d (0/0/0)-(0/0/0)r

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

1.3. ดิสก์ทดสอบ
หมายเหตุ: ยูทิลิตี้นี้อธิบายรายละเอียดเพิ่มเติมในโพสต์นี้ ฉันจะไม่ทำซ้ำที่นี่

ยูทิลิตี้นี้คล้ายกับยูทิลิตี้ก่อนหน้า แต่มีข้อดีหลายประการ:
1. ล่าสุดและได้รับการสนับสนุนอย่างแข็งขัน;
2. อัตนัย มันทำงานเร็วกว่ามาก
3. ใช้งานได้มากขึ้น
4. มีอินเทอร์เฟซคอนโซลที่เรียบง่ายตาม ncurses

ไป!
1. ในหน้าต่างแรก เลือก สร้างไฟล์บันทึกใหม่
2. เลือกดิสก์ที่ต้องการ (/dev/sda) -> ดำเนินการต่อ;
3. ทำเครื่องหมายประเภทพาร์ติชันเป็น Intel
4. เลือกวิเคราะห์โครงสร้างพาร์ติชันปัจจุบันและค้นหาพาร์ติชันที่สูญหาย
5. หากพาร์ติชั่นที่พบถูกต้องให้คลิกสำรองข้อมูลแล้วไปที่ขั้นตอนที่ 6 คุณสามารถสแกนดิสก์ใหม่ได้อย่างรวดเร็วหากมีข้อผิดพลาดเกิดขึ้น (ค้นหาด่วน)
6. รายการสีเขียวพร้อมส่วนต่างๆ ปรากฏอยู่ที่นี่แล้ว ถ้าตกลง ให้จดบันทึกไว้ ไม่เช่นนั้นให้เรียกใช้ Deep search;

ในกรณีของฉัน ผลลัพธ์จะคล้ายกับผลลัพธ์ของ gpart ซึ่งไม่ถูกต้อง
หลังจากเปิดตัว Deep Search หลังจากรอประมาณ 40 นาที ฉันก็ได้รับคำตอบที่ทำให้จิตใจของฉันรู้สึกดีขึ้นมาก
พบพาร์ติชันหลายตัวที่ทับซ้อนกัน (ซึ่งเป็นพาร์ติชันดั้งเดิม (ก่อนการจัดการ) 120GB และพาร์ติชันใหม่ 100GB) เมื่อทำเครื่องหมายสิ่งที่ไม่จำเป็นว่าถูกลบแล้ว ฉันจึงเขียนตารางลงดิสก์และรีบูต โชคดีที่ทุกอย่างเรียบร้อยดีและคอมพิวเตอร์ก็กลับสู่สภาพเดิม และฉันสามารถเข้านอนได้อย่างมีจิตสำนึกที่ชัดเจน

3. การกู้คืน MBR

สำหรับงานนี้ เรามีเครื่องมือ ms-sys อยู่ในคลังแสงของเรา
ก่อนอื่น เรามาดูกันว่ามีอะไรผิดปกติกับ MBR ของเรา

Ms-sys /dev/sda
/dev/sda มีเซกเตอร์สำหรับบูต x86
มันเป็นบูตเซกเตอร์ที่ไม่รู้จัก

ตอนนี้คุณสามารถเห็นได้ว่าดิสก์นี้ไม่มีเซกเตอร์สำหรับบูต
ยูทิลิตี้นี้สามารถทำงานร่วมกับ MBR ของระบบปฏิบัติการต่างๆ สามารถรับรายการได้โดยการรันโปรแกรมโดยไม่มีอาร์กิวเมนต์ ในกรณีของฉัน มันจำเป็นจาก Windows 7
เขียน MBR ลงดิสก์:

Ms-sys -7 /dev/sda
บันทึกการบูตหลักของ Windows 7 เขียนลง /dev/sda สำเร็จแล้ว

เราตรวจสอบ:

Ms-sys /dev/sda
มันเป็นบันทึกการบูตหลักของ Microsoft 7 เช่นนี้
โปรแกรมสร้างด้วยสวิตช์ -7 บนอุปกรณ์ฮาร์ดดิสก์

เพียงเท่านี้ MBR ที่จำเป็นก็ได้รับการติดตั้งแล้วและคุณสามารถรีบูตได้

3. เอ้าโทร

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

ดิสก์คอมพิวเตอร์ใช้ตารางพาร์ติชัน GPT หรือ MBR คอมพิวเตอร์สมัยใหม่ใช้ตารางพาร์ติชัน GPT ในระบบปฏิบัติการ Windows 10 หรือ Windows 8.1 (Windows 8)

GUID Partition Table (GPT) เป็นส่วนหนึ่งของอินเทอร์เฟซ EFI ซึ่งมาแทนที่ BIOS BIOS ใช้ MBR (Master Boot Record) - มาสเตอร์บูตเรคคอร์ด คอมพิวเตอร์ที่มีดิสก์ MBR จะค่อยๆถูกแทนที่ด้วยคอมพิวเตอร์ที่มีดิสก์ GPT ประเภทของดิสก์ SSD หรือ HDD ก็ไม่สำคัญ

ความแตกต่างที่สำคัญระหว่างตารางพาร์ติชันมีดังนี้: บนดิสก์ MBR คุณสามารถสร้างพาร์ติชันหลักได้ 4 พาร์ติชัน รองรับดิสก์สูงสุด 2.2 TB บนดิสก์ GPT จำนวนพาร์ติชันนั้นไม่ จำกัด ในทางปฏิบัติ (ขึ้นอยู่กับระบบปฏิบัติการที่ใช้) ดิสก์ที่มีขนาดใหญ่กว่า รองรับ 2.2 TB ระบบบูตเร็วขึ้น

ข้อดีของ GPT คือการจัดเก็บข้อมูลไว้ในตำแหน่งต่างๆ บนดิสก์ ซึ่งแตกต่างจาก MBR ซึ่งอยู่ในที่เดียว ใน GPT ในกรณีที่เกิดความเสียหายหรือล้มเหลว ข้อมูลอาจถูกนำมาใช้จากตำแหน่งอื่นบนดิสก์ MBR ซึ่งในกรณีนี้จะไม่สามารถโหลดได้ ประโยชน์ของรูปแบบพาร์ติชัน GPT ส่วนใหญ่จะรับรู้ใน Windows รุ่น 64 บิต (รองรับ Windows 7 x64)

จะทราบได้อย่างไรว่าดิสก์ใดเป็น GPT หรือ MBR คุณสามารถค้นหารูปแบบดิสก์ MBR หรือ GPT โดยใช้ระบบปฏิบัติการ Windows โดยใช้โปรแกรมบุคคลที่สามที่ออกแบบมาเพื่อทำงานกับดิสก์ บทความนี้กล่าวถึงโปรแกรม AOMEI Partition Assistant;

วิธีค้นหา GPT หรือ MBR ในการจัดการดิสก์

วิธีที่ง่ายที่สุดในการค้นหารูปแบบพาร์ติชันของดิสก์คือเข้าไปที่ Disk Management

ใน Windows 10 ให้คลิกขวาที่เมนู Start แล้วเลือก Disk Management ใน Windows 7 คลิกขวาที่ "คอมพิวเตอร์" เลือกรายการเมนูบริบท "จัดการ" และในหน้าต่าง "การจัดการคอมพิวเตอร์" เลือกส่วน "การจัดการดิสก์"

คุณสามารถเข้าสู่การจัดการดิสก์ใน Windows ด้วยวิธีอื่น: กด "Win" + "R" บนแป้นพิมพ์ของคุณป้อนคำสั่ง "diskmgmt.msc" (โดยไม่ใส่เครื่องหมายคำพูด) ในหน้าต่าง "Run" จากนั้นคลิกที่ "OK" ปุ่ม.

หลังจากนี้หน้าต่าง "การจัดการดิสก์" จะเปิดขึ้นซึ่งจะแสดงดิสก์ทั้งหมดที่เชื่อมต่อกับคอมพิวเตอร์เครื่องนี้

ที่ด้านล่างของหน้าต่างสแน็ปอิน คุณจะเห็นฟิสิคัลดิสก์ทั้งหมดที่เชื่อมต่อกับคอมพิวเตอร์ซึ่งมีป้ายกำกับว่า: "ดิสก์ 0", "ดิสก์ 1" ฯลฯ โปรดทราบว่าฮาร์ดไดรฟ์จริงตัวหนึ่งสามารถมีได้หลายพาร์ติชัน ( ไดรฟ์ "C") ", "D" ฯลฯ )

คลิกขวาที่ชื่อดิสก์ ในกรณีนี้คือ "ดิสก์ 0" และเลือก "คุณสมบัติ" จากเมนูบริบท

ในหน้าต่าง "XXX Disk Properties" ที่เปิดขึ้น ให้เปิดแท็บ "Volumes" ภายใต้ข้อมูลดิสก์ คุณจะเห็นตัวเลือกที่เรียกว่า Partition Style: Partition GUID Table (GUID) ซึ่งหมายความว่าดิสก์นี้มีลักษณะพาร์ติชัน GPT

หลังจากที่ฉันเข้าไปที่คุณสมบัติของ "ดิสก์ 1" และเปิดแท็บ "ไดรฟ์ข้อมูล" ฉันเห็นว่าดิสก์นี้มีตาราง MBR - "รูปแบบพาร์ติชัน: มาสเตอร์บูตเรกคอร์ด (MBR)"

วิธีค้นหาฮาร์ดไดรฟ์ GPT หรือ MBR บนบรรทัดคำสั่ง

เรียกใช้ Command Prompt ในฐานะผู้ดูแลระบบ ในหน้าต่างตัวแปลบรรทัดคำสั่ง ให้ป้อนคำสั่ง:

ดิสก์พาร์ท

รายการดิสก์

คลิกที่ "เข้าสู่"

หน้าต่างพร้อมรับคำสั่งจะแสดงไดรฟ์จริงทั้งหมดที่เชื่อมต่อกับคอมพิวเตอร์

ตัวเลือกหนึ่งที่แสดงมีป้ายกำกับว่า "GPT" ดิสก์ที่มีลักษณะพาร์ติชั่น GPT จะมีเครื่องหมายดอกจัน (“ดิสก์ 0”) กำกับอยู่ ซึ่งหมายความว่าดิสก์ที่เหลือซึ่งไม่มีเครื่องหมายดอกจันจะมีรูปแบบพาร์ติชัน MBR

วิธีค้นหาพาร์ติชันดิสก์ GPT หรือ MBR ใน AOMEI Partition Assistant

โปรแกรม AOMEI Partition Assistant (เวอร์ชันฟรี - AOMEI Partition Assistant Standard) ได้รับการออกแบบมาเพื่อใช้งานและจัดการดิสก์ โปรแกรมมีความสามารถในการแปลง (แปลง) ดิสก์ GPT เป็น MBR และ MBR เป็น GPT

หลังจากเปิดโปรแกรม ดิสก์ของคอมพิวเตอร์จะปรากฏในหน้าต่างหลักของ AOMEI Partition Assistant ที่ด้านล่างของหน้าต่างแอปพลิเคชัน ประเภทพาร์ติชันจะแสดงใต้ชื่อดิสก์แต่ละดิสก์: GPT หรือ MBR

บทสรุปของบทความ

คุณสามารถดูประเภทของพาร์ติชั่น GPT หรือ MBR ที่ดิสก์ในคอมพิวเตอร์ของคุณมีได้โดยใช้สแน็ปอินการจัดการดิสก์ บรรทัดคำสั่ง และซอฟต์แวร์ของบริษัทอื่น: โปรแกรม AOMEI Partition Assistant

MBR (ในภาษารัสเซีย - มาสเตอร์บูตเรคคอร์ด) คือชุดข้อมูล บรรทัดโค้ด ตารางพาร์ติชัน และลายเซ็นเฉพาะ จำเป็นต้องโหลดระบบปฏิบัติการ Windows หลังจากเปิดเครื่องคอมพิวเตอร์ มีหลายกรณีที่ MBR ได้รับความเสียหายหรือถูกลบอันเป็นผลมาจากความล้มเหลวของฮาร์ดแวร์และระบบต่างๆ ซึ่งทำให้ไม่สามารถเริ่ม Windows ได้ การคืนค่าเรกคอร์ดการบูต Windows 7 MBR ช่วยแก้ปัญหาดังกล่าวได้ บทความนี้จะกล่าวถึงวิธีการง่ายๆ หลายวิธีที่คุณสามารถคืนค่าเรกคอร์ดได้

ทฤษฎีเล็กน้อย

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

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

การกู้คืนบันทึกการบูต

ในการกู้คืน MBR คุณจะต้องมีดิสก์การติดตั้งที่คุณติดตั้ง Windows (หรืออื่น ๆ ) หากไม่มีดิสก์คุณสามารถสร้างแฟลชไดรฟ์ USB ที่สามารถบู๊ตได้ด้วย Win7 อัลกอริธึมการดำเนินการ:

การกู้คืนอัตโนมัติ

เริ่มต้นด้วยการปล่อยให้การซ่อมแซม MBR เป็นเครื่องมือมาตรฐานของ Microsoft เลือกการซ่อมแซมการเริ่มต้น ไม่จำเป็นต้องทำอะไรอีก เวลาผ่านไปสักพักคอมพิวเตอร์จะแจ้งว่ากระบวนการเสร็จสมบูรณ์ ลองสตาร์ทวินโดวส์ หากไม่มีอะไรทำงาน คุณจะต้องกู้คืน ICBM ด้วยตนเอง

บรรทัดคำสั่ง

เส้นทางนี้ต้องการให้คุณป้อนคำสั่งหลายคำสั่งลงใน Windows Command Prompt

  • จากเมนูการกู้คืนระบบ ให้เลือก Command Prompt
  • ตอนนี้คุณต้องป้อน "bottrec/fixmbr" คำสั่งนี้ใช้เพื่อเขียน MBR ใหม่ที่เข้ากันได้กับ Win 7 คำสั่งจะลบส่วนที่ไม่ได้มาตรฐานของโค้ด แก้ไขความเสียหาย แต่จะไม่ส่งผลกระทบต่อตารางพาร์ติชันที่มีอยู่
  • จากนั้นป้อน “bootrec/fixboot” คำสั่งนี้ใช้เพื่อสร้างบูตเซกเตอร์ใหม่สำหรับ Windows
  • ถัดไป “bootrec/nt60 sys” คำสั่งนี้จะอัปเดตรหัสการบูต MBR
  • ปิดคอนโซล รีสตาร์ทคอมพิวเตอร์แล้วลองเริ่มระบบ หากปัญหายังไม่ได้รับการแก้ไข คุณจะต้องป้อนคำสั่งเพิ่มเติมอีกสองสามคำสั่ง
  • เปิดคอนโซลอีกครั้งแล้วป้อน "bootrec/Scanos" และ "bootrec/rebuildbcd" เมื่อใช้ยูทิลิตี้เหล่านี้ คอมพิวเตอร์จะสแกนฮาร์ดไดรฟ์ของคุณเพื่อหาระบบปฏิบัติการ แล้วเพิ่มลงในเมนูบู๊ต
  • จากนั้นป้อน “bootrec/nt60 sys” อีกครั้งแล้วรีสตาร์ทคอมพิวเตอร์

ยูทิลิตี้ TestDisk

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

ในส่วนนี้ ฉันจะแสดงวิธีเขียน multiboot manager ของคุณเอง ตัวจัดการมัลติบูตคือรหัสที่อยู่ในเซกเตอร์สำหรับบูตซึ่งโหลดระบบปฏิบัติการหลายระบบที่ติดตั้งบนคอมพิวเตอร์ตามที่ผู้ใช้เลือก ในระหว่างการสนทนา คุณจะคุ้นเคยกับการขัดจังหวะ INT 13h ตารางพาร์ติชัน ฯลฯ bootloader มาตรฐานที่ระบบปฏิบัติการส่วนใหญ่ติดตั้งโดยค่าเริ่มต้นนั้นดั้งเดิมเกินกว่าจะจริงจังได้ และ bootloader แบบกำหนดเองจากนักพัฒนาบุคคลที่สามมักจะเทอะทะและไม่น่าเชื่อถือเกินไป งั้นเรามาเขียนของเราเองกันเถอะ! ขณะที่เราเขียนบทความนี้ เราจะได้รู้จักกับแอสเซมเบลอร์ Tao และ Zen เรียนรู้วิธีดีบักโปรแกรมโดยไม่ต้องใช้ดีบักเกอร์ และดูอินเทอร์เฟซระดับต่ำของฮาร์ดไดรฟ์ให้ละเอียดยิ่งขึ้น

อินเทอร์เฟซ INT 13 ชม

คุณสามารถจัดการดิสก์ได้ทั้งผ่านพอร์ต I/O และผ่าน BIOS พอร์ตมีประสิทธิภาพและน่าสนใจกว่ามาก แต่ BIOS นั้นง่ายต่อการตั้งโปรแกรมมากและยังรองรับไดรฟ์ขนาดต่างๆ จำนวนมาก โดยสรุปจากคุณสมบัติการออกแบบของแต่ละรุ่น ดังนั้นเราจะดำเนินการผ่านมันหรืออย่างแม่นยำมากขึ้นผ่านอินเทอร์เฟซการขัดจังหวะ INT 13h

หมายเลขฟังก์ชันจะถูกป้อนลงในรีจิสเตอร์ AH ในกรณีอ่านก็เท่ากับสอง ทะเบียน AL รับผิดชอบจำนวนภาคที่กำลังประมวลผล เนื่องจากเราจะอ่านหนึ่งเซกเตอร์ต่อการดำเนินการ เราจะใส่หนึ่งเซกเตอร์ไว้ที่นี่ รีจิสเตอร์ DH จะเก็บหมายเลขหัว และรีจิสเตอร์ DL จะเก็บหมายเลขไดรฟ์ (80h คือฮาร์ดไดรฟ์ตัวแรก 81h คือตัวที่สอง ฯลฯ) ห้าบิตที่มีนัยสำคัญน้อยที่สุดของการลงทะเบียน CL ระบุหมายเลขเซกเตอร์ บิตที่เหลือของการลงทะเบียน CL และแปดบิตของการลงทะเบียน CH ระบุหมายเลขของทรงกระบอกที่เราต้องการอ่าน คู่รีจิสเตอร์ ES:BX ชี้ไปยังที่อยู่ของบัฟเฟอร์ปลายทาง นั่นคือทั้งหมดที่พูดอย่างเคร่งครัด หลังจากดำเนินการคำสั่ง INT 13h ข้อมูลการอ่านจะสิ้นสุดในบัฟเฟอร์และหากเกิดข้อผิดพลาด (เช่นส่วนหัว "สะดุด" บนเซกเตอร์ BAD) BIOS จะตั้งค่าสถานะการดำเนินการและเราจะถูกบังคับ เพื่อลองอีกครั้งหรือแสดงข้อความเศร้าบนหน้าจอ

รหัสภาษาแอสเซมบลีสำหรับโปรแกรมนี้แสดงอยู่ในรายการ 5.6

รายการ 5.6 รหัสที่อ่านบูตเซกเตอร์หรือตารางพาร์ติชันเสริม

MOV SI, 1BEh ; ไปที่ส่วนแรก
MOV ขวาน, CS ; การตั้งค่า ES
ย้ายขวาน
MOV BX, บัฟ ; ชดเชยบัฟเฟอร์
...
read_all_partitions:
MOV ขวาน ตา ; อ่าน 1 เซกเตอร์จากดิสก์

MOV ดีเอช, ; หมายเลขหัวเริ่มต้น
MOV CX, ; เริ่มต้นเซกเตอร์ด้วยกระบอกสูบ INT 13h
เจซีผิดพลาด ; ข้อผิดพลาดในการอ่าน
; ประมวลผลเซกเตอร์สำหรับบูตการอ่านหรือตารางพาร์ติชันเสริม
;===================================================================
;
CMP ไบต์ 80 ชม
JZ โหลด_บูต ; นี่คือบูตเซกเตอร์
- เราถ่ายโอนการควบคุมไปให้กับมัน
CMP ไบต์ 05 ชม
JZ โหลด_CHS_EXT ; นี่คือตารางพาร์ติชันแบบขยาย
- ในรูปแบบ CHS
CMP ไบต์ , 0Fh
JZ โหลด_LBA_EXT ; นี่คือตารางพาร์ติชันแบบขยาย
- ในรูปแบบ LBA
เพิ่ม SI, 10ชม. ; เรามาดูหัวข้อถัดไปกันดีกว่า
CMP SI, 1EEh
JNA read_all_partitions ; อ่านทั้งหมดทีละส่วน
...buf rb 512 ; บัฟเฟอร์ 512 ไบต์

การเขียนเซกเตอร์ในโหมด CHS เกิดขึ้นในลักษณะเดียวกันเกือบทั้งหมด มีเพียงรีจิสเตอร์ AH เท่านั้นที่ไม่ใช่ 02h แต่เป็น 03h โหมด LBA นั้นยากกว่ามากในการเข้าใจ แต่เราก็เหมือนแฮกเกอร์ตัวจริงที่จะเชี่ยวชาญมันอย่างแน่นอน

เซกเตอร์ถูกอ่านโดยฟังก์ชัน 42h(AH = 42h) รีจิสเตอร์ DL เหมือนเมื่อก่อนจะมีหมายเลขไดรฟ์ แต่คู่รีจิสเตอร์ DS:SI ชี้ไปที่แพ็กเก็ตที่อยู่ดิสก์ ซึ่งเป็นโครงสร้างขั้นสูงของรูปแบบที่อธิบายไว้ในตาราง 5.4.

ตารางที่ 5.4- รูปแบบแพ็กเก็ตที่อยู่ที่ใช้ในการอ่านและเขียนเซกเตอร์ในโหมด LBA

อคติ พิมพ์ คำอธิบาย
00น ไบต์ ขนาดแพ็คเกจ - 10 ชม. หรือ 18 ชม
01ชม ไบต์ ฟิลด์นี้ถูกสงวนไว้และต้องเป็นศูนย์
02ชม คำ อ่านได้กี่ภาค
04ชม DWORD ที่อยู่บัฟเฟอร์ปลายทาง 32 บิตในรูปแบบ seg:offs
08น คิวเวิร์ด หมายเลขเซกเตอร์เริ่มต้นสำหรับการอ่าน
10ชม คิวเวิร์ด ที่อยู่แบบแบน 64 บิตของบัฟเฟอร์ปลายทาง ใช้เฉพาะในกรณีที่ที่อยู่ 32 บิตคือ FFFF:FFFF

โค้ดที่อ่านเซกเตอร์ในโหมด LBA โดยทั่วไปจะมีลักษณะเหมือนกับโค้ดที่แสดงในรายการ 5.7

รายการ 5.7. รหัสที่อ่านเซกเตอร์จากดิสก์ในโหมด LBA

MOV DI, 1BEh ; ไปที่ส่วนแรก
MOV ขวาน, CS ; การตั้งค่า...
MOV buf_seg ; ...เซ็กเมนต์
MOV EAX, ; พาร์ติชันชดเชยสัมพันธ์กับ
- จุดเริ่มต้นของส่วน
เพิ่ม EAX, EDI ; EDI ต้องมีหมายเลขเซกเตอร์
- MBR ปัจจุบัน
โมวี ;
...
read_all_partitions:
MOV อัน, 42 ชม.; อ่านเซกเตอร์ในโหมด LBA
MOV ดีแอล, 80ชม. ; อ่านตั้งแต่แผ่นแรก
MOV SI, แดป ; แพ็กเก็ตที่อยู่ชดเชย INT 13 ชม
เจซีผิดพลาด ; ข้อผิดพลาดในการอ่าน
...
ตบ:
packet_size db 10 ชม. ; ขนาดแพ็กเก็ต 10h ไบต์
สงวนไว้ db 00h ; "Stash" สำหรับการขยายในอนาคต
N_SEC dw 01h ; การอ่านภาคหนึ่ง
buf_seg dw 00h ; ส่วนบัฟเฟอร์ปลายทางจะถูกป้อนที่นี่
buf_off dw บัฟ ; การชดเชยบัฟเฟอร์ปลายทาง
X_SEC วว 0 ; หมายเลขเซกเตอร์ที่จะอ่านจะถูกป้อนที่นี่
วว 0 ; หางไม่ได้ใช้จริงๆ
- ที่อยู่ 64 บิต
บัฟ RB 512; บัฟเฟอร์ 512 ไบต์

การเขียนคล้ายกับการอ่าน มีเพียง AH register เท่านั้นที่มี 42h ไม่ใช่ 43h การลงทะเบียน AL จะกำหนดโหมด: หากบิต 0 คือ 1 BIOS จะไม่เขียน แต่จะจำลองมัน เมื่อตั้งค่าบิต 2 จะทำให้สามารถบันทึกเช็คได้ หากการลงทะเบียน AL เป็น 0 จะดำเนินการเขียนปกติตามค่าเริ่มต้น

ตอนนี้เราคุ้นเคยกับการขัดจังหวะของดิสก์แล้ว ต่อไปเราจะพูดถึงแง่มุมอื่นๆ ของการเขียนโปรแกรมกัน

การสร้างโค้ดบูตโหลดเดอร์

Bootloaders ได้รับการตั้งโปรแกรมที่ดีที่สุดโดยใช้ FASM จากมุมมองของแอสเซมเบลอร์ ตัวโหลดคือไฟล์ไบนารีธรรมดา ขนาดสูงสุดที่อนุญาตคือ 1BBh (443) ไบต์ เล็กน้อย? แต่อย่ารีบด่วนสรุป ทุกพาร์ติชั่นจะเริ่มต้นจากจุดเริ่มต้นของทรงกระบอกเสมอ ซึ่งหมายความว่าระหว่างจุดสิ้นสุดของ MBR และจุดเริ่มต้นของพาร์ติชั่นจะมีเซกเตอร์ว่างอย่างน้อย n ตัว โดยที่ n == เซกเตอร์ต่อแทร็ก ฮาร์ดไดรฟ์สมัยใหม่เกือบทั้งหมดมี 64 เซกเตอร์ต่อแทร็ก ซึ่งให้: 443 + 63*512 == 32,699 ไบต์หรือประมาณ 32 KB ใช่ คุณยังสามารถใส่อินเทอร์เฟซแบบกราฟิกด้วยเมาส์ลงในวอลุ่มนี้ได้! อย่างไรก็ตาม เราจะไม่ทำเช่นนี้ แฮกเกอร์ตัวจริงทำงานในโหมดข้อความด้วยบรรทัดคำสั่ง

ดังที่ได้กล่าวไปแล้ว BIOS จะโหลด MBR ที่ที่อยู่ 7C00h ดังนั้นที่จุดเริ่มต้นของโค้ดแอสเซมบลีควรมีคำสั่ง ORG 7C00h และ USE16 ด้วยเนื่องจาก bootloader ทำงานในโหมดจริง 16 บิต หลังจากนั้นสามารถสลับไปใช้โหมดป้องกันได้หากต้องการในภายหลัง แต่จะเกิดขึ้นในภายหลัง อย่าเข้าไปในป่าแบบนี้

เมื่อตรวจพบพาร์ติชันสำหรับเริ่มระบบ (และสามารถตรวจพบได้โดยแฟล็ก 80h ซึ่งอยู่ที่ศูนย์ออฟเซ็ตจากจุดเริ่มต้นของพาร์ติชัน) bootloader จะต้องอ่านเซกเตอร์แรกของพาร์ติชันนี้โดยวางไว้ในหน่วยความจำตามที่อยู่ 0000:7C00h ซึ่ง อยู่บนร่างกายของมันเองพอดี แต่นี่มันไม่ดีอีกต่อไป! และเพื่อไม่ให้ระบบล่ม bootloader จะต้องย้ายเนื้อหาไปยังที่อยู่อื่นล่วงหน้าซึ่งโดยปกติจะทำด้วยคำสั่ง MOVSB คุณสามารถคัดลอกไปยังที่อยู่หน่วยความจำใดก็ได้ - ตั้งแต่ 0080:0067h ถึง 9FE00h เป็นการดีกว่าที่จะไม่สัมผัสหน่วยความจำที่อยู่ต่ำกว่า 0080:0067h เนื่องจากเวคเตอร์ขัดจังหวะและตัวแปรระบบ BIOS ตั้งอยู่ที่นี่ และพื้นที่การแมป ROM เริ่มต้นที่ A000h ขึ้นไป ดังนั้นที่อยู่ที่สามารถเข้าถึงได้สูงสุดคือ A000h - 200h (ขนาดเซกเตอร์) = = 9FE00ชม.

อย่าลืมว่าคุณไม่ควรสัมผัสรีจิสเตอร์ DL เนื่องจากมีหมายเลขของไดรฟ์สำหรับบูต บูตโหลดเดอร์บางตัวมีข้อผิดพลาดที่จะบู๊ตจากฮาร์ดไดรฟ์ตัวแรกเสมอ และนี่คือในขณะที่ BIOS อนุญาตให้คุณเปลี่ยนลำดับการบู๊ตมานานกว่า 10 ปี ดังนั้นไดรฟ์ใด ๆ จึงสามารถบู๊ตได้

ในความเป็นจริง FASM เป็นเพียงแอสเซมเบลอร์เดียวที่ฉันรู้จักซึ่ง "ย่อย" คำสั่งการโทรทางไกล JMP 0000:7C00h ได้โดยตรง แอสเซมบลีอื่น ๆ ทั้งหมดทำให้มันบิดเบือนบางอย่างเช่นนี้: PUSH offset_of_target/PUSH Segment_of_target/RETF ที่นี่เราดันเซ็กเมนต์และออฟเซ็ตของที่อยู่เป้าหมายลงบนสแต็กและดำเนินการ RETF ระยะไกลที่จะพาเราไปยังตำแหน่งที่ต้องการ คุณยังสามารถใช้โค้ดที่แก้ไขตัวเองได้ด้วยการประกอบคำสั่ง JMP FAR “ด้วยตนเอง” หรือเพียงแค่วางที่อยู่เป้าหมายในส่วนเดียวกับที่อยู่ต้นทาง (เช่น 0000:7C00h ? 0000:7E00h) อย่างไรก็ตามแนวทางเหล่านี้น่าเบื่อและน่าเบื่อ

โดยทั่วไป โครงกระดูกของตัวโหลดของเราจะมีลักษณะเหมือนกับที่แสดงในรายการ 5.8

รายการ 5.8. โครงกระดูกของ bootloader ธรรมดาที่เขียนด้วย FASM

ใช้16
องค์กร 7C00h
ซีแอลดี ; คัดลอกจากซ้ายไปขวา
- (ที่อยู่เพิ่มขึ้น)
MOV SI,7C00h ; คัดลอกมาจากที่ไหน.
MOV DI,7E00h ; จะคัดลอกที่ไหน
MOV CX,200 ชม. ; ความยาวภาค
ตัวแทน MOVSB ​​​​; สำเนา
- // เลือกพาร์ติชันที่เราต้องการโหลด
- // อ่านลงในหน่วยความจำตามที่อยู่ 0000:7C00h
- // (ดูรายการ 5.7 และ 5.6)
เจเอ็มพี 0000:7C00h ; การถ่ายโอนการควบคุมไปยังบูตเซกเตอร์

เขียน bootloader ลงในมาสเตอร์บูตเรคคอร์ด

ภายใต้ MS-DOS แบบเก่า การเขียนโปรแกรมโหลดบูตของคุณไปที่ MBR เป็นเรื่องง่าย ในการดำเนินการนี้ เพียงดึงอินเทอร์รัปต์ INT 13h ฟังก์ชัน 03h (การเขียนเซกเตอร์) แต่สำหรับ Windows NT เทคนิคนี้ใช้ไม่ได้อีกต่อไป และคุณต้องหันไปใช้ฟังก์ชัน CreateFile หากแทนที่จะระบุชื่อไฟล์ที่จะเปิด เราระบุชื่อของอุปกรณ์ เช่น .PHYSICALDRIVE0 (ดิสก์จริงแผ่นแรก) เราสามารถอ่านและเขียนเซกเตอร์ของอุปกรณ์ได้อย่างอิสระโดยการเรียก ReadFile และ WriteFile ตามลำดับ ในกรณีนี้ ต้องตั้งค่าสถานะ dwCreationDisposition เป็นค่า OPEN_EXISTING และค่าสถานะ dwShareMode เป็นค่า FILE_SHARE_WRITE คุณจะต้องมีสิทธิ์ของผู้ดูแลระบบด้วย ไม่เช่นนั้นจะไม่มีอะไรทำงาน

ตัวอย่างที่สมบูรณ์ของการเรียก CreateFile ดูเหมือน Listing 5.9

รายการ 5.9. การเปิดการเข้าถึงฮาร์ดไดรฟ์โดยตรงภายใต้ Windows NT

เอ็กซ์ออร์ EAX, EAX
ผลักดัน EAX ; hTemplateFile
กด dword FILE_ATTRIBUTE_NORMAL ; dwFlagsAndAttributes
กด dword OPEN_EXISTING ; dwCreationDisposition
ผลักดัน EAX ; lpSecurityAttributes
กด dword FILE_SHARE_WRITE ; dwShareMode
กดคำ (GENERIC_WRITE หรือ GENERIC_READ) ; dwDesiredAccess
พุช DEVICE_NAME ; ชื่ออุปกรณ์
โทรสร้างไฟล์ ; การเปิดอุปกรณ์
อิงค์ อีเอเอ็กซ์
ทดสอบ EAX, EAX
ข้อผิดพลาด JZ
ธ.ค. อีเอ็กซ์
...
DEVICE_NAME ฐานข้อมูล ".PHYSICALDRIVE0",0
BUF RB 512 ; กันชน

เมื่อเปิดฟิสิคัลดิสก์และตรวจสอบให้แน่ใจว่าการดำเนินการนี้สำเร็จ เราต้องอ่านเซกเตอร์ MBR ดั้งเดิมลงในบัฟเฟอร์ เขียนทับไบต์ 1BBh แรก โดยไม่ต้องแตะตารางพาร์ติชันและลายเซ็น 55h AAh แต่อย่างใด (เราไม่ต้องการ ดิสก์หยุดการบูทใช่ไหม ) ตอนนี้สิ่งที่เหลืออยู่คือการเขียนโค้ด MBR ที่อัปเดตแล้วและปิดตัวอธิบายอุปกรณ์ หลังจากรีบูต การเปลี่ยนแปลงทั้งหมดจะมีผล

บันทึก

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

ภายใต้วินโดวส์ 9 xแน่นอนว่าเคล็ดลับ CreateFile ไม่ได้ผล แต่คุณสามารถใช้การจำลองการขัดจังหวะจาก DMPI หรือใช้ไดรเวอร์ ASPI ทั้งสองวิธีได้รับการอธิบายโดยละเอียดในหนังสือ "เทคนิคในการปกป้องซีดีจากการคัดลอก" ของฉัน อย่างไรก็ตาม แม้ว่าจะพูดถึงซีดีไม่ใช่ HDD แต่ฮาร์ดไดรฟ์ก็ถูกตั้งโปรแกรมในลักษณะเดียวกัน

ก่อนที่จะเขียน Bootloader ของคุณเอง ขอแนะนำให้ศึกษา Bootloader ที่ไม่ได้มาตรฐานที่มีอยู่ก่อน โปรแกรมดาวน์โหลดทั้งหมดที่แสดงด้านล่างได้รับการเผยแพร่ภายใต้ใบอนุญาต GPL หรือ BSD กล่าวคือ โดยไม่มีข้อจำกัด

Ge2000.asm เป็นไวรัส Stealth ที่ได้รับการวิจารณ์อย่างรอบคอบ ซึ่งจะมาแทนที่ bootloader ของระบบด้วยตัวมันเอง แม้ว่าจะเป็นไวรัส แต่ก็ไม่เป็นอันตรายและสามารถใช้เพื่อวัตถุประสงค์ทางการศึกษาได้

Mbr.asm เป็น bootloader ที่เรียบง่ายแต่ใช้งานได้เต็มรูปแบบ โดยรองรับพาร์ติชั่นที่มีขนาดมากกว่า 8 GB

Bootasm เป็นตัวจัดการมัลติบูตที่ยอดเยี่ยมพร้อมความคิดเห็นโดยละเอียด เข้าสู่โหมดป้องกัน สามารถบูตจากฟล็อปปี้ดิสก์ ซีดี ดิสก์ zip ฮาร์ดไดรฟ์ ฯลฯ รองรับพาร์ติชั่นที่มีขนาดเกิน 8 GB แสดงตัวบ่งชี้การโหลด และทำสิ่งที่มีประโยชน์อื่นๆ อีกมากมายที่การเรียนรู้ได้ไม่เสียหาย

การดีบักโค้ด bootloader

การดีบักโค้ด bootloader นั้นทำได้ยากอย่างไม่น่าเชื่อ บูตโหลดเดอร์ได้รับการควบคุมก่อนที่ระบบปฏิบัติการจะเริ่มทำงาน เมื่อยังไม่มีดีบักเกอร์ทำงานอยู่ ไม่กี่ปีที่ผ่านมา นี่เป็นปัญหาใหญ่ และเมื่อพัฒนาตัวโหลดที่ "ซับซ้อน" คุณต้องสร้างมินิดีบักเกอร์ในตัวหรือค้นหาข้อผิดพลาดด้วยตนเอง โดยศึกษารายการด้วยดินสอในมือ ด้วยการถือกำเนิดของอีมูเลเตอร์ทุกอย่างก็เปลี่ยนไป เพียงเรียกใช้โปรแกรมจำลองเช่น BOCHS (รูปที่ 5.5) และคุณสามารถดีบัก bootloader ได้เหมือนกับโปรแกรมอื่น ๆ !


ข้าว. 5.5- ลักษณะที่ปรากฏของโปรแกรมจำลอง BOCHS ในกระบวนการดีบักเซกเตอร์สำหรับบูต

การเขียนโปรแกรม Bootloader เป็นหนึ่งในไม่กี่ด้านที่การใช้แอสเซมเบลอร์มีความสมเหตุสมผลอย่างแท้จริง ภาษาระดับสูงนั้นถูกแยกออกจากฮาร์ดแวร์มากเกินไปสำหรับสิ่งนี้ นอกจากนี้ยังไม่ยืดหยุ่นเพียงพอ นั่นเป็นเหตุผลที่แฮกเกอร์ชอบที่จะปรับแต่งโปรแกรมโหลดบูต โดยเพิ่มคุณสมบัติใหม่ๆ มากมาย รวมถึงการบูตอัตโนมัติจากไดรฟ์ซีดีรอมหรือ SCSI การป้องกันไวรัส การป้องกันด้วยรหัสผ่านพร้อมการเข้ารหัสข้อมูล ฯลฯ มีพื้นที่ให้ขยายที่นี่จริงๆ และมีบางสิ่งที่จะแสดงความสามารถทั้งหมดของคุณ หากต้องการอ่านเพิ่มเติม ฉันขอแนะนำแหล่งข้อมูลที่น่าสนใจมาก พวกเขาอยู่ที่นี่:

? บันทึกการบูต MBR และ OS- เนื้อหาที่น่าสนใจมากมายเกี่ยวกับ MBR (เป็นภาษาอังกฤษ): http://thestarman.narod.ru/asm/mbr/MBR_in_detail.htm;

? โบชส์- โปรแกรมจำลองที่ยอดเยี่ยมพร้อมดีบักเกอร์ในตัวซึ่งช่วยให้กระบวนการบูตเซกเตอร์ "ทดสอบการใช้งาน" ง่ายขึ้นอย่างมาก ฟรี แจกจ่ายพร้อมซอร์สโค้ด: http://bochs.sourceforge.net;

? http://www.koders.com(รูปที่ 5.6) - เครื่องมือค้นหาที่ยอดเยี่ยมที่มุ่งค้นหาซอร์สโค้ด การใช้คำหลัก MBR จะส่งคืน bootloaders จำนวนมากสำหรับทุกรสนิยม


ข้าว. 5.6- ค้นหาแหล่งบูตโหลดเดอร์ MBR บนเว็บไซต์ Koders

? รายการขัดจังหวะราล์ฟ บราวน์(รูปที่ 5.7) - "รายการขัดจังหวะ" อันโด่งดังของ Ralph Brown อธิบายการขัดจังหวะทั้งหมดรวมถึงรายการขัดจังหวะที่ไม่มีเอกสาร (เป็นภาษาอังกฤษ): http://www.pobox.com/~ralf;


ข้าว. 5.7- ดู "รายการขัดจังหวะ" ในตำนานของ Ralph Brown

OpenBIOS เป็นโครงการ "Open BIOS" ที่เผยแพร่ในซอร์สโค้ด ช่วยให้เข้าใจบางแง่มุมที่ไม่ชัดเจนของการประมวลผล bootloader ของระบบ: http://www.openbios.info/docs/index.html.

MBR และ GPT คำถามหลัก

MBR และ GPT - คำจำกัดความ

Windows เสนอทางเลือกให้เรา 2 ทาง: บันทึกการบูตหลัก(MBR) – มาสเตอร์บูตเรคคอร์ด – และ ตารางพาร์ติชันตัวระบุที่ไม่ซ้ำทั่วโลก(GPT) – ตัวระบุตารางพาร์ติชันที่ไม่ซ้ำทั่วโลก หลังได้รับการสนับสนุน เริ่มต้นจากเวอร์ชัน Vista/Windows Server 2008 - อย่างไรก็ตาม วินโดวส์ XP 64 bit ยังรองรับรูปแบบนี้ด้วย

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

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

MBR และ GPT ทำไมพวกเขาถึงย้ายออกจาก MBR?

เนื่องจากอายุของการพัฒนา MBR จึงไม่เข้าใจว่าพื้นที่ดิสก์ขนาดใหญ่คืออะไร สำหรับ MBR “ขนาดใหญ่” เริ่มต้นที่ 2.2 เทราไบต์ ฉันขอย้ำอีกครั้งว่า MBR ไม่ได้อ่านปริมาณดังกล่าวและไม่สามารถแสดงได้ นอกจากนี้ MBR ยังรับรู้ถึงการมีอยู่ของพาร์ติชันหลักเพียงสี่พาร์ติชัน หรือพาร์ติชันหลักสามพาร์ติชันบวกหนึ่งส่วนขยาย ผู้ใช้จะต้องสร้างโครงสร้างรองบนพื้นที่ดิสก์ สำหรับผู้ใช้พีซี พาร์ติชันดังกล่าวเรียกว่าพาร์ติชันเสริม ซึ่งก็คือพาร์ติชันดิสก์ชนิดพิเศษที่เป็นส่วนขยายของพาร์ติชันหลัก ประกอบด้วยมาสเตอร์บูตเรคคอร์ด (MBR) พร้อมด้วยตารางพาร์ติชั่นของตัวเอง ซึ่งช่วยให้คุณละเว้นข้อจำกัดของตารางนี้ และอนุญาตให้คุณมีพาร์ติชั่นมากกว่าสี่พาร์ติชั่นบนดิสก์ได้ คุณเดาได้ว่าฮาร์ดไดรฟ์ของคุณอาจมีพาร์ติชั่นขยายหลายตัว และหลังจากสร้างพาร์ติชันเสริมแล้ว คุณต้องสร้างโลจิคัลพาร์ติชันอย่างน้อยหนึ่งพาร์ติชัน... โดยทั่วไป กฎการแบ่งพาร์ติชันสำหรับ MBR นั้นซับซ้อนและจำกัด ดังนั้นในการต่อสู้ระหว่างตาราง MBR และ GPT GPT จึงเข้ามาแทนที่มาสเตอร์บูตเรคคอร์ดทุกที่

MBR และ GPT GPT คืออะไร?

GPT– ตารางพาร์ติชัน GUID (ตัวระบุที่ไม่ซ้ำทั่วโลก) – ตารางพาร์ติชันที่มีตัวระบุเฉพาะส่วนกลาง (แบบคงที่) ในทางเทคนิคแล้ว GPT ใช้ระบบการกำหนดที่อยู่บล็อกแบบลอจิคัลที่ทันสมัยกว่าซึ่งไม่เพียงแต่ช่วยให้เอาชนะแถบ 2.2 TB เท่านั้น แต่ยังสามารถสร้างและประมวลผลดิสก์ได้สำเร็จด้วยความจุเพียง 9 เซตตาไบต์นั่นคือคุณสามารถลืมเกี่ยวกับโวลุ่มได้ ข้อจำกัดสำหรับพาร์ติชันที่สร้างขึ้น นอกจากนี้ GPT ยังมีความน่าเชื่อถือมากกว่าเนื่องจากสารบัญและตารางพาร์ติชันของดิสก์ถูกเขียนทั้งที่จุดเริ่มต้นและจุดสิ้นสุดของดิสก์ หากหนึ่งในนั้นเสียหาย ส่วนที่สองก็จะได้รับการฟื้นฟูตามภาพและรูปลักษณ์ของผู้รอดชีวิต การทำเช่นนี้จะทำให้พื้นที่ "มีชีวิต" หายไปจำนวนหนึ่งจากฮาร์ดไดรฟ์ และด้วยเหตุนี้ คุณและฉันจึงทำให้ดิสก์ขนาดเล็กสามารถทำงานได้ทั้งกับ MBR และ GPT เหมาะสมที่จะติดตั้ง GPT บนดิสก์ที่มีความจุ 500 GB ขึ้นไปโดยตั้งใจเท่านั้น (ควรมากกว่านั้นด้วยซ้ำ)
นอกจากนี้ ต้องขอบคุณนวัตกรรมใหม่ที่ทำให้จำนวนพาร์ติชั่นบนฮาร์ดไดรฟ์นั้นไม่จำกัดแล้ว แน่นอนว่าระบบปฏิบัติการ Windows เวอร์ชัน 128 บนคอมพิวเตอร์เครื่องเดียวไม่สมเหตุสมผล แต่ในบางกรณีการติดตั้งระบบปฏิบัติการหลายระบบในคราวเดียวก็ค่อนข้างสมเหตุสมผล แม้ว่าเมื่อพูดถึงรุ่นที่แตกต่างกัน แต่ฉันหมายถึงเฉพาะ Windows เวอร์ชันล่าสุดเท่านั้น โดยเริ่มจาก Vista ใช่ ไม่รองรับ OS สูงสุด XP ในเวอร์ชัน 32 บิต รวมถึง GPT และแน่นอนอย่าลืมเกี่ยวกับปัญหาของเกณฑ์ 2 TB หากคุณเป็นเจ้าของข้อมูลปริมาณดังกล่าวอย่างมีความสุข นี่คือจุดที่ปัญหาการแปลงกลับเป็น MBR เริ่มเกิดขึ้น ซึ่งฉันจะหารือในภายหลัง สิ่งเดียวที่ฉันจะพูดถึงทันทีคือคำถามเกี่ยวกับตารางพาร์ติชั่นฮาร์ดไดรฟ์ (MBR และ GPT) และซอฟต์แวร์พื้นฐานที่ติดตั้งของเมนบอร์ด (BIOS หรือ UEFI) นั้นเชื่อมโยงกันอย่างแยกไม่ออกระหว่างการติดตั้งระบบปฏิบัติการ

MBR และ GPT การเปรียบเทียบ.

มันทำให้ฉันแตกต่างอะไร?

หากคุณไม่มีมัลติบูตก็แทบจะไม่มีเลย ตามที่คุณเข้าใจแล้วระบบปฏิบัติการสมัยใหม่ของตระกูล Windows ทำงานได้ดีมากภายใต้การควบคุมของตารางไฟล์ทั้งสอง เมื่อติดตั้งระบบปฏิบัติการหรือพิจารณาตัวเลือกของคอมพิวเตอร์รุ่นมัลติบูต (คุณจะต้องมี MBR) ผู้ใช้จะต้องจำบางประเด็น:

  • GPT - ทันสมัยกว่า
  • GPT จะกำหนดให้ Windows บูตเฉพาะในโหมดเท่านั้น (คุณจะต้องลืมเกี่ยวกับบูตโหลดเดอร์ก่อนหน้านี้)
  • MBR ต้องใช้ Windows รุ่นเก่าในการบูตในโหมด BIOS (แต่เวอร์ชัน 64 บิตสามารถบูตในโหมด UEFI ได้)

ด้วยเหตุนี้ฉันจึงเสนอให้จบส่วนทางทฤษฎีเกี่ยวกับ MBR และ GPT และไปยังประเด็นในทางปฏิบัติของการติดตั้งระบบปฏิบัติการและการแปลงตารางดิสก์:

ฉันจะรู้ได้อย่างไรว่าฉันมีเวอร์ชันตารางใด

ง่ายต่อการตรวจสอบเช่นเคย กดปุ่มค้างไว้ วินโดวส์ + อาร์ให้ป้อนคำสั่ง diskmgmt.msc- ในหน้าต่างคอนโซล ให้เลือกทางด้านซ้าย การจัดการดิสก์- เลือกส่วนใดก็ได้ คลิกขวาแล้วคลิก คุณสมบัติ(หน้าต่างเดียวกันนี้สามารถพบได้โดยตรงจาก System Explorer พร้อมรายการไดรฟ์ในเครื่อง) :

ในหน้าต่างจากไดรฟ์ที่มีอยู่ (มีทุกอย่าง) ให้เลือกฮาร์ดไดรฟ์ที่คุณสนใจแล้วดับเบิลคลิกอีกครั้ง หน้าต่างคุณสมบัติของไดรฟ์นั้นจะปรากฏขึ้น โดยคุณจะพบแท็บ ทอม- เราจะพบปุ่มอยู่ในนั้น เติม:

คุณสามารถเข้ามาจากอีกด้านหนึ่งได้ ยูทิลิตี้วินโดวส์

ในคอนโซลเราพิมพ์คำสั่งตามลำดับ:

ดิสก์รายการ Diskpart

และเราเห็นอะไร? ไม่มีสิ่งใดอยู่ภายใต้ตัวระบุ GPT ซึ่งหมายความว่าสไตล์พาร์ติชันนี้ไม่เกี่ยวข้องกับดิสก์นี้:

ขอให้โชคดีกับพวกเราทุกคน

อ่าน: 283

บอกเพื่อน