Score:0

สคริปต์ Initramfs-tools สำหรับติดตั้งโฟลเดอร์ที่บีบอัดบน tmpfs

ธง ug

ฉันกำลังพยายามสร้างพาร์ติชั่นกู้ภัยขนาดเล็ก (พื้นที่ว่างประมาณ 800MB หลังจากพาร์ติชั่นระบบและสตอเรจอื่น ๆ ทั้งหมด) สำหรับแล็ปท็อปที่มีฮาร์ดแวร์พิเศษที่ต้องใช้เคอร์เนลและโมดูลเคอร์เนลพิเศษ เช่น เครื่องมือกู้ภัยในคลัง เช่น Clonezilla Live และ GParted Live don' ทำงานได้ดีมาก พาร์ติชันมีขนาดเล็กเกินไปที่จะรวมโมดูลและซอฟต์แวร์ที่จำเป็นสำหรับสิ่งที่ฉันต้องการสร้าง ดังนั้นระบบจำนวนมากจึงต้องถูกบีบอัดและโหลดลงใน RAM ขณะรันไทม์ นอกจากนี้ ฉันชอบที่จะแยกระบบออกทั้งหมดแทนที่จะพึ่งพา สควอชและฉันต้องการความสามารถในการบันทึกการเปลี่ยนแปลงที่ทำกับระบบเท่าที่พาร์ติชันอนุญาต เมื่อใช้ Ubuntu 20.04 เป็นระบบฐาน ฉันได้คิดค้นโครงร่างต่อไปนี้เพื่อจุดประสงค์นี้:

  1. หลังจากสร้างระบบเริ่มต้นใน โครต, สร้างและล้างโฟลเดอร์ /แกะ เป็นจุดยึดสำหรับ tmpfs เพื่อจัดเก็บไฟล์ระบบและผู้ใช้ที่คลายการบีบอัดในขณะรันไทม์ ย้ายโฟลเดอร์ไฟล์ระบบและผู้ใช้ทั้งหมด (บ้าน,ยูเอสอาร์,วาร์,เลือก,เป็นต้น, เป็นต้น) เข้าไปข้างใน /แกะ และแทนที่แต่ละรายการด้วยลิงก์สัญลักษณ์ /ram/$dir. บีบอัด /แกะ เช่น/ram.tar.gz และปล่อยให้จุดติดตั้งพิเศษ (ผู้พัฒนา, ระบบ ,วิ่ง ,ทีเอ็มพี, และ โพรซี) เช่นเดียวกับ บูต อยู่คนเดียว ราก. ลบ /แกะ/* และเขียนว่า ราก ลงบนพาร์ติชัน
  2. ตอนบูต หลังจากเคอร์เนลและ เริ่มต้น โหลดไว้ล่วงหน้า รากเมาท์ tmpfs บน /แกะจากนั้นแยกเนื้อหาของ /ram.tar.gz เข้าไปข้างใน /แกะ. สิ่งนี้จะต้องเกิดขึ้นก่อน ราก แทนที่ initramfs เป็นรากตั้งแต่อย่างอื่น ราก ไม่สามารถเข้าถึงยูทิลิตี้ที่จำเป็นในการติดตั้ง /แกะ และแยกจากไฟล์เก็บถาวรที่บีบอัด
  3. ภูเขา ราก และดำเนินการบูต
  4. เมื่อปิดเครื่อง ให้สำรองข้อมูล /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?) และวิธีการทำงานกับ ความต้องการเบื้องต้น ส่วนหัวในสคริปต์เอง

Score:0
ธง ug

มันค่อนข้างตรงไปตรงมา สร้าง:

/etc/initramfs-tools/scripts/local-bottom/ramfiles
#!/bin/sh

ตั้ง -e

พรีคิว=""

ข้อกำหนดเบื้องต้น ()
{
        echo "${PREREQ}"
}

กรณี "${1}" ใน
        ข้อกำหนดเบื้องต้น)
                ข้อกำหนดเบื้องต้น
                ทางออก 0
                ;;
เอสแซค

เมานต์ -t tmpfs -o size=100% ไม่มี ${rootmnt}/ram
tar xvzf ${rootmnt}/ram.tar.gz -C ${rootmnt}


แล้ว

sudo chmod +x /etc/initramfs-tools/scripts/local-bottom/ramfiles
sudo update-initramfs -u

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา