whatshot关闭UOS开发者模式的方法,以及不借助官方服务器自行打开开发者模式的方法

@Ta 2020-07-11发布,03-07 16:06修改 38258点击

使用该教程会失去官方售后服务

疑似统信工作人员要我删帖事件中,我们最终争取到了官方对用户自行修改该选项的认可。但是一但你修改该选项,将失去官方售后服务

不过如果你使用UOS或者其他Linux发行版的过程中真的遇到麻烦,无论是否使用了该教程或者因为什么,都可以在这里找到我的联系方式,我非常乐意为你提供力所能及的帮助。


原创声明

该教程所述方法为我在使用UOS个人体验版的过程中独自发现,没有借助任何人提供的机密或者内部信息,所以该方法显然属于用户对自身拥有使用权的操作系统软件的合理使用。

发现过程很简单(这只是原理演示,我当时不是这么操作的,而是在fstransformfsmove阶段发现了类似错误):

sudo -i
mount /dev/sdb2 /mnt
mv /var /mnt

然后mv会报错:

mv: 无法将'/var/lib/deepin/developer-mode/enabled' 移动至'/mnt/var/lib/deepin/developer-mode/enabled': 不允许的操作

然后发现/var/lib/deepin/developer-mode/enabled具有xattr +i属性(禁止删除标识)。

cat /var/lib/deepin/developer-mode/enabled

发现值为1

文件名叫这个名字,还禁止删除,内容还是1,有什么用也就不用多说了吧。


关闭开发者模式

很多人以为UOS开发者模式开了就关不了,但其实在Linux中,很少有东西是不可逆的。你之所以无法关闭它,只是你不知道它是怎么打开的。
如果你知道开发者模式的开关只是一个被设为禁止删除的/var/lib/deepin/developer-mode/enabled文件,那想要关闭它,就太简单了。
在终端中输入如下命令(#开头的不需要输入):

# 取消文件的禁止编辑状态
sudo chattr -i /var/lib/deepin/developer-mode/enabled
# 删除文件
sudo rm /var/lib/deepin/developer-mode/enabled
# 重启
reboot

重启后开发者模式就没了,亲测可用。

注意,开发者模式关闭后,对未签名软件的限制会回到开发者模式还没有打开时的状态。

具体来说,安装在以下目录及其子目录的未签名软件会无法运行:
/opt
/home
/tmp
/dev/shm

但是安装在其他目录的软件则不受影响,比如某些软件可能安装在 /usr 或者 /usr/local ,
或者是其他自定义的目录,比如 /parent 等,都可以正常运行。

所以如果想关掉以后还能自由运行一些软件,可以在根目录创建一个自定义的目录,然后把软件拷贝到里面。

但是那些一定会安装到 /opt 并且改不了路径的软件,关掉开发者模式后就没办法运行了。但如果你真的想尝试,可以试试把它的整个文件夹拷贝到你创建的自定义文件夹里。比如我创建了一个 /parent/apps ,拷贝到里面的所有软件都能运行,只是因为路径变了,需要修改一下启动图标文件(xxx.desktop),或者得手动找到可执行文件双击启动。


打开开发者模式


此外提供一个不登陆帐号不获取证书就能打开开发者模式的方法,可能仅限于个人版(可能已失效,新方法看下面的备注)

  1. 安装所有系统更新,旧版可能不能通过下面的方法进入root会话。
  2. 重启,系统启动时选择Advanced options for UOS 20 Home GNU/Linux,再选择UOS 20 Home GNU/Linux, with Linux 5.3.0-3-amd64 (recovery mode)
  3. 屏幕上会出现一系列字符。等到字符不再滚动,按回车键,然后输入用户密码,再按回车键。
  4. 此时你就进入了单用户模式root会话(字符界面)。输入以下命令(#开头的不需要输入):
# 取消文件的禁止修改状态(如果没有该文件,则跳过这一步。刚安装的系统可能没有该文件,可直接用下面的步骤创建)
sudo chattr -i /var/lib/deepin/developer-mode/enabled
# 把开发者模式标志设为1(注意,`-n`表示不产生换行,在这里是必须的,否则文件内容是1和换行,不起作用)
echo -n 1 > /var/lib/deepin/developer-mode/enabled
# 把文件设为禁止修改
chattr +i /var/lib/deepin/developer-mode/enabled
# 退出单用户模式,进入正常模式
exit

输完exit并回车后,就会进入正常的图形界面,登陆后去看控制中心,你就会发现开发者模式已经打开了。

备注

如果上述步骤2、3、4无法进入单用户模式root会话,或者2所述的菜单已不存在,你还可以通过其他Linux系统(比如U盘安装镜像、LiveCD等)挂载UOS根目录进行操作。

如果你没有LiveCD,还有一个有趣的方法可以进入root会话:

  1. 在GRUB启动菜单上按e,进入编辑模式。

  2. 跳转到linux开头的行,把root=UUID=后面一串内容中的数字随便改动一位,比如把0改成1。注意不是改search开头的行。该操作的目的是让内核开机时找不到系统根目录,这样它就会陷入initramfs恢复会话。

  3. 按F10启动,过一会儿屏幕上就会出现(initramfs)字样,此时你就在root会话里了。不过这个root会话进入的系统并不是uos根目录,而是内核的启动映像(initramfs)。所以只能用部分命令。但是我们可以自行挂载uos根目录然后chroot进去。

  4. 运行blkid,看uos根目录的设备路径,比如我的是/dev/sda5

  5. 挂载并chroot到uos根目录(ext4和sda5替换为你实际的文件系统类型和设备号,注意省略-t ext4可能会让mount命令报错,initramfs中的mount命令没有分区类型自动检测能力):

    mkdir /mnt
    mount -t ext4 /dev/sda5 /mnt
    cd /mnt
    mount --bind /dev dev
    mount --bind /dev/pts dev/pts
    mount --bind /proc proc
    mount --bind /sys sys
    chroot /mnt /bin/bash -l
    mount -a
    
  6. 第五步chroot之后就在uos根目录的root会话了,此时就可以用上面步骤4所述的方法创建/var/lib/deepin/developer-mode/enabled来开启开发者模式了。


官网的相同帖子(大概率是要被删了):http://bbs.chinauos.com/forum.php?mod=viewthread&tid=1560

回复列表(14|隐藏机器人聊天)
添加新回复
回复需要登录