พาร์ติชั่น / boot มีไว้เพื่ออะไรจริงๆ?


40

ฉันกำลังอ่านข้อความที่ค่อนข้างเก่าบนพาร์ติชันและระบบไฟล์ของ Linux ( พระคัมภีร์ LPIC 1 Certification ) มันบอกว่า:

บูตโหลดเดอร์ของ Linux บางรุ่นไม่สามารถเข้าถึงเคอร์เนลที่อยู่นอก 1024 กระบอกสูบแรกของดิสก์ ด้วยการใส่พาร์ติชั่น / boot ที่จุดเริ่มต้นของไดรฟ์คุณสามารถมั่นใจได้ว่าจะไม่มีปัญหาเมื่อเข้าถึงเคอร์เนลตอนบูท ปัญหานี้แสดงตัวเองบ่อยที่สุดในกรณีของการบูทลีนุกซ์คู่พร้อมกับระบบปฏิบัติการอื่นที่อยู่ในพาร์ติชั่นแรก.

เหตุใดบูตเดอร์จึงไม่มี " การเข้าถึงเคอร์เนลนอก 1024 ถังแรกบนดิสก์ "

นอกจากนี้การ " วางพาร์ทิชัน / boot ที่จุดเริ่มต้นของไดรฟ์ " หมายความว่าอย่างไร


สิ่งนี้ไม่เป็นความจริงอีกต่อไปคุณต้องการเหตุผลทางประวัติศาสตร์หรือไม่
muru

ใช่ แต่ทำไมเรายังมี / boot directory ใน linux partition?
SRYZDN

6
"ไม่เป็นความจริงอีกต่อไป" อาจเป็นกรณีนี้หากอ่านการอ้างสิทธิ์อย่างแท้จริง แต่มีรูปแบบดิสก์ที่ทันสมัยมากมายที่ bootloaders ส่วนใหญ่ไม่สามารถอ่านได้ ZFS ไม่สามารถอ่านได้มากนัก btrfs-on-LVM ในทำนองเดียวกัน วางเคอร์เนลของคุณและเริ่มต้นใน RAID3 แบบเรียบง่าย ext3 / ext4 และหลีกเลี่ยงการปวดหัวจำนวนเท่าใดก็ได้
Charles Duffy

แต่เดิม API ที่จัดเตรียมไว้สำหรับ BIOS โหลดเดอร์สำหรับบูตเพื่อรับเคอร์เนล Linux จากฮาร์ดไดรฟ์มีพื้นที่สำหรับ 1,023 ส่วนเท่านั้นนั่นคือจุดเริ่มต้นของไดรฟ์ มีการ/bootบังคับใช้พาร์ติชันอย่างชัดเจนให้อยู่ในพื้นที่นั้นเพื่อให้แน่ใจว่าเคอร์เนลจะสามารถโหลดได้
Thorbjørn Ravn Andersen

คำตอบ:


34

นี่เป็นข้อ จำกัด ที่กำหนดโดยการมี BIOS และ bootloader ที่เก่ามากแทนที่จะเป็น Linux ไบออสจะสามารถเข้าถึง 1024 ดิสก์แรกของดิสก์เท่านั้น (ดูที่นี่สำหรับข้อมูลเพิ่มเติมเกี่ยวกับกระบอกสูบ / หัว / เซกเตอร์) ข้อ จำกัด นี้จะขยายไปสู่ ​​bootloaders ซึ่งเนื่องจากลักษณะที่เรียบง่ายของพวกเขาจะไม่มีไดรเวอร์ดิสก์ของตัวเองและจะใช้บริการ BIOS เพื่อเข้าถึงดิสก์

นี่หมายความว่าทั้ง bootloader และเคอร์เนล (เนื่องจากเป็นหน้าที่ของ bootloader ในการโหลด) จะต้องอยู่ใน 1024 cylinders แรกของระบบที่มีข้อ จำกัด นี้ วิธีง่ายๆในการทำเช่นนี้คือการสร้าง/bootพาร์ติชันแยกต่างหากที่ประกอบด้วยเคอร์เนลและวางไว้ที่จุดเริ่มต้นของไดรฟ์ (โดยปกติแล้วจะทำให้เป็นพาร์ติชันแรก) ซึ่งหมายความว่ามันจะอยู่ในร่างกายภายใน 1024 กระบอกสูบแรกโดยแน่นอนว่าพาร์ติชันไม่ใหญ่เกินไป

ข้อ จำกัด นี้ไม่ได้เป็นปัญหาอีกต่อไปเพราะจะมีผลกับ BIOS เก่าเท่านั้น นอกจากนี้ bootloaders ทันสมัยจำนวนมาก (เช่น GRUB) มีดิสก์ไดรเวอร์ของตัวเองและไม่จำเป็นต้องพึ่งพาบริการ BIOS Modern bootloaders อาจใช้/bootเพื่อจุดประสงค์อื่น แต่ไม่จำเป็นต้องอยู่ทั้งในพาร์ติชันแยกต่างหากและภายใน 1024 cylinder แรก (แม้ว่าจะมีหลายกรณีที่จำเป็นต้องมี/bootในพาร์ติชันแยกต่างหาก)


5
นี่คือความจริง /bootแต่ตามที่เขียนไว้ในขณะนี้มันแสดงให้เห็นว่าระบบที่ทันสมัยสามารถทำได้โดยไม่ต้องแยกจากกัน บ่อยครั้งที่มันไม่จริง - โดยเฉพาะอย่างยิ่ง LVM และระบบไฟล์ที่ทันสมัยแปลกใหม่พร้อมฟังก์ชั่นบล็อกเลเยอร์ที่ฝังอยู่ในตัว
Charles Duffy

3
@ Charles ไม่คิดอย่างนั้นฉันระมัดระวังที่จะใส่ " และ " ในตัวเอียงด้วยเหตุผลที่แน่นอนนี้
แกรม

@CharlesDuffy - ระบบที่ทันสมัย ​​- แม้กระทั่งผู้ที่มีเลเยอร์ fs แฟนซี - สามารถทำได้อย่างง่ายดายโดยไม่ต้อง/bootใช้ความรู้สึกแบบดั้งเดิม /bootมีความมุ่งมั่นประเพณี bootloader - แต่คอมพิวเตอร์ส่วนใหญ่ผลิตในช่วงไม่กี่ปีที่ผ่านมามาพร้อมกับ builtin bootloader จะเฟิร์ม - แต่สำหรับเหตุผลใดที่ปฏิบัติร่วมกันคือยังคงที่จะติดตั้ง bootloaders สมัยเหมือนgrubและเพื่อน ๆ ไปและบายพาสทำงานของมันในความโปรดปรานของ ฉันเดาว่า เฟิร์มแว bootloaders จะต้องมีพาร์ทิชันเฉพาะแม้ว่า - /bootแต่มันไม่ได้มักจะมีมากที่จะทำอย่างไรกับ
mikeserv

1
@mikeserv ใช่มั้ย คุณหมายถึง EFI หรือไม่? EFI สนับสนุน FAT12, FAT16 และ FAT32 อย่างชัดเจน หากพยายามโหลดเคอร์เนลออกอย่าง ZFS ก็ยังต้องการระบบไฟล์ที่ง่ายกว่าในการดึงมันออกมา ไม่ว่าจะมีส่วนเกี่ยวข้องกับ/bootการกำหนดค่าเฉพาะหรือไม่ก็ตาม
Charles Duffy

1
ในความเป็นจริงมันไม่เป็นความจริงว่านี่ไม่ใช่ปัญหาอีกต่อไป บางครั้งฉันเจอเครื่องจักรที่ค่อนข้างใหม่ (เช่น 5 ปี) กับปัญหาเหล่านี้ จริงอยู่ที่ BIOSes เป็นเฟิร์มแวร์ที่โง่เง่า แต่ก็ยังมีอยู่
Ruslan

23

ประวัติศาสตร์

/bootมีไฟล์ที่ไม่ได้ใช้งานโดยระบบปฏิบัติการ แต่โดยตัวของมันbootloader คุณจะพบทั้งไฟล์ของ bootloader เอง (เช่น/boot/grub/*Grub) และ Linux kernel ( /boot/vmlinuz*) และมักจะเป็นinitrdหรือinitramfs ที่เกี่ยวข้อง

บนพีซีที่มีBIOS รุ่นเก่า (ตรงข้ามกับUEFIรุ่นใหม่ที่พบในคอมพิวเตอร์ล่าสุด) ซอฟต์แวร์ใน ROM จะโหลด 512 ไบต์แรกของดิสก์สำหรับบูตลงในหน่วยความจำ ( บูตเซกเตอร์ ) ด้วย 512 ไบต์เท่านั้น (ไม่ใช่ทั้งหมดที่มีรหัส: บางส่วนมีข้อมูลเช่นตารางพาร์ติชัน), รหัสไม่สามารถทำอะไรได้มาก - มีไดร์เวอร์ดิสก์จริงในนั้นไม่ได้ สิ่งที่สามารถทำได้ในพื้นที่ จำกัด เช่นนั้นคือการใช้ส่วนต่อประสาน BIOS เพื่อโหลดรหัสเพิ่มเติม อินเตอร์เฟสนี้จัดเตรียมคำสั่งเพื่อโหลดเซกเตอร์ Nth บนดิสก์ - และขนาดของ N ถูก จำกัด ดังนั้นเฉพาะจุดเริ่มต้นของดิสก์ที่สามารถเข้าถึงได้ด้วยวิธีนั้น

อินเทอร์เฟซ BIOS ได้รับการพัฒนาเล็กน้อยในช่วงสามทศวรรษหรือประมาณนั้น แต่ข้อ จำกัด ด้านขนาดของมันได้ต่อสู้กับขนาดดิสก์ทำให้ BIOS และ bootloaders รุ่นเก่ามีขนาด 32MB, 512MB, 2GB, 2GB, 8GB (และอาจเป็นไปได้) เกณฑ์อื่น ๆ ที่ฉันจำไม่ได้) bootloader จะต้องสามารถใช้ส่วนต่อประสาน BIOS เพื่อโหลดชิ้นส่วนทั้งหมดที่จำเป็นในการเข้าถึงดิสก์ไดรฟ์โดยตรง Bootloaders โดยทั่วไปไม่มีไดรเวอร์สำหรับตัวควบคุมดิสก์ทั้งหมดดังนั้นทุกอย่างจนถึงการโหลดเคอร์เนล Linux (และ initrd / initramfs) จะต้องใช้ส่วนต่อประสาน BIOS ดังนั้นจึงต้องพอดีกับจุดเริ่มต้นของดิสก์

โปรดทราบว่านี่เป็นข้อ จำกัด ของ BIOS หรือของ bootloader ไม่ใช่ของ Linux เองหรือของการแจกจ่าย

แยกกัน/bootวันนี้

บนระบบที่มี BIOS ล่าสุดและ bootloader เมื่อเร็ว ๆ นี้หรือ UEFI ข้อ จำกัด ด้านขนาดไม่เกี่ยวข้องอีกต่อไปขนาดดิสก์ในขณะนี้มีเวลานานในการติดตาม อย่างไรก็ตามมีกรณีการใช้งานอื่น ๆ ที่ทำให้/bootพาร์ติชันแยกต่างหากมีประโยชน์ อนุญาตให้ระบบหลักอยู่บนอุปกรณ์ RAIDที่ bootloader ไม่สนับสนุนหรือในประเภทระบบไฟล์ที่ bootloader ไม่สนับสนุน อนุญาตให้ระบบหลักอยู่บนอุปกรณ์ที่เข้ารหัสซึ่ง Linux สามารถถอดรหัสได้ แต่ไม่ใช่ bootloader

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


22

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


สิ่งนี้จะมีความเกี่ยวข้องโดยเฉพาะอย่างยิ่งเมื่อบูต Linux ภายในเครื่องเสมือนจริงหรือไม่?
Tom Russell

1
@TomRussell ไม่กว้างยาวนั้นไม่เกี่ยวข้อง
Hauke ​​Laging

18

บูตเป็นเรื่องยาก

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

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

หลายปีที่ผ่านมาสิ่งนี้ไม่ได้เกิดขึ้นมากนัก มันเคยเป็นไบออสจริงๆคือ Basic In / Out - โปรแกรมปกติจะทำการโทรไปที่เฟิร์มแวร์สำหรับสิ่งต่าง ๆ เช่นการวาดหน้าจอและการเข้าถึงดิสก์ สิ่งเหล่านี้เรียกว่าการขัดจังหวะ - หมวกเก่าอาจจำได้ดีที่สุดสำหรับความตื่นเต้นที่พวกเขามักพบในการกำหนด IRQ สำหรับ dot-matrix หรือ USR ใหม่

INT13h

มันเป็นอินเทอร์รัปต์ ( หรือINTในแอสเซมบลีภาษา )ชุดฟังก์ชัน13Hที่ BIOS นำเสนอเป็นบริการสำหรับการเข้าถึงดิสก์ สิ่งเหล่านี้ยังคงใช้กันอยู่ทุกวันนี้สำหรับระบบ BIOS ในกระบวนการบู๊ตเพื่อกระโดดจากเฟิร์มแวร์ไปยังดิสก์

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

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

เมื่อ bootloader อ่านในเคอร์เนลที่เกิดขึ้นจริงและดำเนินการมันในหน่วยความจำ(ที่เราอธิษฐานทั้งหมดมันจะทุกครั้ง)ก็อาจจะทำได้โดยขอให้ BIOS ผ่านทางINT13Hโทรขัดจังหวะ และถ้ามันไม่ - bootloaders นักเล่นหลายคนจะเมานต์ระบบไฟล์ในความรู้สึกทั่วไปและรันโค้ดอีกวิธีหนึ่ง - มันมีโอกาสน้อยมากที่ bootloader จะมีจินตนาการโดยไม่ต้องINT13Hสองหรือสอง บ่อยครั้งที่ bootloaders จะต้องทำการโหลดตัวเองหรือขั้นตอนต่าง ๆของตัวเองเพราะ 512 ไบต์แรกที่ได้รับการจัดสรรไม่เหมาะกับความต้องการของพวกเขา

ไก่และไข่

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

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

ดียิ่งขึ้น

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

สิ่งกีดขวางนี้เคยเจอและแตกหักหลายครั้ง ทุกครั้งที่แผนที่มีการสรุปและเข้ารหัสในวิธีที่ใหม่กว่าฉลาดและแม่นยำน้อยกว่า ดังนั้นวันนี้เป็นไปไม่ได้ที่ไบออสจะแมปไดรฟ์ได้อย่างถูกต้อง Logical Block Addressingเป็นมาตรฐาน de-พฤตินัยในขณะนี้แม้ว่าการแปลรูปทรงกระบอก / หัว / เซกเตอร์(หรือ CHS)บางอย่างยังคงจำเป็น สิ่งที่เฟิร์มแวร์เมนบอร์ดสูญเสียไปจากความถูกต้อง / ความรับผิดชอบส่วนขยายดังกล่าวได้สรุปและเพิ่มลงในความรับผิดชอบของเฟิร์มแวร์ดิสก์เพื่อเติมเต็มช่องว่าง

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

อาจดีกว่าจริง ๆ

ทุกวันนี้สิ่งเหล่านี้ขอบคุณที่ไม่เกี่ยวข้องกับการตายของ BIOS มันเป็น 30 ปีที่ผ่านมา แต่มันได้ถูกแทนที่ส่วนใหญ่ในช่วงไม่กี่ปีที่ผ่านมาโดยUEFI (หรือ EFI 2.0)มาตรฐาน UEFI จัดให้มีการเมานต์จากนาทีแรกมันเริ่มต้นในโหมดที่ได้รับการป้องกันมันรวม bootloader ของตัวเองมันให้หน่วยเก็บข้อมูลตัวแปรหน่วยความจำแฟลชรีบูตถาวร, มันเป็น spec'd เพื่อจัดการ zetabytes มากมายหรืออะไรก็ตามต่อดิสก์ ... และมาก อื่น. มันไกลจากความสมบูรณ์แบบ แต่มันเป็นการปรับปรุงที่เหนือกว่ารุ่นก่อน

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

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


8

ว่ามีความเป็น/bootไดเรกทอรีจะถูกกำหนดในอดีตและจากที่นั่น "คงที่" ในระบบแฟ้มลำดับชั้นมาตรฐาน การมีมาตรฐานดังกล่าวจะช่วยให้โปรแกรม (และ sysadmins) คาดหวังไฟล์บางไฟล์ในบางตำแหน่ง ในกรณีนี้ไฟล์ที่เกี่ยวข้องกับกระบวนการบูต

การมี/bootพาร์ติชันที่จุดเริ่มต้นของแผ่นดิสก์นั้นสมเหตุสมผลสำหรับ BIOS'es รุ่นเก่าที่ไม่สามารถจัดทำดัชนีบล็อก / เซ็กเตอร์ในไดรฟ์เต็มรูปแบบที่มีอยู่ ด้วยเหตุนี้ข้อมูลที่ควรโหลดควรอยู่ในส่วนที่สามารถจัดทำดัชนีได้ดังนั้นจึงมีพาร์ติชันแยกต่างหาก (ที่มีหมายเลขเซกเตอร์ต่ำ) /bootซึ่ง BIOS สามารถโหลดข้อมูล / โปรแกรมเพิ่มเติมได้ ช่วงของแผ่นดิสก์โดยไม่ใช้ BIOS)


6

นอกจากนี้ยังสามารถจัดระเบียบได้อย่างเป็นระเบียบเพื่อแยกพาร์ติชัน / บูต บนเครื่องของฉันฉันมี distros และการสำรองข้อมูลจำนวนมากแต่ละอันในพาร์ติชั่นของตัวเอง แต่พวกเขาทั้งหมดแชร์พาร์ติชั่น / บูทเดียวกันซึ่งเป็นที่เก็บเมล็ดทั้งหมดของระบบปฏิบัติการทั้งหมด นอกจากนี้ distros ทั้งหมดชี้ไปที่หนึ่งของฉันและมีเพียงสำเนาของ lilo.conf ซึ่งอยู่ใน / boot ดังนั้นฉันไม่ต้องเดาว่าเกิดอะไรขึ้นเมื่อฉันเพิ่มเมล็ดเพิ่ม distros อะไรก็ตาม นี่คือ snip จาก lilo.conf ของฉัน:

image  = /boot/vmlinuz-3.16.0-4-686-pae
initrd = /boot/initrd.img-3.16.0-4-686-pae
root   = "LABEL=y5--5-Debian1"
label  = y5:D1:16.0-4

image  = /boot/vmlinuz-3.16.0-4-686-pae
initrd = /boot/initrd.img-3.16.0-4-686-pae
root   = "LABEL=y8--5-Debian2"
label  = y8:D2:16.0-4

image  = /boot/vmlinuz-3.16.0-4-686-pae
initrd = /boot/initrd.img-3.16.0-4-686-pae
root   = "LABEL=y11-5-Debian3"
label  = y11:D3:16.0-4

image  = /boot/vmlinuz-3.16.0-4-686-pae
initrd = /boot/initrd.img-3.16.0-4-686-pae
root   = "LABEL=w5--5-Debian1"
label  = w5:D1:16.0-4

... นั่นเป็นเพียงข้อมูลสำรอง Debian ของฉันบนดิสก์สองแผ่น มาดูกันว่าการติดตามเมล็ดเป็นเรื่องง่ายแค่ไหน? (ตอนนี้การสำรองข้อมูลทั้งหมดโดยใช้เคอร์เนลเดียวกัน)


5

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

สมมติว่าระบบไฟล์หลักเสียหายในลักษณะที่ bootloader ระดับล่างบางตัวไม่สามารถอ่านขั้นตอนต่อไปได้อย่างถูกต้อง หากวัสดุของ bootloader อยู่ในพาร์ติชั่นของตัวเองเคอร์เนลจะสามารถจัดการกับพาร์ติชั่นรูทที่เสียหายผ่าน fsck ได้ ที่ตัวเองสามารถอยู่ในพาร์ทิชันของตัวเอง

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

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

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


5

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

คุณยังสามารถสร้างเอฟเฟกต์เดียวกันได้โดยสร้างพาร์ติชั่นเล็ก ๆ สองพาร์ติชั่นซึ่งทั้งคู่อยู่ภายใน 1024 cylinders แรกและวางบูทโหลดเดอร์ทั้งหมดไว้ในอันที่สอง


4

เหตุผลอื่นสำหรับ bootpartition วันนี้คือ:

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