制作启动U盘并在飞腾开发板上运行
背景介绍:我需要在飞腾E2000Q核心的汉为开发板上运行linux操作系统,且操作系统通过U盘启动。本文章解决的问题是如何制作U盘。使用的工具包括:1、一台x86架构的Linux台式机。2、一个128G的U盘。
构建内核、设备树、根目录
方法来源:Phytium嵌入式软件/Phytium-Linux-buildroot
系统要求
Buildroot被设计为在x86 Linux系统上运行,我们只支持在ubuntu20.04、ubuntu22.04、debian11这三种x86主机上运行phytium-linux-buildroot,不支持其他系统。 Buildroot需要主机系统上安装以下依赖包:
1 | $$ sudo apt update |
对于debian11系统,需要设置PATH环境变量:PATH=$PATH:/usr/sbin
下载phytium-linux-buildroot
1 | $ git clone https://gitee.com/phytium_embedded/phytium-linux-buildroot.git |
默认配置文件和扩展配置文件
为飞腾CPU平台构建的文件系统的配置文件位于configs目录。
其中,以defconfig结尾的为默认配置文件,以config结尾的为扩展配置文件。
defconfig可以和config文件进行组合,用以扩展特定的功能,但要注意不能随意组合。
defconfig
在phytium-linux-buildroot根目录下执行$ make list-defconfigs,返回configs目录中的defconfig配置文件。
1 | $$ cd xxx/phytium-linux-buildroot |
其中以phytium开头的为飞腾相关的defconfig配置文件,包含:
- phytium_debian_defconfig
- Build for debian systemphytium_defconfig
- Build for busybox minimal systemphytium_initrd_defconfig
- Build for initrdphytium_ubuntu_defconfig
- Build for ubuntu system
编译默认配置的文件系统
(1)加载defconfig
1 | $ make phytium_xxx_defconfig |
其中phytium_xxx_defconfig为以下文件系统之一:
phytium_ubuntu_defconfig
phytium_debian_defconfig
phytium_defconfig
(2)编译
$ make
(3)镜像的输出位置
生成的根文件系统、内核、img 镜像位于output/images目录。
img 镜像
目前buildroot支持编译img 镜像(disk.img),生成的img 镜像位于output/images目录。img 镜像包含了根文件系统、内核、设备树和GRUB。 使用img 镜像安装系统,不需要像之前那样将存储设备手动分区再拷贝文件,只需要将disk.img文件写入存储设备即可。
制作启动U盘
以下是详细的步骤,教你如何格式化U盘并重新构建两个分区。假设U盘设备名为 /dev/sdb。
步骤1:识别U盘
首先,使用 lsblk 或 fdisk -l 命令识别U盘的设备名:
lsblk
或者
sudo fdisk -l
假设你的U盘设备名是 /dev/sdb。
步骤2:使用 fdisk 分区
启动 fdisk:
sudo fdisk /dev/sdb删除现有分区:
在 fdisk 命令行中,输入以下命令删除所有现有分区:
- 输入 d 并回车,选择要删除的分区号,重复此步骤直到所有分区都删除。
- 输入 p 查看当前分区表,确保所有分区都删除。
创建新的GPT分区表:
g创建第一个分区(EFI系统分区):
- 输入 n 创建新分区,选择分区号 1,设置起始扇区和大小(例如 +512M)。
- 输入 t 修改分区类型,选择分区号 1,输入 1 设置为 EFI System。
- 创建第二个分区(根文件系统分区):
- 输入 n 创建新分区,选择分区号 2,使用默认起始扇区和默认结束扇区。
查看分区表:
p写入分区表并退出:
w
步骤3:格式化新分区
- 格式化EFI系统分区为 vfat** 文件系统**:
1
sudo mkfs.vfat /dev/sdb1
- 格式化根文件系统分区为 ext4** 文件系统**:
1
sudo mkfs.ext4 /dev/sdb2
步骤4:拷贝文件到分区
- 挂载分区:
1
sudo mount /dev/sdb1 /mnt
- 拷贝内核、设备树和GRUB到EFI分区:
1
2
3
4
5sudo cp /path/to/Image /mnt
sudo cp /path/to/e2000q-come-board.dtb /mnt
sudo cp -r /path/to/EFI/ /mnt
sync
sudo umount /dev/sdb1 - 挂载根分区:
1
sudo mount /dev/sdb2 /mnt
- 拷贝并解压根文件系统到根分区:
1
2
3
4
5
6sudo cp /path/to/rootfs.tar /mnt
cd /mnt
sudo tar xvf rootfs.tar
sync
cd ~
sudo umount /dev/sdb2
步骤5:设置U-Boot环境变量
确保U-Boot配置正确以引导新的根文件系统:
1 | setenv bootargs 'console=ttyAMA1,115200 audit=0 earlycon=pl011,0x2800d000 root=/dev/sdb2 rootdelay=5 rw;' |