![在 kickstart 期间记录 %pre - 启动后日志文件不存在](https://linux22.com/image/32698/%E5%9C%A8%20kickstart%20%E6%9C%9F%E9%97%B4%E8%AE%B0%E5%BD%95%20%25pre%20-%20%E5%90%AF%E5%8A%A8%E5%90%8E%E6%97%A5%E5%BF%97%E6%96%87%E4%BB%B6%E4%B8%8D%E5%AD%98%E5%9C%A8.png)
我正在启动几个 EL6 系统,我想记录在我的%pre
部分中采取的操作。
我知道我可以记录%post
根据提供的提示记录该部分centos.org:anaconda 和 kickstart 的提示和技巧使用以下两种方法之一:
%post --log=/root/my-post-log
echo 'Hello, World!'
或者:
%post
exec < /dev/tty3 > /dev/tty3
chvt 3
echo
echo "################################"
echo "# Running Post Configuration #"
echo "################################"
(
echo 'Hello, World!'
) 2>&1 | /usr/bin/tee /var/log/post_install.log
chvt 1
但是我无法让它与该%pre
部分一起工作。这是我正在使用的:
%pre --log=/var/log/my-pre-log
echo 'Hello, World!'
当我最终被允许使用虚拟控制台,在系统的任何地方都找不到日志文件。
这对于该部分效果很好,因为在执行%post
时,Anaconda 使用--实际上存在于新系统上切换到新磁盘,因此日志文件在重新启动后将存在。%post
chroot
/var/log/
使用该部分执行此操作的问题%pre
是,当时唯一可用的文件系统是仅内存文件系统。如果我将文件写入/tmp/
,/root/pre_install.log
或者/var/log
关闭机器后文件系统就会消失。
调试外壳是直到安装中途才可用,这使得调试变得困难。
答案1
我和你有完全相同的需求,捕获日志%pre
以供以后分析。你是对的,当你进入%post
Anaconda 时,你已经 chroot 到了新建的文件系统,所以不可能访问日志%pre
。你可以%post
用运行--nochroot
,但在我看来,这会让路径变得%post
痛苦。
%include
我设法通过在该部分中使用来获得我想要的东西%post
。首先,记录您的%pre
输出:
%pre --log /tmp/pre-install.log
echo "Starting Kickstart Pre-Installation..."
然后%include
记录%pre
期间%post
,将其发送到带有 bash here 文档的文件:
%post --log /root/post-install.log
cat >> /root/pre-install.log << "EOF"
%include /tmp/pre-install.log
EOF
我相信这是有效的,因为该%pre
部分首先由 Anaconda 评估,这允许您创建要由%include
...使用的文件,然后 Anaconda 评估文件的其余部分,%include
用指定的文件替换每个文件。我还以相同的方式捕获 Anaconda 日志,只是在两个剖面行中替换pre-install
为。anaconda
%post