Bootstrap

004 使用buildroot编译内核给树莓派zero w安装wifi驱动

前言

上一篇博客中我们虽然已经成功编译出了内核,但是那只是一个最简单的驱动程序并没有对zero w 上面的WIFI进行支持,接下来我们开始配置

配置buildroot提取wifi固件

在buildroot目录下使用命令

sudo make menuconfig

对路径Target packages → Hardware handling → Firmware 下做如下配置
在这里插入图片描述
对如下路径Target packages → Networking applications
在这里插入图片描述

顺便把同路径的这些选项一起勾了,后面有用,基本都是关于wifi的

 [*] openssh                                                      
 [*]   client (NEW)                                         
 [*]   server (NEW)                                           
 [*]   key utilities (NEW)  
 [*] dhcpcd                                                    
 [*] dhcpdump   

配置linux内核

最后我们还需要去配置
一下linux内核,因为wifi驱动程序是在哪里配置。

配置路径Target packages → Hardware handling → Firmware → WiFi firmware
在这里插入图片描述

电脑左右按键选择保存,到buildroot目录下的.config文件下,最后一直选择exit退出即可

个性化配置

这个算是在中间插入的,对功能没有影响,个人爱好,不配也没有关系
在这里可以配置,你的开机密码,账户等等
路径System configuration

添加有关WIFI的配置脚本

我们配置好以上基础选项以后,一些高度客制化的东西就无法再使用图形界面来配置
了,比如你要链接那一个WFI这种设置
所以我们需要在buildroot生成镜像之前,把我们需要插入的信息插入到文件系统中去
我们需要插入的信息有以下文件

  1. interfaces //用来设置 wifi的开启与是否静态ip
  2. S30wpa_supplicant //会作为开机自启动的服务程序,自动加载wifi驱动等相关配置
  3. wpa_supplicant.conf //我们需要连接哪一个wifi在这里描述
  4. env.sh //开机后需要运行的我们指定的内容,这里只设置了路径显示
下面是各个文件应该放置的位置,与文件中的内容

buildroot/output/target/etc/wpa_supplicant.conf

#ctrl_interface=/var/run/wpa_supplicant
ap_scan=1
update_config=1

country=CN

network={
        ssid="wifi名字"
        psk="密码*"
        key_mgmt=WPA-PSK
        priority=1 //数字越大链接的优先级越高
}

network={
        ssid="pulice"
        psk="2831874767fc"
        key_mgmt=WPA-PSK
        priority=2
}

buildroot/output/target/etc/init.d/S30wpa_supplicant

#!/bin/sh


dev=wlan0

case "$1" in
  start)
    printf "Starting wpa_supplicant: "
    modprobe brcmfmac
    ifconfig $dev up
    /usr/sbin/wpa_supplicant -B -Dnl80211 -i$dev -c/etc/wpa_supplicant.conf
    [ $? = 0 ] && echo "OK" || echo "FAIL"
    ;;
  stop)
    printf "Stopping wpa_supplicant: "
    killall wpa_supplicant
    [ $? = 0 ] && echo "OK" || echo "FAIL"
    ;;
  restart|reload)
    "$0" stop
    "$0" start
    ;;
  *)
    echo "Usage: $0 {start|stop|restart}"
    exit 1
esac

exit $?

buildroot/output/target/etc/network/interfaces

# interface file auto-generated by buildroot

auto lo
iface lo inet loopback
auto wlan0
iface wlan0 inet dhcp
wpa-conf /etc/wpa_supplicant.conf

buildroot/output/target/etc/profile.d/env.sh

export PS1="\[\e[1;36m\][\u@\h \W]\\$\[\e[0m\]"

烧录与启动

做完以上工作就可以回到buildroot重新使用make生成带有自启动wifi的镜象文件了

注意

如果你没编译过,一定要先编译过之后,再添加我们上面说到的wifi配置文件
到你的跟文件系统,因为如果你没有编译过,根本就没有那个目录给你配置。
最后,启动树莓派的效果
在这里插入图片描述

;