我只是老小白了,第一次编译自己需要用的openwrt。
一、编译条件:
虚拟机VM17
Ubuntu22.04
硬件:R5S amv8 4+32G
二、关于虚拟机VM和Ubuntu的安装,网上教程很多,请自行搜索安装。
1、不要用 root 用户进行编译
2、默认登陆IP 192.168.1.1 密码 password
三、编译过程:
1、安装完Ubuntu后,打开终端输入安装依赖命令:
sudo apt update -ysudo apt full-upgrade -ysudo apt install -y ack antlr3 asciidoc autoconf automake autopoint binutils bison build-essential \
bzip2 ccache cmake cpio curl device-tree-compiler fastjar flex gawk gettext gcc-multilib g++-multilib \
git gperf haveged help2man intltool libc6-dev-i386 libelf-dev libglib2.0-dev libgmp3-dev libltdl-dev \
libmpc-dev libmpfr-dev libncurses5-dev libncursesw5-dev libreadline-dev libssl-dev libtool lrzsz \
mkisofs msmtp nano ninja-build p7zip p7zip-full patch pkgconf python2.7 python3 python3-pyelftools \
libpython3-dev qemu-utils rsync scons squashfs-tools subversion swig texinfo uglifyjs upx-ucl unzip \vim wget xmlto xxd zlib1g-dev
上述命令总共三条,第三条要注意复制全面,避免出现错误。
命令运行完,出现如上界面,通过方向键选择 是 ,继续。
2、下载源代码(施展魔法保安全)
git clone https://github.com/coolsnowwolf/openwrt #Github 野火大佬
#B站 实用技能大佬
git clone https://github.com/openwrt/openwrt #官方版本
git clone https://github.com/coolsnowwolf/lede #lede版本
git clone -b 22.03 --single-branch https://github.com/Lienol/openwrt #lienol版本
源代码只选择一个就可以,我选择的是野火大佬提供的源。
3、cd openwrt 命令 切换到文件目录openwrt内
git tag 查看稳定版,回车键拉到最低,按Q结束!
git checkout v24.10.0 指定版本,红色部分位版本号(其他版本不支持R5S)
3.1打开openwrt文件夹下的feeds.conf.default文件,将下列源添加到最后。
src-git kenzo https://github.com/kenzok8/openwrt-packages
src-git small https://github.com/kenzok8/small
src-git fancontrol https://github.com/JiaY-shi/fancontrol.git
4、更新feeds(更新源码)
./scripts/feeds update -a 更新源码
./scripts/feeds install -a 拷贝源码
5、添加常用插件(此处不用)
有两种方式添加插件,第一种是在feeds.conf.default文件中添加形如src-git-full luci https://github.com/openwrt/luci的源,一种是在源码目录的package下直接克隆源码,因为有时会出现意想不到的问题,且编译好后这个源会被添加进opkg的默认源中。
cd package/
git clone https://github.com/lisaac/luci-app-diskman.git # 磁盘管理
git clone https://github.com/jerrykuku/luci-theme-argon.git # 主题
git clone https://github.com/davinyue/luci-theme-edge.git # 还是主题
git clone https://github.com/rufengsuixing/luci-app-adguardhome.git # 去广告
git clone https://github.com/cokebar/openwrt-vlmcsd.git # kms服务器
git clone https://github.com/cokebar/luci-app-vlmcsd.git # kms服务器的luci
git clone https://github.com/sirpdboy/luci-app-netdata.git # netdata监控(项目中汉化版本的netdata支持持x86)
git clone https://github.com/sirpdboy/luci-app-advanced.git # 一些插件的高级设置(直接编辑cfg)和文件管理
6、编辑配置,定制openwrt
6.1 make menuconfig打开openwrt配置面板
make menuconfig
6.2 R5S的cpu架构选择
Target System -> 选择 Rockchip
(而不是 Arm SystemReady (EFI) compliant
)
Subtarget ->RK33xx/RK35xx
6.3 Target Profile:
- 选择
FriendlyARM NanoPi R5S
6.4 推荐的 Target Images 选项
-
[ ] ramdisk (不勾选)
- NanoPi R5S 通常使用
ext4
或squashfs
,不需要 ramdisk。
- NanoPi R5S 通常使用
-
[ ] cpio.gz / [ ] tar.gz (不勾选)
- 这些是 initramfs 相关的格式,不适用于标准 OpenWrt 运行方式。
-
[✔] ext4 (建议勾选)
- 适用于 SD 卡和 eMMC 存储设备,便于写入和扩展存储。
-
[✔] squashfs (建议勾选)
- squashfs 是 OpenWrt 默认的只读文件系统,可以节省空间。
-
[✔] GZip images (建议勾选)
- GZip 压缩可以减少固件大小,提高存储效率。
-
Kernel partition size (16 MiB)
- 保持默认或增加至 32MiB,以防止内核升级空间不足。
-
Root filesystem partition size (104 MiB)
- 建议增加到 256MiB 或更大,以适应后续安装软件包。
-
[ ] Make /var persistent (可选)
- 默认
/var
是临时存储(重启丢失),如果需要持久存储日志,可以勾选。
- 默认
6.4、Wifi基础包
打出的包可支持博通SDIO无线模块,Firmware不用选,因为打包源码中已经包含了来自Armbian的firmware,会自动覆盖openwrt rootfs中已有的firmware
我的WiFi:MT7921 是 联发科 (MediaTek) 无线网卡,在 OpenWrt 里对应的驱动是 kmod-mt7921e 或 kmod-mt76。需要在 Wireless Drivers 里找到以下选项并启用:
Kernel modules -> Wireless Drivers ->
6.4.1必选驱动
- kmod-mt76
- 这是 MediaTek 的通用驱动,包含对 MT7921 的支持。
- kmod-mt7921e
- 这是专门针对 MT7921 (PCIe) 无线网卡的驱动,如果你用的是 PCIe 版本的 MT7921,必须选这个。
可选驱动
- kmod-mt7921u(如果你的 MT7921 是 USB 版本)
- kmod-mt76-core(一般会自动选上)
如何选择
- 在
Wireless Drivers
选项里找到kmod-mt76
和kmod-mt7921e
,用<M>
选中(模块化编译)。 - 如果你的 MT7921 是 USB 版,再选
kmod-mt7921u
。 - 退出.
7、USB 驱动的选择取决于你的 设备用途,一般情况下可以选择以下模块:
Kernel modules -> -> USB Support ->
7.1 必选 USB 驱动
-
kmod-usb-core
(已经被自动选中)- USB 基础支持,必须启用。
-
kmod-usb-ohci
- 支持 USB 1.1 控制器,如果你的设备有老旧 USB 端口(比如某些路由器)。
-
kmod-usb-ehci
- 支持 USB 2.0,如果你的设备有 USB 2.0 端口,必须启用。
-
kmod-usb-xhci-hcd
和kmod-usb-xhci-pci
- 支持 USB 3.0,如果你的设备有 USB 3.0 端口,就要选上这两个。
7.2 如果你要连接 USB 无线网卡
kmod-usb2
(一般 USB 网卡都需要)kmod-usb3
(如果你是 USB 3.0 设备)
7.3 如果你要连接 USB 存储设备(U 盘、硬盘)
kmod-usb-storage
(支持 U 盘、移动硬盘)kmod-usb-storage-extras
(支持一些特殊 USB 存储设备)kmod-usb-storage-uas
(USB Attached SCSI 支持,推荐选上)
7.4 如果你要连接 USB 4G/5G 网卡
kmod-usb-net
(USB 网卡基础支持)kmod-usb-net-cdc-ether
(大部分 USB 4G/5G 网卡需要)kmod-usb-net-rndis
(部分 USB 共享网络设备需要)kmod-usb-serial
(USB 串口设备支持)kmod-usb-serial-option
(大部分 4G/5G 网卡用这个)kmod-usb-serial-wwan
(用于某些 4G 模块)
7.5 如果你要连接 USB 打印机
kmod-usb-printer
7.6 如果你要连接 USB 键盘/鼠标
kmod-hid
kmod-usb-hid
7.7我的R5S选择的安装
必须启用的 USB 相关驱动
-
kmod-usb-core
(已默认启用)- 作用:USB 子系统核心驱动,所有 USB 设备的基础支持。
-
kmod-usb-dwc3
- 作用:RK3568 采用 DWC3 控制器,此模块提供 USB 3.0 支持。
-
kmod-usb-dwc2
(可选)- 作用:部分设备可能仍需要 DWC2 控制器支持,但 RK3568 主要使用 DWC3。
-
kmod-usb-dwc2-pci
(可选)- 作用:PCI 设备上的 DWC2 控制器支持,通常不需要。
根据需求选择的驱动
-
存储设备(U 盘、移动硬盘)
kmod-usb-storage
(USB 存储支持)kmod-usb-storage-extras
(支持额外存储设备)kmod-usb-storage-uas
(启用 USB 3.0 UASP 加速)
-
无线网卡(USB WiFi 适配器)
kmod-cfg80211
kmod-mac80211
- 具体型号驱动(如
kmod-rtl8821cu
、kmod-mt7921u
)
-
键盘/鼠标(HID 设备)
kmod-usb-hid
-
串口转 USB(TTL 转 USB 调试)
kmod-usb-serial
kmod-usb-serial-ch341
(CH340/CH341 USB 转串口)kmod-usb-serial-ftdi
(FTDI USB 转串口)kmod-usb-serial-pl2303
(PL2303 USB 转串口)
-
USB 网络(USB 转网卡)
kmod-usb-net
kmod-usb-net-rndis
(RNDIS 设备支持)kmod-usb-net-asix
(ASIX 芯片网卡)kmod-usb-net-cdc-ether
(CDC-Ethernet 设备支持)
不建议选的驱动
kmod-chaoskey
:用于 Chaoskey 硬件 RNG,与 USB 3.0 无关,无需选中。kmod-usb-atm
:用于 USB ATM 设备,一般不需要。kmod-usb-cdns
/kmod-usb-cdns3
:主要是 Cadence USB 控制器,RK3568 用不到。
8、WirelessAPD(无线 AP 守护进程)
Network -> WirelessAPD ->.
-> hostapd-common
-> wpa-cli
-> wpad-basic
-> iw
9、插件和主题,语言设置选项,根据需求设置,为了减少编译失败的概率,其他都不要安装,主题也是。可以编译成功后单独编译插件在安装。
LUCI -> 2.Modules -> Translations -> Chinese simplified 简体中文 自选!
保存退出。
10、下载 dl 库,编译固件 (-j 后面是线程数)
make -j8 download V=s 下载dl库,V=s 显示任务详细情况
make V=s -j4 4代表线程,根据个人实际情况调整
或者:make -j$(nproc) V=s :
-j$(nproc)
:根据 CPU 核心数进行并行编译,加快速度。V=s
:显示详细日志,方便调试。
11、下载编译压缩包
编译完成后输出路径:home/用户名/openwrt/bin/targets,下载到本地电脑,需要通过SSH远程登录进行下载。ubuntu默认是没开通SSH登录,所以需要进行开通。
开通SSH登录方法:
1,必须切换成为root用户
sudo -i
2,先更新软件列表和更新软件
sudo apt-get update
3,先更新软件列表和更新软件
sudo apt-get upgrade
4,安装ssh
apt-get install ssh
5,启动ssh服务
sudo /etc/init.d/ssh start
6,检查是否有ssh环境
ps -e | grep ssh
ubuntu开通root登录SSH权限
1, 使用普通用户登录后切换root
sudo -i
2,创建root管理员密码
passwd root
3,开启root登录
sudo sed -i 's/^#\?PermitRootLogin.*/PermitRootLogin yes/g' /etc/ssh/sshd_config
4,开启密码验证
sudo sed -i 's/^#\?PasswordAuthentication.*/PasswordAuthentication yes/g' /etc/ssh/sshd_config
5,重启ssh服务
service sshd restart
6,检查是否有ssh环境
ps -e | grep ssh
12、问题处理(一)
12.1、重新配置
12.1、方法:使用命令
rm -rf ./tmp && rm -rf .config
make menuconfig
make V=s -j$(nproc)
12.2 如果编译失败,可以执行以下命令:
make clean 删除编译目录/bin和/build_dir目录中的文件
make dirclean 除了删除编译目录之外还删除编译工具目录,删除/bin和/build_dir目录的中的文件(make clean)以及/staging_dir、/toolchain、/tmp和/logs中的文件,一般在更换CPU架构的情况下才操作。
感谢实用技能、WangONC、JiaY-shi等大拿的技术资料。