记将嵌入式Linux内核和根文件打包镜像包括u-boot
Posted qq_46604211
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了记将嵌入式Linux内核和根文件打包镜像包括u-boot相关的知识,希望对你有一定的参考价值。
记将嵌入式Linux内核和根文件打包镜像包括u-boot
1.使用dd命令创建img镜像文件:
sudo dd if=/dev/zero of=lucky.img bs=1M count=300
2.安装工具
sudo apt install kpartx qemu-utils fdisk
3.建立分区
sudo fdisk ./lucky.img
1.使用m可以查看帮助
2.使用n快速创建分区 这里第一分区是16m
3.第二分区剩下的全部(需再按一次n重新分区)
4.记得保存 使用w进行保存
5.最后按q退出
一般都选择默认 分区大小写 +16m 表示增加16m的分区如下:
Command (m for help): n //创建分区
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): p //创建主分区
Partition number (1-4, default 1): 1 //第一分区
First sector (2048-614399, default 2048): 2048 //默认 也可直接按回车
Last sector, +sectors or +size{K,M,G,T,P} (2048-614399, default 614399): +16m //表示增加16m 若直接回车表示后面的全部为该分区的内容 所以第二分区可以直接全按回车
Created a new partition 1 of type 'Linux' and of size 16 MiB.
4.加载img文件
sudo kpartx -av ./lucky.img
加载成功会出现以下位置:
sudo kpartx -av ./lucky.img
add map loop28p1 (253:0): 0 32768 linear 7:28 2048
add map loop28p2 (253:1): 0 579584 linear 7:28 34816
说明在设备加载在/dev/loop28
而两个分区是/dev/mapper/loop28p1 和loop28p2
5.格式化两分区
第一分区为fat16(按需求 v3s是fat16)
sudo mkfs -t fat /dev/mapper/loop28p1
第二分区为ext4
sudo mkfs.ext4 /dev/mapper/loop28p2 -L rootfs
6.挂载两个分区
创建两个文件夹
mkdir -p ./boot
mkdir -p ./rootfs
挂载两个分区到两个文件夹中
sudo mount /dev/mapper/loop28p1 ./boot/
sudo mount /dev/mapper/loop28p2 ./rootfs/
加载完后可以用 df -h命令查看是否挂载下面图有挂载成功的图
7.将boot,内核,设备树文件拷贝进boot分区中
boot需要按照芯片要求放置
以v3s为例子:
sudo dd if=u-boot-sunxi-with-spl.bin of=/dev/loop28 bs=1024 seek=8
(要放置在loop28设备内因为loop28p1 p2都是loop28目录下的可以使用磁盘命令lsblk -f查看树)
sudo cp ./zImage /home/book/lichee/packimg/boot
sudo cp ./sun8i-v3s-licheepi-zero-dock.dtb /home/book/lichee/packimg/boot
树命令查看后:
8.将根文件系统放入rootfs分区
sudo tar xvf rootfs.tar -C /挂载的tf卡第二个分区目录
9.卸载分区
sudo umount ./boot/
sudo umount ./rootfs/
10.卸载img
sudo kpartx -dv ./lucky.img
10.使用win32disk对sd卡进行镜像烧录
选好img ,设备后直接写入就ok 然后就可以使用了。
以上是关于记将嵌入式Linux内核和根文件打包镜像包括u-boot的主要内容,如果未能解决你的问题,请参考以下文章