Linux挂载ISO镜像需先确认设备路径(如/dev/sr0而非/dev/cdrom),再创建挂载点并执行sudo mount -o loop -t iso9660 /path/to/file.iso /mnt/iso,卸载用sudo umount /mnt/iso。

挂载ISO镜像前先确认设备路径
很多人在执行 mount /dev/cdrom /mnt 时失败,根本原因是系统里根本没有 /dev/cdrom 这个符号链接,或者光驱设备实际是 /dev/sr0。直接 ls /dev/sr* 查看真实设备名最可靠。
常见错误现象:mount: special device /dev/cdrom does not exist
- 用
lsblk或lsscsi确认光驱设备(通常是/dev/sr0) - 手动创建软链:
ln -s /dev/sr0 /dev/cdrom(可选,方便后续操作) - 挂载命令必须带
-o ro(只读),否则可能报write-protected错误 - 挂载点目录(如
/mnt/cdrom)需提前mkdir -p创建,且权限无限制,但不能是空格或中文路径
/etc/yum.repos.d/ 下的 .repo 文件怎么写才生效
配置文件名必须以 .repo 结尾,且内容里 [id] 段标识符不能重复、不能含空格或特殊字符(比如 [centos7] 可以,[CentOS 7] 不行)。
关键参数含义和易错点:
-
baseurl=file:///mnt/cdrom:路径必须是挂载后的**绝对路径**,开头三个斜杠file:///少一个都会失效 -
enabled=1:必须为1(不是true或yes),否则 yum 直接忽略该源 -
gpgcheck=0:本地 ISO 一般没 GPG 密钥,设为1又不配gpgkey会导致Cannot retrieve metalink类错误 - 不要保留系统自带的
CentOS-Base.repo等网络源文件——它们会干扰yum repolist,建议mv *.repo /tmp/彻底隔离
yum clean all 之后为什么 repolist 还报错
执行 yum clean all 后运行 yum repolist 报 Cannot find a valid baseurl,90% 是因为挂载未生效或路径写错。
验证步骤要闭环:
- 先
ls /mnt/cdrom/Packages/看是否真有 RPM 文件(没这个目录说明挂载失败或 ISO 未正确加载) - 再
cat /etc/yum.repos.d/local.repo确认baseurl和实际挂载路径完全一致(注意结尾斜杠不影响,但拼写必须精确) - 最后
yum --disablerepo="*" --enablerepo="local" repolist强制只启用你的源,排除其他干扰 - 如果仍失败,加
-v参数查详细日志:yum -v repolist,重点看 “Trying other mirror” 后有没有尝试file://协议
开机自动挂载 ISO 镜像要不要写 /etc/fstab
写 /etc/fstab 风险高,尤其对虚拟机或云主机——一旦挂载路径不存在或 ISO 被弹出,系统可能卡在 boot stage,进不了登录界面。
更稳妥的做法是用 systemd 服务或 /etc/rc.local:
- 推荐方案:把
mount -o ro /dev/sr0 /mnt/cdrom加到/etc/rc.local(记得chmod +x /etc/rc.local) - 如果用
/etc/fstab,务必加noauto,x-systemd.automount选项,避免启动阻塞 - 虚拟机场景下,优先在宿主机层面把 ISO 设为“永久连接”,再让 guest 自动识别
/dev/sr0 - 注意:
systemctl enable rc-local在 CentOS 7+ 必须手动启用,否则/etc/rc.local不执行
真正麻烦的不是配置本身,而是挂载状态和 repo 配置之间的时间差——重启后忘记重新挂载,却直接跑 yum install,错误信息又不提示“挂载缺失”,只报 baseurl 失效。每次操作前先 mount | grep cdrom 看一眼,比反复 clean、repolist 更省时间。


















