OEM安装转换为常规安装。文件在哪里?

背景:在戴尔Latitude上进行的Ubuntu 18.04的OEM安装。请注意,这不是OEM安装的Ubuntu,而是我使用“以OEM方式安装”选项安装的Ubuntu 18.04。
在浏览菜单时,用户点击了某个东西,在下次启动时将OEM安装更改为常规安装,并使用一个不同于“oem”的用户名。他被提示填写常规安装屏幕,并尽力填写。没有任何地方警告数据将会丢失。系统立即关闭,现在我已经将驱动器以只读方式挂载到我的桌面上。
既然已经转换为常规安装,如何恢复位于“/home/oem/”中的数据呢?请注意,“extundelete”无法找到磁盘上删除的任何内容,但我确实看到自定义的“/opt/”目录与第三方应用程序仍然完好无损。
我使用了autopsy来扫描驱动器,我看到有一个名为/home/oem/的文件(而不是目录),但它的内容似乎没有用处: https://pastebin.com/XXCiu7Bb 我还尝试使用testdisk(Photorec工具)打开分区,但我也看到了文件/home/oem,但没有/home/oem/目录,我知道这是OEM用户的主目录。可能我在恢复过程的早期阶段意外创建了这个文件,当时它仍然在笔记本电脑上,但现在我已经将驱动器只读地挂载在另一台计算机上。是的,我知道由于驱动器已被挂载为可读写,可能会丢失一些数据。
我应该如何恢复用户在OEM安装中拥有的任何文件?如果可能的话,我将非常满意来自/home/oem/目录中不存在的任何内容,但大多数是文本和ODT文件。

3你甚至有一个“oem”用户似乎有点奇怪。OEM安装系统的设计是这样的,第一次启动时,用户会被提示创建自己的用户名/密码并设置自己的帐户。我猜Dell搞砸了什么,你的用户点击了“准备发货给最终用户”的按钮(这个按钮本来就不应该存在)。至于恢复,也许可以尝试使用photorec等工具? - Kaz Wolfe
@KazWolfe:尽管这被称为OEM安装,但它并非由戴尔安装。这台机器原本搭载了某个版本的Windows系统,我在上面安装了Ubuntu。 - dotancohen
这是我第一次见到OEM安装。自2007年以来,我一直在安装Ubuntu,自2001年9月以来一直在使用Linux,但直到现在我才看到OEM安装选项。我没有意识到它可以如此轻松地被清除。话虽如此,没有任何借口不备份用户数据。无论是硬件故障、软件错误、恶意意图、失误还是纯粹的愚蠢,计算机都会出问题。 - dotancohen
唯一我能想到家用用户使用原始设备制造商(OEM)安装的情况是当他们想要将自己的计算机卖给别人或赠送给别人时。如果我卖给你一台装有Ubuntu的计算机,并在/home/oem中保留了一个ssh密钥,以便我可以随时远程登录到你的计算机,你肯定不会开心。同样,如果你发现我在/home/oem文件夹中留下的图片收藏,我也不会开心。 - user68186
在这种情况下不会有帮助,但你应该删除/home/oem:https://askubuntu.com/questions/633424/should-i-keep-the-oems-default-account - WinEunuuchs2Unix
1我投票支持这个问题,因为它是一个很好的提醒,让人们每天备份他们创建的文件(以及配置设置)。 - WinEunuuchs2Unix
2个回答

让我们快速开始了解OEM环境的一般目的:它允许一次创建和定制单个机器或小批量机器。这与Windows中的审核模式概念(相对)类似。典型的OEM工作流程如下:

  1. OEM启动设备并将其设置为OEM模式。
  2. OEM将配置设备、安装应用程序、加载驱动程序等。
  3. 配置完成后,OEM将准备好的设备交付给最终用户以便发货。系统将关闭/重启。[我假设这是用户运行的步骤,导致了整个情况。]
  4. 如果设备是“黄金主设备”且属于较大批次的设备之一,该设备将被镜像和克隆到其他设备。
  5. 准备好的设备将被发货给最终用户。
  6. 用户收到准备好的设备,打开设备并进行OOBE设置(用户名、密码等)。
大多数家庭或小型车间提供Ubuntu安装的地方会按设备进行OEM安装,而不使用任何镜像。用户收到设备后,在首次启动时会提示他们创建账户并配置一切。
所以,当设备准备好发货时,oem用户会发生什么情况呢?嗯,当设备准备好发货时,将启动一系列任务,删除OEM用户并准备环境(卸载软件包、更新systemd单元文件等)。所有准备的脚本都位于/usr/sbin/oem-config*,可以在此处查看。然后,用户会被转回到Ubiquity(设置界面),在那里完成账户设置。
坏消息是,所有这些任务都需要大量的写入操作。之前被/home/oem占用的(最近释放出来的)块将被新用户的配置和新系统以及OOBE配置所使用。
说了这么多,你试图恢复这些数据是一场艰苦的战斗。丢失的文件(相对来说)很小,因此在创建新账户时很容易被覆盖。像photorec/testdiskautopsy这样的工具可能是你最好的选择,就像你已经尝试过的那样。如果这些工具无法恢复任何东西,除非使用一些非常昂贵和/或非常强大的恢复工具,通常人们无法获得,否则可能没有更多的办法。
你提到了一个/home/oem的文件以及一个文件夹的存在。这可能会让数据恢复工具有点困惑 - 一个文件不能有子文件,所以在这一点上,任何试图拼凑文件树的尝试都会失败。运行磁盘恢复工具时,请确保查找任何“孤立”的文件或者不属于特定目录的文件。
我打算回到评论中建议使用 photorec 的推荐。与 testdisk 一样,它不专注于分区或文件系统级别的恢复,而是尝试拉取和恢复单个文件,同时忽略目录或文件系统结构。这是次优的(路径和潜在文件名会丢失),但比没有任何恢复更好。我怀疑 autopsy 有一个类似的“杂项”输出目录,但我对工具不够熟悉,无法告诉您在哪里查找。

如果 photorec 无法恢复文件本身,则很可能它们在用户启动的个性化阶段期间已被(大部分)覆盖。在这种情况下,最好请数据取证专家提供服务,他们可以使用必要的工具和技术知识来恢复此类数据。


谢谢,我会把重点放在“孤立”的文件上。 - dotancohen
我会添加第6点。当最终用户首次启动计算机时,将提示他们设置用户名、密码、时区、语言、键盘等,以便他们可以每天使用计算机。 - user68186

首先是好消息

好消息是,如果用户OEM被删除,并且在其位置创建了一个新用户,那么创建的骨架文件的大小有望与从用户OEM中删除的骨架文件相同。然后,如果新用户除此之外没有创建任何新文件,用户OEM创建的新文件有望仍然存在于磁盘上的废弃扇区中。希望唯一丢失的OEM文件只是相对于相同位置的新用户骨架文件而言的OEM骨架文件。请注意"希望"这个词....

现在是"但是..."

恢复数据肯定需要很多工作。如果您对.odt文件感兴趣,您首先需要找到一个表示.odt文件的字符串。例如:

$ ll Double*

-rw-rw-r-- 1 rick rick 192599 Mar 18  2018 Double suspend.odt

$ head "Double suspend.odt" -c 400

PK��rL^�2
           'mimetypeapplication/vnd.oasis.opendocument.textPK��rL���A�#�#Thumbnails/thumbnail.png�PNG

所以我可以在我的硬盘上使用grep(不过你不能用这种方法)来查找所有包含字符串"mimetypeapplication/vnd.oasis.opendocument.textPK"的文件:
$ time grepall "mimetypeapplication/vnd.oasis.opendocument.textPK"

Binary file /usr/share/cups/data/form_english_in.odt matches
Binary file /usr/share/cups/data/form_russian_in.odt matches
Binary file /usr/share/doc/fonts-sil-abyssinica/documentation/AbyssinicaSILGraphiteFontFeatures.odt matches
Binary file /usr/lib/libreoffice/share/template/common/internal/idxexample.odt matches
    (... SNIP ...)
60.47user 22.74system 2:23.48elapsed 58%CPU (0avgtext+0avgdata 20788maxresident)k
61233744inputs+0outputs (0major+8533minor)pagefaults 0swaps

real    2m25.881s
user    1m0.507s
sys     0m22.759s

现在,您需要使用一种工具来搜索硬盘驱动器中的每个字节,无论它是否属于文件。一个例子是这个封闭的Q&A中的工具:

然后还有其他工具:

最后,如果您刚刚编写了新的Microsoft DOS 1.0并且丢失了汇编代码的唯一副本,则可以使用数据恢复服务。您可以通过谷歌搜索此服务。最后,请考虑阅读以下文章: