AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 701639
Accepted
bs-
bs-
Asked: 2022-05-07 04:00:14 +0800 CST2022-05-07 04:00:14 +0800 CST 2022-05-07 04:00:14 +0800 CST

引导分区已满:移动到加密分区

  • 772

一旦/boot分区半满,单个内核就无法升级,

当另一个分区被加密时,调整大小很痛苦,

解决方案:移动/boot到加密分区。

背景故事:Linux Mint 17 升级到 20 将不允许安装最新内核;那是我的困境。有很多关于调整分区大小的文章——加密分区会引起恐惧!幸运的是,有一个替代方案。

在使我的系统“无法启动”后,我决定提供一些指导(我的答案出现在下面),希望其他人也能加入。

partition boot
  • 1 1 个回答
  • 107 Views

1 个回答

  • Voted
  1. Best Answer
    bs-
    2022-05-07T04:06:29+08:002022-05-07T04:06:29+08:00

    功劳主要属于Guilhem Moulin,我只是简化一下。将重复需要超级用户,您可能更喜欢su为 root shell 运行命令(或者,sudo在必要时继续执行命令)。

    加密分区:/dev/sda5

    运行fdisk -l列表分区,例如,

    Device     Boot  Start       End   Sectors   Size Id Type
    /dev/sda1  *      2048    499711    497664   243M 83 Linux
    /dev/sda2       501758 500117503 499615746 238.2G  5 Extended
    /dev/sda5       501760 500117503 499615744 238.2G 83 Linux
    

    我的加密分区是/dev/sda5,您的可能会有所不同(您需要/dev/sda5相应地更换)。

    先决条件:LUKS1

    通过检查命令cryptsetup luksDump /dev/sda5输出来检查您是否正在使用 LUKS1

    Version:        1
    

    对于版本 2,请在继续之前降级(请参阅原始文章)。

    先决条件:GRUB2

    grub-install --version通过检查命令输出版本 2 或更高版本来检查您使用的是 GRUB2 。

    先决条件:键盘布局

    当您切换到美式键盘布局时,请检查您的密码是否保持不变。考虑更改您的密码(对于保持相同的密码),或使用美国布局设置您的密码(不推荐),或参考原始文章以获得进一步的解决方法。

    移动/boot

    重新挂载/boot为只读以避免在移动期间修改数据:

    mount -oremount,ro /boot
    

    递归复制到临时目录(在加密分区上):

    cp -axT /boot /boot.tmp
    

    卸载/boot并删除(空)目录:

    umount /boot
    rmdir /boot
    

    重定位临时目录:

    mv -T /boot.tmp /boot
    

    更新/etc/fstab

    命令cat /etc/fstab将输出类似于:

    UUID=38e... /boot ext2 defaults 
    

    您需要注释掉该行(我赞成vim)。

    在 GRUB2 中启用加密挂载

    添加GRUB_ENABLE_CRYPTODISK=y到/etc/default/grub,生成您的 GRUB 配置文件,

     update-grub
    

    并安装,

     grub-install /dev/sda
    

    可能是测试的好时机

    现在可能是测试一切顺利的好时机:重新启动。系统会提示您输入密码,并且(经过长时间的延迟)进入 initramfs 提示符。输入以下命令:

     cryptsetup luksOpen /dev/sda5 sda5_crypt
    

    替换sda5_crypt为输出的第一个参数cat /etc/crypttab(如果您已经走到这一步而没有运行该命令,只需使用sda5_crypt,我们可以稍后修复它)。下一个发出命令:

     exit
    

    您的系统现在应该正在启动,如果没有,恢复应该相对容易——从 Live USB 启动并取消注释/etc/fstab. (始终拥有 Live USB 非常有用。)

    启动性能下降

    GRUB 没有针对与加密相关的 CPU 指令进行优化——解锁加密分区将花费比以前更长的时间。

    可选:您可以通过牺牲对暴力攻击的抵抗力来调整性能。PBKDF 比 Argon2 更容易——PBKDF 通过需要多次迭代来减缓暴力攻击,而 Argon2 通过进一步的变量来减缓攻击,因此调整 PBKDF 更容易。检查当前使用了多少次迭代 command cryptsetup luksDump /dev/sda5,例如,

     Key Slot 0: ENABLED
          Iterations:           1208036
    

    为了将性能提高大约两倍(同时将蛮力阻力降低一半),我们可以使用命令将迭代次数减少一半以上cryptsetup luksChangeKey --pbkdf-force-iterations 500000 /dev/sda5

     Enter passphrase to be changed:
     Enter new passphrase:
     Verify passphrase:
    

    您现有的密码可以重复使用。据我所知,添加了一个新键:除了上述之外,命令cryptsetup luksDump /dev/sda5现在输出

     Key Slot 1: ENABLED
          Iterations:           500000
    

    PBKDF 将依次尝试所有关键插槽,以加快速度,运行命令cryptsetup luksOpen --test-passphrase --verbose /dev/sda5

     Enter passphrase for /dev/sda5: 
     Key slot 1 unlocked.
     Command successful.
    

    使用命令cat /etc/crypttab你会看到类似

     sda5_crypt UUID=66f... none luks,discard
    

    在最后添加,key-slot=1(更改1以匹配您在上面找到的任何内容)。如果您测试一切都很好并且使用了第一个参数以外的其他参数sda5_crypt,请重新启动并输入,cryptsetup luksOpen /dev/sda5 sda5_crypt然后exit在下一步之前输入 ,。运行命令

     update-initramfs -u -k all
    

    生成和更新您的 initramfs 映像。(严格来说-k all不是必需的,假设您遵循这些说明,因为您有一个内核。)

    更新/etc/fstab

    命令lsblk -o name,uuid输出

     NAME                  UUID
     sda                   
     ├─sda1                38e...
     ├─sda2                
     └─sda5                66f...
       └─sda5_crypt        B6U...
         ├─mint--vg-root   54f...
         └─mint--vg-swap_1 fe3...
    

    要使您的系统可启动,请将以下行添加到/etc/fstab

     UUID=54f... / ext4 defaults 0 1
    

    运行命令update-grub后跟grub-install /dev/sda,然后重新启动。

    希望您现在拥有一个可启动的系统。

    您需要输入两次密码,这很不幸。显然有一种解决方法(请参阅原始文章)。我一口气看完了整篇文章,遇到了麻烦,无法启动(在发现之前cryptsetup luksOpen /dev/sda5 sda5_crypt)。通过以上说明,我希望疼痛的机会减少。祝你好运。

    • 1

相关问题

  • 备份 Nand Flash 存储区

  • 如何正确分区 SSD 以进行双启动设置

  • 克隆的 SSD 无法启动并打印奇怪的线条

  • 并行安装多个 linux 发行版

  • fdisk 没有看到 resize2fs 缩小未挂载的分区

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve