KickStart脚本
#!/bin/bash

#declare var
yum_ins="yum -y install"
sys_res="systemctl restart" #1.配置dhcp
dhcp_cfg() {
#declare dhcp_var
dhcp_path="/etc/dhcp"
dhcp_conf=$dhcp_path/dhcpd.conf
# 网段
net_seg="192.168.152.0"
# 子网掩码
net_mask="255.255.255.0"
#地址池
ran="192.168.152.201 192.168.152.204"
# 网关
op_router="192.168.152.2"
# tftp主机
next_ser="192.168.152.200" $yum_ins dhcp
#解决cp覆盖时强制询问
rm -rf $dhcp_conf
cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example $dhcp_conf
#去除注释和空行
sed -i "/^$/d;/^#/d" $dhcp_conf
#将内容存入中转文件
cat $dhcp_conf | awk 'NR<6{print $0}' >$dhcp_path/transfer
#将中转内容转回并删除
cat $dhcp_path/transfer >$dhcp_conf
rm -rf $dhcp_path/transfer
#配置dhcpd.conf文件
cat >>$dhcp_conf <<EOF
subnet $net_seg netmask $net_mask {
range $ran;
option routers $op_router;
next-server $next_ser;
filename "pxelinux.0";
}
EOF
#重启dhcp
if $sys_res dhcpd &>/dev/null; then
echo "dhcp启动完成"
else
echo "dhcp启动失败"
exit 1
fi } #2.配置tftp
tftp_cfg() {
$yum_ins tftp-server xinetd lsof
sed -i.bak '14s/yes/no/' /etc/xinetd.d/tftp
$sys_res xinetd
echo "配置tftp完成"
} #3.配置syslinux
sys_kick() { #路径
pxe_path="/var/lib/tftpboot"
pxe_cfg="$pxe_path/pxelinux.cfg"
pxe_def="$pxe_cfg/default" $yum_ins syslinux system-config-kickstart
mkdir $pxe_cfg
cp /usr/share/syslinux/pxelinux.0 $pxe_path
cp /mnt/cdrom/images/pxeboot/* $pxe_path
cp /mnt/cdrom/isolinux/isolinux.cfg $pxe_def
sed -i '1s/vesamenu.c32/linux/' $pxe_def
sed -i '64a\ append initrd=initrd.img inst.repo=ftp://192.168.152.200/pub inst.ks=ftp://192.168.152.200/ks.cfg' $pxe_def
sed -i '64d' $pxe_def echo "配置syslinux完成"
} #4.安装vsftpd
ins_ftp() {
if $yum_ins vsftpd &>/dev/null; then
if $sys_res vsftpd &>/dev/null; then
echo "安装vsftpd完成"
else
echo "重启vsftpd失败"
exit 1
fi
else
echo "安装vsftp失败"
exit 1
fi
} #5.准备执行Kickstart
use_kick() {
mount /dev/sr0 /var/ftp/pub/
echo "之前就将yum仓库命名为development",此处无需更改
cat <<EOF >/etc/yum.repos.d/development.repo
[development]
name=origin
baseurl=file:///mnt/cdrom
enabled=1
gpgcheck=0
EOF
yum clean all
yum repolist
echo "配置development yum仓库完成"
#安装图形化
$yum_ins xorg-x11-xauth
#安装语言包
yum -y groupinstall "fonts"
echo "kickstart最后准备完成"
} #执行Kickstart
echo "1.开始配置dhcp"
dhcp_cfg
echo "2.开始配置tftp"
tftp_cfg
echo "3.开始配置syslinux"
sys_kick
echo "4.安装vsftpd"
ins_ftp
echo "5.执行kickstart"
use_kick
echo "final: 开始kickstart" echo "接下来需要重连xshell"
echo "通过system-config-kickstart命令进入配置图形化界面"

报错

  • 使用kickstart无人化安装时报错ERR anaconda.stdout: Kickstart file /run/install/ks.cfg is missing

    /var/lib/tftpboot/pxelinux.cfg/default中inst.ks=ftp://192.168.152.200/ks.cfg出错,ftp忘记写

  • kickstart 由于下载软件包信息失败,软件包选择被禁止

    yum仓库名称没有改为development

  • kickstart 在图形化安装界面停止

    在生成ks.cfg文件时进入进行更改,紧急关闭生成了swap交换文件,将交换文件删除

  • Entering emeryency mode. Exit the shell to continue

    /var/lib/tftpboot下文件有问题

    没有挂载sr0 mount /dev/sr0 /var/lib/tftpboot

  • dracut-initqueue-timeout

    没有挂载sr0 mount /dev/sr0 /var/lib/tftpboot

  • 命令行卡在"#/"

    内存不够

编写kickstart脚本,执行时遇到的问题的更多相关文章

  1. linux 使用文本编辑器编写shell脚本执行权限不够

    在linux下,自己编写的脚本需要执行的时候,需要加上执行的权限 解决方式:chmod 777 test.sh

  2. crontab 中 python(cx_Oracle)脚本执行时需要用户环境变量,怎么办??

    import cx_Oracle Traceback (most recent call last): File "", line 1, in ? ImportError: lib ...

  3. windows下编写shell脚本执行错误

    在 windows 下,换行符是 \r\n,在linux下,换行符是 \n.如果你在IDEA里写sh脚本,可以手动设置脚本的换行符为 \n,如果你用notepad++写脚本,可以显示所有字符,以便明确 ...

  4. linux shell判断脚本执行时传入了多少个参数,判断脚本参数个数,参数数量

    需求描述: 在写shell脚本的时候,会有这样的需求,脚本在执行的过程中是需要传入参数的,如果没有参数传递给脚本, 就会给出相应的脚本使用方法或者例子,告知,脚本后面应该加什么样的参数.所以呢,这里要 ...

  5. expect——通过编写自动化脚本实现信息交互(整理)

    本文简要介绍了expect工具语言的功能.用法,并以实例来具体说明 expect是什么 Expect是一个免费的编程工具语言,用来完成通信过程中的交互式任务,而无需人的干预. 通过shell虽然可以实 ...

  6. 4.3.6 对象的界定通过编写接口来访问带这类命名结构的表会出问题。如前所述,SQL Server的灵活性不应用作编写错误代码或创建问题对象的借口。 注意在使用Management Studio的脚本工具时,SQL Server会界定所有的对象。这不是因为这么做是必须的,也不是编写代码的最佳方式,而是因为在界定符中封装所有的对象,比编写脚本引擎来查找需要界定的对象更容易。

    如前所述,在创建对象时,最好避免使用内嵌的空格或保留字作为对象名,但设计人员可能并没有遵守这个最佳实践原则.例如,我当前使用的数据库中有一个审核表名为Transaction,但是Transaction ...

  7. register_shutdown_function函数详解--脚本退出时执行回调函数

    register_shutdown_function — Register a function for execution on shutdown. ps:Registers a callback  ...

  8. 链接脚本在编程中的高级运用之二——执行时库和C++特性支持

    我们在链接脚本在编程中的高级运用之中的一个可变长数组中已经讲述了编译链接的原理,并且以uboot命令为例具体介绍链接脚本怎样实现可变长数组. 本章在前者的基础上继续讲述链接脚本在执行时库中的高级应用技 ...

  9. 编写Linux中sh文件执行时出现莫名字符的问题

    今天在项目中需要编写一个sh,执行一些初始化操作,然后调取原来的执行文件,但是我在操作中主要到了首行需要加入#!/bin/sh 的表达式,但是在执行时总是报错,原因是每次执行,表达式后边都会添加一个莫 ...

  10. 小记---------手动执行脚本正常执行,使用crontab定时执行时 不执行

    可能出现的原因就是因为crontab不会从用户的/etc/profile文件中读取环境变量,所以就出现 使用定时crontab执行时 无法执行 抛错 所以在使用crontab 定时执行脚本时  在脚本 ...

随机推荐

  1. 柳婼 の PAT甲级题解

      1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 102 ...

  2. 关于 CLOI 头像&博客主题征集

    是这样的,开了一个新号准备做一个官号,当作一个公告栏(?),大家访问博客或者看消息也方便 现在苦于脑袋比较笨,想不出头像来,有意者可以帮设计下 此外,还(选择性地)需要一个博客主题,主要是简洁,打开会 ...

  3. 【译】通过新的 WinUI 工作负荷和模板改进,深入原生 Windows 开发

    在 Build 2024 上,WinUI 团队宣布将重新关注 WinUI,将其作为我们推荐的原生 Windows 应用开发的首要应用开发框架之一.为了使其尽可能无缝和轻松地进入编码,我们创建了一个新的 ...

  4. ZRAM的Swap功能和 SWAP分区有什么区别

    ZRAM(压缩内存块设备)和传统的SWAP分区都是Linux系统中用来增加可用内存的方法,但它们的工作原理和实现方式有很大的区别: ZRAM 压缩内存:ZRAM使用压缩算法将数据存储在内存中.这样,当 ...

  5. 对于python中GIL的一些理解与代码实现

    近期看了一些关于GIL的一些内容,敲一下代码看看效果. # coding:utf-8 # GIL(Global Interpreter Lock):他只允许任何时刻只有一个线程处于执行状态,即使是在具 ...

  6. 13. 说一下$set,用在Vue2还是Vue3

    $set 是 vue2 中对象用来追加响应式数据的方法 : 使用格式 : $set(对象 , 属性名 , 值 ) vue3中使用 proxy 替代了 Object.defineProperty 实现对 ...

  7. 《刚刚问世》系列初窥篇-Java+Playwright自动化测试-2-环境准备与搭建-基于Maven(详细教程)

    1.简介 上一篇宏哥已经讲解和分享了如何通过引入jar包来搭建Java+Playwright自动化测试环境,这一种是比较老的方法,说白了就是过时的老古董,但是我们必须了解和知道,其实maven搭建无非 ...

  8. KubeSphere 社区双周报 | 2022-10-28

    KubeSphere 从诞生的第一天起便秉持着开源.开放的理念,并且以社区的方式成长,如今 KubeSphere 已经成为全球最受欢迎的开源容器平台之一.这些都离不开社区小伙伴的共同努力,你们为 Ku ...

  9. 重构案例:将纯HTML/JS项目迁移到Webpack

    我们已经了解了许多关于 Webpack 的知识,但要完全熟练掌握它并非易事.一个很好的学习方法是通过实际项目练习.当我们对 Webpack 的配置有了足够的理解后,就可以尝试重构一些项目.本次我选择了 ...

  10. Squid设置用户名密码

    在ubutnu上设置squid代理认证 为了在Ubuntu上设置Squid代理身份验证,您需要对Squid配置文件进行以下一些调整: 生成Squid代理身份验证密码 htpasswd是两种可用于生成代 ...