使用 openwrt 路由器和 usb 摄像头进行延时摄影
作用
放在楼顶,拍摄一天 24h 的户外录像、延时摄影。像超级小桀每天的直播录屏 p1 那样。
- 可以远程通过网页实时查看摄像头直播画面
放在楼顶,拍摄一天 24h 的户外录像、延时摄影。像超级小桀每天的直播录屏 p1 那样。
参考:
openwrt 使用 dnsmasq 和 odhcpd。它们功能如下:
Dnsmasq serves as a downstream caching DNS server advertising itself to DHCP clients. This allows better performance and management of DNS functionality on your local network. Every received DNS query not currently in cache is forwarded to the upstream DNS servers.
买了一条三星的 PM9A1 SSD,想要把原本的 linux 迁移到新的固态上。
BIOS system
On a BIOS/GPT system there is no MBR and therefore no place to store the loader. The GPT partition specification allows for an unformatted partition of the BIOS boot partition type (0xEF02). The size of this partition can be as small as 1 mebibyte. The Calamares installer uses a fixed size of 32 mebibyte. On a BIOS/MBR system a part of the bootloader is written to the Master Boot Record for the primary disk.
写这个的原因是,网络上的教程真的太烂了。比如:
各种 remote desktop 软件,可以看到最近更新时间
在 linux 上使用 KVM 安装 windows 虚拟机。然后将显卡直通 (pci passthrough) 进虚拟机,从而可以在 Windows 虚拟机上打游戏。
达到一台机器同时运行两个系统,充分利用硬件。
由于 nodejs 版本较多,直接在宿主机上安装 nodejs 环境不容易管理。因此可以使用 docker 维护一个专门用于 hexo 的环境。
lea //Load Effective Address
test //Logical Compare, Computes the bit-wise logical AND of first operand
//(source 1 operand) and the second operand (source 2 operand) and
//sets the SF, ZF, and PF status flags according to the result. The result is then discarded.
incl //Adds 1 to the destination operand, while preserving the state of the CF flag.
//The destination operand can be a register or a memory location. This instruction
//allows a loop counter to be updated without disturbing the CF flag. (Use a ADD
//instruction with an immediate operand of 1 to perform an increment operation that does updates the CF flag.)
这里说的网络自由,是指通过网络工具极大地便利生活的某些方面。这篇文章是我自己对折腾路由器刷机、openwrt、ipv6 的总结,并尽量说明了各种玩法的实际用途。其中有些操作确实给我带来了极大便利,比如其中使用 iSCSI 通过网络挂载其它设备的硬盘,这充分解放了我只有 500GB 的轻薄本。在上面安装游戏后,又可以实现在不同设备上无缝玩同一个游戏的体验。
OpenWRT/LEDE 源使用帮助 — USTC Mirror Help 文档
常用软件
# shell
zsh
# better ternminal dev
vim-full tmux htop
# downlaod
curl wget
# networking
tcpdump mtr-json ss ip-full iputils-arping ncat iperf3 ethtool-full
# VPN
luci-app-wireguard
# system
第一次尝试自己刷路由器,网上搜索了很多资料,忙活了 2 天,期间差点以为将路由器刷成砖了。
红米 AC2100 这款路由器确实算是很火,网上有很多资料。刚开始在恩山论坛查找各种资料,但是觉得恩山论坛的帖子有点乱,对新手不太友好。看精华帖时帖子之间的联系性不大,要是有一个板块进行总结性的介绍就好了。
iSCSI is an IP-based standard for transferring data that supports host access by carrying SCSI commands over IP networks. The iSCSI standard is defined by RFC 3720. (iSCSI overview - IBM Documentation)
使用 iSCSI 可以将远程服务器上的存储设备映射为本地的一个块设备
设备 A 位于路由器后,设备 B 想要远程连接 A。以下是设备 B 分别使用 ipv4 和 ipv6 访问 A 时不同情况的处理方式。
使用整数位运算计算 div10,得到舍入到整数的精确值。得到了一个 magic number
unsigned int div10(unsigned short x){
//return x/10
unsigned int t = x<<16;
t = (t>>4) + (t>>5);
t = t + (t>>4) + (t>>8) + (t>>12) + (t>>16);
t += 6554; //should in [409.6, 6553.6]
unsigned int r;
r = t>>16;
return r;
}
起因是想在 openwrt 上装上openclash插件,但路由器空间不够了(路由器为 mi4a 千兆版,有一个 16M 的 NOR flash。通过在编译时设置块大小为 512KB,成功安装了zerotier
,wireguard
,python
等软件,编译的镜像大小为 13,894,754 B),因此参考官方教程:[OpenWrt Wiki] Saving firmware space and RAM,在编译时关闭了一些内核相关的选项,并将块大小设置为了 1MB。最后成功生成镜像,大小为 14,943,330 B。
可没想到在更新系统后路由器无法正确启动,于是需要先使用小米官方工具恢复,然后再重刷 openwrt 系统。但考虑到之后如果要多次尝试的话,每次失败都需要先恢复官方系统然后重新刷比较麻烦。于是这一次重装,我选择了刷breed引导程序。这样,下次刷失败后便可以通过 breed 直接重刷固件。
然而,不知是否是因为操作过程中的一个失误,我使用 breed 刷 openwrt 会失败,路由器会无限重启。并且在刷回官方固件后,甚至无法上网。最后,我从原厂固件直接刷回了 openwrt,但是却发现 openwrt 中的5GHz 的无线最大发射功率 (Maximum transmit power) 居然变为了 1mW(3dBm),这导致路由器的 5G 信号非常弱,即使是 1m 的距离,信号也很弱。于是我各种尝试去修复这个问题,以下是记录的过程。