重点 实验一:使用 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. HOMER docker版本安装详细流程

    概述 HOMER是一款100%开源的针对SIP/VOIP/RTC的抓包工具和监控工具. HOMER是一款强大的.运营商级.可扩展的数据包和事件捕获系统,是基于HEP/EEP协议的VoIP/RTC监控应 ...

  2. 力扣每日一题2023.1.19---2299. 强密码检验器 II

    如果一个密码满足以下所有条件,我们称它是一个 强 密码:    它有至少 8 个字符.    至少包含 一个小写英文 字母.    至少包含 一个大写英文 字母.    至少包含 一个数字 .    ...

  3. @Slf4j -- lombok.extern.slf4j.Slf4j;

    @Log4j:注解在类上:为类提供一个 属性名为log 的 log4j 日志对像 package com.atguigu.springcloud.controller; import com.atgu ...

  4. spring cloud12-spring cloud sleuth

    1.为什么需要Spring Cloud Sleuth 微服务架构是一个分布式架构,它按业务划分服务单元,一个分布式系统往往有很多个服务单元.由于服务单元数量众多,业务的复杂性,如果出现了错误和异常,很 ...

  5. python3中,//、/ 的区别

    //:地板除,返回整数结果 /:浮点数除法,返回浮点结果 例: print(3//2)  #输出1 print(3/2)  #输出1.5 拓展:判断水仙花数 # 题目:打印出所有的"水仙花数 ...

  6. NoSQL(简介、历史)

    NoSQL 为什么使用NoSQL 1.单机MySQL的网站 APP----->DAL------>MySQL 90年代:一个基本的网站访问量一般不会很大,单个数据库完全足够. 那个时候,更 ...

  7. 嵌入式Linux—FreeType矢量字体

    freetype矢量字体 常用API 1.FT_Init_FreeType函数是FreeType库中的一个函数,其作用是初始化FreeType库,并返回一个指向FT_Library对象的指针.下面是该 ...

  8. Centos7-RAID冗余磁盘阵列

    转载csdn: Centos7-RAID冗余磁盘阵列_黏住你不让你的博客-CSDN博客

  9. VS Ctrl+D 快速复制上一行

    打开 VS   工具-->选项-->环境-->键盘   选择默认值,确定.     搞定!

  10. drag拖拽相关

    实际开发中会遇到一些和拖拽有关的问题 : 1.移动端不支持鼠标拖拽功能, 2.拖拽时会选中页面中的其他文字,解决办法: <div onSelectStart="return false ...