环境:CentOS 5.5 和 6.4
我要求在安装前分析硬件,以确保我们的客户不会在不合标准的服务器硬件上安装我们的软件。例如,检查内存、磁盘空间、CPU、网卡……那么,我的 ks.cfg 文件中的 %pre 部分似乎是执行此操作的最佳位置???但是,我无法获得像 free to work 这样的命令...。我想找出 %pre 部分中可用的命令,这是在安装开始前执行硬件分析的正确位置吗???。 . 如果 ks.cfg 的 %pre 部分不是执行此操作的好地方,那么在哪里?这是我迄今为止尝试过的,但没有输出:
ks.cfg:
%pre
(echo "Analyzing Hardware...") >/dev/tty1
free >/dev/tty1
free_txt=`free -o`
(echo "$free_txt") >/dev/tty1
%end
Run Code Online (Sandbox Code Playgroud)
在安装的第一部分,我在屏幕上看到“分析硬件...”,但之后什么都没有.....
我有一个 Red Hat Kickstart 进程,它通过对状态服务器的 POST 请求报告关键点的进度。
这在%preand期间很好%post,但是当它们之间发生实际构建时,这是一个信息黑洞。
我写了一个简单的 shell 片段,报告安装的软件包数量,以粗略地了解进度。我已将以下内容放入%pre:
%pre
## various other stuff here, all works fine ##
cat > /tmp/rpm_watcher.sh << EOF_RPM
PREV=-1
while true
do
COUNT="\$(rpm -qa | wc -l)"
if [ \${COUNT} -ne \${PREV} ] ; then
/bin/wget --post-data " ${Hostname} : Package count \${COUNT}" ${builddest}/log
PREV=\${COUNT}
fi
sleep 15
done
EOF_RPM
/bin/sh /tmp/rpm_watcher.sh &
disown -a
%end
Run Code Online (Sandbox Code Playgroud)
但是,当我从%pre上面启动它作为后台任务时,它挂起等待脚本结束 -%pre永远不会完成(如果我杀死生成的脚本%pre完成并且构建正确开始)。
我无法使用,nohup …
我一直在尝试使用 kickstart 文件来指导 Red Hat 安装程序 (RHEL6.5),而无需用户干预。它正确地在 中查找 kickstart 文件/dev/sdb/fs.cfg,但由于 USB 被识别为/dev/sda,它实际上位于/dev/sda/fs.cfg. 我可以手动将安装程序指向这个目的地,但 kickstart 文件的其余部分依赖于让本机硬盘驱动器sda. 我想在不编辑 kickstart 文件的情况下这样做,但这是必要的,我愿意这样做。
有什么方法可以强制内核将 USB 识别为sdb和 HD识别为sda(我假设内核负责混淆,但我不确定)?它选择外部驱动器(USB)sda并强制内部驱动器(HD)sdb.
注意:我的问题与这个非常相似,除了我的 kickstart 文件绝对依赖于 HDsda
这个问题只发生在 RHEL6.5 安装程序上,而不是 RHEL5.X 安装程序上(我没有尝试过任何以前版本的 RHEL6.X)。我真正想知道的是为什么版本之间会发生变化。
我正在尝试使用Oz创建 CentOS 6.4 虚拟机映像并从 EPEL 安装一些软件包。当它尝试安装 epel-release 包时,出现错误:
Public key for epel-release-6-8.noarch.rpm is not installed
Run Code Online (Sandbox Code Playgroud)
我可以将自定义的 kickstart 文件传递给 Oz,因此我的想法是在安装后脚本中导入此密钥。我应该在该%post部分中放入什么以便导入适当的密钥?
作为参考,我的 Oz 模板如下所示:
<template>
<name>centos-6.4</name>
<os>
<name>CentOS-6</name>
<version>4</version>
<arch>x86_64</arch>
<install type='iso'>
<iso>file:///data/isos/CentOS-6.4-x86_64-bin-DVD1.iso</iso>
</install>
</os>
<description>CentOS 6.4 x86_64</description>
<repositories>
<repository name='epel-6'>
<url>http://download.fedoraproject.org/pub/epel/6/$basearch</url>
<signed>yes</signed>
</repository>
</repositories>
<packages>
<package name="epel-release" />
<package name="cloud-utils" />
<package name="cloud-init" />
</packages>
</commands>
</template>
Run Code Online (Sandbox Code Playgroud)
(我可以关闭对签名包的检查,但我想弄清楚如何在不关闭该检查的情况下执行此操作)。
编辑:这是我的自定义 kickstart 目前的样子:
install
text
key --skip
keyboard us
lang en_US.UTF-8
skipx
network --device eth0 --bootproto dhcp
rootpw %ROOTPW% …Run Code Online (Sandbox Code Playgroud) 我一直在 CentOS 上使用 Kickstart 设置机器,但我不确定kickstart文件的%pre和%post部分之间的区别.cfg。
预安装脚本的 CentOS 文档指出:
You can add commands to run on the system immediately after the ks.cfg has been parsed.
Run Code Online (Sandbox Code Playgroud)
虽然安装后脚本的部分指出:
You have the option of adding commands to run on the system once the installation is complete.
Run Code Online (Sandbox Code Playgroud)
在阅读了这个问题之后,我注意到该%pre部分似乎无法以某种方式访问文件系统。
我的问题是:
%pre和%post部分有什么区别?%pre部分是否与 kickstart 脚本同时运行(解析后)?%pre在 kickstart 脚本部分是否有可用的持久存储?我想对磁盘进行分区,但不应挂载某些分区,到目前为止我必须遵循以下解决方法:
part /srv/tmp1 --fstype=ext4 --size=1000 --ondisk=sda
Run Code Online (Sandbox Code Playgroud)
然后在安装后脚本的分区是从fstab中除去,/srv/tmp1被umount编然后被删除。
我想知道是否有 100% kickstart 解决方案?
我想在两个系统上安装 CentOS 5.5。我有一个 kickstart 文件。
我想使用这个 kickstart 文件在系统上安装 CentOS。我正在阅读fedoraproject.org和RedHat.com提供的说明,但他们建议使用 DHCP 服务器。我现在不想设置 DHCP 服务器,我不能在这个 LAN 上有 DHCP 流量。
如何在不使用 DHCP 分配 IP 并指向文件的情况下通过网络使用此 kickstart 我知道可以通过 HTTP、FTP 或 NFS 使 Kickstart 文件可用。如何将 RedHat 安装程序配置为在网络上拥有 IP 地址并从远程服务器获取 kickstart 文件?
我正在构建一个用于安装 Linux 映像(Oracle Linux,5.8)的可引导 ISO。这是使用带有 kickstart 文件的 anaconda 来选择要加载的包。其中一些软件包在其 %post 部分因依赖问题而失败。
例如,安装完成后在 /root/install.log 中可以看到:
Installing thirdparty-tools-1.00-09.noarch
/var/tmp/rpm-tmp.97891: line 1: ln: command not found
/var/tmp/rpm-tmp.97891: line 2: ln: command not found
/var/tmp/rpm-tmp.97891: line 3: ln: command not found
/var/tmp/rpm-tmp.97891: line 4: ln: command not found
error: %post(thirdparty-tools-1.00-09.noarch) scriptlet failed, exit status 127
Run Code Online (Sandbox Code Playgroud)
我试图找出是否可以控制/覆盖包排序,而无需编辑任何 RPM 来添加依赖项。我一直在浏览 anaconda/kickstart 文档(https://fedoraproject.org/wiki/Anaconda/Kickstart#Chapter_3._Package_Selection),并在其他地方广泛搜索,所以我认为答案实际上是“不,你可以”不这样做',这将是一种耻辱。
问题是我试图包含各种第三方RPM,它们不受我的控制并且已经过数字签名。这些包括在 %post 部分中的一些处理。这个处理需要一些标准的Linux 命令,例如'ln'、'touch' 等,这些命令在coreutils 包中提供。第三方包目前不包含对 coreutils 包的依赖,但显然它应该确实如此。Anaconda 使用自己的偏序算法来选择安装这些包的顺序,并且在安装coreutils 包之前安装第三方包。显然,正确的解决方案是让第三方修复这些 RPM;然而,这可能需要太长时间。
我希望它们可能是 kickstart 文件的一些隐藏/未记录的选项,这可能会添加额外的依赖项。理想情况下,我希望能够将这样的内容添加到 %packages 部分: …
我正在部署必须使用国防信息系统局 (DISA) 发布的 Red Hat 6 (v1r2) 安全技术实施指南 (STIG) 配置的系统。 链接到网站。
我已经开始开发一个 Kickstart 文件,以根据我通过 Google 找到的其他 KS 文件自动执行许多这些设置。
有没有人有任何建议、其他工具或其他有用的资源?
我不需要使用 Kickstart,它似乎是最简单的入门方法。我正在寻找任何资源:Ansible 的剧本、基本的 shell 脚本等。
我正在编写一个 kickstart 文件来配置 CentOS 7 安装。我想从 Fedora EPEL 存储库安装一些软件包,因此我repo在配置中添加了一个命令。
我无法找到应该用于该--mirrorlist选项的规范 URL。这将在哪里记录?
repo --name=epel --mirrorlist=<which url?>
%packages
# various packages
%end
Run Code Online (Sandbox Code Playgroud)
我没有看到EPEL FAQ中列出任何内容,Fedora 的镜像管理器站点只有一堆人类可读的页面。此外,kickstart 文档没有记录镜像列表必须采用的格式。