Difference between revisions of "How to use overlayfs on Linux"

From FriendlyELEC WiKi
Jump to: navigation, search
(如何鉴别系统是否工作在OverlayFS)
(使用OverlayFS实现恢复出厂设置功能)
Line 39: Line 39:
 
The system data will be in the rootfs partition and the data written to the root directory will be in the data partition.
 
The system data will be in the rootfs partition and the data written to the root directory will be in the data partition.
  
==使用OverlayFS实现恢复出厂设置功能==
+
==Restore Factory Settings With OverlayFS==
===方法1:操作userdata分区===
+
===Method 1: Operate in Userdata Partition===
 
factory reset:
 
factory reset:
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
Line 52: Line 52:
 
mount /dev/mmcblk0p3 /media/ && rm -rf /media/deleteme.*
 
mount /dev/mmcblk0p3 /media/ && rm -rf /media/deleteme.*
 
</syntaxhighlight>
 
</syntaxhighlight>
===方法2:命令行参数===
+
===Method 2: Restore by Setting Commandline Parameters===
在内核命令行参数中加入 wipedata=yes,S5P4418与S5P6818平台可以在系统运行时进行修改:
+
Add "wipedata=yes" to the kernel's commandline parameters. For S5P4418 and S5P6818 based boards you can do it after system boots;
====设置下次开机时抹掉data分区的数据(即恢复出厂设置)====
+
====Restore Factory Settings by Removing Data in Data Partition on System Reboot====
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
 
sudo fw_setenv bootargs "`cat /proc/cmdline` wipedata=yes"
 
sudo fw_setenv bootargs "`cat /proc/cmdline` wipedata=yes"
 
sudo reboot
 
sudo reboot
 
</syntaxhighlight>
 
</syntaxhighlight>
====开机时不再抹掉data分区====
+
====Keep Data in Data Partition on System Reboot====
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
 
sudo fw_setenv bootargs "`cat /proc/cmdline` wipedata=no"
 
sudo fw_setenv bootargs "`cat /proc/cmdline` wipedata=no"
 
sudo reboot
 
sudo reboot
 
</syntaxhighlight>
 
</syntaxhighlight>
其他平台需要根据BSP提供的方法进行kernel command line修改,也可以开机进入uboot命令行进行设置。
+
For other SoC based boards you need to make changes in the kernel commandline by following the methods supported by their BSPs or by entering uboot to proceed.
  
 
==临时禁用OverlayFS==
 
==临时禁用OverlayFS==
 
可以做完TF启动卡之后,用 fdisk 操作TF卡,删除 data 分区。
 
可以做完TF启动卡之后,用 fdisk 操作TF卡,删除 data 分区。

Revision as of 14:02, 18 September 2019

查看中文

1 What Is OverlayFS

OverlayFS is a union mount filesystem implementation for Linux. It allows a virtual merge of two partitions, while keeping their actual contents separate. One partition is the rootfs partition and the other is the data partition. It has the following advantages:
1) you can easily restore a system's default settings by formatting the data partition;
2) you can still boot your system since the rootfs is read-only even when the data partition cannot be correctly mounted due to unexpected shutdown.

2 FriendlyELEC's Systems That Support OverlayFS

2.1 Hardware Systems

H3, H5, S5P4418, S5P6818, RK3399 based boards

2.2 OS Systems

FriendlyCore, FriendlyDesktop, Lubuntu

3 How to Check Whether OverlayFS Is Working

Run the df command. If the "/" partition is mounted as "overlay" it means OverlayFS is working;

pi@NanoPi-M1-Plus:~$ df
Filesystem     1K-blocks    Used Available Use% Mounted on
udev              474848       0    474848   0% /dev
tmpfs             102304    3564     98740   4% /run
overlay         28925547 1315493  26112465   5% /
tmpfs             511512       0    511512   0% /dev/shm
tmpfs               5120       4      5116   1% /run/lock
tmpfs             511512       0    511512   0% /sys/fs/cgroup
/dev/mmcblk0p1     40862   11852     29010  30% /boot
tmpfs             102304       0    102304   0% /run/user/1000

4 Partition Settings With OverlayFS

When you use OverlayFS there will be three partitions:rootfs, data and boot, and these partitions correspond to the rootfs.img, the userdata.img and the boot.img separately:

root@NanoPi-M1-Plus:~# lsblk /dev/mmcblk0
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
mmcblk0     179:0    0 29.7G  0 disk
|-mmcblk0p2 179:2    0  1.2G  0 part
|-mmcblk0p3 179:3    0 28.5G  0 part
`-mmcblk0p1 179:1    0   40M  0 part /boot

The system data will be in the rootfs partition and the data written to the root directory will be in the data partition.

5 Restore Factory Settings With OverlayFS

5.1 Method 1: Operate in Userdata Partition

factory reset:

mount /dev/mmcblk0p3 /media/ && cd /media/
mv root/ deleteme.root
mv work/ deleteme.work
reboot

cleanup after reboot:

mount /dev/mmcblk0p3 /media/ && rm -rf /media/deleteme.*

5.2 Method 2: Restore by Setting Commandline Parameters

Add "wipedata=yes" to the kernel's commandline parameters. For S5P4418 and S5P6818 based boards you can do it after system boots;

5.2.1 Restore Factory Settings by Removing Data in Data Partition on System Reboot

sudo fw_setenv bootargs "`cat /proc/cmdline` wipedata=yes"
sudo reboot

5.2.2 Keep Data in Data Partition on System Reboot

sudo fw_setenv bootargs "`cat /proc/cmdline` wipedata=no"
sudo reboot

For other SoC based boards you need to make changes in the kernel commandline by following the methods supported by their BSPs or by entering uboot to proceed.

6 临时禁用OverlayFS

可以做完TF启动卡之后,用 fdisk 操作TF卡,删除 data 分区。