我知道您可以从运行的机器中提取序列号
dmidecode -t system
,但是在运行 Debian 的预种子安装时我该如何做到这一点?dmidecode
命令尚不可用,是否可以在发行版安装时安装/运行它?
答案1
举例来说,以下是我将产品序列号分配给主机名的方法:
# preseed.cfg
d-i preseed/early_command string \
debconf-set netcfg/get_hostname "$(cat /sys/class/dmi/id/product_serial)"
d-i netcfg/get_hostname seen true
preseed.cfg
这是我与 Ubuntu 安装程序一起使用的相关部分,以获取相关的 DMI 内容。
我确实尝试过使用dmidecode
但是...
anna/choose_modules string dmidecode-udeb
(显然)未能及早安装“microdeb”preseed/early_command string anna-install dmidecode-udeb
还安装失败
pkgsel/include string dmidecode
做过在目标上安装软件包,但仅后网络配置。我尝试使用preseed/late_command string in-target
下面sed -i "s/dummyhostname/$(dmidecode -s system-serial-number)/g"
的文件/etc/
,但我不断在更多地方找到主机名。
答案2
取决于您的环境和具体需求:
- 如果您通过 Syslinux 启动安装程序,则可以将
SYSAPPEND 0x80
其放在内核命令行上。 - 或者您可以预置
anna/choose_modules
以dmidecode-udeb
使其在安装程序环境中可用。 - 或者您可以解析序列号
/sys/firmware/dmi/entries/1-0/raw
(但这是二进制的)。 - 或者您可以预先
pkgsel/include
将其安装到目标系统中并从那里使用它。