在ubuntu上编译树莓派的kernel.img

网上真是坑B多。都没试过 一顿照抄。真是服


我的树莓派是树莓派B

ubuntu是14.04 x64 4G RAM 8core

1下载kernel源码

git clone https://github.com/raspberrypi/linux.git

2下载交叉编译工具

git clone https://github.com/raspberrypi/tools




我下载的内核版本是 rpi-4.1.y.tar.gz


tar -xf rpi-4.1.y.tar.gz
 cd linux-rpi-4.1.y/
make mrproper 第一次不需要清理。但是每次重新编译以前最好先执行这个命令清理一下


可能缺少的一些库 安装一下
sudo apt-get install libncurses5-dev libncursesw5-dev
sudo apt-get install zlib1g:i386
sudo apt-get install libc6-i386 lib32stdc++6 lib32gcc1 lib32ncurses5


内核需要的配置文件。如果配置不当。编译过程中各种问题。
我们直接从运行的树莓派中获取这个config文件
拷贝树莓派 /proc/config.gz 到linux-rpi-4.1.y目录下
如果树莓派中/proc目录里面没有config.gz
那么先运行 sudo modprobe configs
这样/proc/config.gz就存在了
解压到.config里面
zcat config.gz >.config
配置编译的变量 主要是编译器路径。
也就是前面https://github.com/raspberrypi/tools下载的目录里面的东西
ARCH=arm
export ARCH
CCPREFIX=/home/XXXX/RPi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-
export CCPREFIX


开始编译 j8根据你的核心来。
CROSS_COMPILE=${CCPREFIX} make -j8


编译完毕后会在arch/arm/boot目录下生成zImage这些
这个还不是kernel.img
还需要tools/mkimage目录里面的mkknlimg (需要perl)
进入这个目录执行
./mkknlimg /home/xxxxxx/RPi/rpikernel/linux-rpi-4.1.y/arch/arm/boot/zImage kernel_new.img
会在当前目录生成kernel_new.img
这个是就是可以放到SD卡里面 去的kernelimg了


为了更好研究 我把SD fat分区里面不要的都删除了
只留下了
bcm2708-rpi-b.dtb(这个是根据你的板子要留下来的)
bootcode.bin
cmdline.txt
config.txt
kernel.img(原来的)
start.elf




============
为了让树莓派加载我们的kernel_new.img
拷贝kernel_new.img到fat分区
修改config.txt
在最后面添加一行
kernel=kernel_new.img
然后 启动 就是我们的kernel了


原来的kernel.img就做个备份吧

但是我编译出来 无法识别WIFI。应该是modules模块没有安装好。这个到时候再解决。


要在Windows下交叉编译Qt 5.14.2至树莓派平台,您需要安装以下工具: 1. MinGW-w64:这是一个开源的Windows编译器,可以生成32位和64位的Windows可执行文件和Linux可执行文件。在这里,我们将使用MinGW-w64来交叉编译Qt。 2. SysGCC:SysGCC是一个基于MinGW-w64的交叉编译器,可以生成适用于ARM架构的Linux可执行文件。 3. Raspberry Pi Toolchain:这是一个树莓派交叉编译工具链。 现在,让我们开始配置工具链: 1. 安装MinGW-w64。您可以从这里下载MinGW-w64:http://mingw-w64.org/doku.php/download 2. 安装SysGCC。您可以从这里下载SysGCC:https://www.sourcetree.com/sysgcc.html 3. 安装Raspberry Pi Toolchain。您可以从这里下载Raspberry Pi Toolchain:https://github.com/raspberrypi/tools 4. 配置环境变量。在Windows系统中,您需要将MinGW-w64和Raspberry Pi Toolchain添加到环境变量中。打开“环境变量”对话框,找到“系统变量”下的“Path”,单击“编辑”,在路径列表中添加MinGW-w64和Raspberry Pi Toolchain的路径。 现在,您已经准备好开始交叉编译Qt了。按照以下步骤操作: 1. 下载Qt源代码。您可以从这里下载Qt源代码:https://www.qt.io/download-qt-installer 2. 解压Qt源代码。将源代码解压到您喜欢的位置。 3. 打开命令提示符。按下“Win + R”键,键入“cmd”并按回车键。 4. 导航到Qt源代码目录。使用“cd”命令导航到Qt源代码目录。 5. 运行configure命令。在命令提示符中运行以下命令: ``` configure -platform win32-g++ -xplatform linux-arm-gnueabihf-g++ -release -opengl es2 -device linux-rasp-pi-g++ -device-option CROSS_COMPILE=path/to/sysgcc/bin/arm-linux-gnueabihf- -sysroot path/to/raspbian/sysroot -prefix /usr/local/qt5pi -opensource -confirm-license -skip qtwebengine -skip qtscript -nomake examples -nomake tests ``` 在这个命令中,我们使用了以下参数: - `-platform win32-g++`:将Qt配置为使用MinGW-w64编译。 - `-xplatform linux-arm-gnueabihf-g++`:将Qt配置为在ARM架构上编译。 - `-release`:将Qt配置为生成发布版本。 - `-opengl es2`:将Qt配置为使用OpenGL ES 2.0。 - `-device linux-rasp-pi-g++`:将Qt配置为在树莓派平台上编译。 - `-device-option CROSS_COMPILE=path/to/sysgcc/bin/arm-linux-gnueabihf-`:告诉Qt使用SysGCC作为交叉编译器。 - `-sysroot path/to/raspbian/sysroot`:告诉Qt使用Raspbian的根文件系统作为系统根目录。 - `-prefix /usr/local/qt5pi`:告诉Qt将Qt安装到树莓派的`/usr/local/qt5pi`目录中。 - `-opensource -confirm-license`:告诉Qt使用开源许可证。 - `-skip qtwebengine -skip qtscript -nomake examples -nomake tests`:告诉Qt跳过一些不必要的模块,以加快编译速度。 6. 编译Qt。运行以下命令编译Qt: ``` mingw32-make ``` 7. 安装Qt。运行以下命令安装Qt: ``` mingw32-make install ``` 现在,Qt已经被成功交叉编译并安装到树莓派上了。您可以将生成的可执行文件复制到树莓派上,并在树莓派上运行它们。 如果您没有树莓派硬件,您可以使用QEMU模拟器来模拟树莓派。您可以按照以下步骤操作: 1. 安装QEMU模拟器。您可以从这里下载QEMU模拟器:https://www.qemu.org/download/ 2. 下载树莓派镜像。您可以从这里下载树莓派官方镜像:https://www.raspberrypi.org/downloads/ 3. 解压树莓派镜像。将镜像解压到您喜欢的位置。 4. 启动QEMU模拟器。在命令提示符中运行以下命令: ``` qemu-system-arm -M versatilepb -cpu arm1176 -m 256 -hda path/to/raspbian.img -kernel path/to/kernel-qemu-4.4.34-jessie -append "root=/dev/sda2 panic=1 rootfstype=ext4 rw" -net nic -net user,hostfwd=tcp::5022-:22 -dtb path/to/versatile-pb.dtb -no-reboot ``` 在这个命令中,我们使用了以下参数: - `-M versatilepb`:将QEMU配置为使用Versatile PB开发板模拟器。 - `-cpu arm1176`:将QEMU配置为使用ARM1176 CPU模拟器。 - `-m 256`:将QEMU配置为使用256MB内存。 - `-hda path/to/raspbian.img`:告诉QEMU使用Raspbian映像作为硬盘驱动器。 - `-kernel path/to/kernel-qemu-4.4.34-jessie`:告诉QEMU使用适用于Versatile PB开发板模拟器的内核。 - `-append "root=/dev/sda2 panic=1 rootfstype=ext4 rw"`:告诉QEMU启动内核时使用的内核参数。 - `-net nic -net user,hostfwd=tcp::5022-:22`:告诉QEMU配置网络适配器和端口转发。 - `-dtb path/to/versatile-pb.dtb`:告诉QEMU使用适用于Versatile PB开发板模拟器的设备树文件。 - `-no-reboot`:告诉QEMU在停止模拟器时不要重新启动。 5. 在QEMU中安装Qt。按照前面的步骤交叉编译并安装Qt,然后将生成的可执行文件复制到QEMU模拟器中即可。 现在,您已经成功地将Qt交叉编译并安装到树莓派上或QEMU模拟器中了。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值