稍微解說一下原理:
載用syslinux 的booting loader 來帶起作業系統,因為是live 每次開機都會洗掉,根據這點很輕易的就可以在
"/xxx/xxx" 發現採用squashfs 一個read-only 壓縮檔案系統,這邊看起來都跟平常工作的嵌入式系統類似,特別的是
unetbootin 是有提供使用者讀寫修改,下次重開機可以記錄保留的效果
何等神奇!!! 馬上下一個 mount & losetup -a 檢查一下
root@lubuntu:~# mount
/cow on / type overlayfs (rw)
/dev/sdb1 on /cdrom type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro)
/dev/loop0 on /rofs type squashfs (ro,noatime)
/dev/loop1 on /media/bejo/c698766a-48e2-6d45-81ae-fe5fba3ff6f2 type ext2 (rw,nosuid,nodev,uhelper=udisks2)
root@lubuntu:~# losetup -a
/dev/loop0: [0811]:35 (/cdrom/casper/filesystem.squashfs)
/dev/loop1: [0811]:41 (/cdrom/casper-rw)
loop1 就是那神奇的 casper-w
如果你做一個 mount 動作
mount -o loop casper-rw /mnt/xxx
就會發現長得非常類似(根本一樣 = =) 一個基本的file system 又剛剛好是你改過的檔案
哪有這麼剛好,原來 ...
是 overlap ... mount
原理就是先掛一個static 的image 再把自己可以修改的蓋上去,噹噹 完成檔案系統可以紀錄被修改的樣子
效果就會 ---> 先讀取可讀寫的 如果沒有 ---> 讀取靜態的 ---> 結束這回合
孔明先生,這太妙了。
說一下重點:
1. 從此只要備份好 casper-w 這個檔案,凡是live usb 都可以被還原 (自己還原自己作)
2. 可以加大 casper-w 大小
方法:
(找一台Linux 不是同一台!!!)
#dd if=/dev/zero bs=1M count=1024 >> casper-rw // 1024MB ---> 自行更改 別超過4G
#e2fsck -f casper-rw
#resize2fs casper-rw
創造一顆新的:
#dd if=/dev/zero of=casper-rw bs=1M count=1024
#mkfs.ext3 casper-rw
曾經想辦法突破4GB,受限於FAT32大小只能支援到此,
ext3 -> 可booting 更換不了超過4GB
ext2 -> 開機不能
ext4 -> 開機不能
ntfs -> ... 你在開玩笑嗎?
只好認命了。
這種手法來記錄file system 的修改,印象似乎在OPENWRT也是如此,時光有限,待有緣再分享。
沒有留言:
張貼留言