我有一台自去年暑假以来就没有使用过的笔记本电脑:我确实在上面安装了 Debian 7,并使用 Debian 的功能来完全加密磁盘,除了一个小引导加载程序(或一个小分区)我猜(不是太确定这是什么加密以及如何找出)。
我做知道加密文件系统的密码,以便系统启动,但我卡住了登录提示:我确实忘记了密码。
看到我知道加密文件系统的密码,我认为我可以从 Live CD 启动(甚至可能从 Debian 安装 CD 启动?)并以某种方式“挂载”加密分区。
如果是这样,有人可以解释我该怎么做吗? (知道我从未手动安装过加密分区/文件系统)
答案1
全盘加密通常使用dm-crypt
设备映射器目标来完成,其中包含嵌套的 LVM(逻辑卷管理器)。因此,要重置您的密码,您必须
- 解锁/打开加密容器;这是使用完成的
cryptsetup
- 激活逻辑卷;
vgchange
用于此目的。
通常你不需要关心这个。只需让initrd
您的发行版提供的内容完成工作即可,但要告诉它不是首先是/sbin/init
别的东西——一个 shell 会很好。只需附加init=/bin/sh
到引导加载程序中的内核命令行(使用 GRUB,您可以选择E适当的引导条目来编辑该条目)。
然后你的内核应该正常启动,启动进入initrd
应该询问你的密码并设置你的文件系统,但不是启动系统而是让你进入 shell。在那里你必须
- 重新挂载
/
读写:mount -o rw,remount /
- 使用重置密码
passwd <user>
(因为您root
不会收到旧密码的提示) - 重新挂载
/
只读:(mount -o ro,remount /
跳过此操作可能会混淆您的初始化脚本) exec /sbin/init
使用(或简单地)启动常规初始化reboot -f
。
如果这不起作用,您将不得不付出更大的努力来采取该方法,并从“外部”执行此操作,即启动 Live CD。通常,这应该可以通过使用 Debian 安装 CD 来实现——应该安装工具,因为安装程序必须以某种方式设置使用相同模式的加密:
启动 Live CD
通过发出命令打开加密分区
# cryptsetup luksOpen /dev/<partition> some_name
其中
<partition>
应该是您的加密分区名称(sda2
可能是)。some_name
只是……某个名字。这将提示您输入磁盘的加密密码并创建一个名为 的块设备/dev/mapper/some_name
。激活逻辑卷。这通常应该通过发出
# vgscan # vgchange -ay
这将为 LVM 中找到的每个逻辑卷创建块设备文件
/dev/mapper/
。挂载包含您的文件系统的卷
/
:# mount /dev/mapper/<vgname>-<lvname> /mnt
其中
<vgname>
和<lvname>
是卷组和逻辑卷的名称。这取决于发行版的设置方式,但只要查看一下/dev/mapper/
,通常名称是不言自明的。相应地更改您的密码
passwd <user>
。