Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux kernel raspberry pi 4的交叉编译内核_Linux Kernel_Cross Compiling_Boot_Sd Card_Raspberry Pi4 - Fatal编程技术网

Linux kernel raspberry pi 4的交叉编译内核

Linux kernel raspberry pi 4的交叉编译内核,linux-kernel,cross-compiling,boot,sd-card,raspberry-pi4,Linux Kernel,Cross Compiling,Boot,Sd Card,Raspberry Pi4,我是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

我是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
这就是我所做的

我如何为我的raspberry pi 4的a bootalbe SD卡创建一个.img文件

我也曾在

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

在那之后我做到了
make ARCH=arm64 CROSS\u COMPILE=aarch64 linux gnu-Image modules dtb
mkdir mnt

mkdir mnt/fat32
mkdir mnt/ext4
sudo挂载/dev/sdb6 mnt/fat32
sudo挂载/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
有人能帮我吗?我已经陷入这个错误两周了,我需要构建我的内核来开始处理它

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


如果有人能帮助我,我将不胜感激。

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

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
执行。这里明显的问题是
$KERNEL
的计算结果为零。这可能是因为它在本地分配了一个值,而没有导出。
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
使用

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
这是代码,但是 我得到

这是代码,但是 我得到

处的说明缺少一个步骤,请切换其他两个步骤的顺序。 这项工作:

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/ 
处的说明缺少一个步骤,请切换其他两个步骤的顺序。 这项工作:

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/ 

谢谢,但它对我不起作用:(我只是创建了一个新目录,并按照您所说的“KERNEL=kernel8”进行了替换)通过“export KERNEL=kernel8”,我执行了“sudo cp mnt/fat32/kernel8.img mnt/fat32/kernel8 backup.img”,但我得到了“cp:cannot stat'mnt/fat32/kernel8.img”:没有这样的文件或目录”error@amina我明白了(据我所知,失败的命令是备份当前内核映像的命令。如果它不存在,那么进行备份就没有意义。您可以尝试在跳过备份的同时继续该过程吗,即
sudo cp…
part?我尝试了
$sudo cp arch/arm64/boot/image mnt/fat32/$kernel.img
$sudo cp-arch/arm64/boot/dts/broadcom/*.dtb-mnt/fat32/
我没问题,但当我尝试
$sudo-cp-arch/arm64/boot/dts/overlays/*.dtb*mnt/fat32/overlays/
时,目标'mnt2/fat32/overlays/'不是目录
$sudo-cp-arch/arm64/boot/dts/overlays/README-mnt/fat32/overlays/
无法创建常规文件“mnt2/fat32/overlays/”:不是目录因此我尝试在mnt/fat32中创建覆盖,但无法工作
linux/mnt/fat32$mkdir overlays mkdir:无法创建目录“overlays”:权限被拒绝
我如何修复ls:
linux/mnt/fat32$ls
的结果是
bcm271-rpi-2-b.dtb bcm2711-rpi-400.dtb bcm2837 rpi-3-b.dtb bcm2710-rpi-3-b.dtb bcm2711-rpi-4-b.dtb bcm2837-rpi-3-b-plus.dtb bcm2710-rpi-3-b-plus.dtb bcm2711-rpi-cm4.dtb bcm2837-rpi-io3.dtb bcm2710-rpi-cm3.dtb bcm2837-rpi-3-a-plus.dtb kernel8.img
是的,很抱歉,我很抱歉,我开始使用Raserry pi来重播我的应用程序太晚了!因为我无法修复这个错误但它对我不起作用:(我只是创建了一个新的目录,然后按照您所说的“KERNEL=kernel8”进行替换)通过“export KERNEL=kernel8”,我执行了“sudo cp mnt/fat32/kernel8.img mnt/fat32/kernel8 backup.img”,但我得到了“cp:cannot stat'mnt/fat32/kernel8.img”:没有这样的文件或目录”error@amina我明白了(据我所知,失败的命令是备份当前内核映像的命令。如果它不存在,那么进行备份就没有意义。您可以尝试在跳过备份的同时继续该过程吗,即
sudo cp…
part?我尝试了
$sudo cp arch/arm64/boot/image mnt/fat32/$kernel.img
$sudo cp-arch/arm64/boot/dts/broadcom/*.dtb-mnt/fat32/
我没问题,但当我尝试
$sudo-cp-arch/arm64/boot/dts/overlays/*.dtb*mnt/fat32/overlays/
时,目标'mnt2/fat32/overlays/'不是目录
$sudo-cp-arch/arm64/boot/dts/overlays/README-mnt/fat32/overlays/
无法创建常规文件“mnt2/fat32/overlays/”:不是目录,因此我尝试在mnt中创建覆盖