我最近安装了Ubuntu 12.10,它要求输入密码才能启动(我使用的是加密文件系统进行安装)。
我需要重新安装才能更改为标准的非加密文件系统吗?
我需要重新安装才能更改为标准的非加密文件系统吗?
dd
和底层驱动程序在读取每个块之前不会进行写入(可能有一些标志和设置来确保这一点);2. 读/写块不会重叠加密块的边界(可以进行检查,可能涉及一些数学计算);3. 在完成之前,不会覆盖解密所需的重要头部信息(检查底层加密格式,也许从末尾开始处理)。我认为这是可能的,但需要更仔细的设置和分析。 - fuzzyTew/dev/sda1 - boot partition
/dev/sda5 - encrypted partition
/dev/sda3 - clean non-encrypted EXT4 partition
/dev/sda2 - my newly created swap partition
从Live CD启动。我使用的是Ubuntu 13.10 32位桌面版ISO。
挂载您的分区:
sudo cryptsetup luksOpen /dev/sda5 crypt1
sudo dd if=/dev/ubuntu-vg/root of=/dev/sda3 bs=1M & pid=$!
while sudo kill -USR $pid; do sleep 1; done
如果你不喜欢上面的“while 方法”,你可以使用 watch。 打开不同的终端窗口并获取 PID:
pgrep -l '^dd$' | awk '{ print $1 }'
:
watch kill -USR1 <pid>
sudo mount /dev/sda3 /mnt
然后卸载您的分区:
sudo umount /dev/sda3
sudo cryptsetup luksClose /dev/sda5
sudo mkswap /dev/sda2
并将UUID存储在某个地方。
获取您的根分区UUID:
sudo blkid /dev/sda3
sudo nano /etc/fstab
删除或注释掉overlayfs和tmpfs行。
添加行以使用blkid结果替换 :
UUID=<uuid_root> / ext4 errors=remount-ro 0 1
UUID=<uuid_swap> none swap sw 0 0
rm /etc/crypttab
更新您的initramfs以避免出现“cryptsetup:evms_activate不可用”等错误:
sudo -i
mount /dev/sda3 /mnt
mount -t proc none /mnt/proc
mount -o bind /sys /mnt/sys
mount -o bind /dev /mnt/dev
mount /dev/sda1 /mnt/boot
chroot /mnt /bin/bash
apt-get remove --purge cryptsetup
update-initramfs -u -k all
这个方法对我有效,但是按照上述步骤可能不一定适用于你。 在我找到update-initramfs方法之前,我曾多次重新安装内核并修改grub。 但是对于你来说应该不会出现这种情况。 请记住,上述指令可能会删除你的数据,所以在进行操作之前要小心并备份。
如果你遇到内核问题(chrooted和/boot已挂载):
uname -r
sudo apt-get install --reinstall linux-image-3.X.Y-ZZ-generic
sudo add-apt-repository ppa:yannubuntu/boot-repair && sudo apt-get update
sudo apt-get install -y boot-repair && (boot-repair &)
/etc/initramfs-tools/conf.d/resume
中交换分区的UUID,并且我建议使用cp -a
或rsync -a
来复制文件系统内容,因为这样通常更快且对SSD更安全。 - LiveWireBTdd
命令会复制整个分区,甚至包括应该为空的块,这会导致对SSD进行不必要的写入(在某些情况下,甚至会降低性能,因为几乎所有单元都被写入)。几年前,我和其他一些人也发现,使用dd
命令复制并激活TRIM(EXT4丢弃选项)会导致TRIM删除它认为是空的块,并在几个小时后留下一个损坏的安装。 - LiveWireBT实际上,很容易在原地解密分区而不费多大努力。例如,请参考这里的说明,对于Ubuntu和Arch来说通常同样适用。在我的情况下,我有一个LUKS1设备,显然这使事情变得更容易。我所需要做的只是:
sudo cryptsetup-reencrypt --decrypt <device_path>
。就是这样。对于一个250GB的SSD,花了20分钟。我不需要对/etc/fstab
、grub或initramfs做任何特殊处理。我在/etc/crypttab
中注释掉了相关(唯一)的一行,但我甚至认为那都不是必要的。
话虽如此,我有一台带有500GB SSD的第二台机器,在大约3个小时后,它仍然声称还需要另外90分钟,并且速度越来越慢,所以我放弃了,只是重新刷写了驱动器。
在做任何事情之前,我建议先备份(解密的)分区。使用dd 如另一个答案中所描述的非常好。我是在分区挂载后,在重新启动到live USB环境之前进行的备份。这对于我最终重新刷写的分区非常有用,因为我能够重新挂载备份并复制我非常关心的内容。@pattivacek的简短回答对我很有效。 想要摆脱起始屏幕上的“输入密码”部分 - 我只需添加
apt purge cryptsetup
之后。