我想自动化 Debian 的安装,并通过提供自定义配方来控制分区的完成方式。
当我不使用 luks 或 lvm 时,这很容易(ish),但我无法让安装程序同时使用 crypt 和自定义配方。使用 luks 分区成功安装的唯一方法是当我让partman-auto 完成它时,d-i partman-auto/method string crypto
但它似乎忽略了我的食谱。
### Partitioning
d-i partman-auto/method string regular
d-i partman-auto/choose_recipe select crypto-recipe
d-i partman-auto/expert_recipe_file string /crypto-recipe
d-i partman-crypto/passphrase string super-secret
d-i partman-crypto/passphrase-again string super-secret
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-basicfilesystems/no_swap boolean false
crypto-recipe ::
538 538 1075 fat32
$iflabel{ gpt }
$reusemethod{ }
method{ efi }
format{ } .
512 1024 768 ext4
method{ format }
format{ }
use_filesystem{ }
filesystem{ ext4 }
mountpoint{ /boot } .
2000 2000 -1 crypt
$iflabel{ gpt }
method{ lvm }
vg_name{ vg0 } .
1000 1000 -1 lvmpart
$lvmok{ }
in_vg{ vg0 }
lv_name{ root }
method{ format }
format{ }
use_filesystem{ }
filesystem{ ext4 }
label{ doomar }
mountpoint{ / }
.
我希望安装程序使用唯一的物理磁盘,但不确定是否需要指定某些内容才能实现这一点。我还应该尝试其他选择吗?
d-i partman-auto/disk string /dev/vda
d-i partman-auto/method string crypto
我还尝试用百分比指定我的 crypt 分区:
100% 100% 100% crypt
$iflabel{ gpt }
method{ lvm }
vg_name{ vg0 } .
还有太多其他的变化,我试图列出来,但都迷失了。文档似乎有点不清楚。是否有更好的替代方法来使用预置文件?他们看起来不太好,我已经花了很多我花了很多时间试图让它们按照我想要的方式工作,但它们似乎很有限。
我在尝试各种选项时遇到的一些问题:
- 不选择磁盘
- 安装系统失败
- 尽管存在
/boot
仍坚持/boot/efi
- 许多示例已经过时(BIOS,而不是 UEFI/GPT)
- 退回到partman-auto并且不遵循配方
- 在系统安装位置旁边创建一个空白分区(大概应该是 crypt 分区)
如果有人可以提供一个工作示例,并澄清该方法是否应该regular
或crypto
何时在配方中指定分区,那至少会给我一个起点。
更新
我尝试增加虚拟磁盘的大小,现在更清楚的是问题是在 crypt 容器内创建 lvm。以前,如果 crypt 分区占用了磁盘上的剩余空间,那么系统就没有任何剩余空间了。
这是我尝试过的:
crypto-recipe ::
538 538 538 fat32
$iflabel{ gpt }
$reusemethod{ }
method{ efi }
format{ } .
512 1024 512 ext4
method{ format }
format{ }
use_filesystem{ }
filesystem{ ext4 }
mountpoint{ /boot } .
2000 2000 -1 crypt
$iflabel{ gpt }
method{ crypto }
vg_name{ vg0 } .
2000 2000 -1 lvmpart
$lvmok{ }
in_vg{ vg0 }
lv_name{ root }
method{ format }
format{ }
use_filesystem{ }
filesystem{ ext4 }
label{ doomar }
mountpoint{ / }
.
现在很清楚了
vda
├─vda1 vfat FAT32 390B-57B3 505.1M 1% /boot/efi
├─vda2 ext4 1.0 48ab2ad8-2744-4fe0-b8ed-dbb9766e0cae 369.7M 11% /boot
├─vda3
└─vda4 ext4 1.0 doomar 5ada0c1d-4048-4ff6-ac23-4936dcc16710 1.1G 41% /
Model: Virtio Block Device (virtblk)
Disk /dev/vda: 5369MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 538MB 537MB fat32 EFI System Partition boot, esp
2 538MB 1050MB 512MB ext4
3 1050MB 3049MB 2000MB
4 3049MB 5368MB 2318MB ext4
vda3
应该是 luks crypt 分区,并且vda4
不应该存在,而是内部的 lvmvda3
答案1
只有部分答案,因为它依赖partman auto来设置加密,这似乎限制了配方的灵活性。
特别是,我必须添加$defaultignore{ }
到\boot
分区,这是我从entek.org.uk博客
d-i partman-auto-lvm/guided_size string max
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/method string crypto
d-i partman-auto/choose_recipe select autocrypt-recipe
d-i partman-auto/expert_recipe_file string /autocrypt-recipe
d-i partman-crypto/passphrase string super-secret
d-i partman-crypto/passphrase-again string super-secret
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-basicfilesystems/no_swap boolean false
autocrypt-recipe ::
256 256 256 fat32
$iflabel{ gpt }
$reusemethod{ }
method{ efi }
format{ } .
256 256 256 ext4
$defaultignore{ }
method{ format }
format{ }
use_filesystem{ }
filesystem{ ext4 }
mountpoint{ /boot } .
2000 2000 -1 ext4
$lvmok{ }
lv_name{ root }
method{ format }
format{ }
use_filesystem{ }
filesystem{ ext4 }
label{ doomar }
mountpoint{ / }
.
结果
vda
├─vda1 vfat FAT32 E692-113B 233.4M 2% /boot/efi
├─vda2 ext4 1.0 89d9e5c4-5cba-4b08-bd0f-96c9332a3e07 154M 24% /boot
└─vda3 crypto_LUKS 2 9d4aa1bd-0706-4ba0-ac48-850ac7499355
└─vda3_crypt LVM2_member LVM2 001 0EDidF-GVe0-odQX-gPQ9-VXED-Pf7l-snWt8D
└─debian--vm0--vg-root ext4 1.0 doomar 099e743c-0c62-4bb8-8f25-71e8c96ce8d9 3.3G 19% /
Model: Virtio Block Device (virtblk)
Disk /dev/vda: 5369MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 256MB 255MB fat32 EFI System Partition boot, esp
2 256MB 512MB 256MB ext4
3 512MB 5368MB 4856MB
我仍然想知道是否可以使用该regular
方法并更明确地指定配方中的 crypto 和 lvm 分区,而不是依赖partman-auto?