[分享]开启 Ubuntu Linux 自带的还原卡 overlayroot 软件

系统安装、升级讨论
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
回复
zhangjint5
帖子: 304
注册时间: 2011-01-02 12:31

[分享]开启 Ubuntu Linux 自带的还原卡 overlayroot 软件

#1

帖子 zhangjint5 » 2018-01-13 10:08

最近玩树莓派的时候,发现这类开发板通常关机就直接拔电源了,久而久之总会有导致root文件系统损坏的概率。一番搜索发现有个老外发的.sh脚本,可以将树莓派的root挂载为只读,系统的写入操作则会使用内存进行缓冲。关机,重启后 root 保持原样。他使用的是 overlayfs。这简直就是还原卡的功能呀。

今天一番搜索,发现正常版本的 Ubuntu 也有这样的功能,看看我实现后的效果先:【我的系统是 Ubuntu GNOME 16.04.3】

go@go-ub:~$ mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
udev on /dev type devtmpfs (rw,nosuid,relatime,size=1935980k,nr_inodes=483995,mode=755)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=392752k,mode=755)
/dev/sda5 on /media/root-ro type ext4 (ro,relatime,data=ordered)
tmpfs-root on /media/root-rw type tmpfs (rw,relatime)
overlayroot on / type overlay (rw,relatime,lowerdir=/media/root-ro,upperdir=/media/root-rw/overlay,workdir=/media/root-rw/overlay-workdir/_)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
此处略掉很多字..........................


可以看到真正的root是sda5,使用ro只读挂载的,而 / 则是overlayroot。

实现这个功能很简单

首先:sudo apt install overlayroot 安装一下软件

然后编辑配置文件:/etc/overlayroot.conf

将最后的:overlayroot="" 改成 overlayroot="tmpfs" (我这里设置用内存接受写缓冲【切勿大量写入填满内存缓冲】,如果需要改成用硬盘接受写缓冲请仔细看说明。)

重启后root文件系统就进入与还原卡一样的保护模式了,自己用mount看挂载点验证一下。

如果想临时进入不还原的开放模式也非常简单,在开机到 grub2 的时候,编辑引导参数加上 overlayroot=disable 即可进入正常模式,重启后继续保护模式。所以学校机房使用时记得给 grub2 上密码。

可以考虑将 home 等数据单独分区,单独挂载,让其不还原。

那些喜欢将 Ubuntu 安装在U盘上移动使用的建议开启此功能。

OVER !
头像
vickycq
帖子: 4507
注册时间: 2011-03-20 13:12
系统: Debian
来自: 山东省寿光县
联系:

Re: [分享]开启 Ubuntu Linux 自带的还原卡 overlayroot 软件

#3

帖子 vickycq » 2018-01-13 14:36

楼主这个办法不错。我以前都是用 live-boot 这个软件包辅助实现,把 rootfs 做成 squashfs 镜像。跟楼主的方法相比,由于 squashfs 镜像无法修改,想再装个软件或改配置很麻烦。(除非再覆盖一层 persistence 分区/文件) 楼主的方法简单多了。

(不过 squashfs 镜像的一个优势是精简后可以全部装入内存 \( toram\),变成类似 ramos,跑起来飞快。另外在机房里批量部署也比较方便)
科学之子 写了:具体到我个人来说,我都是资料保存了之后sync然后断电.
对于开发板,这个玩法的一大意义是防止 SD 卡一年半载后挂掉
Debian 中文论坛 - forums.debiancn.org
欢迎所有 Debian GNU/Linux 用户
头像
TeliuTe
论坛版主
帖子: 7668
注册时间: 2007-11-25 13:29
系统: 16/18/20/w7
来自: 新疆博乐
联系:

Re: [分享]开启 Ubuntu Linux 自带的还原卡 overlayroot 软件

#4

帖子 TeliuTe » 2018-01-13 22:15

标记一下备用,
刚用的时候想过,后面限制学生普通用户,就没在考虑这个问题
头像
Ping-Wu
帖子: 1822
注册时间: 2012-11-14 9:34
系统: Debian 12

Re: [分享]开启 Ubuntu Linux 自带的还原卡 overlayroot 软件

#5

帖子 Ping-Wu » 2018-01-14 5:01

vickycq 写了:由于 squashfs 镜像无法修改,想再装个软件或改配置很麻烦。
一般我们修改 squashfs 镜像的方法如下(细节不列):
mount filesystem.squashfs root-ro -o loop,ro
mount casper-rw root-rw -o loop,rw
mount none -t overlayfs workdir -o lowdir=root-ro,upperdir=root-rw
mksquashfs workdir newfilesystem.squashfs -comp xz
然后把 newfilesystem.squashfs 复制成 filesystem.squashfs。

不知道有没有办法把整个系统(ext4)变成 squashfs 来开机?
头像
Ping-Wu
帖子: 1822
注册时间: 2012-11-14 9:34
系统: Debian 12

Re: [分享]开启 Ubuntu Linux 自带的还原卡 overlayroot 软件

#6

帖子 Ping-Wu » 2018-01-14 5:49

Ping-Wu 写了:
vickycq 写了:由于 squashfs 镜像无法修改,想再装个软件或改配置很麻烦。
一般我们修改 squashfs 镜像的方法如下(细节不列):
mount filesystem.squashfs root-ro -o loop,ro
mount casper-rw root-rw -o loop,rw
mount none -t overlayfs workdir -o lowdir=root-ro,upperdir=root-rw
mksquashfs workdir newfilesystem.squashfs -comp xz
然后把 newfilesystem.squashfs 复制成 filesystem.squashfs。

不知道有没有办法把整个系统(ext4)变成 squashfs 来开机?
必须提一下,有一阵子 Ubuntu 里的 overlayfs 故障了,我们必须改用 aufs 档案系统,第三个步骤改为(细节省略):
mount -t aufs -o br:root-rw:root-ro none workdir
如果有人有兴趣把目前正在使用的 Ubuntu 系统“烧成” squashfs 然后放到 USB 里开机的话(即 LiveUSB),可以参考下面一篇文章:

https://help.ubuntu.com/community/MakeA ... iskInstall

Fedora 以前也可以这么做,但我在 Fedora 26/27 尝试了很多次都失败了。可以很容易的制作 “定制的U棒” (customized USB)也许是 Ubuntu 系统最大的优点之一吧。
科学之子
帖子: 2284
注册时间: 2013-05-26 6:58
系统: Debian 9

Re: [分享]开启 Ubuntu Linux 自带的还原卡 overlayroot 软件

#7

帖子 科学之子 » 2018-09-13 20:25

Ping-Wu 写了: 2018-01-14 5:49必须提一下,有一阵子 Ubuntu 里的 overlayfs 故障了,我们必须改用 aufs 档案系统
具体是怎样的故障?编译时的相关配置没开启或不恰当还是怎么回事?
记得有次Debian的backport内核没指定bcache模块,结果就是bcache在那个BPO内核用不了.
头像
Ping-Wu
帖子: 1822
注册时间: 2012-11-14 9:34
系统: Debian 12

Re: [分享]开启 Ubuntu Linux 自带的还原卡 overlayroot 软件

#8

帖子 Ping-Wu » 2018-09-14 8:40

科学之子 写了: 2018-09-13 20:25
Ping-Wu 写了: 2018-01-14 5:49必须提一下,有一阵子 Ubuntu 里的 overlayfs 故障了,我们必须改用 aufs 档案系统
具体是怎样的故障?编译时的相关配置没开启或不恰当还是怎么回事?
记得有次Debian的backport内核没指定bcache模块,结果就是bcache在那个BPO内核用不了.
问题问得正是时候。

Ubuntu 16.04.1 及以前,官方版的 LiveUSB 是用 overlayFS 的格式挂载(mount)。但从 16.04.2 后,却改为 aufs 格式。

我查一下了 Ubuntu 18.04.1 的 LiveUSB,显示应该已经转回 overlayFS了!

LiveUSB$ mount

/cow on / type overlay (rw,relatime,lowerdir=//filesystem.squashfs,upperdir=/cow/upper,workdir=/cow/work)

详细情形如何,还没有时间去测试。
回复