环境

因电脑无法联网,只有一个CentOS-6.5-x86_64-bin-DVD1.iso,因此再安装一些自己需要的 Packages 时候,只能考虑从本地镜像中获取,因此就需要配置 本地 yum 源。

当然配置过程中,也跟着网上的步骤操作一遍是可以生效的,不过各种含义总是不太清楚,还是想一探究竟,也顺便简单记录操作过程。

环境介绍

  • Win 10 系统
  • VMware16
  • CentOS 6.5 X86_64

本地挂载步骤

1、ISO镜像配置

选择【虚拟机(M)】->【设置(S)】->【硬件】->【CD/DVD(IDE)】->【使用ISO镜像文件(M)】选择对应的ISO镜像(如:CentOS-6.5-x86_64-bin-DVD1.iso)。

记得勾选设备状态处的两个选项:

  • 已连接(C)
  • 启动时连接(O)

虚拟机设置
然后就能在 Linux 桌面看到 ISO 镜像文件,如下图所示:
ISO
该 ISO 镜像文件,挂载到哪里了呢?稍后会有描述。

2、设置挂载点

设置挂载点的命令是:

cd /media
mkdir -p cdrom
mount /dev/sr0 /media/cdrom/
cd cdrom/    #此时就能看到Packages,里面就有 rpm 包

当然网上比较常见的是下面3条 mount 命令:

mount /dev/sr0 /media/cdrom/     #本机执行成功
mount /dev/cdrom /media/cdrom/   #本机执行失败
mount -o loop -t iso9660 /opt/CentOS-6.5-x86_64-bin-DVD1.iso /media/cdrom/  #可以执行成功,不过这些参数都是什么东东,不懂

mount -o loop -t iso9660 /opt/CentOS-7-x86_64-Everything-1810.iso /media/cdrom/     # CentOS 7.6 平台

很好奇的是,为何有的是sr0,有的是cdrom,iso9660 又是什么?从哪里看应该是什么?后面查阅了 mount 命令才了解了含义,可以配合 df 命令查看。

[root@localhost media]# cd /media/
[root@localhost media]# df -h
Filesystem                    Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root   18G   11G  5.5G  67% /
tmpfs                         932M  232K  932M   1% /dev/shm
/dev/sda1                     485M   40M  421M   9% /boot
/dev/sr0                      4.2G  4.2G     0 100% /media/CentOS_6.5_Final

从这里可以看到前面设置的 ISO 镜像文件挂载到了 /media/CentOS_6.5_Final 下面。而该 ISO 镜像的 Filesystem 为 /dev/sr0

mount 后再次df 查看效果如下:

[root@localhost media]# df -h
Filesystem                    Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root   18G   11G  5.5G  67% /
tmpfs                         932M  232K  932M   1% /dev/shm
/dev/sda1                     485M   40M  421M   9% /boot
/dev/sr0                      4.2G  4.2G     0 100% /media/CentOS_6.5_Final
/dev/sr0                      4.2G  4.2G     0 100% /media/cdrom

3、备份yum源

一般 yum 源有4个,CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo,默认上网是用 CentOS-Base.repo。

cd /etc/yum.repos.d
mkdir bak
mv *.repo bak
cp bak/CentOS-Media.repo .
vim CentOS-Media.repo

4、修改yum源为本地

将 yum 源的CentOS-Media.repo配置中 file 修改为下面路径 /media/cdrom/(前面mount point),enabled 要设置为1。

yum配置

5、yum 测试

首先执行下面命令

yum clean all   #清原有yum缓存
yum makecache  #生成新缓存 
yum repolist    #列出你所有的yum repo
yum list        #列出所有可安装的软件包
 yum -y install screen    ##测试yum 是否可以正确运行

6、卸载镜像

umount /media/cdrom
[root@localhost ~]# df -h
Filesystem                    Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root   18G   16G  1.4G  92% /
tmpfs                         932M  232K  932M   1% /dev/shm
/dev/sda1                     485M   40M  421M   9% /boot
/dev/sr0                      4.2G  4.2G     0 100% /media/CentOS_6.5_Final

发现前面映射的 /media/cdrom 已经取消挂载了。

CentOS 7.6 平台

整个过程基本是类似的,而且部署好 ISO 镜像文件后,配置好本地 yum 源,以后再次需要使用本地 yum 安装软件的时候,直接执行下面命令即可:

mount -t iso9660 /dev/sr0 /media/cdrom/

差异点,普通用户登录 Linux 后,执行 df -h 命令是无法直接查看到 CentOS-7-x86_64-Everything-1810.iso 的 Filesystem 为 /dev/sr0 ,只能查看到 /media/cdrom/。

[root@localhost llm]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2        24G  9.2G   15G  38% /
devtmpfs        895M     0  895M   0% /dev
tmpfs           910M     0  910M   0% /dev/shm
tmpfs           910M   11M  900M   2% /run
tmpfs           910M     0  910M   0% /sys/fs/cgroup
/dev/sda5       2.0G   33M  2.0G   2% /data
/dev/sda1      1014M  176M  839M  18% /boot
tmpfs           182M  4.0K  182M   1% /run/user/42
tmpfs           182M   32K  182M   1% /run/user/1000
/dev/sr0         11G   11G     0 100% /media/cdrom
tmpfs           182M     0  182M   0% /run/user/0

不过可以使用 df -ah 来查看,也是可以查看到的,不过因为不是 root 登录,因此挂载的路径是在 /run/media// 即登陆用户名下面的。

[root@localhost llm]# df -ah             #显示所有
Filesystem      Size  Used Avail Use% Mounted on
rootfs             -     -     -    - /
sysfs              0     0     0    - /sys
devtmpfs        895M     0  895M   0% /dev

........................     #显示剔除了很多冗余项

configfs           0     0     0    - /sys/kernel/config
/dev/sda2        24G  9.2G   15G  38% /
systemd-1          -     -     -    - /proc/sys/fs/binfmt_misc
/dev/sr0         11G   11G     0 100% /run/media/llm/CentOS 7 x86_64
tmpfs           182M     0  182M   0% /run/user/0
/dev/sr0         11G   11G     0 100% /media/cdrom
binfmt_misc        0     0     0    - /proc/sys/fs/binfmt_misc

映射过之后,使用 lsblk 命令也可以查看到设置成功。

[root@localhost /]# lsblk
NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda      8:0    0  30G  0 disk
├─sda1   8:1    0   1G  0 part /boot
├─sda2   8:2    0  24G  0 part /
├─sda3   8:3    0   2G  0 part [SWAP]
├─sda4   8:4    0   1K  0 part
└─sda5   8:5    0   2G  0 part /data
sr0     11:0    1  10G  0 rom  /media/cdrom

NAME       : 这是块设备名。
MAJ:MIN    : 本栏显示主要和次要设备号。
RM         : 本栏显示设备是否可移动设备。注意,在本例中设备sdb和sr0的RM值等于1,这说明他们是可移动设备。
SIZE       : 本栏列出设备的容量大小信息。例如298.1G表明该设备大小为298.1GB,而1K表明该设备大小为1KB。
RO         : 该项表明设备是否为只读。在本案例中,所有设备的RO值为0,表明他们不是只读的。
TYPE       : 本栏显示块设备是否是磁盘或磁盘上的一个分区。在本例中,sda和sdb是磁盘,而sr0是只读存储(rom)。
MOUNTPOINT : 本栏指出设备挂载的挂载点。

另外一种 mount 方式

步骤2,我们可以考虑将 ISO 文件(如:CentOS-6.5-x86_64-bin-DVD1.iso 或者 CentOS-7-x86_64-Everything-1810.iso)拷贝到 /opt 下面,然后使用下面的命令进行mount,

mount -o loop -t iso9660 /opt/CentOS-6.5-x86_64-bin-DVD1.iso /media/cdrom/
mount -o loop -t iso9660 /opt/CentOS-7-x86_64-Everything-1810.iso /media/cdrom/

其他操作步骤和命令一样,请参看步骤 1、3、4、5.

设置开机自动挂载

厌烦了每次开机需要执行一次的mount 命令,可以直接将命令放在 /etc/rc.local 下面。打开后直接添加命令行即可。

mount -t iso9660 /dev/sr0 /media/cdrom/

截图如下:
在这里插入图片描述
此外,也留意到 /etc/rc.local 和 /etc/rc.d/rc.local 是软连接关系,因此直接那个都是可以的。
在这里插入图片描述

mount 命令

mount [-lhV]
mount -a [-fFnrsvw] [-t vfstype] [-O optlist]
mount [-fnrsvw] [-o option[,option]...]  device|dir
mount [-fnrsvw] [-t vfstype] [-o options] device dir

选顷与参数:

  • -a :依照配置文件 /etc/fstab 的数据将所有未挂载的磁盘都挂载上来;
  • -l :单纯的输入 mount 会显示目前挂载的信息。加上 -l 可增列 Label 名称;
  • -t :与 mkfs 的选项非常类似,可以加上文件系统种类来指定欲挂载的类型。 常见的 Linux 支持类型有:ext2, ext3, vfat, reiserfs, iso9660(光盘格式), nfs, cifs, smbfs(此三种为网绚文件系统类型);
  • -n :在默认的情况下,系统会将实际挂载情况实时写入 /etc/mtab 中,以利于其他程序的运作。但在某些情况下(例如单人维护模式)为了避克问题,会刻意不写入。 此时就得要使用这个 -n 选顷了;
  • -L :系统除了利用装置文件名 (例如 /dev/hdc6) 之外,还可以利用文件系统的标头名称 (Label)来进行挂载。最好为你的文件系统取一个独一无二的名称吧!;
  • -o :后面可以接一些挂载时额外加上的参数!比方说账号、密码、读写权限等:
      ro, rw:挂载文件系统成为只读(ro) 或可擦写(rw);
      loop:用来把一个文件当成硬盘分区挂接上系统
      async, sync:此文件系统是否使用同步写入 (sync)或异步 (async) 的内存机制,请参考文件系统运作方式。预设为 async。
      auto, noauto:允许此partition 被以 mount -a 自动挂载(auto)
      dev, nodev:是否允许此 partition上,可建立装置档案? dev 为可允许;
      suid, nosuid:是否允许此 partition 含有suid/sgid 的文件格式?
      exec, noexec:是否允讲此 partition 上拥有可执行 binary 档案?
      user,nouser:是否允讲此 partition 让任何使用者执行 mount ?一般来说, mount 仅有 root 可以进行,但带 user 参数,则可让一般 user 也能够对此 partition 进行 mount 。
      defaults:默认值为: rw, suid, dev, exec, auto, nouser, and async
      remount:重新挂载,这在系统出错,或重新更新参数时,很有用

举例

mount      #查看当前有哪些挂载点
mount -o loop -t iso9660 /opt/CentOS-6.5-x86_64-bin-DVD1.iso /media/cdrom/   #将光盘CentOS-6.5-x86_64-bin-DVD1.iso按照磁盘方式挂载到 /media/cdrom/
mount -o remount,rw,auto /media/cdrom  #将 /media/cdrom 重新挂载,幵加入参数为 rw 不 auto
umou

sr0 和 cdrom

开头提到了sr0 和 cdrom,其中:

  • /dev/sr0是光驱的设备名;
  • /dev/cdrom代表光驱;

cdrom 只是 sr0 的软链接。

[root@localhost ~]# ll /dev/cdrom
lrwxrwxrwx 1 root root 3 Apr  6 14:06 /dev/cdrom -> sr0
[root@localhost ~]# ll /dev/sr0
brw-rw----+ 1 root cdrom 11, 0 Apr  6 14:06 /dev/sr0
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐