分类目录归档:openwrt

备份本地代码到github

第一步:建立git仓库,cd到你的本地项目根目录下,执行git命令

git init
第二步:将项目的所有文件添加到仓库中

git add .
第三步:将add的文件commit到仓库

git commit -m “注释语句”
第四步:去github上创建自己的Repository

or create a new repository on the command line
echo “# lede” >> README.md
git init
git add README.md
git commit -m “first commit”
git branch -M main
git remote add origin git@github.com:***/lede.git
git push -u origin main

…or push an existing repository from the command line
git remote add origin git@github.com:***/lede.git
git branch -M main
git push -u origin main

后续有更新的话执行以下步骤:

git add .

git commit -m “注释语句”

git branch -M main  (这句是强制重命名分支为main,初始化的时候需要,后续应该不用)
git push -u origin main

 

openwrt编译配置教程以及CPU降频设置

config文件位置:

openwrt config文件:.config
kernel config:build_dir/target-xxxxxxx/linux-x86_generic/linux-x.xx.xx/.config

内核版本更改:

支持内核版本列表: include/kernel-version.mk
更改内核版本位置: target/linux/XXX/Makefile.

3.你要编译的内容 命令 make menuconfig

这里给出一个基本配置,不过其中Busybox配置,正常使用默认配置即可,不需要Customize busybox options,我为了在日后的initramfs中加入一些overlayfs的功能自己加进去了配置,另外的配置基本是x86必须的。

Target System (x86) #目标平台选择
Target Images —>
ext4 #生成.EXT4.IMG文件
Base system —>
<*> block-mount
<*> busybox —> #用于今后`initramfs`支持,可以将所有lib编译到busybox
Customize busybox options
Busybox Settings —>
General Configuration —>
Support –install [-s] to install applet links at runtime
[ ] Don’t use /usr ( [ ] Don’t use /usr 该项不选!,否则无法生成 /usr/sbin/ntpd-hotplug及其他文件,导致busybox-*.ipk生成失败!)
Linux Module Utilities —>
modinfo
Simplified modutils
Accept module options on modprobe command line
Skip loading of already loaded modules
(/lib/modules) Default directory containing modules
Linux System Utilities —>
mdev
Support /etc/mdev.conf
Support subdirs/symlinks
Support regular expressions substitutions when renaming
Support command execution at device addition/removal
Support loading of firmwares
findfs
blkid
Print filesystem type
losetup
lspci
lsusb
mount
Support specifying devices by label or UUID
Filesystem/Volume identification —>
Ext filesystem
fat filesystem
Networking Utilities —>
ftpd
Enable upload commands
Enable workaround for RFC-violating clients
inetd
telnetd
Support standalone telnetd (not inetd only)
tcpsvd
udpsvd
`kernel` modules —>
Block Devices —>
<*> kmod-ata-core
<*> kmod-ata-ahci
<*> kmod-loop
-*- kmod-scsi-core
<*> kmod-scsi-generic
Filesystems —>
<*> kmod-fs-ext4
<*> kmod-fs-ntfs
<*> kmod-fs-vfat
Input modules —>#键盘
-*- kmod-hid
<*> kmod-hid-generic
-*- kmod-input-core
-*- kmod-input-evdev
Native Language Support —>
<*> kmod-nls-cp437 #vfat需要这个
<*> kmod-nls-iso8859-1
<*> kmod-nls-utf8
Network Devices —> #网卡驱动
<*> kmod-macvlan
USB Support —>
-*- kmod-usb-core
<*> kmod-usb-hid #usb键盘
<*> kmod-usb-ohci
<*> kmod-usb-storage
<*> kmod-usb2
<*> kmod-usb3
Wireless Drivers —>#wifi卡驱动
Network —>
<*> hostapd #wifi ap模式
<*> hostapd-common
<*> hostapd-utils
<*> wpa-supplicant
Utilities —>#自选 fdisk等

4.x64固件内核支持等各种特性,命令 make kernel_menuconfig
目的是为了加入x86的多核心以及大内存支持

Processor type and features —>
Symmetric multi-processing support
Processor family (Core 2/newer Xeon) —>#自行选择处理器平台
Supported processor vendors —>#自行选择处理器平台
(2) Maximum number of CPUs #自行编辑
SMT (Hyperthreading) scheduler support#超线程支持
Multi-core scheduler support
High Memory Support (4GB) —>

Device Drivers
< >ATA/ATAPI/MFM/RLL support(DEPRECATED)—>
SCSI device support—>
<*>SCSI generic support (kernel module –> Block Devices –> <*> kmod-scsi-core)
<*>Serial ATA and Parallel ATA drivers—>
<*>AHCI SATA support (kernel module –> Block Devices –> <*> kmod-ata-ahci)
<*>Intel ESB,ICH,PIIX3,PIIX4 PATA/SATA support(默认选中)
<*>VIA SATA support
<*>VIA PATA support
„„(根据你的硬件情况选择)
Multiple devices driver support (RAID and LVM) —>
Network device support —> (网卡驱动支持,根据你的硬件情况选择)
Ethernet driver support —>
Marvell devices
<*> Marvell MDIO interface support
<*> Marvell Yukon Gigabit Ethernet support
<*> Marvell Yukon 2 support
Realtek devices
<*> Realtek RTL-8139 C+ PCI Fast Ethernet Adapter support()
<*> Realtek RTL-8129/8130/8139 PCI Fast Ethernet Adapter support()
<*> Realtek 8169 gigabit ethernet support

设置了Powermanagement and ACPI options->
ACPI(Advanced Configuration and Power Interface)Support后,需要在CPU Frequency scaling –>x86 CPU frequency scaling drivers—> 中选择一个驱动,否则会全速运行!

如果没有设置,在编译时Inter Enhanced SpeedStep (deprecated)一项需要手动确认,其他都默认为“n”。

关于nanopi R2S的一些记录

这个机器看似网上资料很多,实际上要找的东西还是很难找到。这里记录一下。方便自己,方便他人。

首先,ubuntu的固件,root密码是fa,普通用户的用户名是pi,密码也是pi

另外这个机器的下载资源在这里。https://dl.friendlyarm.com/nanopir2s

rk3328-sd-friendlycore-bionic-5.4-arm64-20200707.img这个文件名就是ubuntu 18.04系统

下载后解压,烧写到TF卡里面,插上R2S,启动。路由器网口插在R2S的WAN即可,等待几分钟,去路由器里面看NanoPi-R2S分配的IP就是它,通过ssh登录。

这个机器自带的源有问题,下载不了,我已经更换为中科大的源。

deb http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic-security main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic-updates main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ bionic-backports main restricted universe multiverse

 

 

error: RPC failed; curl 56 GnuTLS recv error (-9): A TLS packet with unexpected length was received.

今天在复制一个代码库的时候报错。

error: RPC failed; curl 56 GnuTLS recv error (-9): A TLS packet with unexpected length was received.
fatal: The remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed

系统使用的是 Ubuntu 18.04.3 LTS (GNU/Linux 4.15.0-111-generic x86_64)

解决办法。

$ sudo apt-get purge git
$ sudo apt-get install git

问题解决。

更新,以上似乎不能根治,下次还会出现。

实际上,由于git默认缓存大小不足导致的。
解决方法是:使用下面的命令增加缓存大小。

git config –global http.postBuffer 2000000000

编译openwrt时取消预选的软件包

使用lean的openwrt代码,发现里面预选了很多luci-app,而这些并不是我需要的功能,每次编译的时候都要取消选中,很是麻烦。

研究了一下,找到了设置这个的地方,记录一下。

其实这个设置在/openwrt/include目录下面的target.mk中。

default device type

DEVICE_TYPE?=router

Default packages – the really basic set

DEFAULT_PACKAGES:=base-files libc libgcc busybox dropbear mtd uci opkg netifd fstools uclient-fetch logd block-mount \
kmod-nf-nathelper kmod-nf-nathelper-extra kmod-ipt-raw \
default-settings luci luci-app-ddns luci-app-sqm luci-app-upnp luci-app-adbyby-plus luci-app-autoreboot \
luci-app-filetransfer luci-app-vsftpd ddns-scripts_aliyun \
luci-app-pptp-server luci-app-arpbind luci-app-vlmcsd luci-app-wifischedule luci-app-wol luci-app-ramfree \
luci-app-sfe luci-app-flowoffload luci-app-nlbwmon luci-app-usb-printer luci-app-accesscontrol

For nas targets

DEFAULT_PACKAGES.nas:=fdisk lsblk mdadm automount autosamba luci-app-usb-printer

For router targets

DEFAULT_PACKAGES.router:=dnsmasq-full iptables ppp ppp-mod-pppoe firewall kmod-ipt-offload
DEFAULT_PACKAGES.bootloader:=

而在openwrt原版里面是这样的:

default device type

DEVICE_TYPE?=router

Default packages – the really basic set

DEFAULT_PACKAGES:=base-files libc libgcc busybox dropbear mtd uci opkg netifd fstools uclient-fetch logd

For nas targets

DEFAULT_PACKAGES.nas:=block-mount fdisk lsblk mdadm

For router targets

DEFAULT_PACKAGES.router:=dnsmasq iptables ip6tables ppp ppp-mod-pppoe firewall odhcpd-ipv6only odhcp6c kmod-ipt-offload
DEFAULT_PACKAGES.bootloader:=

编译openwrt时候禁用ipv6,Disable IPv6 on OpenWRT

IPV6很讨厌,尤其是家用时候,这时是不需要这个功能的。所以想在编译的时候就删除掉这个功能。

首先在Global build settings里面取消选中Enable IPv6 support in packages

然后修改/mnt/lean-190323/package/network/config/firewall里面的makefile文件,删除+IPV6:libip6tc,+IPV6:kmod-nf-conntrack6

修改/mnt/lean-190323/package/network/utils/iptables里面的makefile文件,删除+IPV6:libip6tc,

如果是ledev17.01,还需要在feeds/routing/miniupnpd的makefile里删除相关ipv6的依赖

在/mnt/lede-v17.01/package/network/utils/iptables删除

define Package/libiptc
$(call Package/iptables/Default)
SECTION:=libs
CATEGORY:=Libraries
DEPENDS:=+libip4tc +libxtables
# +libip6tc

另外lede-v17.01中,还要在busybox的network里面取消所有关于IPV6的选项,例如ping6啥的。否则依旧会报错

编译MT7628固件刷机后报错jffs2: Flash size not aligned to erasesize, reducing to 6272KiB

固件编译成功,刷机后开机启动过程中报错,

jffs2: Flash size not aligned to erasesize, reducing to 6272KiB

研究了一下,发现是dts文件中对固件大小定义错误导致的。

因为之前都是照抄其他7628方案的dts修改而来,所以沿用了别人的固件长度定义。

partition@50000 {

compatible = “denx,uimage”;

label = “firmware”;

reg = <0x50000 0x7b0000>;

而0x7b0000的长度换算成十进制就是8060928,然后除以1024等于7872,大于这个数值的固件就会报错。

改成0xfb0000问题解决。

猫猫无线谈谈openwrt固件体积与squashfs压缩率的关系

openwrt编译中,很多时候路由器原生的spi flash闪存大多在8MB-16MB左右,32MB闪存的设备寥寥无几,如果想多添加一些功能进去,就可能会遇到闪存空间装不下的问题。这就需要对固件进行各种精简,去除不需要的功能。但是有时候费了九牛二虎之力,空间还是不够装,怎么办?

这时候,可以考虑通过设置squashfs的block size大小,来获取更高的压缩比,这样做出来的固件体积就更小。

这是因为在生成固件时,会调用mksquashfs_lzma进行压缩,而mksquashfs_lzma有一个叫block_size的参数,block_size越大通常压缩比也越大,同时解压所需内存也越多,不过一般可以不考虑内存的问题,因为现在的路由器只要能刷openwrt,内存基本上32M起步,128M甚至256M也屡见不鲜。所以内存不是问题。

openwrt默认的squashfs的block size是256,可以设置为512,以获取更高的压缩比,从而减小固件体积。