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. SQL无法解决排序规则 Chinese_PRC_CI_AS 和 Latin1_General_CI_AS 的冲突

    最近在执行一些跨库关联查询语句的时候提示了 "Cannot resolve the collatior conflict between "Chinese_PRC_Ci As&qu ...

  2. RxJS 系列 – 大杂烩

    前言 RxJS 有太多方法了, 想看完整的可以去看 REFERENCE – API List, 这篇介绍一些非 operator 的常用方法. NEVER NEVER.subscribe({ comp ...

  3. Go runtime 调度器精讲(十一):总览全局

    原创文章,欢迎转载,转载请注明出处,谢谢. 0. 前言 前面用了十讲介绍了 Go runtime 调度器,这一讲结合一些图在总览下 Go runtime 调度器. 1. 状态转换图 首先是 Gorou ...

  4. Java 8 新特性:Stream 流快速入门

    前言 在 java 中,涉及到对数组.集合等集合类元素的操作时,通常我们使用的是循环的方式进行逐个遍历处理,或者使用 stream 流的方式进行处理. 什么是 Stream? Stream(流)是一个 ...

  5. Spring事务传播机制(最全示例)

    我们在使用Spring框架进行开发时,经常在service层写很多方法,而且这些方法都是带事务的,那么Spring的事务怎么在多个方法之间传播呢?今天我们就仔细聊一聊. Spring的事务传播机制主要 ...

  6. CSP-S 2023 游记

    CSP-S 2023 游记 Day 0 明天便是 CSP-S 第一轮了,考试前一天万万不能学什么太复杂,太深奥的东西,最好甚至不要过于强度的用脑,保持放空的轻松地状态,心中不要有压力才是最好的考前状态 ...

  7. 【赵渝强老师】MongoDB的inMemory存储引擎

    一.MongoDB的存储引擎概述 存储引擎(Storage Engine)是MongoDB的核心组件,负责管理数据如何存储在硬盘(Disk)和内存(Memory)上.从MongoDB 3.2 版本开始 ...

  8. .NET 开源 EF Core 批处理扩展工具,真好用

    前言 Entity Framework Core(EF Core)作为 .NET 生态系统中受欢迎的对象关系映射器(ORM),其轻量级.可扩展性和支持多个数据库引擎而备受青睐. 本文将介绍一款.NET ...

  9. Go语言中JSON标签的用法与技巧

    在Go语言中,JSON标签(JSON tags)是用来指定结构体字段在序列化为JSON时的名称和行为的.JSON标签通常写在结构体字段的后面,用反引号(`)括起来.以下是一些常用的JSON标签: js ...

  10. CEOI2022

    Day1 T1 Abracadabra 题意:给你一个 \(1 \sim n\) 的排列 \(p\),保证 \(n\) 为偶数,我们对它进行足够多次数的洗牌操作,定义一次洗牌为: 考虑取出 \(p_{ ...