问题描述
我需要知道如何通过d-i早期/命令或d-i预先/运行将其添加到预播中,以从/proc/cmdline
参数将我的镜像设置在preseed.cfg
中。
如果我做:
d-i preseed/run string ws/ubuntu.sh
#!/bin/sh
for x in `cat /proc/cmdline`; do
case $x in RPHOST*)
eval $x
d-i mirror/http/hostname string ${RPHOST}
d-i mirror/http/mirror string ${RPHOST}
d-i apt-setup/security_host string ${RPHOST}
;;
esac;
done
它失败。
它在CentOS Kickstart %pre
部分运行良好,但是我不知道如何通过预装debian /ubuntu来做到这一点。
最佳答案
在对debconf进行了一些研究之后,我想出了以下解决方案:
在preseed.cfg中,您可以通过以下方式调用脚本:
d-i preseed/run string ws/ubuntu.sh // subdir from preseed file location
ubuntu.sh的内容:
#!/bin/sh
echo "Start ubuntu.sh runscript" >> /var/log/syslog
for x in `cat /proc/cmdline`; do
case $x in RPHOST*)
eval $x
HOST=$RPHOST
echo "d-i mirror/http/hostname string ${HOST}" > /tmp/mirror.cfg
echo "d-i mirror/http/mirror string ${HOST}" >> /tmp/mirror.cfg
echo "d-i apt-setup/security_host string ${HOST}" >> /tmp/mirror.cfg
;;
esac;
done
// add´s values to /var/lib/cdebconf/question.dat
debconf-set-selections /tmp/mirror.cfg
在12.04.2 LTS时效果很好!