制作系统镜像-CentOS

阅读: 评论:0

2024年1月25日发(作者:)

制作系统镜像-CentOS

制作和快速批量部署系统镜像-CentOS篇

本文将介绍如何利用partclone、dd等工具制作CentOS 7系统镜像,并快速恢复系统镜像,快速批量部署,以提高大规模部署效率,简化系统环境部署。

第一部分:制作CentOS 7系统镜像

1.1 硬件环境准备

一台x86 Linux工作机,为方便讲述本文采用Rocky Linux 8虚拟机做为工作机: (可以是LiveCD、U盘系统等Linux系统)

硬件配置:任意,能流畅运行Rocky Linux 8即可

引导模式:legacy

系统版本:Rocky Linux 8.8 x86_64 Minimal

分区要求:任意

主机名:Worker

关闭selinux和firewall

一台目标机,为方便讲述,本文采用虚拟机安装CentOS 7x86_64 Minimal做为目标机:

CPU:4核

内存:8G

硬盘:60G

引导模式:legacy

系统版本:CentOS 7 x86_64 Minimal

分区要求:/boot=1G swap=8G /=剩余全部 采用标准分区

主机名:Image

1.2 目标机环境准备

目标机系统环境根据需求做好相关配置,做为母镜像,以便将来快速恢复或批量部署。两种方式配置目标机的系统环境:直接启动目标机登录系统进行相关配置及修改;做为工作机的从盘启动,然后mount分区进行相关配置及修改。两种方式均可,如果母镜像仅仅是一些基础配置及修改,推荐第二种方式,如果是相对复杂的母镜像配置及修改,推荐第一种,例如:需配置NVIDIA驱动、CUDA、NCCL等涉及到内核模块的环境处理,需选择第一种方式处理。本文采用第二种方式讲述基础环境配置及修改。

磁盘挂载:

目标机安装好CentOS 7系统后直接关机(关机后建议打个快照),不要启动,操作工作机添加硬盘,将目标机的硬盘添加进来并开机,注意硬盘启动顺序别搞错了,本文采用VMware Workstation 16 Pro,当然其他一些虚拟化软件也可以,如KVM、VirtualBox、ESXi都可。

安装partclone:

dnf install epel-release -y #安装epel软件仓库

dnf install partclone -y #安装partclone,注意版本,将来恢复镜像时尽可能保持版本一致。

1.3 制作镜像

MBR介绍:

本文主要是针对legacy引导模式进行,硬盘分区是MBR格式,首先了解一下什么是MBR,如何进行备份。MBR(Master Boot Record)是一种用于存储分区表和引导加载程序的特殊区域,通常位于磁盘的起始扇区(LBA 0)。

Boot Code (446 Bytes):

前446字节通常用于存储引导加载程序的机器码。这是一个小程序,负责引导操作系统。引导加载程序通常被加载到内存中,并负责从硬盘中加载操作系统的引导扇区。

Partition Table (64 Bytes):

接下来的64字节包含分区表信息。MBR最多支持4个主分区,每个主分区占用16字节的表项。每个表项包括以下信息:

起始CHS地址(Cylinder, Head, Sector):指定分区的起始位置。

分区类型:标识分区的类型,如FAT32、NTFS、Linux等。

结束CHS地址:指定分区的结束位置。

起始LBA地址:指定分区在磁盘上的起始逻辑块地址(Logical Block Address)。

MBR Signature (2 Bytes):

最后的2字节包含MBR的签名,通常为0x55AA。这个签名标志着MBR的有效性,如果缺少这个签名,BIOS将不会识别磁盘上的MBR,并且无法引导操作系统。

备份MBR:

以本文环境为例,工作机硬盘为/dev/nvme0n1,目标机硬盘为/dev/sda,那么执行以下命令行备份MBR

dd if=/dev/sda of= bs=512 count=1

目标机环境配置及修改:

mkdir /mnt/sda{1,3} #创建两个目录方便挂载目标机的分区

mount /dev/sda1 /mnt/sda1 #挂载目标机的/boot分区至/mnt/sda1

mount /dev/sda3 /mnt/sda3 #挂载目标机的/分区至/mnt/sda3

修改目标机grub参数:

vi /mnt/sda1/grub2/

找到大约第100行,“linux16 /7.x86_64”开头的位置,(注意这里目标机的系统版本不同,内核版本也会不同)删除rhgb和quiet两个参数,在改行结尾处添加s=0 biosdevname=0。

rhgb(Red Hat Graphical Boot)参与用于启用图形引导界面。

quiet参数用于启用启动信息、调试信息的抑制。

s=0 biosdevname=0参数用于关闭自动网络设备命名规则。

这三个参数可以根据实际情况来确定开启还是关闭,本文将它们全部关闭,自动网络设备命名规则建议网卡在大于2张或更多时再考虑启用。

关闭目标机selinux和firewalld防火墙:

sed -i "s%SELINUX=enforcing%SELINUX=disabled%g" /mnt/sda3/etc/selinux/config #关闭selinux,注意路径要根据实际情况!

rm /mnt/sda3/etc/systemd/system/e -rf

rm /mnt/sda3/etc/systemd/system//e -rf #关闭firewalld防火墙

修改目标机网卡配置文件:

cd /mnt/sda3/etc/sysconfig/network-scripts/ #cd到目标机网卡配置文件目录

mv ifcfg-ens33 ifcfg-eth0 #修改网卡配置文件名称,注意如果你没有关闭自动网络设备命名规则,可以忽略

vi ifcfg-eth0 #修改网卡配置文件内容

删除或注释UUID行,修改NAME和DEVICE参数为eth0,注意如果你没有关闭自动网络设备命名规则,可以忽略。其余的IPADDR、PREFIX、GATEWAY、DNS等参数根据实际情况修改或开启DHCP。如果批量部署,需要注意的是所有部署完成的镜像都将是相同的IP地址,可以写个开机脚本向网关查询IP地址的分配自动完成,也可以利用DHCP获取,具体方法因实际场景而异。

修改hostname:

vi /mnt/sda3/etc/hostname #根据实际需求修改,本文计算机名为: Image

可以写个一次性开机脚本,在首次启动时将hostname随机设置,避免所有hostname都相同。

设置root密码:

chmod 777 /mnt/sda3/etc/shadow #设置shadow文件777权限

python3 -c "import crypt, getpass, pwd;print (('123123', '$6$saltsalt$'))" #生成加密后的密码“123123”

注意,如果提示没有找到Python命令行,请运行 dnf install python3 安装。

vi /mnt/sda3/etc/shadow #用新生成的密码替换原来的,如果不改密码可以忽略

chmod 000 /mnt/sda3/etc/shadow #最后再将shadow权限改回原样

设置OpenSSH服务端:

vi /mnt/sda3/etc/ssh/sshd_config #将文件内“#UseDNS yes”注释去掉,并改为“UseDNS no”,避免登录时解析DNS导致卡住

修改adjtime:

vi /mnt/sda3/etc/adjtime #将UTC改为LOCAL,可选操作,如果系统镜像会在虚拟化环境使用,推荐修改为LOCAL

其他可选修改:

dracut --add-drivers 'b44 bnx2 bnx2x bnxt cnic tg3 alx atl1c atl1e atlx e1000 e1000e fm10k i40e i40evf igb igbvf ixgbe ixgbevf

8139cp 8139too r8169 mvmdio skge sky2 nvme megaraid megaraid_sas mpt2sas raid_class vmxnet3 sd_mod sg scsi_transport_iscsi ahci

libata be2iscsi bnx2i cxgbi iscsi_boot_sysfs iscsi_tcp ' /boot/7.x86_ --force –debug

#给目标机添加各类常见驱动,这样镜像就可以兼容更多的硬件,可以根据自己所需驱动模块进行添加,需注意目标机从盘模式启动无法运行该命令行,需要启动目标机进行添加,如果不行就此启动目标机,可以添加好驱动将initramfs文件copy下来保存,再去从盘模式覆盖/boot分区目录下的原始initramfs。

打包镜像:

-c -s /dev/sda1 -o #将sda1的xfs格式文件系统打包为文件,也就是/boot分区

-c -s /dev/sda3 -o #将sda3的xfs格式文件系统打包为文件,也就是/分区

至此,制作CentOS 7系统镜像的过程全部结束,得到了三个文件,、、

第二部分:快速恢复部署CentOS 7 系统镜像

2.1 恢复部署系统镜像

本文直接添加一块240G虚拟硬盘(/dev/nvme0n2)做为即将快速恢复部署的硬盘做为演示

dd if= of=/dev/nvme0n2 #写入mbr,注意此处目标硬盘必须大于母镜像打包时的硬盘大小,否则会写入失败

partprobe /dev/nvme0n2 #将/dev/nvme0n1分区表重新读取,否则后续partclone写入会无法识别分区

e -s -o /dev/nvme0n2p1 #写入/boot分区

e -s -o /dev/nvme0n2p3 #写入/分区

第三部分:结语

至此,CentOS 7安装结束,如果有其他修改,可以mount分区进行修改。可以看到,部署安装一个CentOS 7系统,partclone写入过程不到20秒完成,加上工作机启动分分钟完成。这种方式灵活多变,工作机可以是U盘Linux,如Tinycore,可以是LiveCD,也可以是PXE或iSCSI,后续有空再讲一讲如何制作UEFI系统镜像和其他系统发行版本镜像,如Windows、Ubuntu等等,如何利用PXE大批量快速自动化部署系统镜像。

制作系统镜像-CentOS

本文发布于:2024-01-25 22:07:34,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/1706191654359.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:系统   目标   分区   镜像   修改
留言与评论(共有 0 条评论)
   
验证码:
排行榜

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23