我正在启动几个 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