这Ubuntu 预置文档指定可以将单独的分区配方作为预置文件的值传递:
# Or provide a recipe of your own...
# If you have a way to get a recipe file into the d-i environment, you can
# just point at it.
#d-i partman-auto/expert_recipe_file string /hd-media/recipe
我已经使用“内联”配置方法获得了一个自定义分区方案,其中整个配方是单个反斜杠转义的行。但是,recipe
当文件保存为单独的文件时,我似乎无法让安装程序找到它。从 ISO 启动时出现错误:
无法对选定的磁盘进行分区
Ubuntu 文档中将配方文件放入 di 环境? 我具体该怎么做?
这是安装程序的环境还是目标?/hd-media/
在上面的例子中,是否假定它存在于 ISO 或其他地方?如果不是,我具体应该将配方文件放在哪里,以便安装程序可以找到它,而不是将整个内容内联?
更多背景信息:我正在通过以下方式创建“重新制作的” ISO:
- 下载库存 Ubuntu ISO
- 以只读方式挂载
- 将挂载点复制到临时目标
- 修改临时目录中的 isolinux/txt.cfg 等文件
- 重新打包
mkisofs
我有一个自定义.seed
文件/preseed/ubuntu-custom.seed
,其中包含
d-i partman-auto/method string lvm
d-i partman/default_filesystem string ext4
d-i partman-auto/choose_recipe select boot-root
d-i partman-auto/expert_recipe string /hd-media/recipe
并执行:
cp -LTf "${DIR}/ubuntu-server-unattended.seed" preseed/ubuntu-server-unattended.seed
if [[ ! -d hd-media ]]; then
mkdir hd-media
fi
cp -LTf "${DIR}/recipe" hd-media/recipe
我的猜测是这是错误的,因为它最终出现在目标上,而不是“di 安装程序环境”,不管它到底是什么意思。
例如,将模板文件从源代码控制复制到用于存放新 ISO 内容的临时目录中。
我知道问题是不是与菜谱本身一起使用,因为它在“单线版本”中运行良好,例如
d-i partman-auto/expert_recipe string \
boot-root :: \
500 1000 1000 ext2 \
$primary{ } \
$bootable{ } \
method{ format } \
format{ } \
use_filesystem{ } \
filesystem{ ext2 } \
label{ boot } \
mountpoint{ /boot } \
. \
4000 8000 8000 $default_filesystem \
$lvmok{ } \
lv_name{ RootVol } \
method{ format } \
format{ } \
use_filesystem{ } \
mountpoint{ / } \
$default_filesystem{ } \
options/defaults{ defaults } \
options/discard{ discard } \
options/iversion{ iversion } \
. \
(以上为节选版本。)
在单独的配方文件过程中,我只需将其转移到recipe
并删除反斜杠即可。
答案1
配方文件应该在安装程序环境中,不是在目标中。要将文件添加到安装程序环境中,我有时会使用包含以下内容的预置文件
d-i partman/early_command string \
wget -O /run/my_recipe http://someserver/path/to/recipe ;
d-i partman-auto/expert_recipe_file string /run/my_recipe
如果您将配方文件添加到自定义 ISO 并从中启动,那么我希望 ISO 上的文件可以在安装程序环境中使用基本路径访问/cdrom
。我基于本文档部分展示访问不同安装介质上的文件的示例。
- if you're booting a remastered CD or image:
preseed/file=/cdrom/preseed.cfg
...
- if you're installing from USB media (put the preconfiguration file in the
toplevel directory of the USB stick):
preseed/file=/hd-media/preseed.cfg
还可以使用 VT2 直接检查安装程序环境。Alt-F2
如果您有控制台访问权限,请使用它来打开它并Alt-F1
返回到主安装程序 UI。这对于解决诸如查找文件路径之类的问题很有用。
请注意,Ubuntu 安装程序各有不同。根据您的进度,您似乎正在使用支持预置的安装程序。
- Ubuntu 桌面安装程序 (
ubiquity
) 支持预安装,但需要进行一些自定义 - Ubuntu Live Server 安装程序 (
subiquity
)不是使用 preseed 并启动20.04
提供其自己的autoinstall
功能 - Ubuntu Legacy Server Installer (
debian-installer
/d-i
) 支持预置,但不会为之后的版本创建20.04