树莓派4B内核编译


以下是我的安装方法

安装系统镜像

首先是安装系统镜像,官方提供的,按照购买树莓派4B时给的资料安装系统,
在这里插入图片描述
安装完后,再添加以下2个文件至boot文件夹
在这里插入图片描述
将sd卡插入树莓派,连接网线,上电,设置wifi为共享(以太网),然后配置以太网ipv4
在这里插入图片描述
最后打开打开Mobaxterm软件(免费!!!强烈推荐),使用ssh连接,IP地址
(打开终端,输入arp -a指令,然后在192.168.137.1下面的ip地址一个一个试)
在这里插入图片描述
即可连接上。说明树莓派系统没问题,设备也没问题。
账号为pi,密码raspberry

编译环境即linux系统

可安装虚拟机vmware,其方法可去bilibilbi上看
或者直接将电脑装成双系统等

交叉编译器

定义:交叉编译器(英语:Cross compiler)是指一个在某个系统平台下可以产生另一个系统平台的可执行文件的编译器,
pc是x86_64架构而树莓派是arm架构,所以需要交叉编译器。

对于32位,由于树莓派镜像是32位的,所以只需要替换内核镜像即可

具体方法如下:

安装交叉编译器

32位的交叉编译器链接为:链接: linkhttps://releases.linaro.org/components/toolchain/binaries/latest-7/arm-linux-gnueabi/
在这里插入图片描述
在linux 下可执行以下指令

wget https://releases.linaro.org/components/toolchain/binaries/latest-7/arm-linux-gnueabi/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabi.tar.xz

在这里插入图片描述
再使用命令,解压

tar -xvf gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabi.tar.xz

获取Raspberry Kernel源码

我下的5.15y 版本无所谓,看自己,
链接: link:https://github.com/raspberrypi/linux
下载后拷贝到虚拟机创建的build目录下
在这里插入图片描述
命令方式

cd ~/build
sudo apt-get install git
# 官方的github地址
git clone --depth=1 --branch rpi-5.15.y https://github.com/raspberrypi/linux

安装编译环境所需的依赖

 sudo apt-get install git bison flex libssl-dev zip libncurses-dev make

libncurses-dev依赖是支持后面menuconfig的

内核(kernel)编译开始

cd ~
mkdir raspberry_pi
#进入创建的raspberry文件夹
cd ~/raspberry
# 如果源码文件不叫linux,可以mv 改成linux或者你想要的的名字 
# 比如linux-rpi-5.15.y 执行 sudo mv linux-rpi-5.15.y linux
cd linux-rpi-5.15.y
# 在编译之前可以先进行清除命令,以保证清洁的环境,如果在编译的环节出错或者操作失误,可以运行此命令重新开始。
make distclean
# 编译.config,ARCH要配置成arm,如果不配置则默认为开发机的x86了,CROSS_COMPILE指定编译器
# bcm2711_defconfig在 arch/arm/configs/bcm2711_defconfig,它会自己根据Makefile自己去找这个文件
make ARCH=arm CROSS_COMPILE=~/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi- bcm2711_defconfig
# 在当前的.config基础上开始裁剪内核,如果没有要裁剪的按ESC两次退出即可
make ARCH=arm CROSS_COMPILE=~/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi- menuconfig

# 开始编译内核, 参数-j6的意思是 使用多处理器同时编译内核,数字最大为:cpu的核数 × 1.5,可自行修改
make ARCH=arm CROSS_COMPILE=~/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-  -j6

#将内核编译的模块保存在~/raspberry_pi/modules文件夹
sudo make ARCH=arm CROSS_COMPILE=~/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi- INSTALL_MOD_PATH=~/raspberry_pi/modules/ modules_install 

中间不报错的话,大概会在20分钟左右(因电脑而已),会在 arch/arm/boot 生成zImage 二进制内核;同时会在linux目录中生成最原始的内核文件vmlimux。

vmlinunx:最原始的linux内核文件。

zImage: 经过压缩和去掉调试信息的可加载二进制内核文件。

Image:没有经过压缩的可加载二进制内核文件。

有关更多关于内核文件可Google

将生成的Image重命名为kernel7l.img,并拷贝到u盘的boot分区
在这里插入图片描述
将linux-rpi-5.15y/arch/arm/boot/dts目录下的bcm2711-rpi-4-b.dtb与overlays文件夹拷贝并替换U盘boot分区的bcm2711-rpi-4-b.dtb与overlays文件夹
将内核编译驱动生成的模块拷贝到rootfs盘下的lib/modules文件夹

对于64位

编译内核(kernel)

交叉编译器

首先是获取交叉编译器链接: link
下载上面链接中的 gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz,有可能更新了,日期和版本会变化,

然后在虚拟机创建一个工作目录,后续的操作都在工作目录中操作

mkdir ~/build && cd ~/build
#把下载好的gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz拷贝到虚拟机,然后解压到/usr/src/
sudo tar -xvf gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz -C /usr/src/
cd /usr/src/ && sudo mv gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu aarch64-linux-gnu
sudo vi /etc/profile
or
sudo vi ~/.bashrc
# 末尾添加以下内容
export ARCH_HOME=/usr/src/aarch64-linux-gnu
export PATH=$PATH:$ARCH_HOME/bin
source /etc/profile
or
source ~/.bashrc

获取Raspberry Kernel源码

我下的5.15y 版本无所谓,看自己,
链接: link:https://github.com/raspberrypi/linux
下载后拷贝到虚拟机创建的build目录下
在这里插入图片描述
命令方式

cd ~/build
sudo apt-get install git
# 官方的github地址
git clone --depth=1 --branch rpi-5.15.y https://github.com/raspberrypi/linux

安装编译环境所需的依赖

 sudo apt-get install git bison flex libssl-dev zip libncurses-dev make

libncurses-dev依赖是支持后面menuconfig的

内核(kernel)编译开始

#进入创建的build文件夹
cd ~/build
# 如果源码文件不叫linux,可以mv 改成linux或者你想要的的名字 
# 比如linux-rpi-5.10.y 执行 sudo mv linux-rpi-5.10.y linux
cd linux
# 在编译之前可以先进行清除命令,以保证清洁的环境,如果在编译的环节出错或者操作失误,可以运行此命令重新开始。
make distclean
# 编译.config,ARCH要配置成arm64,如果不配置则默认为开发机的x86了,CROSS_COMPILE指定编译器
# bcm2711_defconfig在 arch/arm64/configs/bcm2711_defconfig,它会自己根据Makefile自己去找这个文件
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- bcm2711_defconfig
# 在当前的.config基础上开始裁剪内核,如果没有要裁剪的按ESC两次退出即可,主要是我也没太了解,等我了解了再记
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- menuconfig
# 开始编译内核, 参数-j5的意思是 使用多处理器同时编译内核,数字最大为:cpu的核数 × 1.5,可自行修改
make -j5 ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-

中间不报错的话,大概会在1个小时左右,会在目录 arch/arm64/boot 中生成 Image 二进制内核文件;如果制作的是32为内核,会在 arch/arm/boot 生成zImage 二进制内核;同时会在linux目录中生成最原始的内核文件vmlimux。

vmlinunx:最原始的linux内核文件。

zImage: 经过压缩和去掉调试信息的可加载二进制内核文件。

Image:没有经过压缩的可加载二进制内核文件。

有关更多关于内核文件可Google

安装kernel modules

这个modules在后面使用i2c等会使用到(内核编译的模块,未被加载到内核里面那部分),先安装到 ~/build 工作目录中,记得把 [user] 替换为自己的用户名

cd ~/build/linux
# 切换到root用户下
su
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- INSTALL_MOD_PATH=/home/[user]/bulid/ modules_install
su [user]

将编译好的内核拷贝到树莓派SD卡上,

先在虚拟机~目录下创建2个空文件,

cd ~
mkdir data1
mkdir data2

再将sd卡插入电脑,然后挂载,

sudo mount /dev/sdb1 ~/data1
sudo mount /dev/sdb2 ~/data2

复制boot所需文件

$ sudo cp linux/arch/arm64/boot/dts/broadcom/*.dtb ~/data1
$ sudo cp linux/arch/arm64/boot/dts/overlays/*.dtb* ~/data1/overlays/
$ sudo cp linux/arch/arm64/boot/dts/overlays/README ~/data1/overlays/
# 复制内核
$ sudo cp linux/arch/arm64/boot/Image ~/data1/kernel8.img

编写config.txt

# 添加内容并保存退出
$ sudo vim /mnt/loopXp1/config.txt

# 以64位读取内核
arm_64bit=1
# 想要以ARMV8的模式启动,设置此选项
arm_control=0x200
# 内核的名字
kernel=kernel8.img

# u-boot进行引导kernel时延迟几秒
boot_delay=1

# 关闭蓝牙功能
# See /boot/overlays/README for all available options
dtoverlay=disable-bt
# 开启音频snd_bcm2835
dtparam=audio=on

安装内核模块

因为在编译kernel时已经把modules安装到了工作目录build中了,直接复制到第二分区中就可以了,如果不放心,可以用安装modules的命令安装到第二分区下,更改下路径就可以了。

cd ~/build
sudo cp -r lib/modules/ ~/data2/lib/

卸载sd卡

cd ~/build
sudo umount ~/data1
sudo umount ~/data2

最后将sd卡插入树莓派即可

注意:在使用modprobe失败的时候,先使用sudo depmod,再使用modprobe

树莓派固定IP地址

网线

1、首先在网线连接下查看自己局域网的IP网段
输入ifconfig
在这里插入图片描述
2、修改网络配置文件/dhcpcd.conf
sudo vi /etc/dhcpcd.conf
找到#interface eth0,将其下方的注释取消,然后换成自己的ip网段。
在这里插入图片描述
3、重启树莓派,使用固定的ip地址进行远程连接

参考链接

链接: link

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
编译树莓派4b的arm64内核需要以下几个步骤: 1. 安装必要的工具 首先,需要安装一些必要的工具,比如gcc、make等。可以使用以下命令进行安装: ``` sudo apt-get update sudo apt-get install git bc bison flex libssl-dev make libc6-dev libncurses5-dev ``` 2. 下载内核源代码 树莓派的内核源代码可以从官方github仓库中获取。可以使用以下命令进行下载: ``` git clone --depth=1 https://github.com/raspberrypi/linux.git -b rpi-5.10.y ``` 这里我们选择了5.10.y分支作为示例,具体版本可以根据自己的需要选择。 3. 配置内核参数 进入内核源代码目录,并进行内核参数配置: ``` cd linux KERNEL=kernel8 make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- bcm2711_defconfig ``` 其中,KERNEL变量指定了内核的名称,这里我们编译的是64位内核,因此为kernel8。 4. 编译内核 使用以下命令进行内核编译: ``` make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- Image.gz modules dtbs ``` 其中,Image.gz为内核镜像文件,modules为内核模块,dtbs为设备树文件。编译完成后,这些文件会被放置在arch/arm64/boot和arch/arm64/boot/dts目录下。 5. 安装内核 将生成的内核文件复制到/boot目录下: ``` sudo cp arch/arm64/boot/Image.gz /boot/$KERNEL.img sudo cp arch/arm64/boot/dts/broadcom/*.dtb /boot/ sudo cp arch/arm64/boot/dts/overlays/*.dtb* /boot/overlays/ sudo cp arch/arm64/boot/dts/overlays/README /boot/overlays/ sudo reboot ``` 6. 配置启动 修改/boot/config.txt文件,添加以下内容: ``` kernel=$KERNEL.img ``` 这样,在下一次重启时,系统会启动新编译内核。可以使用以下命令查看当前正在使用的内核版本: ``` uname -a ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值