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,通常分两步:
- 在 VMware 层把 ISO 连接到虚拟机的虚拟光驱。
- 在 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