Ubuntu 编译树莓派4B OpenWRT固件

迫于树莓派吃灰

最近在网上了解了一下R2S,又看了看某宝的价格,嗯打扰了打扰了。回想起自己买了两年的树莓派4b,除了吃灰还是吃灰,干脆拿出来改造成一个旁路由。

Raspberry Pi Foundation Raspberry Pi 4 B

准备内容

编译环境搭建

  1. 安装编译需要的包

    1
    2
    3
    4
    5
    6
    sudo apt update
    sudo apt install build-essential ccache ecj fastjar file g++ gawk \
    gettext git java-propose-classpath libelf-dev libncurses5-dev \
    libncursesw5-dev libssl-dev python python2.7-dev python3 unzip wget \
    python3-distutils python3-setuptools rsync subversion swig time \
    xsltproc zlib1g-dev

编译源码

  1. 获取OpenWRT源码

    1
    2
    git clone https://git.openwrt.org/openwrt/openwrt.git
    cd openwrt

    如需编译特定版本,需要切换到对应版本分支。这里直接跳到步骤3,从主分支构建。

    1
    2
    git branch
    git checkout <branch name>
  2. 更新和安装feeds

    1
    2
    ./scripts/feeds update -a
    ./scripts/feeds install -a
  3. 配置编译内容

    1
    make menuconfig
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    # 编译的目标系统
    Target System -> Broadcom BCM27xx
    Subtarget -> BCM2711 boards (64 bit)
    Target Profile -> Raspberry Pi 4B/400/4CM (64bit)

    # 镜像参数
    Target Images -> ext4 # ext4格式的固件可方便地调整分区大小
    Target Images -> squashfs # squashfs格式的固件可恢复出厂设置
    Target Images -> Kernel partition size = 64 # boot分区大小为64M
    Target Images -> Root filesystem partition size = 512 # root分区大小为512M

    # 可选工具
    Base system -> block-mount # 在LuCI界面添加<挂载点>菜单
    Base system -> blockd # 自动挂载设备
    Base system -> wireless-tools # 无线扩展工具
    Administration -> htop # 添加htop命令
    Firmware -> xxx # 选择你需要的网卡固件,默认即可

    # 文件系统
    Kernel modules -> Filesystems -> kmod-fs-ext4
    Kernel modules -> Filesystems -> kmod-fs-ntfs
    Kernel modules -> Filesystems -> kmod-fs-squashfs
    Kernel modules -> Filesystems -> kmod-fs-vfat
    Kernel modules -> Filesystems -> kmod-fuse

    # 网卡支持
    Kernel modules -> Network Devices -> kmod-xxx # 有线网卡支持,跟以下几项可根据需求选择性添加
    Kernel modules -> Wireless Drivers -> kmod-rt2800-usb # 添加Ralink RT5370芯片的USB无线网卡驱动
    Kernel modules -> USB Support -> kmod-usb-net -> kmod-usb-net-sr9700 # 添加USB2.0的有线网卡SR9700芯片支持
    Kernel modules -> USB Support -> kmod-usb-net -> kmod-usb-net-rtl8152 # 添加USB2/3的有线网卡RTL8152/3芯片支持
    Kernel modules -> USB Support -> kmod-usb-net -> kmod-usb-net-asix # 添加支持亚信的有线网卡支持
    Kernel modules -> USB Support -> kmod-usb-net -> kmod-usb-net-asix-ax88179 # 添加USB3.0的有线网卡芯片AX88179的驱动

    # USB支持
    Kernel modules -> USB Support -> kmod-usb-core # 启用USB支持
    Kernel modules -> USB Support -> kmod-usb-hid # USB键鼠支持
    Kernel modules -> USB Support -> kmod-usb-ohci # 添加OHCI支持
    Kernel modules -> USB Support -> kmod-usb-uhci # 添加UHCI支持
    Kernel modules -> USB Support -> kmod-usb-storage # 启用USB存储
    Kernel modules -> USB Support -> kmod-usb-storage-extras
    Kernel modules -> USB Support -> kmod-usb2 # 开启USB2支持
    Kernel modules -> USB Support -> kmod-usb3 # 开启USB3支持

    # LuCI设置
    LuCI -> Collections -> luci # 开启luci
    LuCI -> Modules -> Translations -> Chinese(zh-cn) # 中文支持
    LuCI -> Themes -> luci-theme-material # 添加主题

    # LuCI应用
    LuCI -> Applications -> luci-app-aria2 # 下载工具
    LuCI -> Applications -> luci-app-firewall # 防 火 墙
    LuCI -> Applications -> luci-app-hd-idle # 硬盘休眠
    LuCI -> Applications -> luci-app-opkg # 软 件 包
    LuCI -> Applications -> luci-app-qos # 服务质量
    LuCI -> Applications -> luci-app-samba4 # 网络共享
    LuCI -> Applications -> luci-app-frpc # 内网穿透
    LuCI -> Applications -> luci-app-shadowsocks-libev # 翻墙软件
    LuCI -> Applications -> luci-app-upnp # UPnP服务
    LuCI -> Applications -> luci-app-wol # 网络唤醒

    Network -> Download Manager -> ariang # Aria2管理页面
    Network -> File Transfer -> Aria2 Configuration -> *** # 选择Aria2支持的功能
    Network -> File Transfer -> curl # 添加curl命令
    Network -> File Transfer -> wget # 添加wget命令
    Utilities -> Compression -> bsdtar # tar打包工具
    Utilities -> Compression -> gzip # GZ 压缩套件
    Utilities -> Compression -> xz-utils # XZ 压缩套件
    Utilities -> Compression -> unzip # zip解压工具
    Utilities -> Compression -> zip # zip压缩工具
    Utilities -> Disc -> fdisk # 磁盘分区工具
    Utilities -> Disc -> lsblk # 磁盘查看工具
    Utilities -> Editors -> vim # vim编辑器
    Utilities -> Filesystem -> ntfs-3g # NTFS读写支持
    Utilities -> Filesystem -> resize2fs # 分区大小调整
    Utilities -> Terminal -> screen # 添加screen
    Utilities -> pciutils # 添加lspci命令
    Utilities -> usbutils # 添加lsusb命令
  4. 下载所需源码

    1
    make download -j8 V=s	#请尽量使用梯子
  5. 编译源码,首次编译推荐用单线程;

    1
    make -j1 V=s

    再次编译前建议使用make clean清理;

    1
    2
    3
    make clean	# 清除bin目录
    make dirclean # 清除bin目录和交叉编译工具及工具链目录
    make distclean # 清除所有相关的东西,包括下载的软件包,配置文件,feed内容等

    经过漫长的编译,编译完的固件放在./bin/targets/bcm27xx/bcm2711/目录下;

刷写固件

  1. 我们需要的文件是openwrt-bcm27xx-bcm2711-rpi-4-ext4-factory.img.gz,解压压缩文件;

    1
    2
    cd bin/targets/bcm27xx/bcm2711
    gzip -d openwrt-bcm27xx-bcm2711-rpi-4-ext4-factory.img.gz
  2. 安装BalenaEtcher工具刷写固件

    官方代码编译出来的固件500多MB,建议选择4GB以上的TF卡刷写。成功后把TF卡插入树莓派,树莓派插电后红灯常亮表示正常。

配置OpenWRT

使用网线连接树莓派与电脑配置OpenWRT,路由器的默认IP地址是192.168.1.1,管理员root,密码password

已发现的问题

  • WIFI不能开启5G功能;
作者

Junle

发布于

2022-03-23

更新于

2024-03-22

许可协议

评论