Ubuntu是否有类似Deep Freeze的应用程序?


10

我想知道是否还有Deep Freeze for Linux的替代方案仍在开发中,因为我已经在互联网上阅读了一些内容,并且看起来像开发Deep Freeze的同一家公司也有它的Linux版本。项目已终止。


你为什么要那个?只是不允许非root用户更改系统文件。
David Foerster 2013年

@DavidFoerster我刚刚编辑了问题,以回答您的评论。
Zignd

嗨,您可以尝试以下替代方法sourceforge.net/projects/dafturnofris-id

2
Ubuntu中的普通(现成的)“来宾”用户是即时创建的,他们的家在/tmp,并且在注销后会被清理...这还不够吗?
Rmano 2014年

Answers:


8

OFRIS是一个开源应用程序,可以冻结您的Linux,就像Microsoft Windows操作系统中的Deep Freeze。

对于Ubuntu 9.10、10.04和10.10版本。要安装OFRIS,只需按键盘上的Ctrl+ Alt+ T打开终端。打开时,运行以下命令:

sudo add-apt-repository ppa:tldm217/tahutek.net -y
sudo apt-get update && sudo apt-get install ofris-en -y

对于Ubuntu 11.04、11.10、12.04和13.04版本。要安装OFRIS,只需按键盘上的Ctrl+ Alt+ T打开终端。打开时,运行以下命令:

[COPY文件格式]

if [ $(uname -m) == "x86_64" ]; then deb="http://goo.gl/DleLl"; else deb="http://goo.gl/V94Qs"; fi && wget -q $deb -O ofris.deb && sudo dpkg -i ofris.deb && rm ofris.deb

下图显示了OFRIS在13.04上运行

在此处输入图片说明

资料来源:XGeek


我在15.10中安装了该软件,然后按3以应用冻结,它确认我的系统处于冻结模式。然后我重新启动,我用值创建了一个文件/ var / tmp / myname,然后再次重新启动,但文件仍然存在。怎么冻结?

你到底是什么意思 另外,我需要检查这是否适用于15.10。系统冻结将所有内容重置为冻结之前的状态。请告诉我。
米奇

3

警告:我已经实现了此解决方案,并且确实可以使用,但是如果在上次引导期间对系统进行了较大的更改,则返回快照的合并时间可能会导致引导过程花费很长时间。在此等待期间,用户可能会发现系统正在挂起!

还请注意,任何有足够知识来安装快照的人都可以更改“冻结”状态。我利用了这种可能性来更新“冻结的”系统,但同样,这也可能增加合并(还原到)快照所需的时间!


LVM快照+ cron +脚本=“冻结”状态

我最近开始研究LVM,在我看来,可以使用LVM及其快照功能在计算机上可行地创建“冻结”状态。当然,此方法需要使用LVM(或至少要冻结的分区上的LVM)配置的系统。

摘要:

  • 在LVM分区上安装系统,以在PV上保留足够的空间用于快照
  • 按照所需方式配置系统。
  • 创建一个cron作业,该作业在启动时以root用户身份运行以合并快照,并创建一个新快照以替换合并的快照
  • 所有连续的重新启动都会还原到快照。创建的所有快照均以您创建系统时的状态获取。
  • 另外,可以安装和修改快照(前提是您具有root特权),并且可以根据需要更新“冻结”状态。

概念验证:通过全新安装冻结除一个分区以外的所有内容

安装:

  • 从活动的Ubuntu光盘/ USB引导,然后选择“尝试不安装Ubuntu”的选项。这对于使用LVM手动配置分区很重要
  • 当Ubuntu加载时,使用您选择的工具对磁盘进行分区,以使其具有一个分区,该分区占用驱动器的整个空间。这是我正在使用的:
    • /dev/sda (尺寸1T)
      • /dev/sda1 (尺寸1T)
  • 接下来在终端上设置LVM /dev/sda1。我将把大多数系统放在一个分区上,但是您不必这样做。
    • sudo pvcreate /dev/sda1
    • sudo vgcreate ubuntu-vg /dev/sda1
    • sudo lvcreate -n swap -L 1G ubuntu-vg
    • sudo lvcreate -n unfrozen -L 10G ubuntu-vg
    • sudo lvcreate -n root -l +50%free ubuntu-vg
  • 现在,如果sudo vgs随后运行,sudo lvs应该可以看到卷组“ ubuntu-vg”(vgs输出下的VFree)中剩余的可用空间等于逻辑卷“ root”所占用的空间。 ”(在lvs输出下为LSize)。就我而言,我在ubuntu-vg中有506.44g的空闲空间,并且我的根分区很大,为506.44g。如果卷组中剩余的可用空间等于我要冻结的分区的大小,则我应该能够擦除整个分区,并且仍然能够通过重新启动来恢复。暂时不使用ubuntu-vg中的其余可用空间。稍后我们将使用它。
  • 现在使用手动分区安装Ubuntu image.png
  • 安装完成后,继续并重新引导到新安装的系统。
  • 一旦引导到新系统中,请对其进行配置,以使其完全符合每次计算机启动时的要求。
    • 如果您不是意外更改快照,并且不希望快照分区显示在菜单栏中...
      • mkdir /steady
      • 编辑/etc/fstab通过增加(这是所有一行)/dev/ubuntu-vg/steadystate /steady ext4 defaults,ro,nofail 0 1作为文件的最后一行
    • 由于诸如更新之类的信息在每次重新启动后都会消失,因此您可能需要将其关闭。
    • 如果您在/ unfrozen拥有一个像我一样的未冻结分区,请别忘了让需要访问它的用户访问该分区
  • 一旦按照所需方式完全配置了系统,请创建以下脚本(您将需要root特权)并/root/steadystate.sh使用您喜欢的编辑器另存为。请注意,如果在设置LVM时更改了卷组名称,则还需要在下面的脚本中对其进行更新。
    #!/bin/bash
    LOG=/dev/kmsg

    # wait for merge in progress
    echo -n "Reverting to snapshot if present... " | tee -a $LOG
    merging=1
    while [ "$merging" == "1" ];
    do
        /usr/sbin/service lightdm stop #prevent the auto-login/login screen from loading
        [ "$(sudo lvs -a | grep steadystate)" == "" ] && merging=0
        sleep 1
    done

    # create snapshot
    echo -n "Creating new snapshot... " | tee -a $LOG
    /sbin/lvcreate -s -n steadystate -l +100%free /dev/ubuntu-vg/root

    # make sure root comes online before trying to merge
    while [ ! -e /dev/mapper/ubuntu--vg-root];
    do
        sleep .5;
    done
    echo -n "Scheduling reset to snapshot... " | tee -a $LOG
    /sbin/lvconvert --merge /dev/ubuntu-vg/steadystate

    echo -n "Starting lightdm... " | tee -a $LOG
    /usr/sbin/service lightdm start
  • 最后运行sudo crontab -e,选择一个编辑器,并将其放在@reboot /bin/bash /root/steadystate.sh文件末尾。保存并关闭(Ctrl+ XY保存答案)
  • 重新启动,除了挂载在/ unfrozen上的分区外,您的系统应该已冻结。

之所以可行,是因为快照是在引导时创建的,即使我们在此之后立即传递命令合并快照,在root逻辑卷处于活动状态时也无法合并快照。因此,它将合并操作推迟到下次激活/ dev / ubuntu-vg / root时,下次重新启动时。如果从实时USB启动系统,也会触发此操作。

只是为了踢球,我在重新启动后进入并运行了sudo apt remove --purge firefox* libreoffice-* unity*,通常我不建议这样做,因为它会删除一些有用的程序并使系统处于不太理想的状态! broken.png 该系统甚至无法从GUI正常关闭。那么如何解决这个问题呢?重启! rebooted.png 重新启动后,一切恢复正常。Firefox,LibreOffice和Unity都回到了原来的位置。

我也尝试删除linux *。这使他的计算机无法启动,但是,仅从活动的Ubuntu磁盘启动似乎可以进行合并。再次重新启动使系统处于“冻结”状态

如果您希望能够进行更改,则可以使用rw特权(重新)安装快照,然后将其chroot对其进行更改,并进行要永久保留的任何更改。这并非完美无缺,但这是概念的证明。


1

默认情况下,Ubuntu和大多数其他Unices拒绝普通用户(学生,来宾)对系统文件的写访问权限。只有具有适当授权(用户名和密钥)的管理员才能安装软件,更改系统设置或删除分区。

默认情况下,普通用户只能在其主目录和系统的临时目录中写入。处理一次性来宾会话的一种常用方法是将其主目录放在temp目录中,并将temp目录放在主内存中。

如果要特别确定,请以只读方式挂载系统分区,并在其上放置一个aufs分区,以将更改存储在主内存中。


1

fsprotect是用于保护现有文件系统的一组脚本。fsprotect非常适合公用计算机,例如图书馆,网吧中的计算机。

他们使用aufs打包了一个tmpfs文件系统,强制将更改写入tmpfs文件系统。

根文件系统受initramfs脚本保护。其他文件系统受初始化脚本保护。所有受保护的文件系统都变为只读状态,即使在断电时也能确保其不变性。

要在当前所有受支持的Ubuntu版本中安装fsprotect,请打开终端并输入:

sudo apt-get install fsprotect

使用fsprotect的好处是:

  • 文件系统受到保护,并且永远不会将任何更改写入磁盘。
  • 受保护的文件系统以只读方式安装。这意味着当计算机关闭不正确时,它们不会受到损坏。
  • 这是非常容易使用。
  • 在某些情况下,它使文件系统访问更快。

使用fsprotect的缺点是:

  • 文件系统更改不能超过预定义的字节数限制(由您设置)。
  • 由于tmpfs被大量使用,因此您需要有足够的交换空间。

在Ubuntu 16.04.2。上安装失败 问题是touchinitram脚本中的错误引用。它指向/usr/bin/touch而不是/bin/touch。可以强制执行此操作,但是即使安装后,网络也无法运行。
b_laoshi

网络停止工作可能是因为您使用的是错误的内核或没有头文件的内核。当计算机重新启动时,请等待直到制造商的启动屏幕消失,然后按Shift键以显示GRUB引导选项。在紫色的GRUB屏幕中,选择Ubuntu的高级选项,然后按Enter。将会出现一个新的紫色屏幕,显示内核列表。选择其他内核,然后按Enter。
karel

这实际上是带有所有更新的新安装。我尝试了旧内核,起初它通过网络启动,但是后来我意识到fsprotect并未捆绑在旧内核中。我更新了所有内核,现在从任何一个内核引导时都无法联网。
b_laoshi

1
当然,从grub删除fsprotect选项并更新initramfs会禁用fsprotect,网络将再次正常工作。显然,这是fsprotect中破坏网络的东西。
b_laoshi
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.