OpenWrt

uname -m
opkg print-architecture

Aria2
YAAW:https://github.com/binux/yaaw
Tracker:https://github.com/XIU2/TrackersListCollection

Rclone
rcone config
rclone mount GD: /mnt/GD --allow-other --allow-non-empty --vfs-cache-mode writes &

网络共享
smbpasswd -a root

#挂载分区
opkg update
opkg install cfdisk

lsblk

cfdisk /dev/sdb    #磁盘分区
fdisk /dev/sdc      #磁盘分区
mkfs.ext4 /dev/sdb1      #分区格式化
mkfs -t ext4 /dev/sda1   #分区格式化
mkdir -p /mnt/sdb1        #新建目录

df -h

umount /dev/sdb1
mount -t ext4 /dev/sdb1 /mnt/sdb1    #挂载分区

less /etc/fstab(cat /etc/fstab)
lsblk -f
dumpe2fs -h /dev/sda1
blkid
blkid /dev/vda1
echo /dev/sda1 /mnt/sda1 ext4 defaults 1 2 >> /etc/fstab    #硬盘挂载信息写入 /etc/fstab
echo /dev/sdb1 /mnt/sdb1 ext4 defaults 0 0 >> /etc/fstab    #硬盘挂载信息写入 /etc/fstab
外部设备在插入时挂载,在未插入时忽略。这需要nofail选项,
可以在启动时若设备不存在直接忽略它而不报错.
/dev/sdb1 /mnt/sdb1 ext4 defaults,nofail 0 2
#第一字段:分区设备文件名或UUID(硬盘通用唯一识别码 可通过dumpe2fs 分区设备文件名 查看)
#第二字段:挂载点
#第三字段:文件系统名称
#第四字段:挂载参数
#第五字段:指定分区是否被dump备份,0代表不备份,1代表每天备份,2代表不定期备份
#第六字段:指定分区是否被fsck检测,0代表不检测,其它数字代表检测的优先级,1的优先级比2高

cd /mnt/sdb1
mkdir DownLoad TrSet ArSet
chmod 755 DownLoad/ TrSet/ ArSet/

/mnt/sdb1/TrSet
/mnt/sdb1/ArSet
/mnt/sdb1/DownLoad

#编译OpenWrt固件

#创建非root用户和设置密码
useradd -r -m -s /bin/bash gxx
passwd gxx
#把新用户添加到sudo的配置文件
vi /etc/sudoers
#在文件中添加一行gxx     ALL=(ALL:ALL) ALL
#/etc/sudoers为只读文件,保存退出输入
:wq!
#切换到非root用户,并切换到/home/gxx目录
su gxx
cd ~
#编译Lede/OpenWrt固件所需时间较长,可使用Screen命令保持会话
sudo apt install screen
script /dev/null
#开始编译OpenWrt固件!
GitHub:https://github.com/coolsnowwolf/lede

\lede\feeds.conf.default
src-git ssrp https://github.com/fw876/helloworld.git
#改默认IP地址
/home/gxx/lede/package/base-files/files/bin/config_generate
#固件文件夹
/home/gxx/lede/bin/targets

qm importdisk 101 /var/lib/vz/template/iso/openwrt-x86-64-generic-squashfs-combined.img local
qm importdisk 103 /root/openwrt-x86-64-generic-squashfs-combined-efi.img local

#二次编译

#按需清除文件(非必选)
make clean       #清除bin目录
make dirclean    #清除交叉编译工具及工具链目录
make distclean   #清除相关文件,包括下载的软件包、配置文件、feed内容等
#开始二次编译
cd lede
git pull #同步更新源码
./scripts/feeds update -a && ./scripts/feeds install -a #更新Feeds
rm -rf ./tmp && rm -rf .config #清除编译配置和缓存
make menuconfig     #重复编译上一次固件可使用 make defconfig
make -j8 download   #下载dl库
#排列dl目录下的文件,显示小于等于1K的文件说明下载的文件不正确
ls ~/lede/dl/ -lSrh | less
make -j$(($(nproc) + 1)) V=s

#常见问题
XXX is not in the sudoers file. This incident will be reported.
编辑sudoers文件
vi /etc/sudoers
添加一行usr ALL=(ALL) ALL

sudo时出现unable to resolve host
vi /etc/hosts
127.0.0.1 localhost

Cannot open your terminal ‘/dev/pts/0’ – please check.
script /dev/null

useradd usr
passwd ***
mkdir /home/usr
sudo chown usr /home/usr

#在线编译/AutoBuild-OpenWrt

Fork源码:https://github.com/esirplayground/AutoBuild-OpenWrt

在Actions标签栏下点击绿色长条按钮,打开工作流.

编辑customize.sh文件,修改192.168.5.1为自己路由器的地址.

在本地编译环境执行下面一行代码,得到/lede/diffconfig文件。
./scripts/diffconfig.sh > diffconfig
编辑x86_64.config文件,用diffconfig文件的内容全部替换。

编辑.github/workflows/Build_OP_x86_64.yml文件,去掉代码中的三个#号,保存文件即可开始使用GitHub Actions自动编译OpenWrt固件了!
  #push:
  #  branches: 
  #    - master
改为
  push:
    branches: 
      - master

#定时更换节点
* * * * * 需要执行的命令
- - - - -
| | | | |
| | | | ----- 一星期中的第几天 (0 - 6) (其中0表示星期日)
| | | ------- 月份 (1 - 12)
| | --------- 一个月中的第几天 (1 - 31)
| ----------- 一天中的第几小时 (0 - 23)
------------- 一小时中的第几分钟 (0 - 59)

配置cron定时任务
cron -e
这个命令会打开 /etc/crontabs/root 文件。后续编辑的也就是这个root文件。

crontab -l
这个命令可以列举出当前所有已经配置的定时任务

logread -e cron
这个命令可以查看cron执行的记录。

定时更换节点
0 6 * * * sed -i "s|global_server 'cfg084a8f'|global_server 'cfg064a8f'|g" /etc/config/shadowsocksr && /etc/init.d/shadowsocksr restart
30 20 * * * sed -i "s|global_server 'cfg064a8f'|global_server 'cfg084a8f'|g" /etc/config/shadowsocksr && /etc/init.d/shadowsocksr restart

sed -i 's/原字符串/替换字符串/' filename
sed -i 's/原字符串/替换字符串/g' filename
说明:
s///: 从每一行的行首开始,匹配到第一个符合的字段,就会跳到下一行(同一行中可能有多个匹配字段)
s///g:表示全局替换,匹配每一行从行首到行尾的所有字符

#自定义DNS和网关
vim /etc/config/dhcp

# config mac 'op'
#         option mac ''
#         option tag 'hello'

config host
        option name 'Moto-Z'
        option ip ''
	option mac '88:79:7e:00:8e:26'
	option tag 'hello'

config host
        option name 'PC'
        option ip ''
	option mac 'F4:B5:20:28:6A:0C'
	option tag 'hello'

config host
        option name 'Moto-Z4'
        option ip ''
	option mac '8A:24:CF:43:0E:77'
	option tag 'hello'

config host
        option name 'Moto-Z3'
        option ip ''
	option mac '30:4b:07:5b:d0:b7'
	option tag 'hello'

config host
        option name 'Moto-Z2'
        option ip ''
	option mac '88:b4:a6:d4:56:44'
	option tag 'hello'

config tag 'hello'
	list dhcp_option '3,192.168.0.3'
	list dhcp_option '6,192.168.0.3'
	option force '1'

/etc/init.d/dnsmasq restart

软路由需要 Turbo ACC 网络加速 吗?
我的理解是Turbo ACC 网络加速是一个集成的网络加速控制界面ipk应用,只是为了方便开关包含以下几种加速:
1.Flow Offloading 转发加速 ,来自高通开源的 Shortcut FE 转发加速引擎 (Fast Path) ,一种纯软件算法上的优化。可以针对openwrt所有型号的路由器。
2.HWNAT加速。一般只针对MT762x芯片型号的路由器可以开启。比如常见的NEWIFI D2,K2P等。但目前针对19.07系列不是很完善,会造成路由器崩溃,不是MT762x芯片的路由器你开启也没有作用.
3. BBR加速。是谷歌弄出来的一个内核级别的tcp协议的优化,可以提高网络连接的能力(争抢带宽能力),这是linux内核4.9以后都可以用的一个东西,内核大于4.9的所有型号路由器都能用
4.DNS 加速。主要是利用 pdnsd 做本地缓存,提高DNS解析速度,所有型号路由器都能用

在这个控制界面里还可以看FULLCONE NAT是否启用的,它的启用和关闭不在Turbo ACC 网络加速 里,而在“网络”->“防火墙”里可以来控制启用。它主要是针对iptables的一个改进吧,不过原作者的github里也说了,只针对几个linux内核版本做过测试,有些linux内核版本上使用是有问题的