我会去度假,无论去哪里,我的房间里都会有一台电脑。我不知道这台电脑是什么型号、有多旧、什么规格,什么都不知道。但很可能它安装了 Windows,而且我可能只能以受限用户身份登录。
这两件事我都不喜欢。
所以我想我可以随身携带一个可启动的 8GB USB 存储棒,安装我自己的便携式 Ubuntu。但你会发现 8GB 真的不多,而且 USB 也不是世界上最快的,尤其是如果计算机可能只有 2.0 端口的话。
因此,如果我可以将交换甚至一些数据或系统部件外包给这台计算机的硬盘,我会很高兴,但我不想以任何方式修改现有系统,所以重新分区不是一个选择。
我认为在现有文件系统内创建一个虚拟文件系统映像文件并挂载该文件是最好的。但它应该被加密。
不,简单的实时 USB 是不够的,它至少要持久。不过,硬盘使用功能也应该存在。
那么,我该如何最好地设置它,让安装在 USB 上的系统能够在现有文件系统上创建和安装加密虚拟磁盘,而不会对其进行不可逆转的修改?如果安装与普通桌面安装有任何不同,请提供详细的分步指南。
答案1
常规文件系统
在计算机内部驱动器(可能是 NTFS)上现有的文件系统中,为您想要创建的每个(加密)分区创建一个文件,假设内部文件系统已安装在
/mnt/internal-drive
1 GiB 处,并且生成的分区的所需大小为:head -c 1G < /dev/zero > /mnt/internal-drive/some/arbitrary/path/partition.img
如果你想要一个好的进度指示器,你可以使用
pv
:head -c 1G < /dev/zero | pv -s 1g -pterab > .../partition.img
如果您想要基于稀疏文件创建分区,请使用
truncate(1)
(--size
简写-s
:)选项来指定大小(以字节为单位):truncate -s 1073741824 .../partition.img
稀疏文件创建速度快,并且只占用底层文件系统所需的空间,但由于碎片化,访问速度会变慢。一些较旧的文件系统(如 FAT)不支持稀疏文件。NTFS 支持。
在刚刚创建的文件中初始化所需的文件系统,例如
ext4
:mkfs -t ext4 [FS-OPTIONS...] .../partition.img
文件系统初始化程序可能会要求您确认在常规文件中创建文件系统,或者甚至可能拒绝这样做,除非您设置标志
--force
或类似的东西。创建由分区文件支持的循环设备并挂载它。较新的 版本
mount(8)
可以使用以下选项一步完成此操作loop
:mount -t ext4 -o defaults,loop[,FS-OPTIONS...] .../partition.img /mnt/my-partition
享受!
交换分区
与上面的步骤 1 类似,但您可能想要避免使用稀疏选项。
初始化交换文件:
mkswap /mnt/internal-drive/some/arbitrary/path/swap.img
交换:
swapon [OPTIONS...] /mnt/internal-drive/some/arbitrary/path/swap.img
块级加密
就像前面几节一样,常规文件的使用方式与块设备非常相似。因此,您可以像平常一样使用、 和,因为它们会自动为常规文件创建循环cryptsetup(8)
设备crypttab(5)
:cryptdisks_start(8)
cryptdisks_stop(8)
与以上部分中的步骤 1 类似。
如果您想使用 LUKS 来管理您的加密分区,请初始化它:
cryptsetup luksFormat .../partition.img [OPTIONS...]
使用您选择的加密类型和选项打开分区:
cryptsetup open .../partition.img <NAME> --type <DEVICE_TYPE> [OPTIONS...]
其中
<NAME>
是为分区创建的 dm-crypt 映射的名称,并且<DEVICE_TYPE>
是luks
(如果您已在步骤 2 中创建了 LUKS 包装器,或者plain
对于普通的 dm-crypt 分区)。(cryptsetup
支持其他设备类型,但它们要么是旧的,要么是为了 TrueCrypt 兼容性。)加密分区现已在 可用
/dev/mapper/<NAME>
。您可以像在任何块设备上一样在其上创建和挂载文件系统,如上文第 2 步中所述,或者
如果您想在其中包装多个分区而不必为它们单独提供多次相同的密码,您可以使用您最喜欢的分区管理器在其中创建一个分区表:
fdisk /dev/mapper/<NAME>
要求内核重新读取分区表并重新填充设备节点文件
/dev
:partprobe /dev/mapper/<NAME>
/dev/mapper/<NAME>1
现在,您可以在等处使用各个分区。
启动时挂载
您可以像平常一样为这些分区创建fstab
(和)条目,但使用上面的选项。基于文件的交换空间不需要特殊的安装选项。您只需要在内部驱动器上安装这些新分区之前的底层文件系统即可。例如:crypttab
loop
LABEL=Windows /mnt/internal-drive ntfs defaults 0 2
/mnt/internal-drive/some/arbitrary/path/home.img /home ext4 defaults,loop 0 3
/mnt/internal-drive/some/arbitrary/path/swap.bin none swap sw 0 0
随后销毁文件系统
简洁版本:不要!使用加密并销毁密钥。
长版本:覆盖或“粉碎”单个文件是基于这样的假设:文件从未占用除当前之外的其他驱动器扇区(例如,因为文件系统或其维护工具之一(例如碎片整理)决定重新定位它们),并且没有文件数据泄漏到文件系统元数据部分(例如在日志记录期间)。对于较旧的非日志文件系统(FAT、ext2),这些假设在大多数情况下可能成立。对于 NTFS、ext3/4 和 HFS+,除非在罕见、不切实际/不现实的条件下,否则它们并不可靠。
除了驱动器映像文件当前占用的扇区之外,您还可以覆盖所有未分配的扇区。微软的cipher.exe
可以对 NTFS 执行此操作,据称它可以捕获几乎所有可能仍包含您宝贵的文件系统映像的剩余部分的扇区。