Windows虚拟机部署dm-crypt的Archlinux到物理分区并启动的记录

于 2019-12-07 发布

今天探索了怎么在linux上实现加密的效果。毕竟用惯了linux,还是有点离不开的感觉,但是Windows已经用了bitlocker进行加密,如果只有windows加密了linux不加密那和白给有什么不同呢。所以就看着Archlinux的维基进行摸索。

背景是Windows已经用bitlocker加密了系统分区(同时也是数据分区,毕竟SSD容量不大)。因为bitlocker要求加密分区之外再有一个引导分区,所以mbr分区表最多4个主分区已经占用了两个。ArchLinux的主分区也需要占用一个Primary分区,因为主分区要加密,所以引导分区也需要独立的一个,所以mbr下4个占满。如果直接在Windows的磁盘管理里面建立第四个分区,它会默认建立扩展分区,所以需要进PE用DG指定建立主分区。

为了减少流量消耗,这次安装用了骚方法:在Windows上用VirtualBox启动arch的liveCD,然后虚拟机的硬盘直接用物理硬盘sda3、sda4来做。_这里说一句题外话:也就linux能这样安装还能启动,windows这样搞一下子就死了。_Virtualbox和VMware不太一样,后者有GUI的“使用物理硬盘”的选项——虽然并不能用,用了就黑屏开不了机——前者需要用命令来完成,参考virtualbox manual的9.8.1.2

1
2
VBoxManage.exe internalcommands createrawvmdk -filename /path/to/file.vmdk
 -rawdisk /dev/sda -partitions 3,4

光盘位置挂载arch的liveCD,然后启动进去就完成了前期准备工作。

加密用的是dm-crypt的全系统加密,由于是对块(block)设备的加密,所以要在建立建立文件系统之前就执行。按照wiki的指示配置好主分区的加密,其实就是几行命令:

1
2
3
4
# cryptsetup -y -v luksFormat /dev/sda3
# cryptsetup open /dev/sda3 cryptroot
# mkfs.ext4 /dev/mapper/cryptroot
# mount /dev/mapper/cryptroot /mnt

把sda4格式化之后挂载到/mnt/boot目录,就可以按照安装指导的Installation部分一直做到Initramfs之前为止。

然后回到dm-crypt的wiki,配置mkinitcpio.conf,主要是要保证有”keyboard keymap encrypt”三个钩子,并重新运行mkinitcpio:

1
HOOKS=(base udev autodetect keyboard keymap consolefont modconf block encrypt filesystems fsck)

之后要配置bootloader,选用的是grub,所以要在/etc/default/grub的GRUB_CMDLINE_LINUX里写好Configuring the boot loader小节的内容:

1
cryptdevice=UUID=device-UUID:cryptroot root=/dev/mapper/cryptroot

不用UUID也行,直接写”/dev/sda3”就可以:

1
cryptdevice=/dev/sda3:cryptroot root=/dev/mapper/cryptroot

到这里为止,主要的安装部分就结束了。但是真正安装bootloader是要真正的物理机重启到live system才能做,所以还是要用rufus刻一个live U盘。重启之前先把Windows的Bitlocker挂起保护,否则安装bootloader会让Windows觉得有问题,重启的时候会要求输入恢复密钥。

重启到live system,首先要把sda3解密了而且挂载上来:

1
2
3
# cryptsetup open /dev/sda3 cryptroot
# mount /dev/mapper/cryptroot /mnt
# mount /dev/sda4 /mnt/boot

chroot到mnt,运行:

1
2
# grub-install /dev/sda
# grub-mkconfig -o /boot/grub/grub.cfg

之后就可以umount并且重启了。如果安装了os-prober,grub是会识别到windows的,回到windows把bitlocker的状态改回保护状态,就大功告成了。

两个系统都加密了的效果就是无论谁的recovery类型的系统都没有办法直接读取文件,防止别人偷文件。而virtualbox能够直接用物理硬盘的好处就是能够在windows的虚拟机里面挂载linux,再连接校园网进行大流量的更新——垃圾校园网有线网只能用Windows认证登陆,真实恶心人了。

目录