You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何不重装Manjaro且无数据丢失加密根文件系统?含Live CD方案咨询

没问题,这个操作完全可行——通过Manjaro Live CD把现有未加密的根分区克隆到加密分区,然后重新配置引导让系统从加密分区启动,全程不用重装系统,也不会丢失任何数据。下面是一步步的详细操作,跟着来就行:

前提准备
  • 下载和你现有Manjaro系统同架构的Live ISO(比如x86_64版本),制作成可启动U盘/光盘
  • 准备一个容量≥80GB的空闲磁盘分区(可以是新磁盘,也可以是现有磁盘上的空闲空间;如果要覆盖原分区,得确保先克隆完再处理)
  • 提前备份一下最关键的个人数据(虽然操作本身不会丢数据,但以防意外总是好的)
步骤1:从Live CD启动并挂载现有根分区
  1. 插入Live U盘,重启电脑并从U盘引导,进入Manjaro的Live环境
  2. 打开终端,先确认现有分区信息:
    lsblk
    
    你应该能看到/dev/sda1(根分区)和/dev/sda2(交换分区)
  3. 创建临时挂载点,挂载未加密的根分区:
    sudo mkdir /mnt/original_root
    sudo mount /dev/sda1 /mnt/original_root
    
步骤2:创建加密分区

假设你要使用的新分区是/dev/sdb1(根据你的实际磁盘调整,比如如果是在原磁盘上腾出来的空间,可能是/dev/sda3)

  1. 用cryptsetup创建LUKS加密容器:
    sudo cryptsetup luksFormat /dev/sdb1
    
    执行后会提示你设置加密密码,一定要记住这个密码!
  2. 打开加密容器,映射为cryptroot:
    sudo cryptsetup open /dev/sdb1 cryptroot
    
  3. 在加密容器里创建文件系统(和原根分区一致,比如原是ext4就用ext4):
    sudo mkfs.ext4 /dev/mapper/cryptroot
    
步骤3:克隆未加密根分区到加密分区

这里用rsync比dd更安全,因为它可以跳过空文件,还能中断后续传:

  1. 创建加密分区的挂载点:
    sudo mkdir /mnt/crypted_root
    sudo mount /dev/mapper/cryptroot /mnt/crypted_root
    
  2. 同步原根分区的所有数据到加密分区:
    sudo rsync -aAXv /mnt/original_root/ /mnt/crypted_root/ --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"}
    
    这个命令会完整复制系统和个人数据,排除掉不需要的临时目录
步骤4:配置加密分区的启动支持

现在需要进入加密分区的系统环境,修改配置文件让系统能识别加密根:

  1. 挂载必要的系统虚拟文件系统:
    sudo mount --bind /dev /mnt/crypted_root/dev
    sudo mount --bind /proc /mnt/crypted_root/proc
    sudo mount --bind /sys /mnt/crypted_root/sys
    sudo mount --bind /run /mnt/crypted_root/run
    
  2. 切换到加密分区的chroot环境:
    sudo chroot /mnt/crypted_root
    
  3. 修改/etc/fstab,把原根分区的UUID换成加密容器映射后的UUID:
    • 先查看加密容器的UUID:
      blkid /dev/mapper/cryptroot
      
    • 编辑fstab:
      nano /etc/fstab
      
      找到原根分区的行(挂载点/),把UUID=xxx替换成刚才查到的cryptroot的UUID,保存退出
  4. 修改/etc/mkinitcpio.conf,添加加密支持:
    • 编辑文件:
      nano /etc/mkinitcpio.conf
      
      • 在HOOKS行里,把block后面添加encrypt,比如原来的HOOKS=(base udev autodetect modconf block filesystems keyboard fsck)改成:
        HOOKS=(base udev autodetect modconf block encrypt filesystems keyboard fsck)
        
    • 重新生成initramfs:
      mkinitcpio -P
      
  5. 修改GRUB配置,添加加密参数:
    • 编辑/etc/default/grub:
      nano /etc/default/grub
      
      • 修改GRUB_CMDLINE_LINUX_DEFAULT,添加cryptdevice=/dev/sdb1:cryptroot root=/dev/mapper/cryptroot(注意替换/dev/sdb1为你的加密分区实际路径),比如:
        GRUB_CMDLINE_LINUX_DEFAULT="quiet splash cryptdevice=/dev/sdb1:cryptroot root=/dev/mapper/cryptroot"
        
    • 更新GRUB:
      grub-mkconfig -o /boot/grub/grub.cfg
      
  6. 退出chroot环境:
    exit
    
步骤5:处理交换分区加密

原交换分区/dev/sda2可以改成加密交换,更安全:

  1. 关闭原交换分区:
    sudo swapoff /dev/sda2
    
  2. 加密交换分区:
    sudo cryptsetup luksFormat /dev/sda2
    
    设置密码(可以和根分区一样,也可以不同)
  3. 打开加密交换:
    sudo cryptsetup open /dev/sda2 cryptswap
    
  4. 创建交换文件系统:
    sudo mkswap /dev/mapper/cryptswap
    
  5. 挂载交换分区:
    sudo swapon /dev/mapper/cryptswap
    
  6. 回到chroot环境,修改fstab添加加密交换:
    sudo chroot /mnt/crypted_root
    
    • 查看加密交换的UUID:
      blkid /dev/mapper/cryptswap
      
    • 编辑fstab,替换原交换分区的行:
      nano /etc/fstab
      
      添加或修改成:
      UUID=xxx /dev/mapper/cryptswap swap defaults 0 0
      
    • 另外,为了每次启动自动打开加密交换,需要修改/etc/crypttab:
      nano /etc/crypttab
      
      添加一行:
      cryptswap /dev/sda2 none luks
      
    • 退出chroot:
      exit
      
步骤6:更新引导并验证启动
  1. 安装GRUB到新的加密分区所在的磁盘(比如如果加密分区在/dev/sdb,就执行):
    sudo grub-install --target=x86_64-efi --efi-directory=/mnt/crypted_root/boot/efi --bootloader-id=Manjaro --recheck /dev/sdb
    
    如果你是BIOS引导,就用:
    sudo grub-install --recheck /dev/sdb
    
    注意替换/dev/sdb为你的加密分区所在的磁盘(不是分区)
  2. 卸载所有挂载的分区:
    sudo umount /mnt/crypted_root/{dev,proc,sys,run}
    sudo umount /mnt/crypted_root
    sudo umount /mnt/original_root
    sudo cryptsetup close cryptroot
    sudo cryptsetup close cryptswap
    
  3. 重启电脑,拔出Live U盘,此时应该会提示你输入加密密码,输入后就能进入加密的Manjaro系统了
收尾工作
  • 启动后可以验证一下根分区和交换分区是否正常:
    df -h /
    swapon --show
    
  • 如果一切正常,你可以选择格式化原来的/dev/sda1作为存储分区,或者删除它腾出空间

内容的提问来源于stack exchange,提问作者Vipin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:27:38