[Product manager face to face] 磐石 Q&A | deepin 25 常见问题解答——磐石不可变系统篇
Tofloor
poster avatar
deepin小助手
Super Moderator
OM
2025-04-25 11:30
Author

随着 deepin 25 系列版本的发布,我们收到众多社区伙伴围绕「磐石不可变系统」特性的深度探讨与宝贵建议。为回应大家的热切期待,本篇将聚焦这一革新性设计的核心逻辑与实践场景,从特性解读、使用技巧到高频疑问,希望能够解决大家对磐石不可变系统的一些困惑和疑问。

image.png


Q1:为什么要引进磐石不可变系统?

旧系统的核心组件(如/usr)缺乏底层保护机制,可以被轻易删除或修改,存在极大安全隐患;此外旧版备份与回滚机制也存在效率低且操作繁琐的问题,一旦出现系统故障可能面临数据丢失风险。

基于对系统安全性和使用便捷性的双重考量,故而决定在 deepin 操作系统中引入磐石不可变系统,提供“只读保护”、“原子更新”、“快照管理”、“无忧还原”等功能。


Q2:什么是“原子更新”?

原子更新可以理解为系统更新的「全有或全无」法则:即更新操作要么完全成功,要么回滚至原状态,确保不会出现部分更新的状态,避免系统异常。

与原子更新相配套的是回滚机制:若在更新后无法正常启动,它可以通过启动时选择旧的系统镜像回滚到之前的版本,从而恢复正常的系统运行状态。


Q3:什么是“快照管理”?

系统会在更新时自动创建快照,记录当前系统的状态,用户也可以通过手动操作或利用备份还原工具来创建当前系统的快照。如果遇到软件安装失败或配置错误,只需一键恢复到之前的快照点,即可瞬间回到正常状态。

目前快照的管理范围有 /usr,/etc,/opt,/boot,/var,使用快照管理功能可以快速对这些部分或全部内容进行备份,不涉及用户数据。

注:磐石系统的快照管理范围仅包含系统文件,配置文件和部分 /var 目录中的重要文件,用户数据不包含在内,创建或回滚快照时,用户数据均不受影响。


Q4:什么是“无忧还原”?

“无忧还原”是指系统能够识别用户的修改内容,并在下一次重启时选择全部丢弃或部分丢弃,达到还原的效果。

典型适用场景:

  • 临时外借电脑或用于共享场景时,开启无忧还原可确保他人对系统的任何修改(如安装软件、更改设置)在重启后自动消失,保护隐私安全;
  • 开发者需测试高危操作(如执行 sudo rm -rf /--no-preserve-root 等命令)时,开启此功能可避免「手滑误删」导致的不可逆后果,重启后系统自动回归安全状态。

Q5:什么是“只读保护”?

磐石不可变系统在默认情况下,对关键系统目录(如 /usr、/bin、/lib 等)实施了严格的保护措施,这些目录被挂载为只读文件系统。

无论是恶意软件还是误操作,都无法对系统核心文件造成破坏,杜绝因系统文件损坏导致的系统异常。


Q6:作为想要“折腾”系统的开发者,要如何关闭磐石系统的“只读保护”?

在磐石不可变系统开启“只读保护”功能的情况下,用户无法对其进行任何修改操作。

即使尝试使用 root 权限进行写操作,系统也会拒绝并提示“只读文件系统”错误,有效防止用户或恶意软件对系统关键文件的意外或恶意修改。

若您想要关闭“只读保护”,请参考以下命令(执行完命令后,需重启系统才可以生效)。

  • deepin 25 Alpha 及后续版本
sudo deepin-immutable-writable enable -d /usr
  • deepin 25 Preview
sudo deepin-immutable-ctl disable-system-protect enable

注:关闭系统保护后,系统中 /usr 目录会以读写的模式进行挂载,用户可通过 root 修改 /usr 中的内容。

磐石不可变系统并不推荐使用者关闭系统保护功能,即使关闭保护,当您再次开启时,期间的修改可能会被还原,这取决于具体的命令。


Q7:如何重新开启磐石系统的“只读保护”?

若您想要重新开启磐石系统的“只读保护”,请参考以下命令,命令将在重启后生效。

  • deepin 25 Alpha 及后续版本
sudo deepin-immutable-writable disable
  • deepin 25 Preview
 deepin-immutable-ctl disable-system-protect disable

Q8:如何正确地更新磐石不可变系统?

您始终可以通过「控制中心」进行系统升级,这也是最推荐的更新方式。

通过控制中心升级时,还将额外提供还原点的创建和更新异常中断默认恢复到备份版本的功能。

此外,若您目前正在使用 deepin 25 Preview,可以通过以下命令升级至 Alpha 版本:

deepin-immutable-ctl ota upgrade

若您正在使用 deepin 25 Alpha,ota 子命令被废除,系统仍然保持 apt/dpkg 的管理逻辑,您可以执行sudo apt dist-upgrade 完成系统升级。


Q9:磐石不可变系统是否会影响 deb 等格式软件包的安装与运行?

若您安装的是deb包,由于磐石系统接管了 apt, dpkg 等命令,因此无需关闭只读保护功能,可直接安装应用。

但对于其他格式的软件包(.run,.bundle等),由于涉及到修改 /usr 等只读目录,则需要先关闭系统保护功能后方可安装。


Q10:备份还原占用过多磁盘空间如何处理?

磐石不可变系统提供了快照创建的相关命令,平均创建一次快照约增加 200MB 的存储占用空间。

此外也提供支持查询历史快照信息,加上 -j 参数即可查询并方便解析,大家可以实现自定义脚本删除历史快照,避免磁盘空间的过多占用。


以上就是 deepin 25「磐石不可变系统」使用过程中用户反馈较为集中的典型问题,希望能为大家提供有效参考。如果您在使用中遇到本文未覆盖的问题,欢迎在评论区留言补充。

此外我们还在社区论坛中收集到了许多富有价值的建议:比如期待磐石系统向「无感读写」体验升级、提供清晰的备份节点管理、对可能破坏系统的高危操作增加预警提示等。这些需求均已纳入产品迭代规划,我们会持续推动优化落地。

由于设备型号、硬件配置、操作习惯等差异,部分用户可能会遇到个例场景问题,如果以上方案无法解决您遇到的问题,欢迎大家在论坛发帖提问,会有社区产品研发和热心用户第一时间响应。

内容基于磐石技术交流会整理:活动公告:共筑磐石系统—deepin 25 技术交流会(已结束)

以用为本.png

Reply Favorite View the author
All Replies
2 / 3
To page
Iresee
deepin
2025-04-28 12:25
#21
随机数

sudo deepin-immutable-writable enable -d /usr后,想修改/usr/share/applications/deepin-deb-installer.desktop【想将其中MimeType中的application-x-uab改成application/x-uab】,结果保存时还是提示只读,也就是说这个命令并不生效。

是的,命令无法生效,赶快改!

Reply View the author
deepin小助手
Super Moderator
OM
2025-04-28 14:14
#22
Iresee

是的,命令无法生效,赶快改!

执行完命令后需要重启系统才可以生效:

若您想要关闭“只读保护”,请参考以下命令。

  • deepin 25 Alpha 及后续版本
sudo deepin-immutable-writable enable -d /usr
​
  • deepin 25 Preview
sudo deepin-immutable-ctl disable-system-protect enable
​

注:关闭系统保护后,系统中 /usr 目录会以读写的模式进行挂载,用户可通过 root 修改 /usr 中的内容。

Reply View the author
Iresee
deepin
2025-04-28 18:39
#23
deepin小助手

执行完命令后需要重启系统才可以生效:

若您想要关闭“只读保护”,请参考以下命令。

  • deepin 25 Alpha 及后续版本
sudo deepin-immutable-writable enable -d /usr
​
  • deepin 25 Preview
sudo deepin-immutable-ctl disable-system-protect enable
​

注:关闭系统保护后,系统中 /usr 目录会以读写的模式进行挂载,用户可通过 root 修改 /usr 中的内容。

有人测试,不能关闭啊,重启后也不可以,重启无数次了,建议自己输入命令尝试一下,别太自信

sudo deepin-immutable-writable status
Status:
{
    "version": 4,
    "conf": {
        "enable": true,
        "whitelist": [],
        "overlayDirs": [
            "/"
        ],
        "overlayAllDirs": false,
        "clearAfterReboot": false,
        "cleanData": false
    }
}
Reply View the author
deepin小助手
Super Moderator
OM
2025-04-29 10:34
#24
Iresee

有人测试,不能关闭啊,重启后也不可以,重启无数次了,建议自己输入命令尝试一下,别太自信

sudo deepin-immutable-writable status
Status:
{
    "version": 4,
    "conf": {
        "enable": true,
        "whitelist": [],
        "overlayDirs": [
            "/"
        ],
        "overlayAllDirs": false,
        "clearAfterReboot": false,
        "cleanData": false
    }
}

"enable": true,

这就是提示可读写是开启状态的,表示关闭成功了。请问是执行什么读写操作报错了么?

Reply View the author
Iresee
deepin
2025-04-29 11:07
#25
deepin小助手

"enable": true,

这就是提示可读写是开启状态的,表示关闭成功了。请问是执行什么读写操作报错了么?

不能测试一下吗!真的还是不能读写啊,你可以测试一下啊,好多人反馈了

很影响体验的,P2级别的吧,开发者表示好多软件安装不了,很影响体验

https://bbs.deepin.org/zh/post/286740

Reply View the author
Iresee
deepin
2025-04-29 11:16
#26
deepin小助手

"enable": true,

这就是提示可读写是开启状态的,表示关闭成功了。请问是执行什么读写操作报错了么?

root@Deepin:/home# sudo deepin-immutable-writable status
Status:
{
    "version": 4,
    "conf": {
        "enable": true,
        "whitelist": [],
        "overlayDirs": [
            "/"
        ],
        "overlayAllDirs": false,
        "clearAfterReboot": false,
        "cleanData": false
    }
}
root@Deepin:/home# chmod -R 770 /usr/share/applications/enpass.desktop
chmod: 更改 '/usr/share/applications/enpass.desktop' 的权限: 只读文件系统

代码敲烂了,重启重启到怀疑人生,还是不行

sudo deepin-immutable-writable enable -d /
sudo deepin-immutable-writable enable -d /usr
sudo deepin-immutable-writable enable -d /bin
sudo deepin-immutable-writable enable -d /lib
Reply View the author
electricface
deepin
2025-04-29 11:47
#27
Iresee
root@Deepin:/home# sudo deepin-immutable-writable status
Status:
{
    "version": 4,
    "conf": {
        "enable": true,
        "whitelist": [],
        "overlayDirs": [
            "/"
        ],
        "overlayAllDirs": false,
        "clearAfterReboot": false,
        "cleanData": false
    }
}
root@Deepin:/home# chmod -R 770 /usr/share/applications/enpass.desktop
chmod: 更改 '/usr/share/applications/enpass.desktop' 的权限: 只读文件系统

代码敲烂了,重启重启到怀疑人生,还是不行

sudo deepin-immutable-writable enable -d /
sudo deepin-immutable-writable enable -d /usr
sudo deepin-immutable-writable enable -d /bin
sudo deepin-immutable-writable enable -d /lib

注意修改这种设置后,需要重启才生效。

不起作用,可以调查一下 /usr 的挂载选项。

比如执行命令:

findmnt -un /usr 

应该要看到 overlay 之后有 rw 选项。

比如我这个新版本的输出:

findmnt -un /usr
/usr
usr-overlay
overlay rw,relatime,lowerdir=/root/persistent/ostree/data/029dafb9c54076ed7e604bc120db2149f266277efe85705c48def761f5f234ad.0/checkout/usr:/root/ostree/deploy/deepin/deploy/305b5432272edfc578eda7abb802c355278990694c183a38fa830c4e555c3d7f.0/usr,upperdir=/root/persistent/overlay/data/029dafb9c54076ed7e604bc120db2149f266277efe85705c48def761f5f234ad.0/usr-upper,workdir=/root/persistent/overlay/data/029dafb9c54076ed7e604bc120db2149f266277efe85705c48def761f5f234ad.0/usr-work
Reply View the author
electricface
deepin
2025-04-29 11:53
#28

还可能是 initramfs 没有更新?可以试试执行:

sudo update-initramfs -k all -u
Reply View the author
Iresee
deepin
2025-04-29 12:04
#29
electricface

注意修改这种设置后,需要重启才生效。

不起作用,可以调查一下 /usr 的挂载选项。

比如执行命令:

findmnt -un /usr 

应该要看到 overlay 之后有 rw 选项。

比如我这个新版本的输出:

findmnt -un /usr
/usr
usr-overlay
overlay rw,relatime,lowerdir=/root/persistent/ostree/data/029dafb9c54076ed7e604bc120db2149f266277efe85705c48def761f5f234ad.0/checkout/usr:/root/ostree/deploy/deepin/deploy/305b5432272edfc578eda7abb802c355278990694c183a38fa830c4e555c3d7f.0/usr,upperdir=/root/persistent/overlay/data/029dafb9c54076ed7e604bc120db2149f266277efe85705c48def761f5f234ad.0/usr-upper,workdir=/root/persistent/overlay/data/029dafb9c54076ed7e604bc120db2149f266277efe85705c48def761f5f234ad.0/usr-work

重启没有效果,检查后是ro

Reply View the author
electricface
deepin
2025-04-29 13:19
#30
Iresee

重启没有效果,检查后是ro

你可以多提供一些信息。

findmnt

命令的完整输出贴出来。

查看 deepin-immutable-ctl 的版本

dpkg -l|grep deepin-immutable

检查 /run/deepin-immutable-writable/booted 文件是否存在?

stat /run/deepin-immutable-writable/booted
Reply View the author
electricface
deepin
2025-04-29 13:37
#31

这里的配置感觉是错误的,/ 可能不能配置到 overlayDirs 目录。

  "overlayDirs": [
            "/"
        ],
Reply View the author
electricface
deepin
2025-04-29 14:37
#32

修复方法:

sudo deepin-immutable-writable disable
# 注意一定要是 -d /usr
sudo deepin-immutable-writable enable -d /usr 
reboot
Reply View the author
186******89
deepin
2025-04-29 18:38
#33

社区版Alpha(25),内核6.12.20-amd64 正常在使用,手贱点到更新,更新完默认启动不了,锁root账户了,怎么解决,现在只能进下面一个还原选项貌似

第一个默认死活进不去了,
截图_dde-control-center_20250429183817.png

Reply View the author
Iresee
deepin
2025-04-29 18:46
#34
Iresee

重启没有效果,检查后是ro

sudo update-initramfs -k all -u
update-initramfs: Generating /boot/initrd.img-6.12.20-amd64-desktop-rolling
cp: 对 '/lib/x86_64-linux-gnu/plymouth/label.so' 调用 stat 失败: 没有那个文件或目录
cryptsetup: ERROR: Couldn't resolve device usr-overlay
W: /sbin/fsck.none doesn't exist, can't install to initramfs
setupcon is missing. Please install the 'console-setup' package.
cp: 对 '/lib/x86_64-linux-gnu/plymouth/label.so' 调用 stat 失败: 没有那个文件或目录
live-boot: core filesystems devices utils udev blockdev dns.
update-initramfs: Generating /boot/initrd.img-6.12.9-amd64-desktop-rolling
cp: 对 '/lib/x86_64-linux-gnu/plymouth/label.so' 调用 stat 失败: 没有那个文件或目录
cryptsetup: ERROR: Couldn't resolve device usr-overlay
W: /sbin/fsck.none doesn't exist, can't install to initramfs
setupcon is missing. Please install the 'console-setup' package.
cp: 对 '/lib/x86_64-linux-gnu/plymouth/label.so' 调用 stat 失败: 没有那个文件或目录
live-boot: core filesystems devices utils udev blockdev dns.

Reply View the author
Iresee
deepin
2025-04-29 18:48
#35
electricface

你可以多提供一些信息。

findmnt

命令的完整输出贴出来。

查看 deepin-immutable-ctl 的版本

dpkg -l|grep deepin-immutable

检查 /run/deepin-immutable-writable/booted 文件是否存在?

stat /run/deepin-immutable-writable/booted

谢谢你,这个问题困扰我很久了

这是运行的结果

root@Deepin:/home# findmnt -un /usr 
/usr
  usr-overlay
    overlay ro,relatime,lowerdir=/root/persistent/ostree/data/753e42ee34b94d7a1c6eb27428ff29311483fe72da5703ead3dfa536c2a0d215.0/checkout/usr:/root/ostree/deploy/deepin/deploy/0eb2a017fb8de28753c09d34d15bd3fa95a350f715f51acad21d22f581d7c4c6.0/usr,upperdir=/root/persistent/overlay/data/753e42ee34b94d7a1c6eb27428ff29311483fe72da5703ead3dfa536c2a0d215.0/usr-upper,workdir=/root/persistent/overlay/data/753e42ee34b94d7a1c6eb27428ff29311483fe72da5703ead3dfa536c2a0d215.0/usr-work
root@Deepin:/home# dpkg -l|grep deepin-immutable
ii  deepin-immutable-boot                             0.0.35.1                                 amd64        deepin immutable system boot package
rc  deepin-immutable-ctl                              0.0.35.1                                 amd64        deepin immutable ctl tool
root@Deepin:/home# stat /run/deepin-immutable-writable/booted
stat: 对 '/run/deepin-immutable-writable/booted' 调用 statx 失败: 没有那个文件或目录

调用 statx 失败: 没有那个文件或目录,是这个造成的吗,如何解决

Reply View the author
Iresee
deepin
2025-04-29 18:53
#36
electricface

修复方法:

sudo deepin-immutable-writable disable
# 注意一定要是 -d /usr
sudo deepin-immutable-writable enable -d /usr 
reboot

问题依旧,安装代码操作了

root@Deepin:/home# chmod -R 770 /usr/share/applications/xbyyunpan.desktop
chmod: 更改 '/usr/share/applications/xbyyunpan.desktop' 的权限: 只读文件系统

root@Deepin:/home# sudo deepin-immutable-writable status
Status:
{
"version": 4,
"conf": {
"enable": true,
"whitelist": [],
"overlayDirs": [
"/usr"
],
"overlayAllDirs": false,
"clearAfterReboot": false,
"cleanData": false
}
}
Reply View the author
electricface
deepin
2025-04-30 10:25
#37
dpkg -l|grep deepin-immutable
ii  deepin-immutable-boot                             0.0.35.1                                 amd64        deepin immutable system boot package
rc  deepin-immutable-ctl                              0.0.35.1                                 amd64        deepin immutable ctl tool

这里看到 deepin-immutable-ctl 是卸载状态,这个是磐石重要组件,你可以补充安装 deepin-immutable-ctl 。

修复方法:

sudo mount -o remount,rw --make-shared /usr
sudo apt install deepin-immutable-ctl deepin-immutable-boot
sudo update-initramfs -k all -u
reboot

我测试过 deepin-immutable-ctl 卸载状态使用 deepin-immutable-writable ,它的让 /usr 变为 rw 挂载的功能也是正常的。不清楚你电脑上为什么总不正常了。

可以查看配置文件:/etc/deepin-immutable-ctl/writable.json

检查 deepin-immutable-boot 包完整性:

dpkg -V deepin-immutable-boot

没有任何输出就是完整的。

Reply View the author
随机数
deepin
2025-04-30 11:52
#38
deepin小助手

"enable": true,

这就是提示可读写是开启状态的,表示关闭成功了。请问是执行什么读写操作报错了么?

是不是把开启和关闭的命令搞反了。我测试是成功的,而且,如果不用sudo,虽然也没有任何执行失败的提示,但是重启后就是不生效,因此推断应该都要用sudo来进行开关。

Reply View the author
Iresee
deepin
2025-04-30 18:34
#39
electricface
dpkg -l|grep deepin-immutable
ii  deepin-immutable-boot                             0.0.35.1                                 amd64        deepin immutable system boot package
rc  deepin-immutable-ctl                              0.0.35.1                                 amd64        deepin immutable ctl tool

这里看到 deepin-immutable-ctl 是卸载状态,这个是磐石重要组件,你可以补充安装 deepin-immutable-ctl 。

修复方法:

sudo mount -o remount,rw --make-shared /usr
sudo apt install deepin-immutable-ctl deepin-immutable-boot
sudo update-initramfs -k all -u
reboot

我测试过 deepin-immutable-ctl 卸载状态使用 deepin-immutable-writable ,它的让 /usr 变为 rw 挂载的功能也是正常的。不清楚你电脑上为什么总不正常了。

可以查看配置文件:/etc/deepin-immutable-ctl/writable.json

检查 deepin-immutable-boot 包完整性:

dpkg -V deepin-immutable-boot

没有任何输出就是完整的。

按照你的命令后出现了黑屏,提示root account locked

官方给文档了,可是不知道如何解决

已老实,求放过

Deepin给你机会不中用啊,半年后回来了,搞不好就终身不回来了,差劲

Reply View the author
.
deepin
2025-05-05 21:59
#40
Iresee

按照你的命令后出现了黑屏,提示root account locked

官方给文档了,可是不知道如何解决

已老实,求放过

Deepin给你机会不中用啊,半年后回来了,搞不好就终身不回来了,差劲

我也遇到了这个问题,我无法正常安装docker相关组件

Reply View the author
2 / 3
To page