สมมติว่า 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 ที่ค้นพบทั้งหมดโดยอัตโนมัติพาร์ติชั่นหนึ่งจึงไม่จำเป็นต้องสร้างพาร์ติชั่นสว็อปหนึ่งตัวต่อระบบปฏิบัติการที่ติดตั้งไว้
อ่านเพิ่มเติม