zoukankan      html  css  js  c++  java
  • SD卡image 的文件系统分区太小无法安装更多库(如何扩大SD卡rootfs分区)

    一、SD卡image 的启动过程

    SD卡image 的启动过程是:

    image-20210323151640394

    ( 以上截图来自:https://rocketboards.org/foswiki/Documentation/EmbeddedLinuxBeginnerSGuide)

    也就是开发板复位以后先执行boot ROM 里面的code, 这里面的code是芯片开发商已经内置的内容。然后boot ROM里面的code 会指引去加载preloader, 然后是u-boot(也称之为bootloader,这个过程会加载rbf和dtb), 然后是Linux kernel, 最后是根文件系统的加载。

    img

    二、SD卡image分区

    SD卡image 是被分为了三个区(关于image制作与分区 请参考 https://rocketboards.org/foswiki/Documentation/EmbeddedLinuxBeginnerSGuide 第7小节,https://rocketboards.org/foswiki/Documentation/GSRDSdCard 第4小节): fat区,ext区,raw区。
    fat区在windows系统下可见,这个区一般存放的文件是zimage、rbf、dtb、uboot.scr(该文件是uboot启动的脚本文件,内容参考:https://rocketboards.org/foswiki/Documentation/EmbeddedLinuxBeginnerSGuide 第5小节)等文件;
    ext区在windows系统下不可见,在linux系统下可见,存放根文件系统;
    raw分区在windows或linux下都不可见,存放uboot和preloader文件。(关于为啥放uboot和preloader只能放在raw分区,请参考我之前的博客:https://www.cnblogs.com/DoreenLiu/p/14452099.html

    img

    (以上截图来自:https://rocketboards.org/foswiki/Documentation/EmbeddedLinuxBeginnerSGuide)

    三、 如何扩大SD卡rootfs分区

    因为友晶官网提供的SD卡image的根文件系统分区分得比较小(才2G),无法安装更多库,这给应用带来局限。那如何扩大SD卡rootfs分区?

    如果要将root分区增大,就需要重新制作image(即可以尝试制作一个空的image),把rootfs分区分大一些,然后把各个分区的文件拷贝进去。

    可是我们在友晶科技官网上只能下载到 image压缩包,没有各个分区的文件(即没有image打包之前的文件)怎么办呢? 有办法——用命令先将之前image的各个分区的文件提取出来!

    具体操作如下:

    1. 提取官网image各分区文件:

      (1)reloader和 uboot 的提取:用dd指令把整个boot分区提取出来,作为一个image(命令:dd if=/dev/sdb3 of=image)。

      (2)fat分区文件直接复制就可以提取出来。

      (3)根文件系统的提取:rootfs分区用tar 指令备份(命令:mkdir temp_mount1
      mount /dev/sdb2 ./temp_mount1
      tar -zcvf rootfs.rar temp_mount1/ )

    2. 参考前面 link 重新制作一个空的SD卡image,将rootfs分区增大到你需要的容量。然后将空image烧写到SD卡:

      image-20210323155815732
    3. 将提取出来的文件拷贝到新的image的各个分区:

      (1)preloader和 uboot 的拷贝:用dd指令将之前提取的image拷贝到raw分区即可(命令:dd if=image of=/dev/sdb3 bs=64k seek=0)

      (2)fat分区文件直接复制进去。

      (3)根文件系统的拷贝:将前面提取的根文件系统文件解压到空image的rootfs分区即可(命令:mkdir temp_mount2
      mount /dev/sdb2 ./temp_mount2

      tar -xvf rootfs.tar -C /temp_mount2)

    四、 查看SD卡分区排列

    提取和拷贝的时候涉及到查看SD卡分区排列:

    命令:lsblk

    img

    或者命令:fdisk -l /dev/sdb

    img
  • 相关阅读:
    Title
    Title
    Title
    Title
    Title
    Title
    Title
    get和post两种表单提交方式的区别
    计算机网络体系结构补充内容
    计算机网络体系结构作业题整理-第十章答案
  • 原文地址:https://www.cnblogs.com/DoreenLiu/p/14569983.html
Copyright © 2011-2022 走看看