Linux系统移植(五)--- 制作、烧录镜像并启动Linux
# Linux系统移植(五)--- 制作、烧录镜像并启动Linux
以Orange Pi Zero3为例。Linux,启动!!!
# 一、制作镜像文件
# 1.使用dd命令创建img镜像文件:
sudo dd if=/dev/zero of=livingteam.img bs=1M count=300
# 2.安装工具
sudo apt install kpartx fdisk
# 3.创建分区
sudo fdisk ./livingteam.img
操作如下:
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.
Command (m for help): n //创建分区
Partition type
p primary (1 primary, 0 extended, 3 free)
e extended (container for logical partitions)
Select (default p): p //创建主分区
Partition number (2-4, default 2): 2 //第二分区
First sector (34816-614399, default 34816): 34816 //默认 也可直接按回车
Last sector, +/-sectors or +/-size{K,M,G,T,P} (34816-614399, default 614399): //直接按回车,表示后面的全部为该分区的内容
Created a new partition 2 of type 'Linux' and of size 283 MiB.
Command (m for help): w //保存并退出
The partition table has been altered.
Syncing disks.
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
分区结果如下所示:
$sudo fdisk ./livingteam.img
Command (m for help): p //查看分区情况
Device Boot Start End Sectors Size Id Type
./livingteam.img1 2048 34815 32768 16M 83 Linux
./livingteam.img2 34816 614399 579584 283M 83 Linux
2
3
4
5
# 4.加载img文件
sudo kpartx -av ./livingteam.img
加载成功会出现以下位置:
add map loop18p1 (252:0): 0 32768 linear 7:18 2048
add map loop18p2 (252:1): 0 579584 linear 7:18 34816
2
说明在设备加载在/dev/loop18 而两个分区是/dev/mapper/loop18p1 和loop18p2
# 5.格式化两分区
# 第一分区为fat16(按需求 v3s是fat16)
sudo mkfs -t fat /dev/mapper/loop18p1
# 第二分区为ext4,标签为rootfs
sudo mkfs.ext4 /dev/mapper/loop18p2 -L rootfs
2
3
4
# 6.挂载两个分区
# 创建两个文件夹
mkdir -p ./boot
mkdir -p ./rootfs
# 挂载两个分区到两个文件夹中
sudo mount /dev/mapper/loop18p1 ./boot/
sudo mount /dev/mapper/loop18p2 ./rootfs/
2
3
4
5
6
# 7.将boot,内核,设备树文件拷贝进boot分区中
# boot需要按照芯片要求放置
# 以v3s为例子:
sudo dd if=u-boot-sunxi-with-spl.bin of=/dev/loop18 bs=1024 seek=8
# (要放置在loop18设备内因为loop18p1 p2都是loop18目录下的可以使用磁盘命令lsblk -f查看树)
sudo cp /linux-6.7.3/arch/arm64/boot/Image ./boot/
sudo cp /linux-6.7.3/arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero3.dtb ./boot/
2
3
4
5
6
# 8.将根文件系统放入rootfs分区
sudo cp /rootfs/* ./rootfs/ -rdf
- -d:复制时保留链接。这里所说的链接相当于 Windows 系统中的快捷方式。
-r
或--recursive
:用于复制目录及其所有的子目录和文件,如果要复制目录,需要使用该选项。-f
或--force
:强制复制,即使目标文件已存在也会覆盖,而且不给出提示。
此时,已经可以对livingteam.img文件传输到Windows上,用于下一步的烧录。
# 9.卸载分区
sudo umount ./boot/
sudo umount ./rootfs/
2
# 10.卸载img
sudo kpartx -dv ./livingteam.img
# 二、烧录镜像
将Ubuntu22.04虚拟机中的livingteam.img通过xshell和xftp传输到Windows上,在Windows上使用balenaEtcher烧录镜像。
xshell/xftp官网: 家庭/学校免费 - NetSarang Website (xshell.com) (opens new window)
balenaEtcher官网:balenaEtcher - Flash OS images to SD cards & USB drives (opens new window)
烧录过程非常简单,根据提示一步步操作即可。
# 三、通过串口连接开发板
# 硬件准备
USB转TTL模块(某宝几块钱一个)
将烧录好镜像的内存卡插入Orange Pi Zero3开发板,使用串口连接到Windows主机上。下面使Orange Pi Zero3开发板官方文档:
官网: Orange Pi Zero3 (opens new window)
# Xshell配置
1.通过设备管理器查看串口端口信息,此时为COM5
2.打开 xshell点击文件选择新建
3.新建会话属性
- 选择协议类型
- 设置串口信息:端口号
选择ASCII127,否则程序获取输入时删除键不好用
最后点击确定,在会话管理器中双击即可连接
连接成功显示下面信息:
Xshell 7 (Build 0144)
Copyright (c) 2020 NetSarang Computer, Inc. All rights reserved.
Type `help' to learn how to use Xshell prompt.
[C:\~]$
Connecting to COM5...
Connected.
2
3
4
5
6
7
8
# 四、Linux,启动!!!
插入电源,启动开发板。xshell终端输出启动log。
当输出到下面时,按下回车进入uboot命令行界面:
starting USB...
Bus usb@5200000: USB EHCI 1.00
Bus usb@5200400: USB OHCI 1.0
scanning bus usb@5200000 for devices... 1 USB Device(s) found
scanning bus usb@5200400 for devices... 1 USB Device(s) found
scanning usb for storage devices... 0 Storage Device(s) found
Hit any key to stop autoboot: 2
=>
2
3
4
5
6
7
8
输入启动参数并保存成环境变量,下次直接启动不需要进入uboot命令行界面。
setenv bootargs 'root=/dev/mmcblk0p2 rw init=/linuxrc console=ttyS0,115200 rootwait'
setenv bootcmd 'fatload mmc 0:1 0x4a000000 Image;fatload mmc 0:1 0x4ba00000 sun50i-h618-orangepi-zero3.dtb;booti 0x4a000000 - 0x4ba00000'
saveenv
boot
2
3
4
linux,启动!!!
linux启动成功,进入了命令行。不依赖库的hello_static和依赖动态库的hello_dynamic都执行成功。
至此,Linux系统移植到Orange Pi Zero3开发板圆满完成。
# 参考文章
【S5P6818】XShell串口连接开发板_connecting to com3 connected-CSDN博客 (opens new window)
XShell免费版的安装配置教程以及使用教程(超级详细、保姆级)-CSDN博客 (opens new window)
【Linux命令】fdisk 相关分区命令_fdisk查看分区信息-CSDN博客 (opens new window)
记将嵌入式Linux内核和根文件打包镜像包括u-boot_嵌入式内核和文件系统打包到一起-CSDN博客 (opens new window)
- 02
- Linux系统移植(三)--- Linux kernel移植02-05
- 03
- Linux系统移植(二)--- Uboot移植02-05