Openwrt 路由设置(一):固件安装
路由器如何安装openwrt固件。

Openwrt路由配置(一):固件安装

一、准备工作

选择固件:(2022-3-16)

  1. immortalwrt (基于openwrt,软件库非常全),官方网站:openwrt.cc固件下载
  2. 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盘:

  1. 查看磁盘 $ lsblk
  2. 写入U盘:$ dd if=xxx.img of=/dev/sdX 注意X,千万不要a;一般为b
  3. U盘上把没有使用的空间新建一个分区。$ fdisk /dev/sdX;格式化 $ mkfs.ext4 /dev/sdX9 注意9,千万不要12
  4. 把img固件文件拷贝到新建分区

二、安装固件

(一)x86路由的安装:

  1. U盘引导路由启动
  2. 加载含有img固件文件的分区:$ mount /dev/sdX9 /mnt/usb
  3. 写盘:$ dd if=xxx.img of=/dev/sdX 注意X是路由内硬盘,一般为 a

注意:考虑到后续还需要扩容/overlay分区,可以在此时就扩容img固件镜像,一劳永逸。具体如下:

  1. 在固件镜像后边增加5000M空数据:$ dd if=/dev/zero bs=1M count=5000 >> op.img
  2. 修改固件镜像分区表:$ parted op.imgprint 看现有分区中的第2个需要扩容,再 resizepart 2 100% ,最后 quit

(二)arm路由的安装:

当无法直接U盘引导路由启动,需要把路由的硬盘(tf卡或者ssd硬盘)连接至电脑,用写盘软件写入。

三、完善硬盘分区

以下操作针对路由的内置硬盘,该硬盘不能处于引导和使用状态,应处于外部挂载状态。

  • x86路由,使用U盘引导启动
  • arm路由,不能U盘引导时,拆硬盘连接至第三方电脑,电脑用引导U盘启动

(一)EXT4 分区扩容

注意: squashfs 文件格式的不适用!
(以下举例假设 sda2 作为拟扩容的分区。注意根据实际情况替换!)

$ fdisk /dev/sda
  1. p查看分区情况;i查看安装分区(通常为/dev/sda2),均拍照记录。
  2. 删除sda2,但千万别写入改变!应马上新建sda2,starting sector与原来一致;ending sector设置 +5G 以上,即扩容。如用Docker,建议 +15G
  3. 进入高级模式,修改UUID,与原来一致。(如需)
  4. 退出高级模式,写入改变,并退出fdisk。

注意:fdisk过程中,如提示"partition signatures already present",一定选择 N ,不移除。

扩容后必须针对扩容的分区进行 Resizing filesystem

$ resize2fs /dev/sda2

(二)新建分区,利用硬盘剩余空间

(以下举例假设 sda 作为路由硬盘。注意根据实际情况替换!)

$ fdisk /dev/sda
  1. p查看分区情况,记录。
  2. 新建分区,新建分区的 starting sector 设置为已存在分区的结尾+1 。
  3. 写入改变,并退出fdisk。

注意:fdisk过程中,如提示"partition signatures already present",一定选择 N ,不移除。

格式化新分区:

$ mkfs.ext4 /dev/sda9

注意:squashfs 文件格式的固件,因为不能扩容路由主盘分区,需要单独新建个分区作为 /overlay
注意:如果使用docker,应该新建个单独分区用于docker,不应让docker使用/overlay分区。

四、路由首次启动

确定路由安装好,接电启动。
电脑接网线连接路由;电脑设同局域网段;浏览器登录openwrt的gui后台:

  1. 设置管理员密码(系统-管理)
  2. 启动SSH登录(系统-管理)
  3. 检查 //overlay 容量(系统-挂载点)
  • 对于 ext4 文件格式的固件,经扩容后,/ 分区应该足够大。
  • 对于 squashfs 文件格式的固件,无法扩容,/overlay 分区容量一般不足,需要切换为新建的分区。

五、切换 /overlay 挂载

注意: 此操作针对 squashfs 文件格式的固件,无法扩容。而 ext4 文件格式的固件可以扩容,不应进行此操作。

  1. $ df -h 查看当前挂载点。找到新建的分区(以下假设 sda3 )目前挂载在哪里。如没挂载,需临时挂载 $ mount /dev/sda3 /mnt/tmp
  2. $ cp -f -a /overlay/* /mnt/tmp 将原/overlay内的数据拷贝到新地方
  3. $ sync 强制将改变立即写入磁盘
  4. $ umount /mnt/tmp 解除临时挂载。
  5. 登录openwrt后台gui,系统-挂载点,点“生成配置”,下方“挂载点”中出现sda3;修改,“启动”并设为“作为外部overlay使用”。
  6. 重启路由;查看是否生效。

六、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工具

登录后:

  1. 可设置 root 管理员密码:$ passwd
  2. 可查看网卡:$ ifconfig
  3. 可查看并修改网络配置文件:/etc/config/network
  4. 重启 $ 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