สมมติว่า Fedora และ Ubuntu?
…ทั้งสองอย่างนี้เป็นระบบปฏิบัติการในปัจจุบัน
เกิดอะไรขึ้นในระบบปฏิบัติการ systemd
กลไกพื้นเมือง
Systemd มีหน่วยงานหลายประเภท .mount
ไฟล์หน่วยสั่งให้มันเมานต์ไดรฟ์ .swap
ไฟล์ยูนิตสั่งให้บอกเคอร์เนลเกี่ยวกับการสลับพาร์ติชั่น ( .service
ไฟล์หน่วยจะบอกวิธีการเรียกใช้บริการและอื่น ๆ ) สิ่งเหล่านี้เป็นกลไกของระบบดั้งเดิม ในการออกกฎหมายพวกเขา systemd จะหยุดกระบวนการลูกที่ทำให้การเรียกระบบที่เกี่ยวข้อง
หากคุณใช้systemctl
คำสั่ง (พร้อม--all
) บนระบบปฏิบัติการ systemd มันจะบอกคุณเกี่ยวกับ.swap
หน่วยที่โหลด ตัวอย่างเช่น:
dev-disk-by \ x2dpartuuid-40549710 \ x2d05.swap ถูกโหลดที่แอ็คทีฟอยู่ / dev / ดิสก์ / by-partuuid / 40549710-05
dev-disk-by \ x2duuid-1bb589e8 \ x2d929f \ x2d4041 \ x2d81f4 \ x2dff2b339b4e2a.swap โหลดแอ็คทีฟที่ใช้งาน / dev / ดิสก์ / โดย -uuid / 1bb589e8-929- 4041-81F4F33
dev-sda5.swap ถูกโหลดใช้งานอยู่ / dev / sda5
นอกจากนี้ยังจะบอกคุณเกี่ยวกับ.mount
หน่วย
ผู้ดูแลระบบจริงสามารถเขียนเช่น.swap
ไฟล์หน่วยด้วยมือเช่นเดียวกับ XE สามารถเขียน.service
, .socket
และไฟล์หน่วยงานอื่นด้วยมือ systemd ตัวเองแค่มองหาไฟล์หน่วยในระบบไฟล์ มันเป็นกลไกดั้งเดิม
หนึ่งสามารถรับ systemd เพื่อแสดงสิ่งที่อยู่ในไฟล์หน่วยเหล่านี้และในระบบไฟล์ที่พวกเขาสามารถพบได้:
$ systemctl cat dev-disk-by \\ x2duuid-1bb589e8 \\ x2d929f \\ x2d4041 \\ x2d81f4 \\ x2dff2b339b4e2a.swap
# /run/systemd/generator/dev-disk-by\x2duuid-1bb589e8\x2d929f\x2d4041\x2d81f4\x2dff2b339b4e2a.swap
# สร้างโดยอัตโนมัติโดย systemd-fstab-generator
[Unit]
SourcePath = etc / fstab /
เอกสาร = คน: fstab (5) คน: systemd-fstab-generator (8)
[Swap]
อะไร = / dev / ดิสก์ / โดย uuid / 1bb589e8-929f-4041-81f4-ff2b339b4e2a
ตัวเลือก = SW
$
สร้างไฟล์หน่วยโดยอัตโนมัติ
หนึ่งสามารถเขียนด้วยมือ โดยปกติแต่ดังกล่าว.mount
และ.swap
ไฟล์หน่วยสร้างขึ้นโดยอัตโนมัติโดยโปรแกรมที่รู้จักกันเป็นเครื่องกำเนิดไฟฟ้า สองเครื่องปั่นไฟดังกล่าวและsystemd-fstab-generator
systemd-gpt-auto-generator
พวกเขาทั้งสองวิ่งในช่วงต้นกระบวนการบูตและในการตอบสนองต่อsystemctl daemon-reload
คำสั่ง (ตามที่คุณสามารถดูด้านบน) /run/systemd/
พวกเขาสร้างโหลดทั้งไฟล์หน่วยเป็นไดเรกทอรีย่อยที่ไม่มีเอกสารใน systemd เองใช้ไฟล์หน่วยที่สร้างขึ้นเอง
ตัวสร้างเดิมอ่าน/etc/fstab
โดยคำนึงถึงส่วนขยาย systemd หลายรูปแบบของไฟล์นั้น ขณะที่ผมชี้ให้เห็นในความคิดเห็นคำตอบประเพณีพาร์ทิชันแลกเปลี่ยนมีติดประเภทของsw
และนั่นคือวิธีการหนึ่งที่จะพบว่าระบบปฏิบัติการอื่น ๆ รับรู้แลกเปลี่ยนระเบียนในตารางนี้ แต่โปรแกรมลีนุกซ์ได้เลือกวิธีการจดจำประเภท VFSแทนโดยมองหาswap
เป็นประเภท VFS systemd-fstab-generator
ไม่มีข้อยกเว้นที่นี่และเป็นวิธีตีความ/etc/fstab
เมื่อแปลงเป็นกลไกดั้งเดิม
ตัวสร้างหลังประมวลผลตารางพาร์ติชัน EFI ที่อยู่บนดิสก์แผ่นเดียวที่เก็บพาร์ติชันระบบ EFI ค้นหารายการตารางพาร์ติชัน EFI ที่มีGUID ชนิดพาร์ติชันที่รู้จักกันดีหลายรายการ หนึ่งใน GUID เหล่านั้นคือ GUID ทั่วไปที่กำหนดให้กับพาร์ทิชันสลับ Linux; และถ้าsystemd-gpt-auto-generator
พบพาร์ติชันที่มี GUID นั้น (ที่ตรงตามเกณฑ์ที่กำหนดใน systemd doco) มันจะสร้าง.swap
ยูนิตให้ ไม่มี/etc/fstab
ส่วนเกี่ยวข้องเลย
แน่นอนกระบวนการนี้มีผลข้างเคียงมากมาย ตัวอย่างเช่นเนื่องจาก/etc/fstab
ไม่มีคีย์หลักในตารางระเบียนจึงสามารถมีฟิลด์ "ข้อมูลจำเพาะ" และ "ไฟล์" ที่ซ้ำกัน (เช่น "อะไร" และ "ที่ไหน") ในกลไกเนทีฟ systemd แม้ว่าฟิลด์ "ไฟล์" (เช่น "ที่ไหน") เป็นคีย์เฉพาะสำหรับ.mount
หน่วยที่ฝังอยู่ในชื่อหน่วย ไม่มีสอง.mount
หน่วยที่สามารถแชร์ได้ สำหรับ.swap
หน่วยฟิลด์ "spec" (เช่น "what") คือคีย์เฉพาะสำหรับหน่วย ไม่มีสอง.swap
หน่วยที่สามารถแชร์ได้ ดังนั้นไม่ใช่ทุกเร็กคอร์ดใน/etc/fstab
ที่แปลงสภาพเป็นกลไกดั้งเดิมและจะทำงานได้โดยเฉพาะอย่างยิ่งถ้าคนทำสิ่งต่าง ๆ เช่นรายการจุดเมานท์เดียวกันสำหรับสองวัตถุประสงค์ที่แตกต่างกันหรือรายการพาร์ทิชัน swap เดียวกันในสองวิธีที่ต่างกัน
ในทำนองเดียวกันเนื่องจากมีการแปล/etc/fstab
เป็นกลไกเนทีฟและกลไกเนทีฟของ systemd มีวิธีอื่นในการเปิดใช้งานยูนิตลักษณะการทำงานจึงแตกต่างอย่างละเอียดกับระบบปฏิบัติการที่ไม่ใช่ systemd .mount
หน่วยจะตามค่าเริ่มต้นจะเปิดใช้งานโดยอัตโนมัติsystemd-udevd
แม้หลังจากบูตในการตอบสนองต่อการปรากฏตัวของอุปกรณ์จัดเก็บข้อมูลที่ติดตั้ง หรือมันสามารถถูกระบุว่าเป็นWants=
หรือRequires=
บางส่วน.service
หรือ.socket
หน่วยซึ่งหมายความว่ามันจะเปิดใช้งาน (อีกครั้ง) เมื่อพวกเขา RequiresMountsFor=
แม้จะมี
โปรแกรมติดตั้งและวิธี systemd
ตามเนื้อผ้าระบบการติดตั้งโปรแกรมและผู้ดูแลระบบ systemd ปฏิบัติการหลังจากนั้นกำหนดค่าระบบได้เขียนรายการไปsw
/etc/fstab
และนั่นคือวิธีที่ชาวพื้นเมือง.mount
และ.swap
หน่วยท้ายที่สุดถูกสร้างขึ้นโดยอัตโนมัติ ยูทิลิตีการติดตั้ง / การกำหนดค่า "รู้" ว่าใส่ไฟล์ swap ไว้ที่ไหนเพราะในส่วนต่อประสานผู้ใช้ผู้ดูแลระบบได้ทำการเลือกบางอย่างแล้วเขียนการ/etc/fstab
จับคู่ บางครั้งตัวเลือกนั้นคือฉันต้องการให้คุณทำให้ฉันเป็นพาร์ติชันการแลกเปลี่ยนเป็นส่วนหนึ่งของการติดตั้ง ; บางครั้งมันก็แค่ใช้ swap partition ที่คุณพบแล้วในแผ่นดิสก์ (ผู้ติดตั้งมองที่ประเภทพาร์ทิชันด้วย)
แต่คน systemd มีความคิดเกี่ยวกับระบบปฏิบัติการที่กำหนดค่าอัตโนมัติจาก/etc
ต้นไม้ที่ว่างเปล่าส่วนใหญ่ที่เรียกว่าระบบไร้สัญชาติและนั่นคือกลไกเช่นเครื่องกำเนิดไฟฟ้าที่อ่านตารางพาร์ติชัน EFI ทั้งหมด ในแผนคน systemd ของไม่มี/etc/fstab
และแน่นอนไม่มีข้อมูลการกำหนดค่าถาวรภายใต้/etc
ที่ทุกคนและทุกสิ่งนี้จะอนุมานได้จากเนื้อหาของตารางพาร์ทิชันบนดิสก์systemctl daemon-reload
ในทุกบูตและในทุก พวกเขาได้รับในปัจจุบันการส่งเสริมระบบปฏิบัติการติดตั้งโปรแกรมกว่าไม่ได้เขียน/etc/fstab
ในรูปแบบดั้งเดิมแน่นอนว่าคุณสามารถให้แต่ละระบบปฏิบัติการมีพาร์ติชั่นสว็อปส่วนตัวของตัวเองได้ และแน่นอนถ้าคุณกำลังใช้จำศีลเพื่อแผ่นผ่านทางพาร์ทิชัน swap และคาดหวังว่าจะสามารถที่จะมัลติบูตระบบปฏิบัติการอื่นในขณะที่จำศีล ( ซึ่งเป็นความคิดที่ดีมากเพราะมันเป็นเรื่องง่ายมากที่จะทำให้เกิดความเสียหายระบบแฟ้มวิธีนี้ ) ที่จะเป็น จำเป็น
ในรูปแบบ systemd แม้ว่าระบบปฏิบัติการยังไม่เป็นคน systemd มองเห็นมันและ "ไร้สัญชาติ" เครื่องปั่นไฟดังกล่าวทำงาน และทุกส่วนของการสลับพาร์ติชั่น (บนแผ่นดิสก์ ESP / รูท) ที่มีประเภทพาร์ติชันที่จำเป็นนั้นจะถูกใช้โดยระบบปฏิบัติการ systemd ทั้งหมดโดยอัตโนมัติ เนื่องจากพวกเขาจะแชร์พาร์ทิชัน swap ที่ค้นพบทั้งหมดโดยอัตโนมัติพาร์ติชั่นหนึ่งจึงไม่จำเป็นต้องสร้างพาร์ติชั่นสว็อปหนึ่งตัวต่อระบบปฏิบัติการที่ติดตั้งไว้
อ่านเพิ่มเติม