Openwrt路由配置(一):固件安装
一、准备工作
选择固件:(2022-3-16)
- immortalwrt (基于openwrt,软件库非常全),官方网站:openwrt.cc ; 固件下载
- QiuSimons/YAOF(R4S专用,基于immortalwrt),官方网站:QiuSimons/YAOF
(一)下载固件 img
文件
- 注意架构:电脑主机用 amd64、x86-64(等同于amd64,也向下兼容32位);开发板一般 aarch64(即armv8-64版,等同于"arm64"),arm
- 注意文件格式:
ext4
,可以分区扩容,建议用;squashfs
,只读,系统容易还原。
(二)解压缩
Linux下:$ gunzip xxx.gz
,注意可能有提示“有无用的尾巴”,没关系。
Windows:使用7-Zip
(三)Linux下制作启动U盘:
- 查看磁盘
$ lsblk
- 写入U盘:
$ dd if=xxx.img of=/dev/sdX
注意X
,千万不要a
;一般为b
- U盘上把没有使用的空间新建一个分区。
$ fdisk /dev/sdX
;格式化$ mkfs.ext4 /dev/sdX9
注意9
,千万不要1
或2
- 把img固件文件拷贝到新建分区
二、安装固件
(一)x86路由的安装:
- U盘引导路由启动
- 加载含有img固件文件的分区:
$ mount /dev/sdX9 /mnt/usb
- 写盘:
$ dd if=xxx.img of=/dev/sdX
注意X是路由内硬盘,一般为a
注意:考虑到后续还需要扩容/overlay
分区,可以在此时就扩容img固件镜像,一劳永逸。具体如下:
- 在固件镜像后边增加5000M空数据:
$ dd if=/dev/zero bs=1M count=5000 >> op.img
- 修改固件镜像分区表:
$ parted op.img
先print
看现有分区中的第2个需要扩容,再resizepart 2 100%
,最后quit
(二)arm路由的安装:
当无法直接U盘引导路由启动,需要把路由的硬盘(tf卡或者ssd硬盘)连接至电脑,用写盘软件写入。
三、完善硬盘分区
以下操作针对路由的内置硬盘,该硬盘不能处于引导和使用状态,应处于外部挂载状态。
- x86路由,使用U盘引导启动
- arm路由,不能U盘引导时,拆硬盘连接至第三方电脑,电脑用引导U盘启动
(一)EXT4 分区扩容
注意: squashfs 文件格式的不适用!
(以下举例假设 sda2
作为拟扩容的分区。注意根据实际情况替换!)
$ fdisk /dev/sda
- p查看分区情况;i查看安装分区(通常为/dev/sda2),均拍照记录。
- 删除sda2,但千万别写入改变!应马上新建sda2,
starting sector
与原来一致;ending sector
设置+5G
以上,即扩容。如用Docker,建议+15G
。 - 进入高级模式,修改UUID,与原来一致。(如需)
- 退出高级模式,写入改变,并退出fdisk。
注意:fdisk
过程中,如提示"partition signatures already present",一定选择 N
,不移除。
扩容后必须针对扩容的分区进行 Resizing filesystem
$ resize2fs /dev/sda2
(二)新建分区,利用硬盘剩余空间
(以下举例假设 sda
作为路由硬盘。注意根据实际情况替换!)
$ fdisk /dev/sda
- p查看分区情况,记录。
- 新建分区,新建分区的
starting sector
设置为已存在分区的结尾+1 。 - 写入改变,并退出fdisk。
注意:fdisk
过程中,如提示"partition signatures already present",一定选择 N
,不移除。
格式化新分区:
$ mkfs.ext4 /dev/sda9
注意:squashfs 文件格式的固件,因为不能扩容路由主盘分区,需要单独新建个分区作为 /overlay
。
注意:如果使用docker,应该新建个单独分区用于docker,不应让docker使用/overlay
分区。
四、路由首次启动
确定路由安装好,接电启动。
电脑接网线连接路由;电脑设同局域网段;浏览器登录openwrt的gui后台:
- 设置管理员密码(系统-管理)
- 启动SSH登录(系统-管理)
- 检查
/
或/overlay
容量(系统-挂载点)
- 对于 ext4 文件格式的固件,经扩容后,
/
分区应该足够大。 - 对于 squashfs 文件格式的固件,无法扩容,
/overlay
分区容量一般不足,需要切换为新建的分区。
五、切换 /overlay
挂载
注意: 此操作针对 squashfs 文件格式的固件,无法扩容。而 ext4 文件格式的固件可以扩容,不应进行此操作。
$ df -h
查看当前挂载点。找到新建的分区(以下假设sda3
)目前挂载在哪里。如没挂载,需临时挂载$ mount /dev/sda3 /mnt/tmp
$ cp -f -a /overlay/* /mnt/tmp
将原/overlay
内的数据拷贝到新地方$ sync
强制将改变立即写入磁盘$ umount /mnt/tmp
解除临时挂载。- 登录openwrt后台gui,系统-挂载点,点“生成配置”,下方“挂载点”中出现sda3;修改,“启动”并设为“作为外部overlay使用”。
- 重启路由;查看是否生效。
六、SSH 登录
- Linux下ssh登录:
$ ssh root@192.168.2.2
注意:如需指定端口,加-p 12222
- Linux下scp传输文件:
$ scp -P 12222 -O /tmp/sourcefile root@192.168.2.2:/tmp
- Windows下ssh登录:putty工具
登录后:
- 可设置 root 管理员密码:
$ passwd
- 可查看网卡:
$ ifconfig
- 可查看并修改网络配置文件:
/etc/config/network
- 重启
$ reboot
关机$ poweroff
七、网卡限速的处理
如果1G网卡被限速在100M,无法1000M全速运行:
$ ethtool -s eth1 speed 1000 duplex full
$ ethtool -s eth1 autoneg off
# $ ethtool -s eth1 autoneg on
# 注意`eth1`是被限速的网口
附:OPKG 包管理常用命令
$ opkg list-installed # 列出已安装软件包。
$ opkg list-upgradable # 列出已安装并可升级的软件包。
$ opkg update # 更新可供安装的软件包列表。
$ opkg upgrade xxxxx # 升级具体软件包。如果软件包没有安装,与install效果相同。
# 注意:不推荐大面积 upgrade ,尤其不建议 upgrade 核心。仅推荐 upgrade 功能性插件。
$ opkg install xxxxx # 安装软件包,及其依赖的所有软件包。
$ opkg remove xxxxx # 卸载软件包,但其依赖的软件包不会被删除。
$ opkg remove xxxxx --autoremove # 删除软件包,及其不再被其他包依赖的依赖包。
$ opkg whatdepends xxxxx # 输出依赖于xxxxx(已安装)的全部已安装软件包。
$ opkg info xxxxx # 显示已安装的软件包的信息,包含软件包名称、版本、所依赖的软件包等。
# 不指定参数将输出所有。
$ opkg find <regexp> # 列出名称匹配<regexp>的软件包。
# <regexp>是正则表达式,可以使用星号来模糊匹配,例如使用“net*”或者“*net*”,均可以匹配NetCat。
OPKG配置文件默认是 /etc/opkg.conf
附:Openwrt无法保存配置问题的修复
当后台保存配置时,如始终显示“未保存配置”,这是因为意外断电导致挂载盘只读保护。
解决方法:ssh登陆后,运行
$ e2fsck /dev/mmcblk0p2 # 检查磁盘,如果遇到错误,输入y修复。
$ reboot
如果上述无法修复,可以尝试 $ mount -o remount rw /
挂载。
最后修改于 2024-02-24