光盘实现半自动化安装linux以及PXE实现自动安装
重点 实验一:使用 kickstart 半自动化安装CentOS系统
可以将定制安装光盘,并结合kickstart实现基于光盘启动的半自动化安装
实现过程
[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实现自动安装的更多相关文章
- linux系统PXE+Kickstart自动安装系统
一.PXEPXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服 ...
- centos7/rhel7下配置PXE+Kickstart自动安装linux系统
应用场景:临时安装一个系统或者批量安装linux系统,无需人工介入选择下一步,减少在安装系统上的时间浪费,提高工作效率. DHCP + TFTP + Syslinux + FTP + Kickstar ...
- PXE远程自动安装操作系统
一.PXE的工作原理 PXE:基于Client/Server的网络模式,支持远程主机通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统:PXE可以引导和安装Windows,linux等多种操 ...
- PXE+kickstart自动安装ubuntu14.04
本文参考了诸多文章,先感谢这些文章的作者. 使用pxe安装系统需要安装dhcp,tftp,http等服务(当然也可以使用其他文件共享方式比如nfs,ftp). 实验环境: 1. vmware 12 2 ...
- 无U盘安装Linux openSUSE(通过硬盘安装Linux)
一.说明 为什么会想着用硬盘安装Linux?只是因为我陆陆续续买了两个U盘,然后它们都丢了,就没再买了.然而现在又想装个openSUSE,没有U盘,只能想办法通过硬盘安装. 记录自己走过的弯路,同时也 ...
- 企业级自动化部署方案——ansible实现tomcat自动安装和配置
共耗时10多个小时 思路一 总体设计 ansible-playbook目录结构 [root@ansible ~]# tree /etc/ansible/roles/tomcat /etc/ansibl ...
- MySQL之安装(linux两种版本版本安装)
LinuxMySQL安装(Mysql5.5版本) 第一种 有安装包的安装方式 1.下载地址: http://dev.mysql.com/downloads/mysql 2.检查当前系统是否安装过mys ...
- Linux部署之批量自动安装系统之Kickstart篇
1. 安装 2. 在桌面环境下啊配置 3. Kickstart之基本配置 4. Kickstart之安装方法 5. ...
- linux部署pxe+kickstart批量安装linux操作系统
环境 系统 centos6.6 无图形界面 ip 192.168.2.1 系统 centos7.2 有图形界面 以下命令在centos6.6上执行 1. yum -y install dhcp* tf ...
- CentOS 7.2 下 PXE+kickstart 自动安装系统
一.简单概述 1.1 Kickstart 概述 对于网络安装系统,在linux 下面最熟悉的应该就是 Kickstart 以及 cobbler.写这篇文章的目的在于我公司目前使用的就是 Kicksta ...
随机推荐
- 2.4.rpx单位有内置的视图容器组件
所有的视图组件,包括view.swiper等,本身不显示任何可视化元素.它们的用途都是为了包裹其他真正显示的组件. # view 视图容器. 它类似于传统html中的div,用于包裹各种元素内容. 如 ...
- P1_Day1.学习目标
目标 能够知道如何创建小程序项目 能够清楚小程序项目的基本组成结构 能够知道小程序页面由几个部分组成 能够知道小程序中常见的组件如何使用 能够知道小程序如何进行协同开发和发布 学习目录 小程序简介 第 ...
- 图说论文《An Empirical Evaluation of In-Memory Multi-Version Concurrency Control》
本文从< An Empirical Evaluation of In-Memory Multi-Version Concurrency Control>摘取部分图片,来介绍 MVCC. 该 ...
- Java ”框架 = 注解 + 反射 + 设计模式“ 之 注解详解
Java "框架 = 注解 + 反射 + 设计模式" 之 注解详解 每博一文案 刹那间我真想令时光停住,好让我回顾自己,回顾失去的年华,缅怀哪个穿一身短小的连衣裙 和瘦窄的短衫的小 ...
- JZOJ 5033. 【NOI2017模拟3.28】A
A 题面 思路 非常抽象地让你构造树,很容易想到 \(prufer\) 序列(如果你会的话) 说明一下:\(prufer\) 序列可以唯一确定一颗树的形态 若树的节点个数为 \(n\),那么 \(pr ...
- Sidecar-详解 JuiceFS CSI Driver 新模式
近期发布的 JuiceFS CSI Driver v0.18 版本中,我们提供了一种全新的方式访问文件系统,即 JuiceFS 客户端以 Sidecar 方式运行于应用 Pod 中,且客户端与应用同生 ...
- Django中多数据库的配置,实现分库分表,主从复制,读写分离
在django项目中, 一个工程中存在多个APP应用很常见. 有时候希望不同的APP连接不同的数据库,这个时候需要建立多个数据库连接. 1. 修改项目的 settings 配置 在 settings. ...
- XAF在页面中添加按钮
参考链接:XAF在DashboardView右下方添加SimpleAction - 幽梦紫曦的专栏 - TNBLOG
- 552. 学生出勤记录 II (Hard)
问题描述 552. 学生出勤记录 II (Hard) 可以用字符串表示一个学生的出勤记录,其中的每个字符用来标记当天的出勤情况(缺勤.迟到.到场).记录中只含下面三种字符: 'A':Absent,缺勤 ...
- ionic4 可能忽略的一些细节
1.iOS中,页面被状态栏遮挡的问题 有的说 具体是解决是 在config.xml 配置如下代码 <preference name="StatusBarStyle" ...