/ etc / fstab เข้าถึงได้อย่างไรก่อนที่จะติดตั้งรูท


21

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

คำตอบ:


18

rootเมื่อบูตเคอร์เนลเรียกมันผ่านมันพารามิเตอร์ที่เรียกว่า ดังนั้นเมื่อเคอร์เนลเสร็จสิ้นการเริ่มต้นมันจะดำเนินต่อไปโดยการติดตั้งพาร์ติชันรูทที่กำหนดไป/แล้วเรียก/sbin/init(ยกเว้นกรณีนี้มี overriden โดยพารามิเตอร์อื่น ๆ )

จากนั้นinitกระบวนการจะเริ่มต้นส่วนที่เหลือของระบบโดยการโหลดบริการทั้งหมดที่กำหนดให้เริ่มในระดับเริ่มต้นของคุณ

ขึ้นอยู่กับการกำหนดค่าของคุณและในระบบ init ที่คุณใช้อาจมีหลายขั้นตอนอื่น ๆ ระหว่างขั้นตอนที่ฉันกล่าวถึง ปัจจุบันระบบเริ่มต้นที่นิยมที่สุดบน Linux คือ SysVInit (ระบบดั้งเดิม), พุ่งพรวดและ Systemd คุณสามารถค้นหารายละเอียดเพิ่มเติมเกี่ยวกับขั้นตอนการบู๊ตในครั้งนี้บทความวิกิพีเดีย

นี่คือตัวอย่างที่เรียบง่ายของการกำหนดค่า Grub ของฉัน ส่วนที่สำคัญในการตอบคำถามของคุณอยู่ที่บรรทัดที่สองถึงบรรทัดสุดท้ายมีroot=/dev/sda3:

menuentry 'Gentoo GNU/Linux' --class gentoo --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-40864544-2d0f-471a-ab67-edd7e4754dae' {
    set root='hd0,msdos1'
    echo    'Loading Linux 3.12.6-gentoo-c2 ...'
    linux   /kernel-3.12.6-gentoo-c2 root=/dev/sda3 ro  
}

ในการกำหนดค่าจำนวนมากเคอร์เนลจะเมาท์/ในโหมดอ่านอย่างเดียวและตัวเลือกที่เหลือทั้งหมดจะถูกตั้งค่าเป็นค่าเริ่มต้น ใน/etc/fstabคุณอาจระบุพารามิเตอร์ระบบไฟล์ซึ่งจะนำไปใช้เมื่อ init remounts ใหม่


2
พาร์ติชันรูทถูกเมานต์เริ่มต้นอ่านอย่างเดียวโดยเคอร์เนล initกระบวนการแล้วเมาท์สิ่งที่อยู่ใน/etc/fstabตามพารามิเตอร์ที่นั่นซึ่งมักจะหมายถึงอีกครั้งการติดตั้งพาร์ทิชันรากอ่านเขียน
goldilocks

1
เคอร์เนลยังสามารถคอมไพล์ด้วยรูทีนการฮาร์ดโค้ดที่ค้นหาไฟล์พิเศษบางไฟล์บนพาร์ติชันที่ใช้งานอยู่ซึ่งยังไม่ได้เมานต์ ตัวโหลด FreeBSD ทำงานอย่างนั้น
Kondybas

@Kondybas LILO บน Linux ยัง hardcoded โหลดเคอร์เนลที่หมายเลขบล็อกบางอย่างคงที่
phuclv

3

fstabจำเป็นต้องมีรายการในถ้าคุณต้องการระบุตัวเลือกการเมาท์ที่ไม่ใช่ค่าเริ่มต้น อย่างไรก็ตามทุกวันนี้ด้วยsystemdอุปกรณ์เคอร์เนลและ fstype ที่fstabถูกต้องนั้นไม่จำเป็น คุณสามารถแทนที่รายการรูทด้วยสิ่งต่อไปนี้:

#UUID=8f74237d-b689-4beb-9d1f-f60b426c9969 /            ext4        rw,relatime,data=ordered    0 1
dummy /             auto        rw,relatime,data=ordered,debug  0 1

และตัวเลือกการเมานท์ยังคงได้รับการยกย่องโดย systemd

คุณสามารถใช้ชื่ออุปกรณ์ที่ไม่ดีเช่น/dev/sdz1ยกเว้น UUID ที่ไม่ดี ด้วย UUID ที่ไม่ดีข้อความจะถูกพิมพ์เมื่อบูต: Failed to start Remount Root and Kernel File Systemsแต่ระบบจะบู๊ตอยู่ดี

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