首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >raspberry pi 4交叉编译内核

raspberry pi 4交叉编译内核
EN

Stack Overflow用户
提问于 2020-11-18 20:48:12
回答 3查看 919关注 0票数 1

我是linux新手,我真的需要你的帮助。

我正在为我的学习实习做一个项目:控制传感器并将结果显示在LCD屏幕上

为此,我将使用raspberry并创建一个QT应用程序来显示传感器的结果。

引导时间需要非常短,因此我想为我的raspberri pi-4b创建一个最小的内核

我为arm64做了交叉编译:

代码语言:javascript
运行
复制
mkdir rasp_arm64
cd rasp_arm64/
git clone --depth=1 https://github.com/raspberrypi/linux
sudo apt-get install qemu-system-arm
sudo apt-get install lzop
sudo apt-get install gcc-aarch64-linux-gnu
cd linux/
make -j8 ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- mrproper
make -j8 ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- bcm2711_defconfig
make -j8 ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- Image modules dtbs

我就是这么做的

我怎样才能为我的树莓派4的SDcard创建一个.img文件呢?

我还做过https://www.raspberrypi.org/documentation/linux/kernel/building.md的工作

我补充说(有人也澄清了为什么我们需要这个) KERNEL=kernel8

在那之后我做了make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- Image modules dtbs mkdir mnt

mkdir mnt/fat32 mkdir mnt/ext4 sudo mount /dev/sdb6 mnt/fat32 sudo mount /dev/sdb7 mnt/ext4

代码语言:javascript
运行
复制
 sudo env PATH=$PATH make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- INSTALL_MOD_PATH=mnt/ext4 modules_install

sudo cp mnt/fat32/$KERNEL.img mnt/fat32/$KERNEL-backup.img

我收到一个错误,告诉我mnt/fat32/.img没有这样的文件或目录

我也试过了

代码语言:javascript
运行
复制
$ sudo cp arch/arm64/boot/dts/overlays/*.dtb* mnt/fat32/overlays/
cp: target 'mnt/fat32/overlays/' is not a directory

所以我试着创建它

代码语言:javascript
运行
复制
$ mkdir mnt/fat32/overlays
mkdir: cannot create directory ‘mnt/fat32/overlays’: Permission denied

谁能帮助我,我被困在这个错误了2个星期,我需要建立我的内核开始工作!

我也不知道这个版本的内核和这个配置是否是最小的。我可以有一个最小的启动时间与这个配置(我想改变启动顺序,只启用设备需要我的应用程序,但我当然不知道如何做),如果有人可以帮助,请照亮我!!即使你只知道一个不错的教程来推荐我或者别的什么..

如果有人能帮上忙,我将不胜感激

EN

回答 3

Stack Overflow用户

发布于 2020-11-18 23:15:07

这里最明显的问题是$KERNEL的计算结果为零。这可能是因为它在本地分配了一个值,并且没有导出。不使用KERNEL=kernel8,而使用

代码语言:javascript
运行
复制
export KERNEL=kernel8

这将确保无论在哪里使用$KERNEL,它的计算结果都是kernel8,这将解决这个问题,并且sudo cp mnt/fat32/$KERNEL.img mnt/fat32/$KERNEL-backup.img将作为sudo cp mnt/fat32/kernel8.img mnt/fat32/kernel8-backup.img执行。

票数 0
EN

Stack Overflow用户

发布于 2020-11-19 16:37:39

代码语言:javascript
运行
复制
mkdir rasp_off_exp
 cd rasp_off_exp/
 sudo apt install git bc bison flex libssl-dev make libc6-dev libncurses5-dev
 sudo apt install crossbuild-essential-arm64
 git clone --depth=1 https://github.com/raspberrypi/linux
 cd linux/
 export KERNEL=kernel8
 make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- bcm2711_defconfig
 make -j8 ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- Image modules dtbs
 lsblk
 mkdir mnt
 mkdir mnt/fat32
 mkdir mnt/ext4
 sudo mount /dev/mmcblk0p1 mnt/fat32
 sudo mount /dev/mmcblk0p2 mnt/ext4
 sudo env PATH=$PATH make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- INSTALL_MOD_PATH=mnt/ext4 modules_install
 sudo cp mnt/fat32/kernel8.img mnt/fat32/kernel8-backup.img

这是代码,但我得到了

代码语言:javascript
运行
复制
cp: cannot stat 'mnt/fat32/kernel8.img': No such file or directory
票数 0
EN

Stack Overflow用户

发布于 2021-02-03 05:54:02

https://www.raspberrypi.org/documentation/linux/kernel/building.md中的指令缺少一个步骤,并切换了其他两个步骤的顺序。这是可行的:

代码语言:javascript
运行
复制
sudo cp arch/arm/boot/zImage mnt/fat32/$KERNEL.img 
sudo cp mnt/fat32/$KERNEL.img mnt/fat32/$KERNEL-backup.img  

sudo cp arch/arm/boot/dts/*.dtb mnt/fat32/  

sudo mkdir mnt/fat32/overlays 
sudo cp arch/arm/boot/dts/overlays/*.dtb* mnt/fat32/overlays/ 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64893460

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档