分类目录归档:编译固件

如何上传本地代码到github

github现在更改了规则,随着美国 “Black Lives Matter”运动愈演愈烈,继 IBM 、亚马逊、微软等科技公司之后,GitHub 方面也表示,该公司正在努力以 “main”之类的中性术语替换其服务上的 “master”一词,以避免不必要的奴隶制联想。

第一步:建立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”。

记录一下ubnt SDK的编译

首先需要安装32位linux环境,注意64位系统是不行的。原因也很简单,UBNT释放出SDK的时候,大概是在2011年左右,那个时候32位系统还是主流,64位系统非常少见。所以UBNT的SDK当时是在32位系统上运行的。根本没有考虑过兼容64位系统。

我使用的是ubuntu-14.04 32位版本。

如果使用更新的版本比如16.04会报错,原因不明。避开就好。

安装好后,需要安装下列包。

bash make gcc quilt bison flex autoconf libtool libncurses5-dev subversion wget g++ gawk zlib1g-dev cvs yui-compressor

然后解压缩SDK,运行make即可,如果有遗漏的包,系统会提示你的。

结果,还是不行,会报错。

quilt requires at least version 2.4 of GNU patch. You can download

无奈退回到ubuntu12.04

经过一番安装,终于进入系统。

问题来了,发现系统自带的源早已无法使用了。

我把源更新为阿里云的ubuntu14(参考网址https://www.jianshu.com/p/3fd50eaf9b6c)

deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse

然后安装bash make gcc quilt bison flex autoconf libtool libncurses5-dev subversion wget g++ gawk zlib1g-dev cvs yui-compressor

然后make,目前暂时没发现问题。

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

极路由HC5962编译openwrt如何增大overlay分区空间

手里有一台粉丝送我的HC5962,编译了一个AdGuardHome,结果运行的时候居然无法启动,查看日志发现原来是overlay空间已满,这就很不爽了。

解决办法也很简单,修改HC5962的dts文件,把label=ubi里面的终止地址改下就可以了。

以下是修改后的参数。

partition@340000 {
label = “ubi”;
reg = <0x340000 0x4d00000>;
};

保存后重新编译即可。

移植小米4 NAND闪存全千兆版到openwrt

./base-files/lib/upgrade/platform.sh: mir4|\
./base-files/lib/ramips.sh: name=”mir4″
./base-files/etc/board.d/01_leds:mir4)
./base-files/etc/board.d/02_network: mir4)
./base-files/etc/board.d/02_network: mir4)
./dts/MIR4.dts: compatible = “xiaomi,mir4”, “mediatek,mt7621-soc”;
./image/mt7621.mk:define Device/mir4
./image/mt7621.mk:TARGET_DEVICES += mir4

dts文件。 继续阅读

给一台便携路由器升级内存并适配openwrt

最近因为疫情呆在家,甚是无聊,于是把热风枪电烙铁以及一些工具搬回去了,闲在家里,总得做一些有趣的事情才好,不是吗?

于是翻抽屉找出来一台便携路由器来,说是便携路由器,其实它只有一个网口,只能算是无线AP吧。

这个无线AP的外观是这样的,圆润可人,内置5000mah锂电池,似乎很像某种女性用品。。。

以上是主板的拆机图片,可以看出,CPU是MT7628NN,内存是64MB,闪存好像我之前已经升级成16MB了,查了一下MT7628的芯片手册,发现这个CPU支持DDR1和DDR2内存,最大分别可支持128MB/256MB内存,不过手边好像只有DDR2的128MB内存,那么咱就因陋就简,改成128MB内存吧,DDR1肯定改不了,因为这个机器只有DDR2的焊盘。DDR1是TSOP封装的,就是两边有管脚那种,而DDR2是BGA封装的。两者外观区别蛮大的。

OK,既然已经确定了要改内存,接下来的事情就是拆下原来主板的内存,换上大容量的上去,由于已经刷好了breed,可以自动识别内存容量,这就很方便了。

继续阅读

吐槽一下,果然不能盲目更新openwrt代码啊

朋友送我一个坏的小米路由器4,他也不知道故障是如何产生的,总之就是坏了,丢家里很久了,过年清理杂物终于翻出来,知道我喜欢折腾路由器,就丢给我研究了。

这个路由器很奇葩,路由器背面写着小米路由器4,硬件是MT7621+ MT7612EN+MT7603EN ,内存128MB,闪存128MB NAND,小米官网没有这个型号。唯一一个型号相近的是小米路由器4A千兆版。网上搜了下小米路由器4A的参数,发现小米路由器4A除了闪存换成了16MB的spi闪存,其他硬件和这个没有区别。但是主板布局走线有很大不同。小米路由器4A已经改成电解电容了。而我手里这个仍旧是固态电容。

正好赶上肺炎肆虐,呆在家里没有事情,就拿出来研究下,琢磨了很久发现可能是CPU坏了,于是吭哧吭哧折腾着换了一个MT7621CPU,刷了R3G的老毛子固件,正常。唯一不爽的是,R3G的内存是256MB的,而这个路由器是128MB内存,刷了R3G的毛子固件以后,内存显示256MB,这样很不稳定的,一旦超过物理内存,就会内核崩溃。老毛子固件的机制是直接把内存大小写在固件里,这个和openwrt完全不同,openwrt是读取bootloader提供的内存大小。

然后去下载了padavan的代码,一顿编译,固件是做出来了,但是没有我想要的功能,加上不太熟悉毛子固件编译的修改,弃坑转而研究openwrt。

有人可能会问,R3G在breed下面不是不能刷openwrt吗,实际上这个问题已经解决了,这里先挖个坑,一篇讲不完,咱们下篇再说。

然后1月2号的时候更新了某大雕的源码,编译了X86的固件,正常使用没有问题。于是就操刀开始编译R3G的openwrt固件。结果刷进去之后,LAN口死活无法获取IP地址。ifconfig显示lan口的IP地址是192.168.127.1,而WAN可以获取IP地址,这就很奇葩了。由于从来没有怀疑是源码有bug,一度让我以为是不是换上去的MT7621内部集成的交换机有问题,差点想重新再换一片CPU试试,幸好手里没有多余的CPU芯片而作罢。

不死心,以为小米更改了设计,也许这个R4千兆版和R3G的网口硬件顺序定义不同导致R3G默认的VLAN划分不适合这个机器。结果试了各种组合,故障依旧。最后编译一个新三的固件,刷到新三一看,LAN口同样无法获取IP地址,这才如梦初醒,原来是他喵的源码有问题!

当然我这里不是吐槽某大雕,毕竟这不是他的锅,根源在于openwrt的snapshot本来就是实验版本,bug多少几乎是必然的,只是没想到让我在这里中招了,浪费了许多时间。另外要赞一下大雕,他的开源精神值得所有的openwrt爱好者学习。具体名字这里就不方便说了,懂的自然懂,不懂的也不需要懂,哈哈哈。

现在开始回退到之前比较老的版本重新编译,希望问题能解决。

肺炎肆虐,呆在家里研究padavan编译

研究的源代码来自 https://github.com/hanwckf/rt-n56u

这个源码默认编译出来固件的IP地址是192.168.2.1,这个刚好和我家里的路由器冲突,于是研究下哪里可以更改这个设置,发现在/opt/rt-n56u/trunk/user/shared/defaults.h:#define DEF_LAN_ADDR,更改这里的参数就行了。

经过测试,不行。先留个坑吧,有兴趣再研究这个。