Ubuntu 编译树莓派4B OpenWRT固件
迫于树莓派吃灰
最近在网上了解了一下R2S,又看了看某宝的价格,嗯打扰了打扰了。回想起自己买了两年的树莓派4b,除了吃灰还是吃灰,干脆拿出来改造成一个旁路由。
Raspberry Pi Foundation Raspberry Pi 4 B
准备内容
编译环境搭建
安装编译需要的包
1
2
3
4
5
6sudo 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
编译源码
获取OpenWRT源码
1
2git clone https://git.openwrt.org/openwrt/openwrt.git
cd openwrt如需编译特定版本,需要切换到对应版本分支。这里直接跳到步骤3,从主分支构建。
1
2git branch
git checkout <branch name>更新和安装feeds
1
2./scripts/feeds update -a
./scripts/feeds install -a配置编译内容
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命令下载所需源码
1
make download -j8 V=s #请尽量使用梯子
编译源码,首次编译推荐用单线程;
1
make -j1 V=s
再次编译前建议使用make clean清理;
1
2
3make clean # 清除bin目录
make dirclean # 清除bin目录和交叉编译工具及工具链目录
make distclean # 清除所有相关的东西,包括下载的软件包,配置文件,feed内容等经过漫长的编译,编译完的固件放在
./bin/targets/bcm27xx/bcm2711/
目录下;
刷写固件
我们需要的文件是
openwrt-bcm27xx-bcm2711-rpi-4-ext4-factory.img.gz
,解压压缩文件;1
2cd bin/targets/bcm27xx/bcm2711
gzip -d openwrt-bcm27xx-bcm2711-rpi-4-ext4-factory.img.gz安装BalenaEtcher工具刷写固件
官方代码编译出来的固件500多MB,建议选择4GB以上的TF卡刷写。成功后把TF卡插入树莓派,树莓派插电后红灯常亮表示正常。
配置OpenWRT
使用网线连接树莓派与电脑配置OpenWRT,路由器的默认IP地址是192.168.1.1
,管理员root
,密码password
。
已发现的问题
- WIFI不能开启5G功能;
Ubuntu 编译树莓派4B OpenWRT固件