首页 > 技术文章 > 修改现有树莓派IMG系统内容

xianeri 2022-02-22 18:34 原文

0.准备工作
img文件
按照Boot(fat32)/Root(ext4)分区
挂载点
tgt_boot/tgt_root

1.检查分区情况

pi@raspberrypi:~/backupimg $ sudo parted raspberrypi.img
GNU Parted 3.2
Using /home/pi/backupimg/raspberrypi.img
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print free                                                       
Model:  (file)
Disk /home/pi/backupimg/raspberrypi.img: 4823MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End     Size    Type     File system  Flags
        16.4kB  4194kB  4178kB           Free Space
 1      4194kB  62.7MB  58.5MB  primary               lba
        62.7MB  62.9MB  205kB            Free Space
 2      62.9MB  4822MB  4759MB  primary
        4822MB  4823MB  1049kB           Free Space

(parted) quit

可以看到Disk Flags有明显的两块分区

2.挂载Img到系统

pi@raspberrypi:~/backupimg $ sudo losetup -f --show raspberrypi.img
/dev/loop0

loop0为img在系统中的位置

pi@raspberrypi:~/backupimg $ sudo kpartx -va /dev/loop0
add map loop0p1 (254:0): 0 114288 linear 7:0 8192
add map loop0p2 (254:1): 0 9295872 linear 7:0 122880

pi@raspberrypi:~/backupimg $ ls /dev/mapper/loop0p*
/dev/mapper/loop0p1  /dev/mapper/loop0p2

请根据自己的情况在上述命令修改loop0p*

此时loop device就设置好了,loop0p1对应的是img文件分区上的 /boot,loop0p2对应的是 /(根)

挂载IMG

pi@raspberrypi:~/backupimg $ mkdir tgt_boot tgt_root
pi@raspberrypi:~/backupimg $ sudo mount -t vfat -o uid=pi,gid=pi,umask=0000 /dev/mapper/loop0p1 ./tgt_boot/
pi@raspberrypi:~/backupimg $ sudo mount -t ext4 /dev/mapper/loop0p2 ./tgt_root/

此处uid,pid为登录账户

3.挂载成功后,可进入tgt_boot/tgt_root修改内容
4.卸载挂载IMG

pi@raspberrypi:~/backupimg $ sudo umount tgt_boot tgt_root

5.删除loop device

pi@raspberrypi:~/backupimg $ sudo kpartx -d /dev/loop0
pi@raspberrypi:~/backupimg $ sudo losetup -d /dev/loop0

推荐阅读