มีวิธี "เหมาะสม" อย่างน้อยสามวิธีในการเริ่มต้นสิ่งต่าง ๆ ใน Ubuntu (สมมติว่าคุณไม่เพียง แต่ต้องการติดตั้ง) ซึ่งแสดงไว้ที่นี่เพื่อลดลำดับการตั้งค่า:
/etc/init/*.conf
(พุ่งพรวด)
/etc/init.d/*
(sysvinit)
/etc/rc.local
(สคริปต์เปลี่ยนแปลง runlevel)
นอกจากนี้ยังมีความเป็นไปได้ของการใช้กฎ udev แต่จะมีความซับซ้อน ฉันแนะนำต่อมัน สคริปต์ sysvinit นั้นเกินความจำเป็นดังนั้นฉันจะมุ่งเน้นไปที่ตัวเลือกอื่น ๆ สองตัว สคริปต์การเปลี่ยนแปลง runlevel นั้นง่ายที่สุด (แต่ต้องการน้อยที่สุด) ดังนั้นฉันจะเริ่มต้นที่นั่น
/etc/rc.local
ไฟล์จะถูกดำเนินการเพียงโดย/etc/init.d/rc.local
สคริปต์ sysvinit ซึ่งเป็น (โดยค่าเริ่มต้น) การดำเนินการที่ผ่านมาเมื่อมีการเปลี่ยนไปใช้ใด ๆ ปกติ "กับ" ระดับการทำงาน (เช่นเมื่อคุณบูตได้ตามปกติ แต่ไม่ได้เมื่อคุณปิดตัวลงหรือไปที่โหมดการกู้คืน) ในการติดตั้งอุปกรณ์สำหรับบูตให้เพิ่มสิ่งนี้ในตอนท้าย/etc/rc.local
โดยสมมติว่าไฟล์ของคุณถูกเรียกใช้/srv/diskimage
และคุณต้องการใช้/dev/loop0
เป็นอุปกรณ์ลูป:
losetup /dev/loop0 /srv/diskimage
นั่นคือทั้งหมดที่มีให้มัน แน่นอนแทนที่ชื่อไฟล์ด้วยสิ่งที่ดีที่สุดในการตั้งค่าของคุณ
หากคุณต้องการให้มีความเฉพาะเจาะจงมากขึ้นคุณสามารถสร้างงาน Upstart สำหรับงานที่ตั้งขึ้นเมื่อระบบไฟล์ที่ถืออยู่ถูกเมาท์ ตัวอย่างจะเป็นดังต่อไปนี้สมมติว่า/srv
เป็นจุดเมานท์ที่มีdiskimage
ไฟล์ของคุณ:
description "Setup loop devices after filesystems are mounted"
start on mounted MOUNTPOINT=/srv
task
exec losetup /dev/loop0 /srv/diskimage
สิ่งนี้ควรจะง่ายพอที่จะทำตามแนวคิด: บรรทัดแรกเป็นเพียงความคิดเห็นสำหรับผู้อ่านของมนุษย์และเป็นคำแนะนำสำหรับการพุ่งพรวดเพื่อรอจนกว่า/srv
ระบบไฟล์จะถูกติดตั้งดำเนินการกระบวนการ losetup และพิจารณาตัวเองว่าเสร็จสิ้นเมื่อกระบวนการออกเรียบร้อยแล้ว ภารกิจ "ซึ่งตรงข้ามกับบริการที่ยังคงอยู่) /etc/init/*.conf
เนื้อหาเพียงแค่ใส่ผู้ที่อยู่ในการจับคู่ไฟล์ ฉันจะเลือก/etc/init/losetup.conf
เอง
ข้อดีของงานพุ่งพรวดใน/etc/rc.local
เรื่องง่าย ๆ นั้นเล็ก แต่สำคัญ อย่างแรก/etc/rc.local
คือเลิกใช้แล้วและการใช้งานเป็นเพียงแค่ "กล่องทรายที่ยุ่งเหยิงเพื่อทำสิ่งต่าง ๆ " จะถูกทำให้ขมวดคิ้วโดยทุกคนในทุกวันนี้ ด้วยเหตุผลอื่น ๆ สำหรับการขมวดคิ้วเมื่อมีการใช้งานบางโปรแกรมที่ใช้ไฟล์นั้นจะเขียนทับเนื้อหาและมันก็ยากที่จะปรับความแตกต่างของสคริปต์ต่าง ๆ ที่จำเป็นต้องใช้ในไฟล์เดียวกัน ประการที่สองพุ่งพรวดจริงจัดการการพึ่งพาการตรวจสอบสำหรับคุณ (การทำให้แน่ใจว่าระบบแฟ้มติดตั้งครั้งแรก) ดังนั้นหากมีปัญหาการติดตั้งระบบแฟ้มมันจะไม่ลองตั้งค่าอุปกรณ์ลูป .... แต่จะเมื่อคุณแก้ไขและติดตั้งแล้ว ประการที่สามการพุ่งพรวดมีความยืดหยุ่นอย่างมากมายเช่นคุณสามารถฉลาดพอที่จะหาอุปกรณ์ลูปที่ไม่ได้ใช้งานและ "ปล่อย" อุปกรณ์ลูปนั้นเพื่อใช้ในงานพุ่งพรวดอื่น ๆ เช่นเดียวกับที่เราใช้ตัวแปร "MOUNTPOINT" ในตัวอย่างนี้ด้านบน
/etc/init.d/something
หรือ/etc/rc.local
แต่ฉันแนะนำให้อยู่กับวิธีการใด ๆ ที่ได้ผล