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

Ubuntu预配置(preseed)混合分区问题咨询:加密LVM与非加密分区配置可行性及空间报错解决

Ubuntu预配置(preseed)混合分区问题咨询:加密LVM与非加密分区配置可行性及空间报错解决

我以前总能在旧帖子里找到解决方案,但这次实在找不到有用的答案,只好来求助了。这个问题已经困扰我好一阵子了,相信你们能帮我搞定!先提前谢谢大家的帮助,另外也为我的英语失误致歉(我是法国人)。

我的需求是这样的:想要按照下面的分区方案安装Ubuntu:

  • /boot
  • /efi
  • 加密LVM容器,里面包含:
    • /(10GB)
    • /tmp(2GB)
    • /var/log(10GB)
  • 四个非加密分区,各占可用磁盘的25%:
    • /opt/space/1
    • /opt/space/2
    • /opt/space/3
    • /opt/space/4

简单来说,/所在的LVM是加密的,但那四个主分区要不加密,各占约25%的可用空间。请问这个方案可行吗?

现在安装的时候,安装程序一直提示我没有足够的可用空间,但实际上磁盘是有空间的。

下面是我用的preseed配置和partman分区文件:

我的Preseed配置

d-i partman-auto/method crypto
db_set partman-auto-lvm/new_vg_name crypt
d-i partman-crypto/passphrase password WILLBEOVERRIDEN
d-i partman-crypto/passphrase-again password WILLBEOVERRIDEN
d-i partman-lvm/device_remove_lvm boolean true
d-i partman-lvm/confirm boolean true
d-i partman-lvm/confirm_nooverwrite boolean true
d-i partman-auto-lvm/guided_size string max
d-i partman-auto-lvm/new_vg_name string crypt
d-i partman-auto/choose_recipe select mytest
d-i partman-auto/expert_recipe_file string /cdrom/mytest/installer/mytest.partman
d-i partman-partitioning/confirm_write_new_label boolean true
d-i partman/choose_partition select finish
d-i partman/confirm boolean true
d-i partman/confirm_nooverwrite boolean true
d-i partman-md/device_remove_md boolean true
d-i partman-basicfilesystems/no_mount_point boolean false

我的partman分区配方文件(mytest.partman)

mytest ::

538 538 538 free
$iflabel{ gpt }
method{ efi }
format{ }
.

512 512 512 ext4
$primary{ } $bootable{ }
method{ format } format{ }
use_filesystem{ } filesystem{ ext4 }
mountpoint{ /boot }
options/nosuid{ nosuid }
options/nodev{ nodev }
options/noexec{ noexec }
options/noauto{ noauto }
.

10240 10240 10240 ext4
$lvmok{ } in_vg { crypt } lv_name{ root }
method{ format } format{ }
use_filesystem{ } filesystem{ ext4 }
mountpoint{ / }
.

2048 2048 2048 ext4
$lvmok{ } in_vg { crypt } lv_name{ var_log }
method{ format } format{ }
use_filesystem{ } filesystem{ ext4 }
mountpoint{ /var/log }
options/nosuid{ nosuid }
options/nodev{ nodev }
options/noexec{ noexec }
.

1024 1024 1024 ext4
$lvmok{ } in_vg { crypt } lv_name{ tmp }
method{ format } format{ }
use_filesystem{ } filesystem{ ext4 }
mountpoint{ /tmp }
options/nosuid{ nosuid }
options/nodev{ nodev }
options/noexec{ noexec }
.

2048 2048 2048 linux-swap;
$lvmok{ } in_vg { crypt } lv_name{ swap }
method{ swap } format{ }
.

5000 1000000000 1000000000 ext4
$defaultignore{ }
$primary{ }
method{ format } format{ }
use_filesystem{ } filesystem{ ext4 }
mountpoint{ /opt/space/1 }
label{ 1 }
.

5000 1000000000 1000000000 ext4
$defaultignore{ }
$primary{ }
method{ format } format{ }
use_filesystem{ } filesystem{ ext4 }
mountpoint{ /opt/space/2 }
label{ 2 }
.

5000 1000000000 1000000000 ext4
$defaultignore{ }
$primary{ }
method{ format } format{ }
use_filesystem{ } filesystem{ ext4 }
mountpoint{ /opt/space/3 }
label{ 3 }
.

5000 1000000000 1000000000 ext4
$defaultignore{ }
$primary{ }
method{ format } format{ }
use_filesystem{ } filesystem{ ext4 }
mountpoint{ /opt/space/4 }
label{ 4 }
.

方案可行性分析

首先可以明确:你的需求是完全可行的——Ubuntu的preseed支持混合使用加密LVM和独立的非加密分区,关键是分区配方的逻辑要正确。

空间报错的可能原因及解决办法

你遇到的“无可用空间”报错,大概率是因为当前的partman配方存在以下问题:

  1. 加密LVM的空间分配逻辑冲突
    你设置了d-i partman-auto-lvm/guided_size string max,这会让安装程序尝试把所有剩余空间都分配给加密LVM卷组,导致后面的非加密分区没有剩余空间可用。这就是报错的核心原因。

    解决办法:把guided_size从max改成一个固定值,或者改成一个百分比,预留出足够的空间给四个非加密分区。比如,如果你的总磁盘是100GB,加密LVM部分需要约24GB(10+2+10+2),那可以设置:

    d-i partman-auto-lvm/guided_size string 24GB
    

    或者用百分比:

    d-i partman-auto-lvm/guided_size string 24%
    
  2. 非加密分区的尺寸定义问题
    当前配方里四个非加密分区的尺寸是5000 1000000000 1000000000 ext4,这表示最小5000MB,最大1000000000MB,默认取最大值。但如果LVM已经占了所有空间,这些分区自然无法创建。

    调整建议:把这四个分区的尺寸逻辑改成按剩余空间均分。partman配方里可以通过设置1 1000000000 -1来让每个分区尽可能占用剩余空间的1/4,修改后的单分区配置如下:

    1 1000000000 -1 ext4
    $defaultignore{ }
    method{ format } format{ }
    use_filesystem{ } filesystem{ ext4 }
    mountpoint{ /opt/space/1 }
    label{ 1 }
    .
    

    另外三个分区做同样的修改即可。

  3. 不必要的$primary{ }标记
    你的配方里给四个非加密分区都加了$primary{ },虽然GPT分区表没有主分区数量限制,但这个标记可能会干扰分区分配逻辑,建议去掉,避免不必要的冲突。

额外注意事项

  • 确保你的磁盘已经被正确擦除或有足够的未分配空间,安装程序不会自动覆盖已有的分区(你的配置里设置了confirm_nooverwrite boolean true,所以要提前准备好未分配空间)。
  • 可以先在虚拟机里测试调整后的配置,确认分区方案符合预期后再在物理机上操作,避免数据丢失。

备注:内容来源于stack exchange,提问作者Thomas B

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 15:44:33