将输出重定向到 chroot jail 之外的 /dev/tty1 吗?

将输出重定向到 chroot jail 之外的 /dev/tty1 吗?

我在搜索中无法弄清楚究竟如何措辞;如果有人能告诉我这叫什么并为我提供资源,我将不胜感激。

TL;DR:对于 CentOS 安装,我希望用户能够观看%邮政kickstart 文件的部分在物理屏幕上运行,因此可以对其进行监控。一个人将在键盘上按下 Enter 键来启动安装,而这个人将在他面前的显示器上观看安装工作。我希望他们看到它在做什么。

我对这个结构的理解是这样的:

  • CentOS 安装读取 kickstart 文件。

  • kickstart 的 %pre 部分在安装程序实时映像的“根”上下文中运行。

  • %post 部分在“根”上下文中运行安装系统,允许我执行诸如“yum -y update”等操作来影响已安装的系统。

在正常环境中,我知道我可以使用以下命令将命令的输出重定向到终端:

cat "file.txt" > /dev/tty3

问题是这个命令将输出重定向到chroot jail 的 /dev/tty3 版本,它不会显示在安装屏幕上。我希望它直接输出到“父”安装的屏幕,因此如果它以某种方式识别父目录,它将类似于

cat "file.txt" > ../../../dev/tty3

或者其他的东西。

有人可以帮忙吗?

答案1

事实证明我其实是个白痴。%post 中的终端重定向工作正常;尽管我不明白为什么。

以下是我的 kickstart 的相关部分;问题是我用“>>”重定向每个命令的输出,但忘记了它不会显示在屏幕上;您需要使用“|tee -a”来实现这一点。我太专注于终端重定向逻辑了,以至于错过了明显的错误。

以下内容在 CentOS 7.3 kickstart 文件中完成我想要的操作:

%post --interpreter /bin/bash --log=/root/post_section.log
#Take note of our current tty
c=`tty`
#Set the file descriptors of our shell to the input and output of
#tty 6
exec < /dev/tty6 > /dev/tty6
#Change the visible terminal to terminal 6
chvt 6
#Clear the screen on TTY6
clear

#Do DevOps shit
yum -y install python epel-release python-pip git
echo ""
echo "Cloning deploy_devops..."
cd /root
git clone http://<REMOVED>devops.git
cd deploy-devops
echo "Kicking off deploy_devops.py..."
time python devops.py
echo "All done."

#Change the visible terminal back to #1
chvt 1
#Put our file descriptors back to the original terminal
exec < $c > $c
%end

相关内容