在 kickstart 期间记录 %pre - 启动后日志文件不存在

在 kickstart 期间记录 %pre - 启动后日志文件不存在

我正在启动几个 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 使用--实际上存在于新系统上切换到新磁盘,因此日志文件在重新启动后将存在。%postchroot/var/log/

使用该部分执行此操作的问题%pre是,当时唯一可用的文件系统是仅内存文件系统。如果我将文件写入/tmp//root/pre_install.log或者/var/log关闭机器后文件系统就会消失。

调试外壳是直到安装中途才可用,这使得调试变得困难。

答案1

我和你有完全相同的需求,捕获日志%pre以供以后分析。你是对的,当你进入%postAnaconda 时,你已经 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

相关内容