ฉันกำลังพยายามสร้างพาร์ติชั่นกู้ภัยขนาดเล็ก (พื้นที่ว่างประมาณ 800MB หลังจากพาร์ติชั่นระบบและสตอเรจอื่น ๆ ทั้งหมด) สำหรับแล็ปท็อปที่มีฮาร์ดแวร์พิเศษที่ต้องใช้เคอร์เนลและโมดูลเคอร์เนลพิเศษ เช่น เครื่องมือกู้ภัยในคลัง เช่น Clonezilla Live และ GParted Live don' ทำงานได้ดีมาก พาร์ติชันมีขนาดเล็กเกินไปที่จะรวมโมดูลและซอฟต์แวร์ที่จำเป็นสำหรับสิ่งที่ฉันต้องการสร้าง ดังนั้นระบบจำนวนมากจึงต้องถูกบีบอัดและโหลดลงใน RAM ขณะรันไทม์ นอกจากนี้ ฉันชอบที่จะแยกระบบออกทั้งหมดแทนที่จะพึ่งพา สควอช
และฉันต้องการความสามารถในการบันทึกการเปลี่ยนแปลงที่ทำกับระบบเท่าที่พาร์ติชันอนุญาต เมื่อใช้ Ubuntu 20.04 เป็นระบบฐาน ฉันได้คิดค้นโครงร่างต่อไปนี้เพื่อจุดประสงค์นี้:
- หลังจากสร้างระบบเริ่มต้นใน
โครต
, สร้างและล้างโฟลเดอร์ /แกะ
เป็นจุดยึดสำหรับ tmpfs
เพื่อจัดเก็บไฟล์ระบบและผู้ใช้ที่คลายการบีบอัดในขณะรันไทม์ ย้ายโฟลเดอร์ไฟล์ระบบและผู้ใช้ทั้งหมด (บ้าน
,ยูเอสอาร์
,วาร์
,เลือก
,เป็นต้น
, เป็นต้น) เข้าไปข้างใน /แกะ
และแทนที่แต่ละรายการด้วยลิงก์สัญลักษณ์ /ram/$dir
. บีบอัด /แกะ
เช่น/ram.tar.gz
และปล่อยให้จุดติดตั้งพิเศษ (ผู้พัฒนา
, ระบบ
,วิ่ง
,ทีเอ็มพี
, และ โพรซี
) เช่นเดียวกับ บูต
อยู่คนเดียว ราก
. ลบ /แกะ/*
และเขียนว่า ราก
ลงบนพาร์ติชัน
- ตอนบูต หลังจากเคอร์เนลและ
เริ่มต้น
โหลดไว้ล่วงหน้า ราก
เมาท์ tmpfs
บน /แกะ
จากนั้นแยกเนื้อหาของ /ram.tar.gz
เข้าไปข้างใน /แกะ
. สิ่งนี้จะต้องเกิดขึ้นก่อน ราก
แทนที่ initramfs
เป็นรากตั้งแต่อย่างอื่น ราก
ไม่สามารถเข้าถึงยูทิลิตี้ที่จำเป็นในการติดตั้ง /แกะ
และแยกจากไฟล์เก็บถาวรที่บีบอัด
- ภูเขา
ราก
และดำเนินการบูต
- เมื่อปิดเครื่อง ให้สำรองข้อมูล
/ram.tar.gz
เช่น /ram.tar.gz.bak
จากนั้นบีบอัดที่แก้ไข /แกะ
เข้าไปข้างใน /ram.tar.gz
. สามารถทำได้โดยใช้ ระบบ
.
เห็นได้ชัดว่ามีข้อผิดพลาดในขั้นตอนที่ 4 ดังนั้นขั้นตอนที่ 2 จึงจำเป็นต้องมีความสมบูรณ์ของ /ram.tar.gz
และโหลดข้อมูลสำรองหากล้มเหลว แต่นี่ควรเป็นเพียงคำสั่งเพิ่มเติมสองสามคำสั่งที่จะรวมไว้ใน initramfs-เครื่องมือ
สคริปต์และอยู่นอกเหนือขอบเขตของคำถามของฉัน ซึ่งก็คือ:
โดยไม่เปลี่ยนแปลง /usr/share/initramfs-tools/init
, ฉันจะสร้างสคริปต์ใน /etc/initramfs-tools/scripts
เพื่อบรรลุขั้นตอนที่ 2? คำสั่งควรจะง่ายพอเช่น
เมานต์ -t tmpfs -o $OPTIONS ไม่มี /ram
tar xvzf ram.tar.gz
แต่ฉันค่อนข้างสับสนว่าโฟลเดอร์ใดที่จะรวมสคริปต์ (init? local? top? bottom? premount?) และวิธีการทำงานกับ ความต้องการเบื้องต้น
ส่วนหัวในสคริปต์เอง