0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

怎样创建自定义缩小的树莓派映像

454398 来源:网络整理 作者:网络整理 2020-01-28 17:35 次阅读

步骤1:准备工作

怎样创建自定义缩小的树莓派映像

首先,关闭Raspberry,拔下电源插头,然后取出sd卡。

下一步,将在Linux-PC(或Linux Live System)上进行。

请不要在后续步骤中使用Raspberry Pi!我尝试了几次,但始终失败。

启动您的Linux机器,启动控制台窗口,然后用

sudo gparted

启动gparted,然后将其插入sd卡读取器(当然还有sd卡)并刷新gparted设备列表(CTRL + R)。

在右上角的下拉菜单中选择您的sd卡。记下设备路径以供以后使用(例如/dev/sdd)。在接下来的步骤中,我们将缩小主数据分区。这将为我们节省很多时间进行下一步。因此

右键单击列表中可用的ext4分区

选择“调整大小/移动”

在“调整大小/移动”窗口中,将分区拖放调整为所需的尺寸,或仅手动输入新尺寸。在我的情况下,它的4096MiB

Hit调整大小/移动和“应用所有操作”按钮

gParted现在将调整分区的大小。

有关其他步骤,请注意分区的具体数据:

右键单击列表中的分区sdd1,然后单击“信息

注意大小,第一个扇区,最后一个扇区和总计扇区

重复分区sdd2的步骤

例如:

/dev/sdd1

Size: 63.00MiB

First sector: 8192

Last sector: 137215

Total sectors: 129024

/dev/sdd2

Size: 4.00 GiB

First sector: 137216

Last sector: 8525823

Total sectors: 8388608

现在您已经调整了大小分区以及后续步骤的一些重要值。

步骤2:保存数据

在此步骤中,我们将创建完整的备份sd卡。

等一下,您说我们想创建一个较小的卡!?

这是正确的,但是在我们可以缩小备份之前,我们需要一个可以缩小的备份。

因此,打开一个新的控制台窗口,然后键入:

su root

(如果尚未创建,请输入root密码。 ,输入“ sudo passwd”并设置一个root密码)

(su没有‘root’也可以)

如果要在外部设备上创建备份,则必须先安装它。如果您使用Linux live系统,并且想在内部(Windows)硬盘上进行备份,则也必须将其安装。

首先创建一个安装点:

mkdir -p /mnt/backup

使用gParted获取备份目标设备名称:

使用CTRL + R刷新

通过设备下拉列表确定硬盘驱动器菜单,您在第1步中使用了已知的大小。选择它并记下所需分区的设备路径(例如/dev/ sda1 )。

安装您的备份硬盘驱动器:

mount /dev/sda1 /mnt/backup

现在可以在/mnt/backup中访问您的备份空间。

让我们开始并进行备份

dd if=/dev/sdd of=/mnt/backup/rpi.img bs=1M

此命令将整个SD卡复制到我们的备份硬盘驱动器,并创建一个与SD卡一样大的图像文件。

请耐心等待,该过程可能需要很长时间!喝咖啡或喝点啤酒,也许是两个。..

步骤3:创建自定义图片

最后,我们可以开始创建自定义映像。

为此,我们创建一个具有与备份映像相同的属性但大小不同的映像磁盘。

记住奇怪的地方数字,例如您应该注意的部门?现在我们需要它们!

只需确保使用fdisk工具来获取创建的备份映像的特定数据:

fdisk -l -u=cylinders /mnt/backup/rpi.img

输出应如下所示:

Disk /mnt/backup/rpi.img: 58.2 GiB, 62537072640 bytes, 122142720 sectors

255heads, 63 sectors/track, 。.. cylinders, 。..

Units = sectors of 1 * 512 bytes = 512 bytes

以此类推。..

对于下一步,我们需要(对于每个sd卡,它们都应相同,但是以确保查找!):

heads = 255

sectors/track = 63

单位= 512字节

现在我们必须做一些数学运算。不要惊慌,这很简单。

heads * sectors/track * Units =每圆柱字节数

255 * 63 * 512 = 8225280 =》注意此值很重要!

映像的结构如下:

4 MB用于主引导记录(mbr)的未分配空间

63MB fat32引导分区

4096MB(用于数据分区)

总和该空间,您将获得 4163MB

有了这些信息,我们就可以计算出所需的柱面数。

它只是(图像大小(以字节为单位)/(每个柱面的字节数)=)圆柱

图像大小为4163 MB,要将其转换为字节,我们将该术语乘以1024两次。

4163 * 1024 * 1024 = 4365221888 =》 4365221888字节

(以字节为单位的图像大小)/(每个圆柱体的字节数)=圆柱体

4365221888/8225280 = 530,71 =》 531圆柱体

现在通过以下方式创建空白图像:

dd if=/dev/zero of=/mnt/backup/5gb.img bs=8225280 count=531

结果是一个全新的空白图像w大小为4163MB

步骤4:步骤:创建分区

创建的映像中没有分区或其他任何内容它。因此,让我们创建一些分区。..是的!

fdisk -u -C531 -S63 -H255 /mnt/backup/5gb.img

现在,工具fdisk创建了一个新的引导表,并要求您采取进一步的措施。现在,您需要从gparted中获取的扇区数据。

Command (m for help): n

Partition type:

p primary (0 primary, 0 extended, 4 free)

e extended

Select (default p): p

Partition number (1-4, default 1):1

Using default value 1

First sector (2048-6425999, default 2048): 8192

Last sector, +sectors or +size{K,M,G} (8192-6425999, default 6425999): 137215

Command (m for help): t

Selected partition 1

Hex code (type L to list codes): c

Changed system type of partition 1 to c (W95 FAT32 (LBA))

You‘ve just created the first boot partition. Now the data partition:

Command (m for help): n

Partition type:

p primary (1 primary, 0 extended, 3 free)

e extended

Select (default p): p

Partition number (1-4, default 2):2

Using default value 2

First sector (2048-6425999, default 2048): 137216

Last sector, +sectors or +size{K,M,G} (122880-6425999, default 6425999): 8525823

Command (m for help): t

Partition number (1-4): 2

Hex code (type L to list codes): 83

只需忽略默认扇区大小,并使用从gParted中获取的扇区大小即可!

现在输入“ w”,按Enter键就完成了!

Command (m for help): w

The partition table has been altered!

WARNING: If you have created or modified any DOS 6.x

partitions, please see the fdisk manual page for additional information.

Syncing disks

步骤5:复制数据

现在我们来谈谈,您可以在其中将数据传输到空白映像。

只需从引导分区到新的引导分区,使用以下命令:

dd if=/mnt/backup/rpi.img of=/mnt/backup/5gb.img bs=512 count=129024 skip=8192 seek=8192

说明:

我们跳过映像上的前4MB(mbr!),然后从第一个分区开始的8192块开始,然后复制下一个129024扇区,并在分区的最后一个扇区(137215)停止。

我们再次执行相同的操作,但对第二个分区:

dd if=/mnt/backup/rpi.img of=/mnt/backup/5gb.img bs=512 count=8388608 skip=137216 seek=137216

计数=》总扇区

跳过并查找=》第一扇区

完成!现在,您将获得一个新的4.4 GiB映像,您可以将其用于所有sd卡》 4GiB。

将其复制到sd卡上,就像其他所有Pi和启动映像一样

在此说明中,我使用了64GiB SD卡。我已经在16 GiB,8GiB和32GiB卡上测试了新的自定义图像。一切都很好。首次启动时,运行“ sudo raspi-config”并调整文件系统的大小。

随意使用此说明,进行更改或出售。我不在乎:D

受此How-To:german指令的启发

责任编辑:wv

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 树莓派
    +关注

    关注

    116

    文章

    1697

    浏览量

    105504
收藏 人收藏

    评论

    相关推荐

    创建自定义的基于闪存的引导加载程序(BSL)

    电子发烧友网站提供《创建自定义的基于闪存的引导加载程序(BSL).pdf》资料免费下载
    发表于 09-19 10:50 0次下载
    <b class='flag-5'>创建</b><b class='flag-5'>自定义</b>的基于闪存的引导加载程序(BSL)

    如何创建TestStand自定义步骤

    在之前的课程中简单地介绍过TestStand自带的一些步骤类型,如测试、消息弹窗、赋值、标签等等,这些简单的步骤从TestStand的插入选版中就可以添加到序列中。那么在使用中如果碰到需要实现更加灵活、复杂的功能,使用自带的一些步骤类型可能难以满足,这时就需要使用到自定义步骤。
    的头像 发表于 09-11 14:46 873次阅读
    如何<b class='flag-5'>创建</b>TestStand<b class='flag-5'>自定义</b>步骤

    EtherCAT运动控制器PT/PVT实现用户自定义轨迹规划

    EtherCAT运动控制器PT/PVT实现用户自定义轨迹规划。
    的头像 发表于 08-15 11:49 546次阅读
    EtherCAT运动控制器PT/PVT实现用户<b class='flag-5'>自定义</b>轨迹规划

    NVIDIA NeMo加速并简化自定义模型开发

    如果企业希望充分发挥出 AI 的力量,就需要根据其行业需求量身定制的自定义模型。
    的头像 发表于 07-26 11:17 681次阅读
    NVIDIA NeMo加速并简化<b class='flag-5'>自定义</b>模型开发

    HarmonyOS开发案例:【 自定义弹窗】

    基于ArkTS的声明式开发范式实现了三种不同的弹窗,第一种直接使用公共组件,后两种使用CustomDialogController实现自定义弹窗
    的头像 发表于 05-16 18:18 1276次阅读
    HarmonyOS开发案例:【 <b class='flag-5'>自定义</b>弹窗】

    TSMaster 自定义 LIN 调度表编程指导

    LIN(LocalInterconnectNetwork)协议调度表是用于LIN总线通信中的消息调度的一种机制,我们收到越来越多来自不同用户希望能够通过接口实现自定义LIN调度表的需求。所以在
    的头像 发表于 05-11 08:21 602次阅读
    TSMaster <b class='flag-5'>自定义</b> LIN 调度表编程指导

    HarmonyOS开发案例:【UIAbility和自定义组件生命周期】

    本文档主要描述了应用运行过程中UIAbility和自定义组件的生命周期。对于UIAbility,描述了Create、Foreground、Background、Destroy四种生命周期。对于页面
    的头像 发表于 05-10 15:31 1173次阅读
    HarmonyOS开发案例:【UIAbility和<b class='flag-5'>自定义</b>组件生命周期】

    HarmonyOS实战开发-深度探索与打造个性化自定义组件

    ,一个页面有且仅能有一个@Entry。只有被@Entry装饰的组件才可以调用页面的生命周期。 自定义组件的创建和渲染流程 自定义组件的创建自定义
    发表于 05-08 16:30

    微软Dev Home应用提供自定义文件管理支持

    据悉,Microsoft 近期发布了 0.13 版 Dev Home 应用程序,除修复多项 BUG 外,还新增了自定义文件资源管理器功能。该应用支持用户在应用内创建虚拟机,利用微软旗下的 Hyper V 技术生成本地虚拟机。
    的头像 发表于 04-26 11:15 412次阅读

    LabVIEW里Ring自定义控件,其常量无法保持同步修改,如何解决

    时,其常量无法跟随变换。 如图所示,自定义常量可以修改成不同的映射关系,同样都是“CSP”这个名称,可以对应2或者8。 如果通过创建输入控件的方式,则“CSP”这个名称一定对应的是自定义控件中约定的8
    发表于 04-24 11:20

    HarmonyOS开发实例:【自定义Emitter】

    使用[Emitter]实现事件的订阅和发布,使用[自定义弹窗]设置广告信息。
    的头像 发表于 04-14 11:37 969次阅读
    HarmonyOS开发实例:【<b class='flag-5'>自定义</b>Emitter】

    鸿蒙ArkUI实例:【自定义组件】

    组件是 OpenHarmony 页面最小显示单元,一个页面可由多个组件组合而成,也可只由一个组件组合而成,这些组件可以是ArkUI开发框架自带系统组件,比如 `Text` 、 `Button` 等,也可以是自定义组件,本节笔者简单介绍一下自定义组件的语法规范。
    的头像 发表于 04-08 10:17 601次阅读

    使用BGM210L创建一个自定义PCB,是否可以与GPIO引脚共享调试引脚?

    你好 我想使用 BGM210L 创建一个自定义 PCB,并在此自定义 PCB 上实现调试接口(SWCLK、SWDIO 等)。 由于只有几个引脚可用,是否可以共享用于调试的引脚和用于GPIO的引脚?
    发表于 01-16 08:12

    基于YOLOv8实现自定义姿态评估模型训练

    Hello大家好,今天给大家分享一下如何基于YOLOv8姿态评估模型,实现在自定义数据集上,完成自定义姿态评估模型的训练与推理。
    的头像 发表于 12-25 11:29 2774次阅读
    基于YOLOv8实现<b class='flag-5'>自定义</b>姿态评估模型训练

    博途用户自定义库的使用

    博途官方提供了很多库,比如:基本函数库、通信库、安全库、驱动库等等,用户可以使用库中的函数/函数块来完成具体的控制任务。除了官方的库,我们也可以创建自己的库(用户自定义库)。比如,把项目
    的头像 发表于 12-25 10:08 873次阅读
    博途用户<b class='flag-5'>自定义</b>库的使用