
树莓派 3B 折腾笔记:串口拨号上网
今年是 9102 年了吗?是的。为什么要这样做我手上有一块树莓派 3B 和一块华硕的 Tinker Board。有的时候,因为 Wi-Fi 爆炸 / 配置出错 /pacman -Syu 滚挂系统之类的原因会导致其中一块板子断网。通过连接两块板子的串口,再在上面建立拨号上网连接,就可以在一块板子 Wi-Fi 或有线网中断时,从另一块板子上 SSH 上去解决问题。(另外买树莓派不折腾 GPIO 的话,还不如买个 x86 的凌动小主机之类的玩)怎么操作硬件方面,将两端的串口连接起来。树莓派的串口是第 8 根针发送,第 10 根针接收,可以在 pinout.xyz 网站查到。Tinker Board 的串口也是 8 发送 10 接收。用两根杜邦线将树莓派的针 8 连接到 Tinker Board 的针 10,将树莓派的针 10 连接到 Tinker Board 的针 8。如果两块板子使用不同的电源供电(比如我),需要第三根杜邦线将两块板的 GND 连起来。原因是两侧的板子都将自己 GND 针上的电压作为标准电压,读取的是发送 / 接收针相对于 GND 的电压差,...

在 Traceroute 里膜 拜大佬
2020-10-11 更新已经有了更好的配置方法,不需要启动一大堆 Docker 容器了。请参阅《优雅地在 Traceroute 里膜拜大佬》。简介Traceroute 是常用的检查网络状况的工具之一,会显示你操作的电脑到指定服务器的网络路径上经过的每一个路由器的 IP 地址,类似于这样:可以看到后两跳的 IP 显示出了对应的域名,这个域名就是 IP 的反向解析记录。反向解析记录在 DNS 服务器中以类似 4.3.2.1.in-addr.arpa 域名的 PTR 记录形式存在。更多的信息可以参考《在 DN42 中设置 IP 反向解析》这篇文章。然而,PTR 记录并不一定要设置成实际的域名,可以设置成任意的字符串,只要「和域名长得像」即可。利用这一点,我们可以在一段 Traceroute 中的每一跳上写一句话,整段就组成了完整的文章,类似下图:本文均在 DN42 网络中完成,如果你已经加入了 DN42 网络,可以 ping、traceroute 通文中的 IP。但本文并不局限于 DN42,如果你有可以自己控制反向解析的公网或内网 IP 段,...
x86 下制作 ARM Docker 镜像,Docker Hub、Travis 自动构建
一般情况下,Docker 的镜像都是在一个已有的镜像内,一步步运行给定的命令,从而生成一个新的镜像。这样的步骤在大多数人使用的 x86 架构计算机上都不是问题,由于架构互相兼容,一台计算机上生成的镜像往往可以被直接复制到其它计算机上运行,除非镜像中的程序使用了 AVX 等较新的指令集。但是,还有一批基于 ARM 架构的主机也可以运行 Docker,并运行专门编译的 ARM 架构的镜像。这些主机包括树莓派系列,和其它类似树莓派的主机,例如 Cubieboard,Orange Pi,Asus Tinker Board 等等。另外,Scaleway 等主机商也提供基于 ARM 架构的独立服务器。由于 ARM 架构的系统无法在 x86 架构计算机上运行,因此无法在 x86 计算机上直接通过 Dockerfile 生成 ARM 架构的镜像,一般采用的方法是直接找一台 ARM 主机来 docker build。但是我在为我的树莓派制作 nginx 的 Docker 镜像时发现这并不是一个很好的方法。由于树莓派的内存只有 1GB,...
Docker 镜像的精简
自从放弃 OpenVZ 架构的 VPS 并购买 KVM 架构的 VPS 以来,我一直使用 Docker 部署 nginx、MariaDB、PHP 等网站需要的程序,不仅方便平时单个服务的重启和配置管理(把配置目录全部用 volume 映射到一起管理),而且方便了服务的升级。例如,我现在博客所在的 VPS 因为配置不高,内存占用最近一直在 80% 左右。我要更新 nginx 或者向 nginx 里加模块时,如果直接在这台 VPS 上编译 nginx,不仅速度慢,而且有可能因为内存不足而把网站也崩掉。使用 Docker 后,我就可以在其它的空闲资源较多的 VPS 或者在我自己的电脑上构建镜像,push 到 Docker Hub,再在 VPS 上 pull 下来运行。不过,一直以来,我的 nginx 镜像大小都在 200 MB 左右(Docker Hub 显示大小,不包含基础镜像大小,比一般 docker image 显示的要小),明显大于它应该有的容量,不过因为 VPS 的硬盘暂时足够,而且前段时间我也没什么时间,我就没有管这个问题。现在有了空,...
RoboMaster 开发踩坑日记(2018-05-28 更新)
学校组建了一支 RoboMaster 队伍,准备参加今年的比赛。因为是新校区新学生,因此我们完全没有之前的参考资料,只能自己一个个踩坑。以下是我们在软件开发中遇到的一些坑。硬件版本:RoboMaster 官方开发板(信仰板)芯片型号:STM32F427IIHx软件系统:ChibiOS 18.2.0信仰板 HSE 时钟频率为 12MHz 而非常见的 8MHz最坑的是信仰板的说明书和硬件原理图上完全没有提到这事。这个问题导致我们用 STM32CubeMX 等软件算出的时钟频率远高于额定频率,并导致了如下后果:莫名其妙的频率设置失败(设置了在合理范围内的频率,但是板子不响应了,只能短接某个电阻 Reset)USART 时序错误(明明两端波特率一样,但是收发的数据就是乱码,遥控器无法使用)CAN 数据无法应答(明明板子和电机电调都在发数据,示波器能解码出来,但是双方就是不 ACK)以上问题在重新调整时钟频率后全部解决。while(true); 发送 CAN 报文必须加延时这是一个小问题。...
NAT64 服务器搭建
NAT64 是 IPv4 向 IPv6 过渡时出现的一项技术。它通过将 IPv4 的地址映射到一个 IPv6 地址段上,来让仅支持 IPv6 的设备同样能够访问 IPv4 网络。但由于仅支持 IPv6 的设备并不多,目前它在国内的应用主要是两个方面:对于 IPv4 收费 / 限速 / 限流量而 IPv6 免费 / 不限速 / 不限流量的教育网用户,可以使用公共 NAT64 服务来省钱。对于 iOS 应用开发者,用于搭建测试环境以通过 App Store 的审核。我们也可以在自己的同时拥有 IPv4 和 IPv6 连接的路由器上安装相应的软件,来搭建 NAT64 服务器。常用的软件是 Tayga 和 Jool。其中 Tayga 年久失修,上次更新已经是 2011 年的事了,而 Jool 一直在活跃地更新,因此本文采用 Jool 来搭建。安装 Jool第一步是安装 Jool。Arch Linux 的 AUR 上有 Jool,而 Jool 在 Debian 和 Ubuntu 的官方源中都找不到,因此在这两个系统下需要手动编译安装。对于 Arch Linux,直接 yaourt -S jool-dkms-git 即可。对于树莓派,...
树莓派 3B 折腾笔记:硬件看门狗
在计算机中,「看门狗」指的是一种硬件计时器,用于在计算机失去响应(死机)的时候重启计算机。计算机的系统上要运行一个程序不断和看门狗硬件通信。当通信中断经过一段预设的时间后,看门狗就会通过发送 RESET 信号或者切断再接通电源等方式强制重启,保证计算机上运行的服务不长时间中断。在折腾树莓派的过程中,我也曾好几次让树莓派失去响应,结果不得不人工开关电源来重启。通过开启树莓派上的硬件看门狗功能,就可以减少这种情况的出现。加载驱动由于 Linux 「万物皆文件」的特点,可以通过 ls 命令直接查看看门狗驱动的状态:ls /dev/watchdog如果有这个文件,可以直接跳到下一部分。如果没有,就要根据树莓派版本加载驱动:树莓派 1 代的驱动名为:bcm2708_wdog 树莓派 2 代的驱动名为:bcm2709_wdog 树莓派 3 代的驱动名为:bcm2835_wdt使用 modprobe -v [驱动名] 加载驱动,然后再 ls /dev/watchdog 查看情况。如果驱动加载成功,...
解决树莓派 HW CSum Failure 问题
今天登录上树莓派,习惯性 df 查看磁盘空间,发现树莓派 TF 卡上的空间所剩无几。最开始我以为我设置错误,把要挂机下载的文件下载到了 TF 卡里而不是移动硬盘里。结果排查下来,/var/log 下的日志文件居然占据了整整 18G 的空间。查看了一下日志,基本上都是类似如下的报错:Jan 25 22:51:15 lantian-rpi3 kernel: [ 22.143274] eth0: hw csum failureJan 25 22:51:15 lantian-rpi3 kernel: [ 22.143281] CPU: 0 PID: 1075 Comm: vncagent Not tainted 4.9.77-v7+ #1081Jan 25 22:51:15 lantian-rpi3 kernel: [ 22.143283] Hardware name: BCM2835Jan 25 22:51:15 lantian-rpi3 kernel: [ 22.143294] [<8010fa48>] (unwind_backtrace) from [<8010c058>] (show_stack+0x20/0x24)Jan 25 22:51:15 lantian-rpi3 kernel: [ 22.143303] [<8010c058>] (show_stack) from [<804578e4>] (dump_stack+0xd4/0x118)Jan 25 22:51:...

让 ASF 帮你在 Steam 中挂「贪玩蓝月」
最近贪玩蓝月因为其洗脑的广告而流行了起来,也出现了许多通过在 Steam 中添加自定义程序后重命名为「贪玩蓝月」,达到显示自己在玩贪玩蓝月效果的教程。不过这么做需要把那个自定义程序一直开着,有些时候还是比较麻烦的。ASF(ArchiSteamFarm)则是一个模拟用户玩游戏,从而刷 Steam 交易卡掉落的程序。因为它能模拟用户玩游戏,自然也能模拟玩「贪玩蓝月」,在自己电脑上什么都不用设置的情况下达到如图效果:实现这个效果,在你运行 ASF 的主机上修改 ASF 的配置即可。打开 config/[BOT 名称].json,找到下面三行并修改成对应的参数:"CustomGamePlayedWhileFarming": "贪玩蓝月","CustomGamePlayedWhileIdle": "贪玩蓝月","FarmOffline": false,第一项是在模拟玩 Steam 游戏时显示的名称,第二项是不模拟时(也就是交易卡挂完后)显示的名称。第三项是「离线挂卡」功能,就是模拟玩游戏时不在好友列表中显示上线,这项必须关闭,...
树莓派 3B 折腾笔记:硬件随机数发生器
随机数在计算机中有着十分重要的应用,例如常用的 SSL 加密算法就非常依赖随机数。如果随机数不够随机,就很有可能被攻击者猜到,相应的加密验证体系也就土崩瓦解。但是由于计算机说零是零、说一是一的特点,它没有办法产生真正的随机数,只能通过复杂的算法去尽可能模拟随机数。在 Linux 系统上,由于 Linux 「万物皆文件」的特点,可以从 /dev/random 读取到由 Linux 内核综合大量数据生成的随机数。但是因为 Linux 基于「安全第一」的原则综合了大量数据,随机数的产生速度很慢。用 rng-tools 软件包中的 rngtest 工具就可以看到:lantian@lantian-rpi3:~ $ cat /dev/random | rngtest -c 1000rngtest 2-unofficial-mt.14Copyright (c) 2004 by Henrique de Moraes HolschuhThis is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.rngtest:...