使用全盘加密调整启动分区大小

使用全盘加密调整启动分区大小

我已经看到了有关调整启动分区大小的常见问题的答案。就我而言,我安装了具有全盘加密的 Ubuntu 12.04 Alternate。由于在调整大小操作期间无法安装驱动器,这不会损坏主分区吗?

我已经备份了所有内容,因此可以重新安装,但我不知道如何在加密之前指定启动分区大小。

答案1

我知道这个问题已经很老了,但是在搜索小启动分区问题和使用磁盘加密时就会出现。

Ubuntu 安装程序ubiquity使用partman进行分区。选择“使用整个磁盘”选项时,分区配置来自 live CD 中的 partman 配方文件/lib/partman/recipes-[arch]/*/lib/partman/recipes/*找到安装程序使用的配方,并修改/boot分区的最大大小。在我的系统上,使用的默认配方是/lib/partman/recipes/30atomic。打开终端:

ubuntu@ubuntu:~$ sudo nano /lib/partman/recipes/30atomic

转到启动分区部分并将第三个数字(下面的 256)更改为您想要的大小(我建议至少 512):

128 512 256 ext2
    $defaultignore{ }
    method{ format }
    format{ }
    use_filesystem{ }
    filesystem{ ext2 }
    mountpoint{ /boot }

此部分表示大小将在 128M 到 256M 之间,优先级为 512,这决定了该分区的大小相对于其他分区的重要性。

使用Ctrl+ O,保存Enter。然后启动安装程序,照常安装。

答案2

我假设全盘加密是指有一个小型未加密的启动分区和另一个用于加密的物理卷 (dm-crypt) 分区。如果它们之间没有任何空间,您将无法非破坏性地调整加密分区的大小以创建更多 /boot 空间。

看看我的回答这里-这可能会有帮助。

答案3

是的,调整启动大小是可能的,但它非常复杂。我只会在备份所有数据后尝试这样做。如果你犯了一个错误,数据丢失的可能性相当高。你需要准备好一些可启动的 Ubuntu 实时 USB/CD,因为你应该在启动到实时 USB/CD 后执行这些操作。

不久前,Linux 社区改变了对启动分区大小的要求,这让我明白了其中的道理。以前,100-200 MB 就足以启动,但后来社区将其大小要求翻了一番。这影响了遵循先前指导原则的用户。

https://serverfault.com/questions/334663/what-is-the-recommended-size-for-a-linux-boot-partition

对于 /boot 的当前要求,我建议您参阅官方指南。

https://help.ubuntu.com/community/DiskSpace

在撰写本文时,指南建议 /boot 的空间为 250MB 到 1GB。我建议使用具有最大所需空间的单独启动分区。启动分区需要在启动过程中解密。启动过程将在此过程中安装不同的加密分区,例如 LUKS 加密磁盘或加密 HOME 目录,这些方法之间存在差异。根据我的经验,使用各种 Ubuntu 硬盘加密选项往往会导致以后升级 Ubuntu 时出现问题,需要手动干预。

为了有一个总体概述,我会推荐你​​参阅这篇我认为写得很好的文章。

“LUKS 使用单个密码加密 Debian/Ubuntu 上的多个分区”

https://www.martineve.com/2012/11/02/luks-encrypting-multiple-partitions-on-debianubuntu-with-a-single-passphrase/

当您发现需要更改分区时,我发现这篇文章非常有用。

如何调整 LUKS 加密文件系统的大小

https://ubuntuforums.org/showthread.php?t=726724

现在,由于 gparted 不支持移动加密的 LUKS 分区,因此无法使用命令行或 GUI 中的 gparted 命令来完成此操作。我发现您可以使用 gparted 创建分区,然后使用 dd 通过逐扇区副本移动加密分区。这确实涉及能够以扇区为单位计算分区大小。犯错意味着数据丢失和重新安装。

就我而言,我需要将启动分区的大小从 537MB 增加到 1GB。我需要将其作为从 Ubuntu 12.04 升级到 14.04 的一部分,以便 Ubuntu 升级可以在 /boot 上找到足够的空间。是的,您可以删除 autoremove 以释放 /boot 中的空间,但一般要求已经改变,所以我也扩大了 boot 以适应这些指导原则。这是我的分区布局。

Partition Table: gpt

Number  Start   End    Size   File system  Name  Flags
 1      1049kB  538MB  537MB  fat32              boot
 2      538MB   794MB  256MB  ext2
 3      794MB   240GB  239GB

我的 LUKS 加密磁盘位于分区 #3 中,而我的启动位于分区 #1 中,因此没有足够的空间来扩展 /boot。注意 Gparted 无法移动分区 #3,因为它是一个加密分区。为了解决这个问题,我在磁盘的末尾创建了第四个分区,其扇区大小相同,并使用 dd 将分区 #3 的内容复制到分区 #4。我发现将根目录的大小调整为必要的最小大小很有用。因此,我执行了以下操作来解决 /boot 的大小问题。

  1. 缩小了#3分区中的根文件系统
  2. 调整了 #3 分区的大小(使其更小)
  3. 创建了相同大小的#4分区(在磁盘末尾)
  4. 使用 DD 将 #3 分区的扇区复制到 #4 分区
  5. 删除 3 号分区以释放磁盘空间
  6. 使用 Gparted 调整分区 1 和 2 的大小并移动它们
  7. 创建了一个与缩小的分区 #3(或分区 #4)大小相同的新分区 #3
  8. 使用 DD 将 #4 分区的扇区复制到 #3 分区
  9. 删除#4分区
  10. 将#3分区的大小扩大到原来的#3大小
  11. 将#3加密分区中包含的文件系统更新到剩余空间

这样,我可以删除分区 #3,并使用 gparted 移动和扩大分区 #1 和 #2。阅读上述指南应该会提供足够的见解来指导您前进。这里没有显示,但在缩小我的根分区时,我删除了同一分区上的交换卷组并在最后重新创建了它。所有这些都是在启动到 Linux Live USB 闪存驱动器时完成的。以下是我的一些笔记,这些笔记在上面的指南中并不容易找到。

我发现 blockdev 在显示分区大小(以扇区为单位)方面很有用。这对我计算扇区大小很有帮助。

sudo blockdev --getsize /dev/mapper/isw_dcgdihhid_SSD_CRUCIAL_M500p2
499712

Gparted 命令“unit s”将以扇区为单位显示您的分区表。所有分区大小调整、删除和创建均使用 Gparted 完成。这样,您就可以以扇区为单位进行所有计算。如果您想查看扇区计算结果,可以使用“unit compact”切换回 MB/GB 格式。

(parted) unit s
(parted) p                                                                
Model: Linux device-mapper (mirror) (dm)
Disk /dev/mapper/isw_dcgdihhid_SSD_CRUCIAL_M500: 468857096s
Sector size (logical/physical): 512B/4096B
Partition Table: gpt

Number  Start     End         Size        File system  Name  Flags
 1      2048s     1050623s    1048576s    fat32              boot
 2      1050624s  1550335s    499712s     ext2
 3      1550336s  456656896s  455106561s

resize2fs 命令有一个巧妙的选项,可以调整到最小大小。此外,我在此过程中删除了交换卷组。

ubuntu@ubuntu:~$ sudo resize2fs -M -p /dev/ubuntu-vg/root
resize2fs 1.42.9 (4-Feb-2014)
Resizing the filesystem on /dev/ubuntu-vg/root to 2261211 (4k) blocks.
Begin pass 3 (max = 1600)
Scanning inode table          XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
The filesystem on /dev/ubuntu-vg/root is now 2260992 blocks long.

调整分区表大小后返回并更新 gparted。使用 4096 * 2260992 和 blockdev 检查此处的数学运算。以下是 gparted 命令。

(parted) resizepart 3
End?  [224419843s]? 225970179s 
Warning: Shrinking a partition can cause data loss, are you sure you want to continue?
Yes/No? yes                                                               
Device /dev/mapper/isw_dcgdihhid_SSD_CRUCIAL_M500p3 not found
device-mapper: table ioctl on  failed: No such device or address
(parted) p                                                                
Model: Linux device-mapper (mirror) (dm)
Disk /dev/mapper/isw_dcgdihhid_SSD_CRUCIAL_M500: 468857096s
Sector size (logical/physical): 512B/4096B
Partition Table: gpt

Number  Start     End         Size        File system  Name  Flags
 1      2048s     1050623s    1048576s    fat32              boot
 2      1050624s  1550335s    499712s     ext2
 3      1550336s  225970179s  224419844s

请注意,分区 #3 的扇区计数大小小于我最初列出的值,即这样,您可以使用 gparted 在 DD 复制之前创建 #4 分区。缩小分区大小可为该复制释放更多磁盘空间。

ubuntu@ubuntu:~$ sudo dd if=/dev/mapper/isw_dcgdihhid_SSD_CRUCIAL_M500 of=/dev/mapper/isw_dcgdihhid_SSD_CRUCIAL_M500 bs=512 skip=1550336 count=224419844 seek=244437218
224419844+0 records in
224419844+0 records out
114902960128 bytes (115 GB) copied, 2146.1 s, 53.5 MB/s

DD 复制完成后,继续扩大 /boot 分区的大小。删除原始的 #3 分区,然后在扩大的 #1 和 #2 分区之后的新扇区位置重新创建分区 #3。再次使用 blockdev 测量扇区大小。我创建这个 #3 分区,大小与 #4 分区相同,但比 #3 原来的大小要小。使用 DD 将 #4 扇区复制到 #3 分区。

ubuntu@ubuntu:~$ sudo dd if=/dev/mapper/isw_dcgdihhid_SSD_CRUCIAL_M500 of=/dev/mapper/isw_dcgdihhid_SSD_CRUCIAL_M500 bs=512 skip=244437218 count=224419844 seek=9242624

复制后,删除 #4 分区并扩展 #3 分区的大小。就我而言,我只是将 #3 分区恢复到启动时的大小。我有足够的空间来执行此操作。

(parted) resizepart 3                                                     
End?  [464349185s]? 464349184s                                           
Warning: Shrinking a partition can cause data loss, are you sure you want to continue?
Yes/No? y                                                                 
Device /dev/mapper/isw_dcgdihhid_SSD_CRUCIAL_M500p3 not found
device-mapper: table ioctl on  failed: No such device or address
(parted) p                                                                
Model: Linux device-mapper (mirror) (dm)
Disk /dev/mapper/isw_dcgdihhid_SSD_CRUCIAL_M500: 468857096s
Sector size (logical/physical): 512B/4096B
Partition Table: gpt

Number  Start     End         Size        File system  Name  Flags
 1      2048s     4192255s    4190208s    fat32              boot
 2      5146624s  9242623s    4096000s    ext2
 3      9242624s  464349184s  455106561s

当 gparted 增加分区大小时,它不会更新文件系统。请注意,文件系统包含在加密分区内,因此必须打开并挂载它才能进行此更改。使用以下命令修复此问题。如有必要,可以在实时系统上完成此操作。

user@zagyg:/$ sudo resize2fs /dev/ubuntu-vg/root
resize2fs 1.42.9 (4-Feb-2014)
Filesystem at /dev/ubuntu-vg/root is mounted on /; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 13
The filesystem on /dev/ubuntu-vg/root is now 54266880 blocks long.

总之,虽然 Gparted 本身不支持其操作,但它是一个非常有用的分区管理工具。在我看来,它比 fdisk 更有用。在 Gparted 和 DD 之间,我能够管理我的分区,然后只需使用 Ubuntu 工具即可从 12.04 LTS 升级到 14.04 LTS。

相关内容