之前的文章介绍了4B设置USB启动的方法和系统迁移到USB设备的方法,主要思路就是生成当前系统的最小备份镜像然后将镜像刷入USB设备,这样做对于U盘这样的设备还是很好的,但是对于大容量的移动硬盘是不适用的,镜像刷入硬盘后,之前的分区和数据都会被覆盖。这篇文章就讲一下如何在保留硬盘数据的情况下迁移树莓派系统。

数据无价,本教程的操作有一定的风险,开始前请备份重要数据!!!

本教程兼容官方系统、基地2.0系统、Ubuntu。

这篇文章只讲系统迁移,USB启动设置请参考这里或者这里。

想让树莓派正常启动至少需要两个分区,一个FAT32分区,一个ext4分区(f2fs、btrfs也可以,看自己需要),FAT32分区存放BootLoader内核配置文件等,ext4分区为roofs挂载为根节点。我们现在要调整硬盘,把这两个分区规划出来,FAT32分区大小256M足够了多了没用,ext4分区看自己需求,建议16g以上。使用工具为DiskGenius。

打开DiskGenius,可以看到我这块硬盘目前有三个分区:

我的规划是留三个150G分区,剩下的用来迁移系统,这里注意一下,FAT32分区最好是整个磁盘第一个分区,ext4分区无所谓,所以这里调整第一个分区,在前面划出一部分空间备用,在第一分区上点击右键,选择调整分区大小

在弹出对话框中改变分区大小,让分区前出现空闲空间:

执行完之后的分区如下:

在空闲分区处新建一个NTFS分区并设置为主分区,然后保存更改:

我要迁移的系统是无桌面的,所以15G是完全够用的。
现在磁盘的调整已经完成,下面的操作在树莓派上进行,把要迁移的SD卡插到树莓派上启动,然后将调整好的硬盘插到USB接口上。

后面的操作都需要root权限,执行sudo -i切换到root用户:

#切换到root
sudo -i#查看磁盘情况
lsblk

可以看到我的硬盘设备为sda,下面对sda进行分区操作,创建FAT32和ext4分区:

#使用cfdisk操作硬盘
#操作时根据具体情况将/dev/sda替换为自己的设备
cfdisk /dev/sda

用上下方向键选择我们创建的15.8G的NTFS分区,用左右按键选择Delete操作,然后回车:

然后创建FAT32分区,用上下方向键选择调整出来的Free space,用左右按键选择New操作,然后回车:

输入分区大小:256M,回车,然后上下键选择刚创建的分区,左右键选择Type操作,回车,选择类型c,回车:



然后创建ext4分区,用上下方向键选择Free space,用左右按键选择New操作,回车,使用默认大小,回车:

然后用左右按键选择Write操作,弹出提示输入yes,回车后按q退出:

磁盘的准备工作已经完成了,现在开始迁移系统。

先执行lsblk查看我们新建的分区:

从输出我们可以看出两个分区分区别为sda1(FAT32)sda3(ext4),现在开始格式化分区:

#更新源
apt update#安装需要的软件
apt install -y dosfstools rsync#格式化FAT32分区
#根据实际情况替换/dev/sda1为自己的设备
mkfs.vfat -F 32 -n `dosfslabel /dev/mmcblk0p1 | tail -n 1` /dev/sda1#格式化ext4分区
#根据实际情况替换/dev/sda3为自己的设备
mkfs.ext4 /dev/sda3
e2label /dev/sda3 `e2label /dev/mmcblk0p2 | tail -n 1`

现在迁移boot分区:

#挂载sda1到/mnt/
#根据实际情况替换/dev/sda1为自己的设备
mount /dev/sda1 /mnt/#拷贝boot分区文件
cp -rf `findmnt -n /dev/mmcblk0p1 | awk '{print $1}'`/* /mnt/

拷贝完boot分区文件后,要替换cmdline.txt中的PARTUUID:
执行blkid,找到sda3的PARTUUID(根据自己情况确定PARTUUID)

编辑/mnt/cmdline.txt文件,将root=PARTUUID=xxx中的xxx替换自己的执行结果,我的修改结果为root=PARTUUID=a8bf0107-03如果是ubuntu系统,这步可以忽略

同步根分区:

cd#同步磁盘
sync#反挂载/mnt
umount /mnt#挂载sda3到/mnt/
#根据实际情况替换/dev/sda3为自己的设备
mount /dev/sda3 /mnt/

具体的同步工作需要写一个脚本来操作,创建文件syncrootfs.sh,内容如下:

#!/bin/bashboot_mnt=`findmnt -n /dev/mmcblk0p1 | awk '{print $1}'`rsync --force -rltWDEgop --delete --stats --progress \--exclude ".gvfs" \--exclude "$boot_mnt" \--exclude "/dev" \--exclude "/media" \--exclude "/mnt" \--exclude "/proc" \--exclude "/run" \--exclude "/snap" \--exclude "/sys" \--exclude "/tmp" \--exclude "lost\+found" \/ /mntif [ ! -d $boot_mnt ]; thenmkdir $boot_mnt
fiif [ -d /snap ]; thenmkdir /mnt/snap
fifor i in boot dev media mnt proc run sys boot; doif [ ! -d /mnt/$i ]; thenmkdir /mnt/$ifi
doneif [ ! -d /mnt/tmp ]; thenmkdir /mnt/tmpchmod a+w /mnt/tmp
fi

执行文件bash syncrootfs.sh,脚本会花费一定的时间,具体时间看迁移系统的大小,执行成功后如下图:

替换fstab文件中的PARTUUID,编辑/mnt/etc/fstab文件,将/boot/对应的PARTUUID修改为sda1sda3对应的PARTUUID如果是ubuntu系统,这步可以忽略

执行blkid

我修改后的结果为:

把改变同步到磁盘中:

cd#同步磁盘
sync#反挂载/mnt
umount /mnt

把硬盘插到电脑上,替换最新BootLoader,地址:https://github.com/Hexxeh/rpi-firmware,下载zip包,解压后把里面的fixup*.datstar*.elf文件拷贝到硬盘256M的FAT32分区替换原文件。

取下树莓派的SD卡,插上移动硬盘,上电。

启动后查看磁盘信息lsblk:

如果希望数据盘自动挂载,自行修改/etc/fstab文件,这里不做说明。

南寒天一的博客

本文为原创文章,转载请联系博主获得授权。

树莓派系统迁移到移动硬盘相关推荐

  1. 系统及软件迁移至移动硬盘

    文章首发及后续更新:https://mwhls.top/2840.html 新的更新内容请到mwhls.top查看. 无图/无目录/格式错误/更多相关请到上方的文章首发页面查看. 目前的系统迁移与软件 ...

  2. ubuntu加了张固态_将ubuntu系统迁移到ssd固态

    朋友送了一个固态硬盘给我,因此将原机械硬盘上的系统迁移到固态硬盘上. 原机械硬盘(dev/sdb)装有win10和ubuntu双系统.分区情况如下: sda1:ESP分区 sda2:资料 sda3:资 ...

  3. 记一次笔记本SSD系统迁移

    背景   研一上学期,实验室老师给我们小组添置硬件,顺便给买配件.我要了一个1T的固态和16G的内存条,内存条放在了台式机里头,固态硬盘用到笔记本里头.由于笔记本(dell 3559,比较老的型号)只 ...

  4. win10升级东芝NVME XG6 1T固态SSD,如何迁移系统(win10)-更换 m.2 NVME 系统迁移恢复

    自己笔电是联想的E480,原来的系统盘是NVME 2280 256G的,随着东西越来越多,空间不够用,所以着手升级到东芝的M.2 NVME 1TGB.那么问题来了,我原来激活的Win10 专业版系统和 ...

  5. Ubuntu 20.04 系统迁移

    一.前言 现实工作中需要在Intel NUC上装一个Ubuntu 20.04系统,并运行ROS以及相关的很多功能包,但如果直接安装新新系统,之前的大量环境变量要重新去配置,所以考虑说将原先的Ubunt ...

  6. Yoga 14s 使用DG系统迁移升级固态

    Yoga 14s 使用DG软件系统迁移升级固态 Yoga 14s 2021 MX450独显版,买的时候只有512GB,卡槽也只有一个,因此只能自己更换升级.在系统已经激活的情况下使用DiskGeniu ...

  7. 记录Win10+Ubuntu18.04(引导Win10启动)双系统迁移到SSD,Ubuntu迁移成功但丢失Win10启动项

    原来的Win10+Ubuntu双系统是先装的Win10后装Ubuntu时选择"与Windows系统共存",如此开机后由Ubuntu启动项(紫屏)接管引导进入Ubuntu或Windo ...

  8. AIX 系统迁移安装

    简介 系统迁移是在与其当前版本不同的操作系统版本上安装系统的一种方法.IBM AIX 安装提供了在不同版本上安装系统的各种方法.您可以选择以下方法: 新的.完全覆盖式的安装会覆盖选定硬盘上的所有数据. ...

  9. win7不显示移动硬盘_win7系统插上移动硬盘后灯一直闪但是不识别如何解决

    在使用win7系统的时候,我们可能经常会用到移动硬盘来操作,然而有win7 64位旗舰版系统用户发现在插上移动硬盘后灯一直闪,但是不识别,遇到这样的问题该怎么办呢,本文就给大家讲解一下win7系统插上 ...

  10. win10系统迁移后系统重装_Win10系统迁移教程

    Win10的发布,对于一众想尝鲜的朋友们来讲是终于等到了这天.如何才能使自己的电脑运作读写得更快呢?同时也为了避免重装系统的麻烦,节省安装程序的时间.进行win10系统迁移是很有必要的,win10系统 ...

最新文章

  1. CSS三大特性(129-135 )
  2. 单元测试之带你搞懂Mockito使用
  3. vant组件搜索并选择_Vant Weapp - 有赞出品的免费开源微信小程序组件库
  4. ArrayList的容量
  5. IAR astyle代码美化
  6. Python机器学习:线型回归法008实现多元线性回归
  7. VoIP之语音编码器
  8. .gitignore和“以下未跟踪的工作树文件将被签出覆盖”
  9. 福州大学第十四届程序设计竞赛-重现赛(Record)
  10. 2015软件测试面试题第三篇
  11. BUG: button点击高亮延迟问题
  12. Node.js:中间件——post请求中间件
  13. windows IIS的IUSR和IIS_IUSRS 2
  14. 总结一些常用的C语言学习网站
  15. 数据结构精品电子书分享之《数据结构题集(C语言版)》
  16. 外卖点餐系统源码|餐饮点餐源码开发
  17. 软件测试面试题整理(四)之接口测试篇
  18. 紧急通知发布解决方案(互亿无线)
  19. Linux嵌入式设备U盘挂载和拷贝文件
  20. java版飞机大战代码

热门文章

  1. hashmap自定义排序java,如何在Java中对HashMap进行排序
  2. 基于树莓派的人脸识别(Linux系统 百度智能云平台)
  3. WGS84经纬度坐标转化成UTM坐标
  4. 阿里面试真题!《阿里云技术面试红宝书》!赶紧保存下载!
  5. 软件工程需求分析阶段_正在进行的过程的7个阶段:需求工程
  6. JAVA计算机毕设题目大全
  7. 快手上市,有一批员工平均身家超3200万,但追赶抖音没那么简单
  8. AlphaGo增强式学习算法:实现‘高手指点’特效
  9. C语言基础进阶之 MessageBox()用法简介
  10. Google Earth自动生成地形