Încerc să creez o partiție de salvare mică (~800 MB spațiu de rezervă după toate celelalte partiții de sistem și de stocare) pentru un laptop cu hardware specializat care necesită module speciale de kernel și kernel, astfel încât instrumentele de salvare stoc, cum ar fi Clonezilla Live și GParted Live, nu fac. nu funcționează foarte bine. Partiția este prea mică pentru a include modulele și software-ul necesar pentru ceea ce aș dori să construiesc, așa că cea mai mare parte a sistemului trebuie să fie comprimată și încărcată în RAM în timpul execuției. În plus, prefer să am sistemul complet extras în loc să mă bazez pe dovlecei
, și aș dori posibilitatea de a salva modificările făcute în sistem atât cât permite partiția. Folosind Ubuntu 20.04 ca sistem de bază, am conceput următoarea schemă în acest scop:
- După construirea sistemului inițial în
chroot
, creați și goliți folderul /RAM
ca punct de montare pentru tmpfs
pentru a găzdui fișierele de sistem și utilizator decomprimate în timpul rulării, mutați toate folderele de fișiere de sistem și utilizator (Acasă
,usr
,var
,opta
,etc
, etc.) în /RAM
și înlocuiți fiecare cu o legătură simbolică către /ram/$dir
. Comprima /RAM
la fel de/ram.tar.gz
și lăsați punctele speciale de montare (dev
, sys
,alerga
,tmp
, și proc
) precum și cizme
singur pe rootfs
. Șterge /RAM/*
și scrieți rootfs
pe despărțitor.
- La boot, după nucleu și
initrd
sunt încărcate, premontate rootfs
, montură tmpfs
pe /RAM
, apoi extrageți conținutul lui /ram.tar.gz
în /RAM
. Acest lucru trebuie să se întâmple înainte rootfs
înlocuiește initramfs
ca rădăcină deoarece altfel rootfs
nu pot accesa utilitățile necesare pentru montare /RAM
și extrage din arhiva comprimată.
- montură
rootfs
și continuați cu boot.
- La oprire, faceți înapoi
/ram.tar.gz
la fel de /ram.tar.gz.bak
apoi comprimați modificatul /RAM
în /ram.tar.gz
. Acest lucru poate fi realizat folosind systemd
.
Evident, lucrurile pot merge prost la pasul 4 și, prin urmare, pasul 2 trebuie să includă integritatea /ram.tar.gz
și încărcați copia de rezervă dacă aceasta nu reușește, dar acestea ar trebui să fie doar câteva comenzi suplimentare de inclus în initramfs-instrumente
script și dincolo de scopul întrebării mele, care este:
Fără a modifica /usr/share/initramfs-tools/init
, cum creez un script în /etc/initramfs-tools/scripts
pentru a realiza pasul 2? Comenzile ar trebui să fie destul de ușoare ca
mount -t tmpfs -o $OPTIONS nici unul /ram
tar xvzf ram.tar.gz
Dar nu știu ce folder să includă scriptul (init? local? sus? bottom? premount?) și cum să lucrez cu PRECERERE
antet în scriptul propriu-zis.