有深度网站,智能营销型网站制作,企业门户网站升级,wordpress增加备案目录一、树莓派Linux源码配置(适合树莓派)总体概述配置的三种方式1.照搬厂家的配置#xff08;使用这种方式#xff09;2.参考厂家的配置#xff08;感受一下#xff09;3.完全自主配置#xff08;需要一定工作经验#xff09;二、树莓派Linux内核编译三、树莓派挂载新内…
目录一、树莓派Linux源码配置(适合树莓派)总体概述配置的三种方式1.照搬厂家的配置使用这种方式2.参考厂家的配置感受一下3.完全自主配置需要一定工作经验二、树莓派Linux内核编译三、树莓派挂载新内核总体概述1.打包zImage文件成kernel_new.img(用linux源码包里的工具)2.树莓派sd卡挂载到ubuntu上(两个分区:boot kernal/根文件)3.安装modules4.拷贝新kernel.img文件5.拷贝其他文件到fat四、在树莓派上运行1.用window配置sd卡文件方便观看启动过程2.sd卡插回树莓派3.打开secureCRT 串口方式登陆树莓派一、树莓派Linux源码配置(适合树莓派)
总体概述 配置的三种方式
参照博文一般厂家会给到这样的操作手册没有就凉凉了玩不了http://nicekwell.net/blog/20171108/shu-mei-pai-nei-he-kai-fa-shuo-ming-xia-zai-dai-ma-bian-yi-ti-huan-nei-he.html
前提交叉编译工具要先安装好在我的博文树莓派内核开发准备第一节有讲到。因为内核配置全部在宿主机ubuntu下完成的必须要有交叉编译工具。
1.照搬厂家的配置使用这种方式
在内核源码目录文件下搜索厂家配置文件此步骤作为了解 可以找到树莓派3、树莓派4使用的厂家配置文件bcm2709_defconfig
find . -name *_defconfig执行命令
ARCHarm CROSS_COMPILEarm-linux-gnueabihf- KERNELkernel7 make bcm2709_defconfig注意这个命令要在路径/linux-rpi-4.14.y存放的源码目录文件下执行否则提示 “make: *** 没有规则可制作目标“bcm2709_defconfig”。 执行结果 可以发现 厂家config 变成了 .config 2.参考厂家的配置感受一下
基于厂家的config,用make menuconfig一项项配置通常需要自主增删一些驱动
首先要安装必要的库
系统自带一般都有
sudo apt-get install bc必须
sudo apt-get install libncurses5-dev libncursesw5-dev必须
sudo apt-get install zlib1g:i386↓ 若这一步提示“E: 无法定位软件包 lib32ncurses5”可以先留着不做
sudo apt-get install libc6-i386 lib32stdc6 lib32gcc1 lib32ncurses5执行menuconfig
ARCHarm CROSS_COMPILEarm-linux-gnueabihf- KERNELkernel7 make menuconfig可以看到以下界面 回车 selects submenus 进入子菜单带—的 [ ]表示略过的不参与编译 空格键切换状态 驱动的两种加载方式
[*] built-in表示编译进了内核zImage包含了驱动。[M] modularizes:表示以模块的方式生成驱动文件xxx.ko。系统启动后通过命令inmosd xxx.ko临时加载(后面的驱动就是这么进行的)
3.完全自主配置需要一定工作经验
可以工作2-3年后在涉猎。
二、树莓派Linux内核编译 编译指令
ARCHarm CROSS_COMPILEarm-linux-gnueabihf- KERNELkernel7 make -j4 zImage modules dtbs是否成功编译
可以看到在内核的源码树目录下生成了vmlinux没有压缩的linux即为成功。
而我们真正想要的目标镜像是/arch/arm/boot/zImage
三、树莓派挂载新内核
总体概述 1.打包zImage文件成kernel_new.img(用linux源码包里的工具)
./scripts/mkknlimg arch/arm/boot/zImage ./kernel_new.img树莓派的镜像文件结尾就是.img,这个文件就是要放到sd卡中的文件 2.树莓派sd卡挂载到ubuntu上(两个分区:boot kernal/根文件)
树莓派断电把SD卡插入读卡器后按照下图配置
查看内核信息有设备接入的时候内核会打印出驱动层面的信息。
dmesg接入成功 sdb1,2分别是树莓派sd卡的两个分区 ①一个fat分区。是boot相关的内容kernel的img文件在此分区。 ②一个是ext4分区也就是系统的根目录分区。cd /进入的就是系统的根目录 这里我在我的ubuntu桌面底下/Desktop新建两个文件夹
mkdir data1mkdir data2然后分别关联到sd卡的两个分区中必须挂载到文件夹才能看到里面内容
sudo mount /dev/sdb1 data1sudo mount /dev/sdb2 data2查看data1,2分别存放的是什么 可以看到data1为fat分区boot、kernal相关data2为ext4分区系统根目录相关要对应好。
老陈这里的boot用的之前刷机刷好的没有重新进行移植下面直接讲了内核的移植。
3.安装modules
modules就是内核驱动相关少了这一步类似网卡,wifi,usb,HDMI这些都用不了
注意操作的是ext4分区对应的就是data2
来到linux-rpi-1.14.y文件路径下操作
安装modules的指令是
sudo ARCHarm CROSS_COMPILEarm-linux-gnueabihf- KERNELkernel7 make INSTALL_MOD_PATH[ext4] modules_install实际使用的时候要将“[ext4]”更改为自己data2的绝对路径 ,这里根据我自己的文件路径修改成
sudo ARCHarm CROSS_COMPILEarm-linux-gnueabihf- KERNELkernel7 make INSTALL_MOD_PATH/home/zhugl/Desktop/data2 modules_install可以看到很多的.ko文件这与驱动相关。出现的提示make: arm-linux-gnueabihf-gcc: Command not found不用管它。 4.拷贝新kernel.img文件
注意查看原来镜像名字是kernel7.img
ls /home/zhugl/Desktop/data1因为原来的这个kernel7.img将要被覆盖树莓派镜像规定必须要定义成这个名字为了防止刷机失败或者拷贝过程中文件损坏需要提前用别名备份这个文件。打开新的终端ctrl alt t(方便操作罢了)进入其存放路径cd /home/zhugl/Desktop/data1)
sudo cp kernel7.img kernel7OLD.img从源码树目录linux-rpi-4.14.y拷贝kernel_new.img是由zImage打包而成到data1并且命名为kernel7.img覆盖原来的文件
sudo cp kernel_new.img /home/zhugl/Desktop/data1/kernel7.img检查拷贝是否有问题
md5sum显示文件的唯一编码号若相同则为同一个文件
md5sum kernel_new.imgmd5sum /home/zhugl/Desktop/data1/kernel7.img编码号一样拷贝正确。
5.拷贝其他文件到fat
都是从目录linux-rpi-4.14.y进行拷贝
这些配置文件是为了能够加载驱动以及一些其他的配置。
————————①
更改前
cp arch/arm/boot/dts/.*dtb* [fat]/根据实际更改后
sudo cp arch/arm/boot/dts/.*dtb* /home/zhugl/Desktop/data1/————————②
更改前
cp arch/arm/boot/dts/overlays/.*dtb* [fat]/overlays/根据实际更改后
sudo cp arch/arm/boot/dts/overlays/.*dtb* /home/zhugl/Desktop/data1/overlays/————————③
更改前 README有没有都行
cp arch/arm/boot/dts/overlays/README [fat]/overlays/根据实际更改后
sudo cp arch/arm/boot/dts/overlays/README /home/zhugl/Desktop/data1/overlays/四、在树莓派上运行
1.用window配置sd卡文件方便观看启动过程
如果之前在做别的项目例如串口编程时用于串口数据交互和传输会把这个配置信息删掉这时需要添加回来用来观察操作系统启动过程 点击选择断开连接sd卡使其重新挂载在windows上。 打开sd卡中boot文件夹下的cmdline.txt
按照上图位置添加直接在虚拟机上修改这个配置文件也可以
consolettyAMA0,1152002.sd卡插回树莓派
sd卡插回树莓派USB-TTL连接。注意树莓派要在断电下操作
3.打开secureCRT 串口方式登陆树莓派
树莓派重新上电可以看到启动正常。
如何确定内核已经更换了呢
查看内核版本号
uname -r原来版本为4.14.98-v7 所以成功啦
有意思的是之前在上一个内核版本树莓派里编写的一些Demo文件都在而且以前配置的SSH登录、固定IP地址配置都原样不动所以内核新配置的那两个分区并没有改变以前的一些文件和配置因为我们只是更新了kernal.imgUboot和根文件系统都没改变。