0.使用的编译环境为64位Ubuntu。
安装相关工具:
apt-get update
apt-get install git ccache lzop
1.通过以命令获取内核源码:
git clone https://github.com/beagleboard/linux.git
这个过程可能需要1~2小时。主要取决网速和PC性能。
2.进入linux目录,执行jenkins_build.sh脚本
cd linux
./jenkins_build.sh
如果有报错,则安装相应的程序,然后重新执行jenkins_build.sh脚本,直至整个命令执行完都没有报错即可。
可以看到目录已经安装了相应的gcc编译器
该路径为编译器的路径,需要记住,后面需要用到。
3.修改顶层Makefile:
临时配置环境变量,先执行
echo $PATH
查看当前的环境变量
在执行以下命令,其中绿色部分为当前的环境变量,红色部分为gcc的环境变量(上一步的路径)
export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/saber/bbb/linux/gcc-linaro-6.4.1-2018.05-x86_64_arm-linux-gnueabihf/bin"
先设置配置文件:
make bb.org_defconfig
然后通过以下命令编译内核:
make -j2 zImage
通过以下命令编译模块:
make -j2 modules
通过以下命令编译设备树:
make -j2 dtbs
4.将zImage和am335x-boneblack.dtb复制到BB Blakc的文件系统中。
其生成路径分别是:arch/arm/boot/zImage和arch/arm/boot/dts/am335x-boneblack.dtb
修改/boot/uEnv.txt中的uname_r。比如我们想把名称命名为:waveshare。
则修改为:uname_r=waveshare
然后把以下几个文件都复制对应名称的文件:
cd /boot
cp config-4.14.71-ti-r80 config-waveshare
cp initrd.img-4.14.71-ti-r80 initrd.img-waveshare
cp System.map-4.14.71-ti-r80 System.map-waveshare
cp dtbs/4.14.71-ti-r80/ dtbs/waveshare -r
将zImage代替vmlinuz-名称: cp zImage /boot/vmlinuz-waveshare
将am335x-boneblack.dtb代替/boot/dtbs/waveshare/am335x-boneblack.dtb
cp am335x-boneblack.dtb /boot/dtbs/waveshare/am335x-boneblack.dtb
执行reboot复位后,在执行uname -a正常可以看到内核已经更新。
5.在BB-black执行下面命令安装NFS相关软件。
apt-get install nfs-common
虚拟机配置相应的NFS,指定为linux内核源码目录。
在BB-black上执行以下命令挂载NFS,其中下面IP为虚拟机的IP地址:
mount -t nfs -o nolock,vers=2 192.168.3.59:/home/saber/bbb/linux /mnt
进入挂载目录:
cd /mnt
设置环境变量:
export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/saber/bbb/linux/gcc-linaro-6.4.1-2018.05-x86_64_arm-linux-gnueabihf/bin"
安装module:
make modules_install INSTALL_MOD_PATH=/
卸载NFS:
umount /mnt
这样即完成了模块安装。