RHEL9.8 配置本地镜像仓库

RHEL9.8 配置本地镜像仓库

  • [一、VMware vSphere / ESXi](#一、VMware vSphere / ESXi)
    • [1. 将 ISO 上传到 ESXi 数据存储](#1. 将 ISO 上传到 ESXi 数据存储)
    • [2. 将 ISO 连接到虚拟机](#2. 将 ISO 连接到虚拟机)
    • [3. 在 RHEL 中确认光驱](#3. 在 RHEL 中确认光驱)
    • [4. 创建挂载目录](#4. 创建挂载目录)
    • [5. 挂载 ISO 光盘](#5. 挂载 ISO 光盘)
    • [6. 验证挂载](#6. 验证挂载)
  • [二、VMware Workstation](#二、VMware Workstation)
    • [1. 连接 ISO](#1. 连接 ISO)
    • [2. 在 RHEL 中挂载](#2. 在 RHEL 中挂载)
  • [四、ISO 文件已经上传到 RHEL 操作系统内](#四、ISO 文件已经上传到 RHEL 操作系统内)
    • [1. 检查 ISO](#1. 检查 ISO)
    • [2. 创建挂载目录](#2. 创建挂载目录)
    • [3. loop 挂载](#3. loop 挂载)
  • [五、配置成本地 yum/dnf 仓库](#五、配置成本地 yum/dnf 仓库)
  • 六、设置开机自动挂载
    • [场景一:通过 VMware 虚拟光驱连接 ISO](#场景一:通过 VMware 虚拟光驱连接 ISO)
    • [场景二:ISO 文件在虚拟机内部](#场景二:ISO 文件在虚拟机内部)
  • [七、找不到 `/dev/sr0` 的处理方法](#七、找不到 /dev/sr0 的处理方法)
    • [1. 查看所有光驱设备](#1. 查看所有光驱设备)
    • [2. 重新扫描 SCSI 总线](#2. 重新扫描 SCSI 总线)
    • [3. 加载光驱模块](#3. 加载光驱模块)
    • [4. 检查 VMware 配置](#4. 检查 VMware 配置)
  • [八、提示"no medium found"](#八、提示“no medium found”)
  • 九、提示挂载点忙或已经挂载
  • 十、完整的一次性执行命令

在 VMware 虚拟机中挂载本地 ISO,通常分两步:

  1. 在 VMware 层把 ISO 连接到虚拟机的虚拟光驱。
  2. 在 RHEL 9.8 中挂载虚拟光驱 /dev/sr0

下面按不同 VMware 环境给出完整步骤。

一、VMware vSphere / ESXi

1. 将 ISO 上传到 ESXi 数据存储

登录 vSphere Client:

text 复制代码
存储 → 选择 Datastore → 文件 → 上传文件

例如上传到:

text 复制代码
[datastore1] iso/rhel-9.8-x86_64-dvd.iso

如果 ISO 已经在内容库或数据存储中,可跳过上传。

2. 将 ISO 连接到虚拟机

在 vSphere Client 中操作:

text 复制代码
选择虚拟机
→ 操作
→ 编辑设置
→ CD/DVD 驱动器
→ 数据存储 ISO 文件
→ 浏览并选择 rhel-9.8-x86_64-dvd.iso

勾选:

text 复制代码
已连接
启动时连接

然后点击"确定"。

如果虚拟机正在运行,通常不需要重启。

3. 在 RHEL 中确认光驱

登录虚拟机:

bash 复制代码
lsblk

正常应看到类似:

text 复制代码
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda      8:0    0  100G  0 disk
├─sda1   8:1    0    1G  0 part /boot
└─sda2   8:2    0   99G  0 part
sr0     11:0    1 10.5G  0 rom

也可以执行:

bash 复制代码
ls -l /dev/sr0
blkid /dev/sr0

查看内核是否识别:

bash 复制代码
dmesg | tail -30

或者:

bash 复制代码
journalctl -k -n 30

4. 创建挂载目录

bash 复制代码
mkdir -p /mnt/rhel9

5. 挂载 ISO 光盘

bash 复制代码
mount -o ro /dev/sr0 /mnt/rhel9

也可以明确指定文件系统:

bash 复制代码
mount -t iso9660 -o ro /dev/sr0 /mnt/rhel9

出现下面提示属于正常现象:

text 复制代码
mount: /mnt/rhel9: WARNING: source write-protected, mounted read-only.

因为 ISO 光盘本身是只读的。

6. 验证挂载

bash 复制代码
mount | grep /mnt/rhel9
df -hT /mnt/rhel9
ls -lh /mnt/rhel9

RHEL 完整 DVD ISO 中通常应看到:

text 复制代码
AppStream
BaseOS
EFI
EULA
GPL
images
isolinux
media.repo

检查仓库元数据:

bash 复制代码
test -f /mnt/rhel9/BaseOS/repodata/repomd.xml \
  && echo "BaseOS 仓库正常"

test -f /mnt/rhel9/AppStream/repodata/repomd.xml \
  && echo "AppStream 仓库正常"

二、VMware Workstation

1. 连接 ISO

在 VMware Workstation 中:

text 复制代码
选择虚拟机
→ VM
→ Settings
→ CD/DVD
→ Use ISO image file
→ Browse
→ 选择本地 ISO 文件

勾选:

text 复制代码
Connected
Connect at power on

点击"OK"。

  • 检查

如果虚拟机已经启动,可以在 VMware 窗口右下角点击光驱图标,选择:

text 复制代码
Connect

2. 在 RHEL 中挂载

bash 复制代码
lsblk
mkdir -p /mnt/rhel9
mount -o ro /dev/sr0 /mnt/rhel9
ls -lh /mnt/rhel9

四、ISO 文件已经上传到 RHEL 操作系统内

如果 ISO 文件不是通过 VMware 虚拟光驱连接,而是直接上传到了虚拟机,例如:

text 复制代码
/iso/rhel-9.8-x86_64-dvd.iso

则使用 loop 方式挂载。

1. 检查 ISO

bash 复制代码
ls -lh /iso/rhel-9.8-x86_64-dvd.iso
file /iso/rhel-9.8-x86_64-dvd.iso

2. 创建挂载目录

bash 复制代码
mkdir -p /mnt/rhel9

3. loop 挂载

bash 复制代码
mount -o loop,ro /iso/rhel-9.8-x86_64-dvd.iso /mnt/rhel9

验证:

bash 复制代码
findmnt /mnt/rhel9
ls -lh /mnt/rhel9

这种方式不需要在 VMware 中配置 CD/DVD 驱动器。


五、配置成本地 yum/dnf 仓库

挂载完成后,创建仓库配置:

bash 复制代码
cat > /etc/yum.repos.d/rhel9-local.repo <<'EOF'
[rhel9-baseos-local]
name=RHEL 9 BaseOS Local ISO
baseurl=file:///mnt/rhel9/BaseOS/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

[rhel9-appstream-local]
name=RHEL 9 AppStream Local ISO
baseurl=file:///mnt/rhel9/AppStream/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
EOF

检查配置:

bash 复制代码
cat /etc/yum.repos.d/rhel9-local.repo

清理缓存:

bash 复制代码
dnf clean all
rm -rf /var/cache/dnf
dnf makecache

查看仓库:

bash 复制代码
dnf repolist

应看到:

text 复制代码
rhel9-baseos-local
rhel9-appstream-local

安装 telnet:

bash 复制代码
dnf \
  --disablerepo='*' \
  --enablerepo='rhel9-baseos-local' \
  --enablerepo='rhel9-appstream-local' \
  install -y telnet

验证:

bash 复制代码
rpm -q telnet
command -v telnet

六、设置开机自动挂载

场景一:通过 VMware 虚拟光驱连接 ISO

先备份:

bash 复制代码
cp -a /etc/fstab /etc/fstab.$(date +%F-%H%M%S).bak

加入:

bash 复制代码
echo '/dev/sr0 /mnt/rhel9 iso9660 ro,nofail,x-systemd.device-timeout=10 0 0' \
  >> /etc/fstab

测试:

bash 复制代码
umount /mnt/rhel9
mount -a
findmnt /mnt/rhel9

注意:VMware 中必须勾选"启动时连接",否则重启后 /dev/sr0 中可能没有介质。

场景二:ISO 文件在虚拟机内部

bash 复制代码
cp -a /etc/fstab /etc/fstab.$(date +%F-%H%M%S).bak

echo '/iso/rhel-9.8-x86_64-dvd.iso /mnt/rhel9 iso9660 loop,ro,nofail 0 0' \
  >> /etc/fstab

测试:

bash 复制代码
umount /mnt/rhel9
mount -a
findmnt /mnt/rhel9

七、找不到 /dev/sr0 的处理方法

1. 查看所有光驱设备

bash 复制代码
ls -l /dev/sr* /dev/cdrom 2>/dev/null
lsblk -o NAME,TYPE,SIZE,FSTYPE,MOUNTPOINTS

2. 重新扫描 SCSI 总线

bash 复制代码
for host in /sys/class/scsi_host/host*; do
    echo "- - -" > "$host/scan"
done

然后检查:

bash 复制代码
lsblk

3. 加载光驱模块

bash 复制代码
modprobe sr_mod
modprobe cdrom

检查:

bash 复制代码
lsmod | grep -E 'sr_mod|cdrom'
lsblk

4. 检查 VMware 配置

在 VMware 虚拟机设置中确认:

  • CD/DVD 驱动器确实存在;
  • 已选择正确 ISO;
  • 已勾选"已连接";
  • 没有设置为"客户端设备"但客户端未连接;
  • 控制器类型正常。

如果虚拟机没有 CD/DVD 设备,需要:

text 复制代码
编辑虚拟机设置
→ 添加新设备
→ CD/DVD 驱动器

八、提示"no medium found"

例如:

text 复制代码
mount: /mnt/rhel9: no medium found on /dev/sr0

说明系统识别到了虚拟光驱,但光驱中没有连接 ISO。

回到 VMware 中检查:

text 复制代码
CD/DVD Drive → 已连接
CD/DVD Drive → 数据存储 ISO 文件

然后在系统中执行:

bash 复制代码
eject /dev/sr0 2>/dev/null || true
sleep 2
lsblk
mount -o ro /dev/sr0 /mnt/rhel9

九、提示挂载点忙或已经挂载

查看已有挂载:

bash 复制代码
findmnt /dev/sr0
findmnt /mnt/rhel9

有些桌面环境可能自动挂载到:

text 复制代码
/run/media/root/RHEL-9-8-0-BaseOS-x86_64

查找:

bash 复制代码
findmnt -S /dev/sr0

可以直接使用自动挂载目录,或者先卸载:

bash 复制代码
umount /dev/sr0
mount -o ro /dev/sr0 /mnt/rhel9

十、完整的一次性执行命令

完成 VMware 控制台中的 ISO 连接后,在 RHEL 中执行:

bash 复制代码
set -e

echo "1. 检查光驱"
lsblk

echo "2. 创建挂载目录"
mkdir -p /mnt/rhel9

echo "3. 挂载光盘"
mountpoint -q /mnt/rhel9 || mount -o ro /dev/sr0 /mnt/rhel9

echo "4. 检查 ISO 内容"
ls -lh /mnt/rhel9

echo "5. 检查仓库元数据"
test -f /mnt/rhel9/BaseOS/repodata/repomd.xml
test -f /mnt/rhel9/AppStream/repodata/repomd.xml

echo "6. 创建本地仓库"
cat > /etc/yum.repos.d/rhel9-local.repo <<'EOF'
[rhel9-baseos-local]
name=RHEL 9 BaseOS Local ISO
baseurl=file:///mnt/rhel9/BaseOS/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

[rhel9-appstream-local]
name=RHEL 9 AppStream Local ISO
baseurl=file:///mnt/rhel9/AppStream/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
EOF

echo "7. 生成缓存"
dnf clean all
rm -rf /var/cache/dnf
dnf makecache

echo "8. 显示仓库"
dnf repolist

echo "9. 安装 telnet"
dnf \
  --disablerepo='*' \
  --enablerepo='rhel9-baseos-local' \
  --enablerepo='rhel9-appstream-local' \
  install -y telnet

echo "10. 验证"
rpm -q telnet
command -v telnet

若有转载,请标明出处:https://blog.csdn.net/CharlesYuangc/article/details/162781530

相关推荐
范什么特西1 小时前
苍穹外卖体会
java
Nontee1 小时前
数据类型与包装类 — 一个新手学Java的数据类型笔记
java·笔记·python
音符犹如代码1 小时前
Java动态线程池:避坑原生线程池,吃透Dynamic-TP,手写一个Demo
java·开发语言
私人珍藏库1 小时前
[Android] 聊天记录微备份 -聊天记录备份+本地数据备份
android·人工智能·app·软件·多功能
万亿少女的梦1682 小时前
基于Spring Boot、Vue.js和MySQL的超市管理系统设计与实现
java·vue.js·spring boot·mysql·管理系统
AI产品实战2 小时前
Gradle打包生成dependencies.xml详解
xml·java·gradle
方华世界2 小时前
企业级Java AI Agent应用平台
java·开发语言·人工智能
私人珍藏库3 小时前
[Android] PocketPal -本地离线AI助手+大模型部署神器
android·人工智能·app·软件·多功能
折哥的程序人生 · 物流技术专研3 小时前
第8篇:模板方法模式的优缺点与面试高频考点
java·设计模式·面试·模板方法模式·行为型模式·优缺点·扩充系列