
[英]Meaning of some commands when cross-compiling kernel for Raspberry Pi
[英]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.