Mac读取树莓派SD卡 & 树莓派制作系统盘镜像

来源:互联网 发布:淘宝的cat是正品吗 编辑:程序博客网 时间:2024/05/21 16:55

made by Rk

本文由浙江大学《嵌入式系统》课程提供强力支持。

感谢翁恺老师 @翁恺BA5AG

/*************************************************************/


实验要求:如何在PC上修改SD里的文件和kernel image,如何将SD卡里的文件系统备份在PC的硬盘里以后可以dd。

其实就是:

在树莓派的SD卡中初始写入了一个img系统镜像,在安装各种软件以后我们有必要对树莓派的分区进行类似GHOST的备份。

步骤:

1、扩展分区

在树莓派中运行以下命令:

sudo raspi-config

选择扩展树莓派所在分区至SD卡大小。可能要求系统重启,注意做好备份工作。


2、挂载U盘

为了防止镜像文件过大,我使用了一个U盘来写入镜像文件。


方法:

1)查看设备文件

进入/dev目录,输入ls查看文件
可以用
ls sd*
查看已经插入的U盘

2)建立挂载点

在任意目录新建文件夹:
mkdir usbstorage

3)挂载

使用以下命令挂载:
sudo mount -o rw /dev/sda1 /home/~/usbstorage
其中-o参数后跟选项,rw是root账户具有读写权限,/dev/sda1 是要挂载的设备,/home/pi/usbstorage是要挂载到的目录。
挂载完毕后,进入usbstorage,用ls 查看一下,就可以看到U盘中的文件了。

如果要用户pi也可以读写,则要使用以下mount命令参数:
sudo mount -o uid=pi,gid=pi /dev/sda1 /home/pi/usbstorage

6)卸载

U盘使用完毕,须使用umount命令卸载。
umount命令必须使用 root 权限,所以要用sudo
sudo umount /home/pi/usbstorage


3、生成镜像并写入U盘

使用下面的语句生成镜像并写入:
sudo dd if=/dev/mmcblk0 of=/home/pi/usbstorage/backup.img bs=4M

此处注意加载的U盘不可以是FAT16/32格式,因为根据其文件头信息,其有最大只有4GB文件的设定(感谢logicworld的提醒)。

在Mac系统下也能使用硬盘工具直接对SD卡的隐藏分区进行备份:
mac下SD卡在/dev目录下,我使用的是USB卡槽,所以其加载到了disk1s*



4、恢复镜像

使用以下命令:
dd if=backup.img of=挂载点路径 bs=2M

亦可使用Mac下的磁盘镜像恢复工具(截图略)。

5、挂载img文件到loop设备

sudo fdisk -l /dev/loop0sudo losetup -o $[分区开头*512]  /dev/loop3 /home/pi/backup.img

6、挂载SD卡

在Mac操作系统下安装osxfuse软件与fuse-ext2软件用来支持ext文件系统
虽然后面这个插件名为ext2,实际上支持ext3和ext4…

osxfuse:https://github.com/osxfuse/osxfuse/downloads
fuse-ext2:http://sourceforge.net/projects/fuse-ext2/files/

osxfuse安装时务必选择MacFUSE Compatibility Layer
安装完毕可以看到/System/Library/Filesystems下面多了一个fuse-ext2.fs
假如输入mount -t ext4 XXX XXX 在mac下提示找不到ext4.fs

输入以下命令挂载SD卡隐藏分区:
mount -t fuse-ext2 /dev/disk1s2 /Users/rk/mnt
这样就实现了对SD卡隐藏分区(ext4)的操作。
卸载请务必使用 umount /User/rk/mnt 命令
如图:


默认情况下,fuse-ext2进行只读挂载,可以修改下面文件:
/System/Library/Filesystems/fuse-ext2.fs/fuse-ext2.util
在mount函数的参数设定中加入rw+即可,如图


原创粉丝点击