Build OpenWRT於Raspberry Pi4

前言

先说这是新手纪录流程,最近想研究一下树莓派当作开发板的使用情境。
於是开始了这个纪录文章,想说说不定以後会有人也想以OpenWRT当作研究Linux的敲门砖,顺便纪录最基本的系统建设流程。

顺便把自己踩过的雷给记录下来。

注意,目前OpenWRT於Raspberry Pi4上,似乎不是完全稳定,所以官方韧体曾经上架但目前是下架状态,若是要已经弄好的韧体,则需要上网爬文找,这里就不是我要记录的部分罗。


设定电脑环境

OS版本: Ubuntu 18.04 (VirtualBox, AMD CPU)

设定系统:

$ 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 

Build自己的OpenWRT Firmware

先说这个需要的基本需求:

  1. Raspberry Pi4上需要能够可以跑OpenWRT
  2. 至少要有能执行luci web GUI的能力
  3. 能够上网

接着开始Build FW吧~

	$ git clone https://git.openwrt.org/openwrt/openwrt.git
	$ cd openwrt
	-- 拉相关package tools source code --
	$ ./scripts/feeds update -a
	$ ./scripts/feeds install -a
	$ make menuconfig
	$ make -j1 V=s

在make menuconfig这段,你需要依据自己需求做一些客制化
这边有参考一些资料,最後捏出一个最基本的设定
最核心是libustream-wolfssl这个会干扰Build Code结果,但我主要只需要openssl所以要先关掉

1. Target System = Broadcom BCM27xx
2. Subtarget = BCM2711 boards 64bit
3. Target Profile = Raspberry Pi 4b
4. Target Images = squashfs
5. Kernel Modules -
   -- USB Support = kmod-usb-hid
         = kmod-usb-net
         = kmod-usb-net-asix
         = kmod-usb-net-asix-ax88179
         = kmod-usb2
         = kmod-usb3
6. Libraries
   -- libssh
   -- libssh2
   -- (N) libustream-mbedtls
   -- (Y) libustream-openssl
   -- (N) libustream-wolfssl
7. LUCI -
   -- Collections -
        = luci
        = luci-ssl-openssl
9. Exit
10. save

最後存好设定,make就好哩~


测试内容

放FW image的方式就可以依循树莓派一般的做法(Win32DiskImager),又或是Linux DD进去。

下设定的方式可以直接SSH或是直接接TTL Console出来,我这边设定会是以TTL设定为主。
Console Software: minicom

刚初始化的Openwrt预设ip为192.168.1.1,你如果自己家里上面Gateway有自己设定subnet,那请记得要改成subnet内的合法ip。
比如我这边GW subnet是192.168.100.1/24,那我就要先想办法设定成192.168.100.X

root@OpenWrt:/# ifconfig br-lan 192.168.100.200 netmask 255.255.255.0

最後用浏览器进到192.168.100.200,应该就可以看到OpenWRT的网页设定页面哩~
https://ithelp.ithome.com.tw/upload/images/20210307/20135722bXNNqzQ3PI.png
如果无法联外,可以尝试直接用GUI设定interface成DHCP应该就可以哩~


结语

你可能会想问,啊这个弄好之後要干吗?
恩,你可以研究基本的linux嵌入式开发流程,甚至看看相关你有兴趣tool是如何运作。
诸如此类,理论上你这套用基本清楚之後,日後用来工作也是一个很好的复习或入门。


参考文件

  1. https://openwrt.org/docs/guide-developer/build-system/install-buildsystem#examples_of_package_installations
  2. https://openwrt.org/docs/guide-developer/quickstart-build-images
  3. https://www.youtube.com/watch?v=_MFkbcNFIqo
  4. https://www.right.com.cn/forum/thread-209584-1-1.html

<<:  Day3:String Formatting 字串格式化

>>:  浅谈 DBA 资料库管理师的职责

CMoney软件工程师战斗营Stack&Queue/CSS_Week 12(爆炸的一周)

嗨嗨 又过了一周 刚刚打完了忘了存挡.....哭呀 那我废话不多说了 本日学习 Stack&...

Day16 Redis应用实战-SortedSet操作

Redis 资料型态SortedSet Sorted Set与Hash一样,可以存放很多key an...

Day18 Redis架构实战-持久化RDB

Redis持久化 Redis是一个in-memory的data store,在记忆体中操作与储存让其...

RISC-V: 记忆体提前亮相

原本记忆体部分打算在实作 Load/Store 的前一篇写。 但为了阅读方便,调整顺序让接下来指令集...

企业信箱问题

原企业信箱是由虚拟主机方Serverzoo提供,但常常遇到ip被ban的问题,客服建议把合约升级,让...