使用ubuntu18.04编译先执行
export FORCE_UNSAFE_CONFIGURE=1
重新编译:
rm -rf build_dir/ tmp/ && make clean
安装依赖:
apt-get install subversion build-essential libncurses5-dev zlib1g-dev gawk git ccache gettext libssl-dev xsltproc gcc g++ binutils patch bzip2 flex bison make autoconf texinfo unzip sharutils ncurses-term liblzma-dev git-core quilt libxml-parser-perl mercurial bzr ecj cvs
在 ubuntu 终端中输入以下命令:
cd openwrt
./scripts/feeds update -a
./scripts/feeds install -a
编译检查命令:
make defconfig
查看安装模块:
lsmod
调整中文页面
一、概述
openwrt 源码最开始是只支持英文的,所以需要自己配置添加中文显示,有两种方式可以实现web 中文界面显示:
① 直接编译进固件,并设置默认中文;
② 在串口终端在线更新中文包,并在web端设置;
第一种适合产品化时使用;第二种适合调试用。
二、实现2.1 中文包编译进入固件
① make menuconfig 选中下面中英文选项。保存退出
LuCI --->
Translations--->
<*> luci-i18n-chinese //支持中文
<*> luci-i18n-english
LuCI --->
Modules --->
Translations --->
<*> English (en)
<*> Chinese (zh-cn)
!!!不同版本的luci 对应的界面也不相同,上面两个可以参考;
!!!若没有luci 选项,请先执行这两条命令:
./scripts/feeds update -a
./scripts/feeds install -a
② 修改配置文件,配置默认中文
vim feeds/luci/modules/luci-base/root/etc/config/luci
修改内容为 zh_cn
③ make V=s 编译好的镜像烧写入开发板,进入Web页面即可。2.2 在线安装中文包
① 在串口终端输入 opkg update (从官网更新可以安装的ipk软件列表,确保网络连接畅通)
② 登录进入web界面 ,在System ——> Software ——>Software-Actions
③ 在Download and install package右边的文本框里输入:luci-i18n-chinese,点击OK,系统即会自动下载并安装。
&& 也可以在Find package 中找到相关的中文包进行安装,因为openwrt后面版本更新,中文包名字不一定为 luci-i18n-chinese
④ 安装完后到语言设置的位置(路径为:System——>System——>Language and Style——>Language)选择chinese,然后刷新页面即可。
3、编译支持USB自动mount功能
make menuconfig
1). 添加USB相关支持
Kernel modules —> USB Support —> <> kmod-usb-core. ##默认已经选了
Kernel modules —> USB Support —> <> kmod-usb-ohci. ##默认已选 old usb1.0
Kernel modules —> USB Support —> <> kmod-usb-uhci. ## usb1.1
Kernel modules —> USB Support —> <> kmod-usb-storage.
Kernel modules —> USB Support —> <> kmod-usb-storage-extras.
Kernel modules —> USB Support —> <> kmod-usb2. ##默认已经选了 usb2.0
添加文件系统支持
Kernel modules —> Filesystems —> <> kmod-fs-ntfs(NTFS 格式 选择)
Kernel modules —> Filesystems —> <> kmod-fs-ext4 (移动硬盘EXT4格式选择)
Kernel modules —> Filesystems —> <> kmod-fs-vfat(FAT16 / FAT32 格式 选择)
添加UTF8编码,CP437编码,ISO8859-1编码
Kernel modules —> Native Language Support —> <*> kmod-nls-utf8
2). 添加USB挂载
Base system —> <*>block-mount
3). 添加自动挂载工具
Utilities —> Filesystem —> <*> badblocks
Utilities —> disc —> <> fdisk… manipulate disk partition table
Utilities —> <> usbutils… USB devices listing utilities
退出保存
4、修改flash容量支持
文件位置示范:./target/linux/ramips/dts
之前在开发板上,使用了支持32M flash的修改,现在支持了64M,只是对
固件中dts设备树又进行了修改 如下 主要是对partion@50000这项
RAM:
reg = <0x0 0x10000000> // 256M RAM
reg = <0x0 0x8000000> // 128M RAM
reg = <0x0 0x4000000> // 64M RAM
FLASH:
reg = <0x50000 0x7b0000>; // 8M FLASH
reg = <0x50000 0xfb0000>; // 16M FLASH
reg = <0x50000 0x1fb0000>; // 32M FLASH
附:关于dts 32Mflash的支持
原来的
partion@50000{
label = “fireware”
reg = <0x50000 0x7b0000>;
};
改为了
partion@50000{
label = “fireware”
reg = <0x50000 0x1fb0000>;
};
如果需要16M则是:
partion@50000{
label = “fireware”
reg = <0x50000 0xfb0000>;
};
这个0x1fb0000是怎么计算出来的,基于第二个参数表示大小32M = 32 * 1024 *1024 Byte = 0x200000
还有这些分区地址我在手册中没有看到,是不开放吗?
答:0x7b0000 是7.6875M的固件 8M的flash是0x800000 32Mflash的要改的话就是把固件的大小增加24M 即增加0x1800000 加上之前的0x7b0000就等于0x1fb0000
答:0x1fb0000是用0x2000000减去0x50000得到的。
现在使用的硬件板子是64Mflash的,所以按照上面理解,做如下修改
64M flash = 64 1024 1024 Bytre = 0x40000000
然后减去前面的0x50000 = 0x3fb0000
修改好以后,可以启动了,一切正常
5、添加SFTP支持
network -> SSH -> openssh-sftp-avahi-service
6、添加Rndis-net 和 串口支持
Kernel modules -> USB support -> kmod-usb-serial -> kmod-usb-serlal-ch341 and cp210x
Kernel modules -> USB support -> kmod-usb-net -> kmod-usb-net-rndis
7、添加 minicom 和 tmux 功能
Utilities->Terminal->tmux 或者 Utilities->tmux
Utilities->Terminal->minicom
8、添加 openvpn 功能
Network->VPN->openvpn-openssl
9、支持 block-mount 和 ext4格式化功能(18.06 自带)
block:
Base system->block-mount
ext4:
Libraries->Filesystem->libex2fs
Utilities->Filesystem->e2fsprogs
10、添加htop功能
Administration->htop
11、添加zip功能
Utilities->Compression->unzip
Utilities->Compression->zip
12、添加vim功能
Utilities->Editors->vim-full
13、添加fdisk功能
Utilities —> disc —> fdisk
14、开启串口ttyS1 + ser2net
已 open18为例:
参考:https://blog.csdn.net/liupeng08304/article/details/100986790
编辑 /openwrt18/target/linux/ramips/dts/mt7628an.dtsi
修改:
uart1: uart1@d00 {
***
//status = "disabled"; // 修改成 okay
status = "okay";
};
再检查使用的 MT7628-xxx.dts 中 pinctrl 配置里没有“uratf”:
&pinctrl {
state_default: pinctrl0 {
gpio {
ralink,group = "gpio", "p0led_an"; // 这里会配置成gpio口
ralink,function = "gpio";
};
};
};
重新编译 make V=s 即可;
15、修改默认网络配置 netwrok
network文件配置文件地址为:
package/base-files/files/bin/config_generate
wireless文件配置:
package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh
或者
package/kernel/mac80211/files/lib/wifi/mac80211.sh
还可以在编译目录新建 files/etc/config/network 和 wireless 文件 ,写入默认配置。
16、添加自定义型号
自定义型号主要包含以下3个方面:
添加设备信息到openwrt。
添加设备树dts配置硬件。
修改文件路径: 源码目录/target/linux/ramips/image/mt76x8.mk
添加设备信息,模板如下(不代表所有选项,具体参考其它设备的配置信息):
define Device/设备型号名称
DTS := DTS文件名(可自定义,但一般与设备型号一致)
IMAGES :=sysupgrade.bin
IMAGE_SIZE := 固件大小
DEVICE_TITLE := 设备型号信息(可自定义,但一般与设备型号一致)
DEVICE_PACKAGES := 设备需要的packages
endef
TARGET_DEVICES += 设备型号名称
配置板子兼容性:
文件例如:"/openwrt18/target/linux/ramips/dts/U7628-01-128M-16M.dts"
兼容型号:compatible = "u7628-01-128M-16M", "unielec,u7628-01", "mediatek,mt7628an-soc";
板子名称:model = "UniElec U7628-01";
查找错误命令:find / -type f|xargs grep "错误关键词"
16、添加rz命令
支持 rz 命令: utilities -> lrzsz
卓钛JS9331配置
1、修改flash容量
文件:lede_AR9331_zhuotk_source_64bit/target/linux/ar71xx/image/tp-link.mk 748行
define Device/tl-wr720n-v3
$(Device/tplink-8mlzma) // 修改 为tplink-16mlzma
DEVICE_TITLE := TP-LINK TL-WR720N v3
2、添加声卡支持
Kernel modules -> Sound Support -> kmod-sound-core -> kmod-usb-audio
3万+

被折叠的 条评论
为什么被折叠?



