คำเตือน:ฉันได้ใช้งานโซลูชันนี้และใช้งานได้ แต่เวลาผสานเพื่อกลับไปที่สแน็ปช็อตอาจทำให้กระบวนการบู๊ตใช้เวลานานหากการเปลี่ยนแปลงขนาดใหญ่เกิดขึ้นกับระบบในระหว่างการบูตครั้งสุดท้าย ในช่วงระยะเวลารอนี้อาจปรากฏต่อผู้ใช้ว่าระบบหยุดทำงาน!
นอกจากนี้ระวังว่าใครก็ตามที่มีความรู้เพียงพอในการเมานต์สแนปชอตสามารถทำการเปลี่ยนแปลงสถานะ "แช่แข็ง" ได้ ฉันใช้ประโยชน์จากความเป็นไปได้นี้ในการอัปเดตระบบ "แช่แข็ง" แต่อีกครั้งสิ่งนี้สามารถเพิ่มเวลาที่ใช้ในการผสาน (เปลี่ยนกลับเป็น) ภาพรวม!
LVM snapshots + cron + script = สถานะ "แช่แข็ง"
ฉันเพิ่งเริ่มขุดเป็น LVM และมันเกิดขึ้นกับฉันที่หนึ่งสามารถสร้างสถานะ "แช่แข็ง" บนเครื่องโดยใช้ LVM และความสามารถในการจับภาพ แน่นอนวิธีนี้ต้องใช้ระบบที่กำหนดค่าโดยใช้ LVM (หรืออย่างน้อย LVM บนพาร์ติชั่นที่จะถูกแช่แข็ง)
สรุป:
- ติดตั้งระบบบนพาร์ติชัน LVM ที่สำรองพื้นที่เพียงพอบน PV สำหรับสแน็ปช็อต
- ให้ระบบกำหนดค่าตามที่คุณต้องการ
- สร้างงาน cron ที่ทำงานเป็นรูทเมื่อบูตเพื่อรวมสแน็ปช็อตและสร้างสแน็ปช็อตใหม่เพื่อแทนที่งานที่ผสาน
- การรีบูตที่ต่อเนื่องทั้งหมดจะเปลี่ยนกลับเป็นสแน็ปช็อต สแนปชอตทั้งหมดที่สร้างขึ้นมาจากระบบในสถานะที่คุณสร้างขึ้น
- ในฐานะโบนัสที่เพิ่มเข้ามาภาพรวมสามารถติดตั้งและแก้ไขได้ (หากคุณมีสิทธิ์ใช้งานรูท) และสามารถอัปเดตสถานะ "แช่แข็ง" ได้หากต้องการ
หลักฐานของแนวคิด:ตรึงทุกอย่างยกเว้นหนึ่งพาร์ติชันจากการติดตั้งใหม่ทั้งหมด
การติดตั้ง:
- บูตจากดิสก์ Ubuntu สด / USB และเลือกตัวเลือกเพื่อ "ลอง Ubuntu โดยไม่ต้องติดตั้ง" นี่เป็นสิ่งสำคัญสำหรับการกำหนดค่าพาร์ติชันด้วยตนเองด้วย LVM
- เมื่อ Ubuntu โหลดพาร์ติชั่นดิสก์ของคุณโดยใช้เครื่องมือที่คุณเลือกเพื่อให้มีพาร์ติชั่นหนึ่งตัวที่ใช้พื้นที่ทั้งหมดของไดรฟ์ นี่คือสิ่งที่ฉันทำงานกับ:
- ถัดไปในชุดขั้วขึ้น LVM
/dev/sda1
บน ฉันจะทำให้ระบบส่วนใหญ่ในพาร์ติชันเดียว แต่คุณไม่ต้อง
sudo pvcreate /dev/sda1
sudo vgcreate ubuntu-vg /dev/sda1
sudo lvcreate -n swap -L 1G ubuntu-vg
sudo lvcreate -n unfrozen -L 10G ubuntu-vg
sudo lvcreate -n root -l +50%free ubuntu-vg
- ทีนี้ถ้าคุณต้องวิ่ง
sudo vgs
ตามด้วยsudo lvs
คุณควรจะเห็นว่าจำนวนของพื้นที่ว่างที่เหลืออยู่ในกลุ่มวอลุ่ม "ubuntu-vg" (VFree ภายใต้เอาต์พุต vgs) เท่ากับจำนวนพื้นที่ที่ถ่ายโดยโลจิคัลวอลุ่ม "รูท" "(LSize ภายใต้เอาท์พุท lvs) ในกรณีของฉันฉันมี 506.44g ฟรีใน ubuntu-vg และพาร์ทิชันรูทของฉันมีขนาดใหญ่ 506.44g หากพื้นที่ว่างที่เหลืออยู่ในกลุ่มวอลุ่มเท่ากับขนาดของพาร์ติชันที่ฉันต้องการจะแช่แข็งฉันควรจะล้างพาร์ติชั่นทั้งหมดและยังสามารถกู้คืนได้ด้วยการรีบูต ออกจากส่วนที่เหลือของพื้นที่ว่างใน ubuntu-vg ที่ไม่ได้ใช้ตอนนี้ เราจะใช้มันในภายหลัง
- ตอนนี้ติดตั้ง Ubuntu โดยใช้การแบ่งพาร์ติชันด้วยตนเอง

- เมื่อการติดตั้งเสร็จสิ้นแล้วให้ทำการรีบูตระบบที่เพิ่งติดตั้งใหม่
- เมื่อบูทเข้าสู่ระบบใหม่ให้กำหนดค่าเพื่อให้เป็นไปตามที่คุณต้องการเมื่อคอมพิวเตอร์บูทในแต่ละครั้ง
- หากคุณไม่ได้ตั้งใจเปลี่ยนสแน็ปช็อตและคุณไม่ต้องการให้สแนปชอตพาร์ติชันปรากฏในแถบเมนู ...
mkdir /steady
- แก้ไข
/etc/fstab
โดยการเพิ่ม (นี่คือทั้งหมดหนึ่งบรรทัด) /dev/ubuntu-vg/steadystate /steady ext4 defaults,ro,nofail 0 1
เป็นบรรทัดสุดท้ายของไฟล์
- เนื่องจากสิ่งต่าง ๆ เช่นการอัพเดตจะถูกพัดหายไปในการรีบูตแต่ละครั้งคุณจึงอาจต้องการปิด
- หากคุณมีพาร์ติชั่น unfrozen เหมือนของฉันที่ / unfrozen อย่าลืมที่จะเข้าถึงผู้ใช้ที่ต้องการเข้าถึงมัน
- เมื่อคุณกำหนดค่าระบบตามที่คุณต้องการแล้วให้สร้างสคริปต์ต่อไปนี้ (คุณต้องมีสิทธิ์ใช้งานรูท) และบันทึกเช่นเดียว
/root/steadystate.sh
กับโปรแกรมแก้ไขที่คุณชื่นชอบ โปรดทราบว่าหากคุณเปลี่ยนชื่อกลุ่มวอลุ่มเมื่อตั้งค่า LVM คุณจะต้องอัปเดตในสคริปต์ด้านล่างเช่นกัน
#!/bin/bash
LOG=/dev/kmsg
# wait for merge in progress
echo -n "Reverting to snapshot if present... " | tee -a $LOG
merging=1
while [ "$merging" == "1" ];
do
/usr/sbin/service lightdm stop #prevent the auto-login/login screen from loading
[ "$(sudo lvs -a | grep steadystate)" == "" ] && merging=0
sleep 1
done
# create snapshot
echo -n "Creating new snapshot... " | tee -a $LOG
/sbin/lvcreate -s -n steadystate -l +100%free /dev/ubuntu-vg/root
# make sure root comes online before trying to merge
while [ ! -e /dev/mapper/ubuntu--vg-root];
do
sleep .5;
done
echo -n "Scheduling reset to snapshot... " | tee -a $LOG
/sbin/lvconvert --merge /dev/ubuntu-vg/steadystate
echo -n "Starting lightdm... " | tee -a $LOG
/usr/sbin/service lightdm start
- ในที่สุดรัน
sudo crontab -e
เลือกเอดิเตอร์และวาง@reboot /bin/bash /root/steadystate.sh
ที่ส่วนท้ายของไฟล์ บันทึกและปิด ( Ctrl+ X; คำตอบYเพื่อบันทึก)
- รีบูทและคุณควรมีระบบที่ถูกแช่แข็งยกเว้นพาร์ติชั่นที่เมาท์ที่ / unfrozen
วิธีนี้ใช้งานได้เนื่องจากสแน็ปช็อตถูกสร้างขึ้นในเวลาบูตและแม้ว่าเราจะส่งคำสั่งเพื่อรวมสแน็ปช็อตทันทีหลังจากนั้นสแน็ปช็อตจะไม่สามารถผสานได้ในขณะที่โลจิคัลวอลุ่มสำหรับรูทใช้งานอยู่ ดังนั้นจึงเลื่อนการดำเนินการผสานออกไปจนกว่าจะมีการเปิดใช้งาน / dev / ubuntu-vg / root ครั้งถัดไปซึ่งเป็นการรีบูตครั้งถัดไป การดำเนินการนี้จะถูกเรียกใช้หากระบบถูกบูตจาก USB สด
เพียงเพื่อเตะฉันไปหลังจากรีบูตและวิ่งsudo apt remove --purge firefox* libreoffice-* unity*
ซึ่งปกติฉันจะไม่แนะนำให้ทำเพราะมันลบบางโปรแกรมที่มีประโยชน์และทำให้ระบบในสิ่งที่อาจจะน้อยกว่ารัฐที่ต้องการ!
ระบบจะไม่ปิดการทำงานอย่างถูกต้องจาก GUI ดังนั้นหนึ่งจะแก้ไขได้อย่างไร Reboot!
เมื่อรีบูตเครื่องทุกอย่างกลับเป็นระเบียบเรียบร้อย Firefox, LibreOffice และ Unity ล้วน แต่กลับมาอยู่ในจุดที่ตนเป็นเจ้าของ
ฉันพยายามลบ linux * ด้วย สิ่งนี้ทำให้เครื่องของเขาไม่สามารถบูตได้อย่างไรก็ตามเพียงแค่การบูทจากดิสก์ Ubuntu ที่มีชีวิตดูเหมือนจะทำให้การผสานเกิดขึ้น การรีสตาร์ทอีกครั้งทำให้ระบบอยู่ในสถานะ "แช่แข็ง"
หากคุณต้องการที่จะทำการเปลี่ยนแปลงคุณสามารถ (อีกครั้ง) เมานต์สแน็ปช็อตด้วยสิทธิ์ rw แล้ว chroot ไปที่มันและทำการเปลี่ยนแปลงใด ๆ ที่คุณต้องการที่จะยังคงอยู่อย่างถาวร มันไม่ได้ไร้ที่ติ แต่มันเป็นข้อพิสูจน์ถึงแนวคิด