樹莓派使用f2fs作為根文件系統
目錄
前言
在TF卡、固態硬盤之類的nand存儲介質上,f2fs比起ext4之類的文件系統在性能和壽命上都有較大優化。所以我決定使用f2fs來作為我樹莓派3B的根分區。
操作簡述
1.樹莓派安裝64位Raspberry PI OS Lite系統,此時樹莓派TF卡根分區是ext4文件系統。
2.下載Debian LiveCD ISO鏡像并刻錄到U盤。
3.PC上,用U盤啟動Debian liveCD系統,在Debian liveCD系統中用tar命令備份樹莓派TF卡的根分區。
4.在PC的Debian liveCD系統中把TF卡的根分區格式化成f2fs。
5.在PC的Debian liveCD系統中使用tar命令將備份的系統恢復到f2fs的根分區。
詳細操作步驟
1. 給樹莓派安裝Raspberry PI OS Lite
這里要用到樹莓派官方的Raspberry Pi Imager鏡像寫入工具給TF卡寫鏡像。操作系統要選64位的,64位的才能更好發揮出樹莓派3B的arm64處理器性能。用Raspberry PI OS Lite版(其實就是debian11),Lite版不帶桌面環境,體積小。樹莓派啟動后,執行lsblk -f 發現樹莓派的根分區文件系統是ext4. Raspberry PI OS Lite的是Linux 6.1內核的,能支持f2fs,所以不需要修改initrd。
2. 刻錄Debian liveCD啟動U盤
1-從163鏡像站下載五桌面環境的Debian liveCD ISO鏡像文件。http://mirrors.163.com/debian-cd/current-live/amd64/iso-hybrid/debian-live-12.5.0-amd64-standard.iso
2-windows下用ultrISO,linux下用dd命令把liveCD鏡像寫入U盤。ultraISO:用“啟動”-->“寫入硬盤映像”功能。dd命令(假設u盤對應/dev/sdX1):dd if=鏡像iso文件 of=/dev/sdX1 bs=1M
3-把制作好的U盤插入PC,啟動Debian Live系統。
3. 備份TF卡Linux根分區
把已經插入TF卡的讀卡器鏈接到PC。
sudo su - # debian live系統切換到root用戶
mkdir /mnt/raspi-root; mount /dev/sdX2 /mnt/raspi-root # 把還是樹莓派TF卡linux根分區掛載到raspi-root目錄。這里假設樹莓派TF卡的linux根分區位于sdX2(可以用lsblk -f命令或fdisk -lu命令判斷)
cd /mnt/raspi-root #切換到樹莓派TF卡的linux根分區
tar --one-file-system --exclude=./lost+found --exclude=/dev/* -zcpf /tmp/rootfs.tar.gz . # 將當前目錄(TF卡linux根分區)下的所有文件備份到/tmp/rootfs.tar文件。這里是冷備份,排除掉lost+found目錄、保留dev目錄,但dev/目錄下的所有文件或目錄都排除掉,proc、sys、boot目錄是空的,不需要排除它們。*** 注意 ***,這里有個英文點號“.”,表示當前目錄(TF卡linux根分區掛載目錄)。此時樹莓派TF卡linux根分區已經備份到live系統的/tmp路徑下了。備份好后,千萬不要關機,live系統中的數據會丟失,當然你也可以備份到另一個U盤,這樣意外關機也不怕。
4. 格式化樹莓派TF卡linux根分區為f2fs文件系統
apt install f2fs-tools # 此時live系統就具備了格式化f2fs的能力
umount /dev/sdX2 # 取消樹莓派TF卡linux根分區的掛載,準備格式化分區為f2fs
mkfs.f2fs -f /dev/sdX2 # 執行建立f2fs文件系統,并格式化。這里假設TF卡linux根分區在live系統中是/dev/sdX2,你可以在執行前,使用lsblk -f或fdisk -lu /dev/sdX命令來確認TF卡linux根分區是哪個。
5.恢復樹莓派系統備份
mount /dev/sdX2 /mnt/raspi-root #掛載樹莓派tf卡linux根文件系統
cd /mnt/raspi-root
tar --numeric-owner -zxpf /tmp/raspi-root/rootfs.tar.gz # 恢復樹莓派系統到TF卡新的f2fs根分區
vi etc/fstab # 修改樹莓派TF卡分區下的etc/fstab文件中的ext4文件系統為f2fs,我看里面的分區UUID和ext4下的沒有變化,所以文件中的分區UUID不用動,如果有變化,就修改一下。
mkdir /mnt/tf-boot; mount /dev/sdX1 /mnt/tf-boot #把樹莓派TF卡boot分區掛載到/mnt/tf-root目錄下,這里假設樹莓派TF卡的boot分區在live系統中位于/dev/sdX1
vi /mnt/tf-root/cmdline.txt #修改樹莓派TF卡boot分區下的cmdline.txt中的ext4文件系統為f2fs。最后umount樹莓派TF卡的boot分區和linux根分區,拔卡,插入樹莓派,啟動。大功告成。
浙公網安備 33010602011771號