繁体   English   中英

树莓派 4 的交叉编译内核

[英]cross compiling kernel for raspberry pi 4

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

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

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

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

我为arm64做了交叉编译:

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 的 bootalbe 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

 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 没有这样的文件或目录

我也试过

$ sudo cp arch/arm64/boot/dts/overlays/*.dtb* mnt/fat32/overlays/
cp: target 'mnt/fat32/overlays/' is not a directory

所以我试图创造它

$ mkdir mnt/fat32/overlays
mkdir: cannot create directory ‘mnt/fat32/overlays’: Permission denied

任何人都可以帮助我我现在被这个错误困住了 2 周,我需要构建我的内核才能开始处理它!

我也不知道这个版本的内核和这个配置是不是最小的。 我可以使用此配置缩短启动时间吗(我想更改启动顺序,一开始只启用我的应用程序所需的设备,但当然我不知道该怎么做)如果有人可以提供帮助,请点亮我 !! 即使你只是知道一个好的教程来推荐我什么的..

如果有人可以提供帮助,我将不胜感激

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

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

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

这是代码,但我得到了

cp: cannot stat 'mnt/fat32/kernel8.img': No such file or directory

https://www.raspberrypi.org/documentation/linux/kernel/building.md上的说明遗漏了一个步骤并切换了其他两个步骤的顺序。 这有效:

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/ 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM