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

我已经看到了有关调整启动分区大小的一般问题的答案。 在我的例子中,我已经安装了Ubuntu 12.04 Alternate和全盘加密。 由于在resize操作期间无法安装驱动器,这不会破坏主分区吗?

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

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

看看我的答案 – 这可能会有所帮助。

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

Ubuntu安装程序ubiquity使用partman进行分区。 选择“使用整个磁盘”选项时,分区配置来自live CD上的/lib/partman/recipes-[arch]/*/lib/partman/recipes/*中的partman配方文件。 找到安装程序使用的配方,并修改/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 + OEnter保存。 然后启动安装程序,照常安装。

是的,可以调整引导大小,但它非常复杂。 我只会在备份所有数据后尝试此操作。 如果你弄错了数据丢失的可能性很高。 您需要准备一些可启动的Ubuntu live 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

在撰写本文时,指南建议/启动从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中的空间,但是一般要求已经改变,所以我正在扩大启动以适应这些指南。 这是我的分区布局。

 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 

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

  1. 收缩#3分区中的根文件系统
  2. 调整#3分区的大小(更小)
  3. 创建了一个相同大小的#4分区(在磁盘的末尾)
  4. 使用DD将#3分区的扇区复制到#4分区
  5. 删除#3分区以释放磁盘空间
  6. 使用Gpartedresize并移动#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命令有一个很好的选项可以resize。 此外,我在此部分删除了我的交换卷组。

 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。