重点 实验一:使用 kickstart 半自动化安装CentOS系统

可以将定制安装光盘,并结合kickstart实现基于光盘启动的半自动化安装

实现过程

 首先下载httpd搭建个web网页
[root@centos8mini ~]# yum -y install httpd; systemctl enable --now httpd
[root@centos8mini ~]# mkdir /var/www/html/centos/8/os/x86_64/ -pv
mkdir: created directory '/var/www/html/centos'
mkdir: created directory '/var/www/html/centos/8'
mkdir: created directory '/var/www/html/centos/8/os'
mkdir: created directory '/var/www/html/centos/8/os/x86_64/'
#挂载光盘(此处是临时挂载,还是写在文件里面挂载比较好)
[root@centos8mini ~]# mount /dev/sr0 /var/www/html/centos/8/os/x86_64/
mount: /var/www/html/centos/8/os/x86_64: WARNING: device write-protected, mounted read-only.
#打开浏览器测一下看能不能访问
10.0.0.8/centos/8/os/x86_64
#建一个文件夹 起名随意
[root@centos8 ~]#mkdir –pv /data/myiso 
#把光盘里的挂载到的iso目录整个拷贝到这个文件夹下面
[root@centos8 ~]#cp -r mnt/isolinux/ /data/myiso/ 
[root@centos8 ~]#tree /data/myiso/ 
/data/myiso/ 
└── isolinux  ├── boot.cat 
  ├── boot.msg 
  ├── grub.conf 
  ├── initrd.img 
  ├── isolinux.bin 
  ├── isolinux.cfg 
  ├── ldlinux.c32 
  ├── libcom32.c32 
  ├── libutil.c32 
  ├── memtest 
  ├── splash.png 
  ├── TRANS.TBL 
  ├── vesamenu.c32 
  └── vmlinuz 
1 directory, 14 files 
 
#修改菜单文件
[root@centos8 ~]#vim /data/myiso/isolinux/isolinux.cfg 
#方法1:应答方件放在ISO菜单文件里,但是不太方便,光盘一旦写进去只读 修改不了
label linux 
 menu label ^Auto Install CentOS Linux 8 
 kernel vmlinuz 
 initrd=initrd.img text ks=cdrom:/myks.cfg 

#方法2:应答方件放在http网络服务器上,企业里面想装主机的时候把u盘或者光盘做好塞到主机上,用u盘或者光盘启动,选中这图选罢法进行安装就可以选中应答文件进行安装

 
vim /data/myiso/isolinux/isolinux.cfg 
label linux 
 menu label ^Auto Install CentOS Linux 8  
 kernel vmlinuz 
 append initrd=initrd.img quiet ks=http://10.0.0.8/ksdir/ks8.cfg
label rescue 
 menu label ^Rescue a CentOS Linux system 
 kernel vmlinuz 
 append initrd=initrd.img inst.repo=http://10.0.0.8/centos/8 rescue quiet 
label local 
 menu default 
 menu label Boot from ^local drive 
 localboot 0xffff 
#应答文件在/var/www/html/ksdir编辑
[root@centos8mini ]# cd /var/www/html/ksdir
[root@centos8mini ksdir]# ls
ks7.cfg  ks8.cfg
[root@centos8mini ksdir]# vim ks8.cfg 
ignoredisk --only-use=sda
zerombr
text
reboot
clearpart --all --initlabel
selinux --disabled
firewall --disabled
url --url=http://10.0.0.8/centos/8/os/x86_64/
keyboard --vckeymap=us --xlayouts='us'
lang en_US.UTF-8
bootloader --append="net.ifnames=0" --location=mbr --boot-drive=sda  #此行必须指定
network  --bootproto=dhcp --device=eth0 --ipv6=auto --activate
network  --hostname=centos8.magedu.org
rootpw --iscrypted
$6$j9YhzDUnQVnxaAk8$qv7rkMcPAEbV5yvwsP666DXWYadd3jYjkA9fpxAo9qYotjGGBUclCGoP1TRv
gHBpqgc5n0RypMsPTQnVDcpO01
firstboot --enable
skipx
services --disabled="chronyd"
timezone Asia/Shanghai --isUtc --nontp
user --name=wang --
password=6oUfb/02CWfLb5l8f$sgEZeR7c7DpqfpmFDH6huSmDbW1XQNR4qKl2EPns.gOXqlnAIgv9p
TogtFVaDtEpMOC.SWXKYqxfVtd9MCwxb1 --iscrypted --gecos="wang"
#autopart --type=lvm 如果启用这一项使用逻辑卷自动分区
#part / --fstype xfs --size 1 --grow --ondisk sda 启用可以实现根自动使用所有剩余空间
part / --fstype="xfs" --ondisk=sda --size=102400
part /data --fstype="xfs" --ondisk=sda --size=51200
part swap --fstype="swap" --ondisk=sda --size=2048
part /boot --fstype="ext4" --ondisk=sda --size=1024
%packages
@^minimal-environment
kexec-tools
%end
%addon com_redhat_kdump --enable --reserve-mb='auto'
%end
%anaconda
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
%end
%post
useradd mage
echo magedu | passwd --stdin mage &> /dev/null
%end 

[root@centos8 ~]#cp /var/www/html/ksdir/ks8.cfg /data/myiso/

#通过mkisofs的工具把做好的文件夹的内容整个刻成iso文件,制作出一个/root/boot.iso文件 [root@centos8 ~]#dnf -y install mkisofs

[root@centos8 ~]#mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "CentOS 8.1 x86_64 boot" -b isolinux/isolinux.bin -c isolinux/boot.cat -o /root/boot.iso /data/myiso/ #刻成iso文件之后就可以刻到光盘里面找个机器使用它安装了 [root@centos8mini ~]# ll -h boot.iso -rw-r--r-- 1 root root 68M Sep 12 21:56 boot.iso [root@centos8 ~]sz boot.iso #注意:以上相对路径都是相对于光盘的根,和工作目录无关 #刻出来之后就可以找个机器安装

重点 实验八:实现pxe安装双系统centos6、centos7

1安装前准备

准备一台服务器 同时充当DHCP HTTP TFTP服务器,此处统称PXEserver

关闭防火墙和SELINUX,DHCP服务器静态IP

getenforce查看selinux是否关闭;iptables -vnL查看防火墙是否关闭

网络要求:关闭Vmware软件中的DHCP服务(取消对勾),基于NAT模式

注意:CentOS 7,8使用1G 内存会提示空间不足,建议2G

2 安装相关软件包并启动

DHCP并没有立刻启动需要进行下面配置

 
[root@centos8 ~]#dnf -y install dhcp-server tftp-server httpd syslinux-nonlinux 
[root@centos8 ~]#systemctl enable --now httpd tftp dhcpd  
[root@centos8 ~]ss -ntul查看端口 看服务是否起来,69和80端口打开,67端口没有起来
[root@centos8sl ~]# ss -ntlu
Netid          State        Recv-Q       Send-Q      Local Address:Port      Peer Address:Port           
udp            UNCONN           0         0          *:69                      *:*              
tcp            LISTEN           0        128         0.0.0.0:22                0.0.0.0:*              
tcp            LISTEN           0        128         *:80                      *:*              
tcp            LISTEN           0        128        [::]:22                    [::]:*    

3. 配置DHCP服务

 
[root@centos8 ~]#cp /usr/share/doc/dhcp-server/dhcpd.conf.example /etc/dhcp/dhcpd.conf
[root@centos8 ~]#vim /etc/dhcp/dhcpd.conf 
option domain-name "example.com";
option domain-name-servers 180.76.76.76,223.6.6.6;
default-lease-time 600;
max-lease-time 7200;
log-facility local7;
subnet 10.0.0.0 netmask 255.255.255.0 {
 range 10.0.0.100 10.0.0.200;
 option routers 10.0.0.2;
 next-server 10.0.0.8;
 filename "pxelinux.0"; 
 }
[root@centos8 ~]#systemctl restart dhcpd
[root@centos8 ~]#ss -nt 查看67端口是否打开

4 准备yum源和相关目录

配置针对三个服务对应的仓库,准备三个目录存放三个系统678各自的光盘挂载点;实验里在虚拟机里面加两个CD驱动器,使用ISO映像文件

正常生产中没有光盘,把光驱拷贝到电脑上然后挂载iso文件到目录里,没光驱就把iso文件下载下来挂载

 
#此处是参考阿里云的目录结构,具体看sr0,1,2分别对应centos几挂载
在虚拟机里增加678的光盘文件
[root@centos8 ~]#mkdir -pv /var/www/html/centos/{6,7}/os/x86_64/ 
[root@centos8 ~]#mount /dev/sr1 /var/www/html/centos/6/os/x86_64/
[root@centos8 ~]#mount /dev/sr2 /var/www/html/centos/7/os/x86_64

http服务已经启动,使用浏览器访问10.0.0.8/ccentos/6/os/x86_64点进目录看有没有东西,有说明仓库准备好了

5准备kickstart文件

准备两套系统针对的应答文件,准备一个专门的目录来存67各自的应答文件

 
 
[root@centos8 ~]#mkdir /var/www/html/ks/
#cd /var/www/html/ks也行
#编辑应答文件查看里面路径是不是指向10.0.0.8(生产中需要自己写应答文件)
[root@centos8 ~]#vim /var/www/html/ks/centos6.cfg 
install
text
reboot
url --url=http://10.0.0.8/centos/6/os/x86_64/
lang en_US.UTF-8
keyboard us
network --onboot yes --device eth0 --bootproto dhcp  --noipv6
rootpw  --iscrypted
$6$b6C5mM/BwOMBoK8H$cYZFrHoNlOL0iDsxOTRhwnWJ3yfFmf7mRJBOxEqGoI56UMrT8J7qlrGwX7tS
nOf7wKxYR2hAvAREILDgOgsFe1
firewall --disabled
authconfig --enableshadow --passalgo=sha512
selinux --disabled
timezone Asia/Shanghai
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb 
quiet"
zerombr
clearpart --all --initlabel
part /boot --fstype=ext4 --size=1024
part / --fstype=ext4 --size=50000
part /data --fstype=ext4 --size=30000
part swap --size=2048
%packages
@core
@server-policy
@workstation-policy
autofs
vim-enhanced
%end
%post
useradd wang 
echo magedu | passwd --stdin wang &> /dev/null
mkdir /etc/yum.repos.d/bak
mv /etc/yum.repos.d/* /etc/yum.repos.d/bak
cat > /etc/yum.repos.d/base.repo <<EOF
[base]
name=base
baseurl=file:///misc/cd
gpgcheck=0
EOF
%end
[root@centos8 ~]#vim /var/www/html/ks/centos7.cfg 
install
xconfig  --startxonboot
keyboard --vckeymap=us --xlayouts='us'
rootpw --iscrypted $1$bpNEv8S5$lK.CjNkf.YCpFPHskSNiN0
url --url="http://10.0.0.8/centos/7/os/x86_64"
lang en_US
auth  --useshadow  --passalgo=sha512
text
firstboot --enable
selinux --disabled
skipx
services --disabled="chronyd"
ignoredisk --only-use=sda
firewall --disabled
network  --bootproto=dhcp --device=ens33
reboot
timezone Asia/Shanghai --nontp
bootloader --append="crashkernel=auto" --location=mbr --boot-drive=sda
zerombr
clearpart --all --initlabel
autopart --type=lvm
%post
#sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
#systemctl disable firewalld 
mkdir /etc/yum.repos.d/backup
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup
cat > /etc/yum.repos.d/base.repo <<EOF
[base]
name=CentOS
baseurl=file:///misc/cd
       https://mirrors.aliyun.com/centos/\$releasever/os/\$basearch/
gpgcheck=0
[extras]
name=extras
baseurl=https://mirrors.aliyun.com/centos/\$releasever/extras/\$basearch
gpgcheck=0
enabled=1
[epel]
name=EPEL
baseurl=http://mirrors.aliyun.com/epel/\$releasever/\$basearch
gpgcheck=0
enabled=1
EOF
mkdir /root/.ssh -m 700
cat > /root/.ssh/authorized_keys <<EOF
ssh-rsa 
AAAAB3NzaC1yc2EAAAADAQABAAABgQDFyqd76ui/j6IGEsZpCAcNG4rQMexaA/OyrEKiLG56wFpf9rHU
rhp8b7mXrrFxP3r1UPZz3fZeGT8/u5Wr93IXeU9VtAzooXKS8Eh2EvKzuzGKw0t4lY9x2D7BGdl0zz35
3SdpAYqzZtuTEivq3N45zZEP7Y5r0Y5ocCVqL1sCuaHQucue9VTxOZKSs476QE91/pBaORgMf8ZQR6JJ
HvsN8eJmzqhggFqzwt9SiYg9lV+pFyWJfUVj3RYqfg4uw9lS4DUGHcvyL+97XKBSXejerDb9a8agm+ma
Bm/M/46DK6AQNR7wBRXBCoFszJFmeWK4MrXy6Ae3JrwVBGgTo1QKW77C+0luLAm6BjA1ZCgBGA2NXhNh
euYoBVCH6ZUz0eaU57MXD9fmkB+vyxuVjE4AhuR7hkyDrBkLdd2kTk1flcSo4yv0EFgrximrBLSaBfGC
JAdOXY9WrB0L6IoEega7NRrFWaXaEy/AJLOz+h6DxWFpKw7Ly1Wwk4KfHCeUn3s=
root@centos8.wangxiaochun.com
EOF
chmod 600 /root/.ssh/authorized_keys 
useradd magedu
echo 123456 | passwd --stdin m42
%end
%packages
@^minimal
vim-enhanced
wget
curl
tree
%end

6准备PXE启动相关文件

 
[root@centos8 ~]#mkdir /var/lib/tftpboot/centos{6,7}
#准备CentOS6,7,8各自的不同的启动菜单内核相关文件
[root@centos8 ~]#cp /var/www/html/centos/6/os/x86_64/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/centos6
[root@centos8 ~]#cp /var/www/html/centos/7/os/x86_64/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/centos7
#使用蓝色不花哨的菜单menu.c32,来自于syslinunx-nonlinux包
[root@centos8 ~]#cp /usr/share/syslinux/{pxelinux.0,menu.c32} /var/lib/tftpboot/ 
以下三个文件是CentOS8安装所必须文件 centos8的特殊要求,CentOS6,7则不需要
[root@centos8 ~]#cp /var/www/html/centos/8/os/x86_64/isolinux/{ldlinux.c32,libcom32.c32,libutil.c32} /var/lib/tftpboot/
#生成安装菜单文件
[root@centos8 ~]#mkdir /var/lib/tftpboot/pxelinux.cfg/
#把现有的菜单文件拷贝过去修修改改定制个菜单出来起个名字叫default
[root@centos8 ~]#cp /var/www/html/centos/8/os/x86_64/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
#最终目录结构如下,67各有各的文件夹,ldlinux下面都是共用的
[root@centos8 ~]#tree /var/lib/tftpboot
.
├── centos6
│   ├── initrd.img
│   └── vmlinuz
├── centos7
│   ├── initrd.img
│   └── vmlinuz
├── ldlinux.c32
├── libcom32.c32
├── libutil.c32
├── menu.c32
├── pxelinux.0
└── pxelinux.cfg
   └── default

7 准备启动菜单文件

定制菜单内容

 
#调用menu.c32简单风格的文件
[root@centos8 ~]#vim /var/lib/tftpboot/pxelinux.cfg/default 
default menu.c32
timeout 600 超时时间
menu title Install CentOS Linux 总菜单名称
  
label linux7
 menu label Auto Install CentOS Linux ^7 
 kernel centos7/vmlinuz
 append initrd=centos7/initrd.img ks=http://10.0.0.100/ks/centos7.cfg
  
label linux6
 menu label Auto Install CentOS Linux ^6 
 kernel centos6/vmlinuz
 append initrd=centos6/initrd.img ks=http://10.0.0.100/ks/centos6.cfg

label manual
 menu label ^Manual Install CentOS Linux 8.0 
 kernel centos8/vmlinuz
 append initrd=centos8/initrd.img 
inst.repo=http://10.0.0.100/centos/8/os/x86_64/
label rescue
 menu label ^Rescue a CentOS Linux system 8
 kernel centos8/vmlinuz
 append initrd=centos8/initrd.img 
inst.repo=http://10.0.0.100/centos/8/os/x86_64/ rescue 
  
#本地硬盘启动,  
label local
 menu default #设置为默认,如果服务器的时候不做选择会自动选择硬盘启动,避免本地服务器有数据的情况下被覆盖
 menu label Boot from ^local drive
 localboot 0xffff

8测试客户端基于PXE实现自动安装

没有挂光盘自动通过网络引导

新准备两台主机,设置网卡引导,可看到看启动菜单centos6和centos7,并实现自动安装

注意:VMware workstation 对于不同的CentOS 版本,生成的虚拟机的硬件并不兼容

安装

即可登录

光盘实现半自动化安装linux以及PXE实现自动安装的更多相关文章

  1. linux系统PXE+Kickstart自动安装系统

    一.PXEPXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服 ...

  2. centos7/rhel7下配置PXE+Kickstart自动安装linux系统

    应用场景:临时安装一个系统或者批量安装linux系统,无需人工介入选择下一步,减少在安装系统上的时间浪费,提高工作效率. DHCP + TFTP + Syslinux + FTP + Kickstar ...

  3. PXE远程自动安装操作系统

    一.PXE的工作原理 PXE:基于Client/Server的网络模式,支持远程主机通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统:PXE可以引导和安装Windows,linux等多种操 ...

  4. PXE+kickstart自动安装ubuntu14.04

    本文参考了诸多文章,先感谢这些文章的作者. 使用pxe安装系统需要安装dhcp,tftp,http等服务(当然也可以使用其他文件共享方式比如nfs,ftp). 实验环境: 1. vmware 12 2 ...

  5. 无U盘安装Linux openSUSE(通过硬盘安装Linux)

    一.说明 为什么会想着用硬盘安装Linux?只是因为我陆陆续续买了两个U盘,然后它们都丢了,就没再买了.然而现在又想装个openSUSE,没有U盘,只能想办法通过硬盘安装. 记录自己走过的弯路,同时也 ...

  6. 企业级自动化部署方案——ansible实现tomcat自动安装和配置

    共耗时10多个小时 思路一 总体设计 ansible-playbook目录结构 [root@ansible ~]# tree /etc/ansible/roles/tomcat /etc/ansibl ...

  7. MySQL之安装(linux两种版本版本安装)

    LinuxMySQL安装(Mysql5.5版本) 第一种 有安装包的安装方式 1.下载地址: http://dev.mysql.com/downloads/mysql 2.检查当前系统是否安装过mys ...

  8. Linux部署之批量自动安装系统之Kickstart篇

    1.         安装   2.         在桌面环境下啊配置   3.         Kickstart之基本配置   4.         Kickstart之安装方法   5.    ...

  9. linux部署pxe+kickstart批量安装linux操作系统

    环境 系统 centos6.6 无图形界面 ip 192.168.2.1 系统 centos7.2 有图形界面 以下命令在centos6.6上执行 1. yum -y install dhcp* tf ...

  10. CentOS 7.2 下 PXE+kickstart 自动安装系统

    一.简单概述 1.1 Kickstart 概述 对于网络安装系统,在linux 下面最熟悉的应该就是 Kickstart 以及 cobbler.写这篇文章的目的在于我公司目前使用的就是 Kicksta ...

随机推荐

  1. 重定向Kubernetes pod中的tcpdump输出

    重定向Kubernetes pod中的tcpdump输出 最新发现一个比较有意思的库ksniff,它是一个kubectl 插件,使用tcpdump来远程捕获Kubernetes集群中的pod流量并保存 ...

  2. Rust 的PIN的作用图

  3. Vue 03 VisualStudioCode 搭建一个Vue 框架 的详细流程

    转:https://blog.csdn.net/A_awen/article/details/122345082 1 下载VisualStudioCode 1.1 官网下载地址 https://cod ...

  4. python新冠疫情分析-世界疫情数据爬取

    事情发展:1.毕业设计是关于疫情数据的可视化展示(基于java,需要做数据可视化,需要做管理员端对数据进行增删改查处理)2.飞起来速度学爬虫,参考了非常多资料,比如b站的黑马爬取(报错,就是在切片那里 ...

  5. Spring(认识、IOC的开发过程、创建bean的方式)

    spring框架(spring全家桶) spring FrameWork springBoot+springCloud+springCloud Data Flow 一:spring的两大核心机制: I ...

  6. python之路76 路飞项目 企业项目类型、软件开发流程、路飞项目需求、pip永久换源、虚拟环境、路飞项目前后端创建、包导入、后端项目目录调整

    知识获取渠道 cnblogs csdn 掘金 思否 找工作app boss直骗.拉钩.智联.猎聘.脉脉(内推,hr). 企业项目类型 1.面向互联网用户:商城类项目 微信小程序商城 2.面向互联网用户 ...

  7. JavaSE基础 (全网最全知识点)

    背景介绍 java运行机理(即使编译型语言,又是解释型语言) 编译型语言(如:c语言) 源代码需要通过预编译形成可执行文件,再由系统执行该文件形成可识别的二进制文件 解释型语言 边执行边转换.源代码先 ...

  8. LeetCode-1719 重构一棵树的方案数

    来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/number-of-ways-to-reconstruct-a-tree 题目描述 给你一个数组  ...

  9. spring 特性

    1.Aware系列接口 spring 6.0提供了一系列的Aware接口,方便我们在Bean加载时获取信息 如 @Service public class study implements BeanN ...

  10. C# 元组类型和元组文本

    从 C# 7.0 开始,可以使用元组类型和元组文本轻松实现此目的. 元组类型定义元 组元素的数据类型. 元组文本提供返回的元组的实际值. 在下面的示例中, (string, string, strin ...