CieyGet
CieyGet

技术改变世界

  • 首页
  • 分类
  • 文章归档
  • 荷兰猪

  • 搜索
手机 折腾 破解 救砖 维修 硬改 B860AV1.1 Android zerotier docker 网络 windows linux ubuntu 中兴 Padavan 宝塔 华为 电视盒子 VIM PVE 光猫 友华 PT926G

Linux 挂载包含多分区的img镜像

发表于 2023-02-16 | 分类于 Linux | 0 | 阅读次数 111

在linux中,如果映像文件(.img)含有分区表的话,那么用mount这个程序直接来挂载就有点力不从心了。因为mount只能挂载单个分区的文件系统映像文件。搜索了一下,可以实现的方法有很多,下面列举我认为比较方便通用性较高的两种方法。

方法1: kpartx

使用 kpartx 进行挂载可以在一些PC或者主线完整linux内核中使用,嵌入式设备使用起来就可能没这么方便了,视具体情况自行选择。具体方法如下,其中X和Y要看你的挂接的情况而看了

挂载

#先创建一个1G大小的映像文件来做实验
dd bs=4096 if=/dev/zero of=~/hd.img count=262144

#将映像文件挂接到loopX中去
losetup /dev/loopX ~/hd.img 

#对loopX进行分区
fdisk /dev/loopX

#我这里分了两个区,每个去512M大小
      Device Boot      Start         End      Blocks   Id  System
/dev/loopXpY            2048     1050623      524288   83  Linux
/dev/loopXpY         1050624     2097151      523264   83  Linux

#正戏来了,使用kpartd装载映像
sudo kpartx -av ~/hd.img

#装载之后,就可以在/dev/mapper/目录下看到两个loopXpY的文件了。

#接下来对loopXpY进行格式化了。
mkfs.vfat /dev/mapper/loopXpY

#然后挂载文件系统。
mount /dev/mapper/loop1p1 /media/hd1

卸载

# 卸载刚才挂接的东西
kpartx -dv /dev/loopX 
# 卸载映像文件的挂接关系
losetup -d /dev/loopX

方法2:losetup 偏移挂载

这种方法可以在没有kpartx支持的一些嵌入式设备上使用

挂载

# 先使用 fdisk 查看 img 硬盘镜像的分区结构
root@localhost~# fdisk -l /home/synoboot

Disk /home/synoboot: 1 GiB, 1073741824 bytes, 2097152 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xf110ee87

Device         Boot    Start  End    Sectors  Size Id Type
/home/synoboot1 *      2048  104447  102400   50M  b W95 FAT32
/home/synoboot2      104448  206847  102400   50M 83 Linux
/home/synoboott3      206848 2097151 1890304  923M 83 Linux

# 计算一下:
# 分区起始地址 * 扇区大小 = 偏移位置
# 例如挂载 synoboot1 分区,它的起始位置为2048,扇区大小为512 

root@localhost~# echo $((2048*512))
1048576

# 结果为 1048576
# 设置 losetup 的偏移位置为 1048576
losetup -o 1048576 /dev/loop0 /home/synoboot

# 挂载
mount /dev/loop0 /mnt/boot

root@localhost:/mnt/boot# ls -l -a
total 12
drwx------ 4 root root  512 Jan  1  1970 .
drwxr-xr-x 5 root root 4096 Feb 16 10:13 ..
-rwx------ 1 root root   12 Jan 18 16:30 ARPL-VERSION
drwx------ 3 root root  512 Dec 13 14:25 EFI
drwx------ 5 root root  512 Dec 13 14:25 grub
-rwx------ 1 root root   55 Jan 18 16:33 grub_cksum.syno
-rwx------ 1 root root   98 Jan 18 16:33 GRUB_VER
-rwx------ 1 root root 4611 Feb 15 10:26 user-config.yml

# 可以看到已经成功挂载出来了

卸载

#卸载目录
umount /mnt/boot
#卸载loop设备
losetup -d /dev/loop0
# linux
4GWIFI 折腾记录
天猫魔盒T17 EMMC 飞线编程点位
  • 文章目录
  • 站点概览
CieyGet

CieyGet

36 日志
13 分类
23 标签
RSS
Creative Commons
© 2023 CieyGet
0%