虽然改变了微软账户的显示语言地区等等设置,但微软发来的验证码还是变更前的语言。
如,账户语言全部设为日本:


此时收到的验证码以及推广邮件等依然是中文:

搜索可以看到微软社区中有无数类似提问,但没有一个得到解决的。

经过尝试发现,需要删除安全设置中的验证邮箱,再重新添加,才能刷新邮件通知的语言设置。
登录 微软账户安全设置页面
展开收到不同语言的验证码接受邮箱,删除之。如果提示是主邮箱不能删除,则先手动添加一个不同的邮箱,再删除原来的。

此时原邮箱会收到原语言的提示邮件

重新添加回刚才删掉的邮箱,按照提示输入收到的验证码。这次收到的验证码就已经是新的语言了,更新完成。

如果添加后删除英语美国键盘布局,可能会出现此现象。
此时即使在键盘快捷键中删除英语美国的快捷键,或者将此键盘布局重新添加后再修改快捷键,也会反复发作。

修改注册表 HKEY_CURRENT_USER\Control Panel\Input Method\Hot Keys\ 将所有00开头的8位数字 key 全部删除,然后重启,问题可能解决。
此时可以重新设置其他快捷键。
]]>0.elf 重命名为 FIRMWARE_660R.bin,复制到卡根目录。下载 fang-hacks 的 IMG 镜像,使用 Win32DiskImager 或 balenaEtcher 等工具写入 SD 卡。卡不必过大,1G 即可。
写入完成后访问第一个 FAT32 分区(可能需要重新拔插读卡器),修改bootstrap/fang_hacks.cfg
1 | DISABLE_CLOUD=1 |
snx_autorun.sh 并覆盖之.wifipasswd 和 .wifissid 写入网络信息snx_autorun.sh ,并可删除设置脚本的其他文件http://device-ip/cgi-bin/status

root 和密码 ismart12 SSH 连接 22 端口出于对中国网络服务的不信任,在路由器上切断摄像头的公网访问。此时时间不能同步,需要在内网架设一个 NTP 时间服务器,并修改部分脚本参数。
vi /media/mmcblk0p2/data/etc/scripts/02-ntpd 修改第三行的 time.google.com 为内网服务器地址vi /media/mmcblk0p1/bootstrap/www/action 修改 155 行的地址
千万不要手贱点击 Expend data partition 后的 Yes ,根据 Release Note,此处有一个已知问题,重启后将耗费非常长的时间调整分区,此时可能亮黄灯并且没有网络连接,完成后可能也没有任何提示,注意不要中途断电。我等待了一小时后断电,插入电脑发现分区调整已经完成,但插回摄像头黄灯常亮无法启动,被迫从第一步恢复固件开始重试。因此不推荐进行此操作。
RTSP 地址为 rtsp://device-ip/unicast, 可以接入 ZoneMinder 或 Shinobi 等监视服务器,也可使用 MPC 和 PotPlayer 等播放器观看直播
RTSP 进程不太稳定,过一段时间之后查看经常显示红色 NOK,需要手动禁用后启用再重启服务才能恢复,因此需要一个守护进程自动重启。
参考这个 issue 和其中提到的 bobby 的这篇文章 (文中还提到了翻转影像等,可以参考)
在/media/mmcblk0p2/data/usr/bin 创建 rtsp-check.sh
1 |
|
添加执行权限 chmod +x rtsp-check.sh
在 /media/mmcblk0p2/data/etc/scripts 创建服务文件 99-rtsp-check
1 |
|
之后在 Manage Scripts 页面即可看到新添加的 99-rtsp-check 服务,启动之即可监视并自动重启挂掉的 RSTP 服务(刚启动时所有服务的PID基本临近,如果发现 RTSP 的 PID 显著变大,则说明已经被重启过)

下载 snx_isp_ctl (镜像),复制到 /media/mmcblk0p2/data/usr/bin,加上执行权限
编辑 /media/mmcblk0p2/data/etc/scripts/20-rtsp-server 脚本,在 start 函数倒数第二行添加:
1 | snx_isp_ctl --osdset-en 1 --osdset-ts 1 --osdset-template 1234567890./-:Date --osdset-gain 2 --osdset-bgtransp 0x1 --osdset-bgcolor 0x000000 --osdset-position 0,-31 |
其中最后的 --osdset-position 0,-31 用于调节 OSD 显示在左上角,去除开头的空行。如果显示出现问题可以调大 -31 的值。
在网页上修改时区,格式参照 ICANN 的页面,日本时区为 JST-9 ,中国时区为 CST-8 。
此时系统时间正确,但 OSD 使用硬件时间,仍然是 UTC 时区,此处参考这个 issue,修改/media/mmcblk0p2/data/etc/scripts/02-ntpd,在 start 函数插入一行 ntpd -q -n $NTPD_OPTS && hwclock -t,变为如下代码:
1 | start() |
重启摄像头,OSD 时间与系统时间均正确显示

在虚拟交换机管理器中新建交换机,连接类型选择外部,并选择要桥接的物理网卡。

给虚拟机添加网卡,并连接到这个交换机。在高级设置中可以修改桥接后网卡的 MAC 地址等。

进入虚拟机设置 IP 地址即可桥接之,如 Ubuntu 20.02 配置为 DHCP 时:
1 | sudo vim /etc/netplan/00-installer-config.yaml |
1 | network: |
在虚拟交换器管理器添加交换机,类型选择内部,注意不要直接使用自带的 Default Switch,会无法控制固定 IP。
此时在宿主机 Windows 中会出现 vEthernet 开头的,与新交换机连接的虚拟网卡。右键属性,TCP/IPv4,在 IP 地址和掩码中指定一个宿主机使用的 IP 地址和网段。

给虚拟机添加网卡,并连接到这个交换机。在虚拟机中手动设置此网卡 IP 为同一网段,注意网关不要设置,否则会与原有公网网关冲突,跃点数默认为0时会导致断网。
Ubuntu 20.02 的配置:
1 | network: |
此时路由表中可以看到此网段:

在浏览器 Network 中查找 m3u8

如果是上图所示嵌套,逐级打开对应 m3u8 文件,直到出现 ts 文件列表和密钥

如果要先下载再合并,则观察 ts 文件 url 规律,使用 curl 批量下载文件
1 | curl -O https://what-ever-[1-999].ts |
将 m3u8 文件下载到同一目录,并替换删除其中 url 前缀
按照 URI 参数值下载 m3u8 文件中的密钥 key 文件,应为16字节长度。同时改写 m3u8 文件中 key 路径使其指向此文件

使用 ffmpeg 批量解密合并 ts 文件即可获得 mp4 视频
1 | ffmpeg -loglevel error -allowed_extensions ALL -i prog-index.m3u8 -c copy "output.mkv" |
如果要直接下载,则不需要下载 ts 文件,直接用 ffmpeg 解密 m3u8 文件
1 | ffmpeg -loglevel error -protocol_whitelist file,http,https,tcp,tls,crypto -allowed_extensions ALL -i prog-index.m3u8 -c copy "output.mkv" |
1 | Windows Registry Editor Version 5.00 |
启动 Sandbox,主机的网络管理中会出现 vEthernet (Default Switch)
按住 Ctrl 同时选择上述连接与当前联网的连接,右键选择桥接。

如果报错提示预想外的错误,直接确定,可以看到两个连接中有一个已经加入桥接,另一个没有。如果是图中这样只有 vEthernet 在桥接中,则删除桥接,重复上一步重新添加,否则会导致主机断网。直到不报错,或者只有当前外部连接加入桥接时为止。

在没有加入桥接的 vEthernet 连接上右键,选择加入桥接,即可看到两个连接均为桥接。

此时在沙箱中查看 IP 应该已经处于同一网段。如果不成功则关闭沙箱重开,从上一步继续。
autorun.inf 修改磁盘图标也无法生效,且单击弹出磁盘时,所有的设备名均变为 Device。
原因是 Windows 会联网获取设备驱动与图标,因此服务器端问题会影响本机驱动。驱动服务器问题后来已经修复,但本机已经下载的 USB 驱动还在,因此问题会残留。解决方案是删除已缓存的驱动程序。
打开 C:\ProgramData\Microsoft\Windows\DeviceMetadataCache\dmrccache\en-us 如果目录下有文件,寻找在其中 DeviceInformation 目录中含有 ico2001.ico 的机柜图标的目录,并删除该目录。
重启
如果没有恢复,或者上述目录中没有文件,则打开控制面板,设备和打印机,删除最下面的无法识别的 Device

重新插拔设备,应该可以恢复。此时查看上述目录,应该已经没有文件存在。弹出磁盘的菜单也应恢复显示设备名。

参考/图片:https://noushibou.hatenadiary.jp/entry/2019/11/10/101358
]]>1 | Call to a member function getSize() on bool |
导致用户列表无法显示,且新用户无法登录。
原因是用户配额和 quota_include_external_storage 设置之间有冲突。
绕过方案为:
修改/var/www/html/config/config.php:
1 | ‘quota_include_external_storage’ => false, |
此时用户列表可以显示,删除新建的出错用户
重新添加新用户,配额容量无限制
以新用户身份登陆一次,确认文件正常
将 quota_include_external_storage 改回去
根据需求限制新用户配额
此时新用户可正常使用。
当共享大量文件给新用户时,由于被共享文件也计入用户配额使用,因此可能提示配额超限。
此外如果共享文件的 owner 曾出现误报存储已满问题时,即使通过修改 quota_include_external_storage 解决,被共享用户在进入共享文件目录时也仍会提示其他用户存储满。暂时无法解决,无实际影响可忽略。

问题原因在于统计文件大小时会将外部存储和被共享文件全部计入,而统计总容量时不计算外部存储和 mount 的其他位置。
修改/var/www/html/config/config.php,添加参数:
1 | ‘quota_include_external_storage’ => true, |
并且在用户配置中,将配额改为“无限”以外的具体数值:

设置后当前用户不再提示存储满,但如果此用户分享文件给其他用户,则被分享用户访问时仍会提醒文件 owner 的存储满。
此外,即使 UI 上不提示,但 Nextcloud 内部的判定依然是存储满,因此 File Versioning 会因为空间不足而不工作,目前没有找到解决方法。因此不推荐层叠 mount 方式存储。
]]>在命令行使用 php occ files:scan --all 手动扫描。在 docker 中执行需要用:
1 | su -s /bin/bash -c "php /var/www/html/occ files:scan --all" -g users www-data |
其中 -g 后的参数依次为分组名和用户名。
修改/var/www/html/config/config.php,添加参数:
1 | 'filesystem_check_changes' => true, |
实现自动扫描
将需要直接读写的目录分离,并使用外部存储功能挂载。缺点是外部存储由插件实现,时常有 bug 出现。
参考:
https://help.nextcloud.com/t/folders-and-filesystem-check-changes/8203
https://it.ismy.fun/2018/11/12/nextcloud-auto-files-scan/
https://unix.stackexchange.com/questions/372850/how-to-run-command-as-different-user
]]>/root ,而新建用户的 home 位于 /share/homes/USERNAME。此目录缺乏各种 rc 文件。导致安装 opkg 等第三方工具时无法自动设置 path。解决方案为使用普通用户登录 SSH 并定位到 home,然后把 root 目录里的各种配置文件软链接过来。
1 | ln -s /root/.bash_logout .bash_logout |
修改后普通用户的 prompt 也会变成 # ,非常迷惑,原因是 PS1 变量在 .profile 中被修改,sudo vim .profile 编辑该文件,注释掉第一行的修改语句即可。
1 | # export PS1='[\w] # ' |
威联通的系统似乎没有考虑过建立普通用户日常使用的问题,默认思维模式都是使用内置 admin 账户完成,软件质量比较一般。
]]>使用 –volumes-from 创建一个加载 dbdata 容器卷的容器,并从本地主机挂载当前到容器的 /backup 目录:
1 | sudo docker run --volumes-from aaa -v $(pwd):/backup alpine tar zcvf /backup/aaa.tar.gz /<path> |
volumes-from 创建的容器其挂载的所有数据卷路径均与原容器相同,因此 <path> 改为原容器数据卷的挂载位置即可。
容器启动后,使用了 tar 命令来将 dbdata 卷备份为本地的 /backup/backup.tar。 如果要恢复数据到一个容器,首先创建一个带有数据卷的目标容器。(或者先创建空数据卷)
1 | sudo docker run -v volume_name:/volume_mount_path --name target alpine /bin/ash |
然后创建另一个容器,挂载 dbdata2 的容器,并使用 untar 解压备份文件到挂载的容器卷中。
1 | sudo docker run --volumes-from target -v $(pwd):/backup alpine tar zxvf /backup/aaa.tar.gz -C / |
其中 -C / 表示解压路径从根目录开始,从而确保路径和备份时完全对应。
user\data\gantry5\themes\g5_helium\scss\custom.scss
1 | // fix header subtitle overflow in tablet view |
导航栏空白太大,将 Navigation 的部分设置 nomarginall 和 nopaddingall 后引起移动端错位,在此修正。

user\data\gantry5\themes\g5_helium\scss\custom.scss
1 | // fix menu icon position on mobile view |
控制国家码的部分在 CFE 不能修改,且 nvram 修改后重启系统/服务即失效。
因此加到系统启动和服务启动的脚本即可。
1 | touch /jffs/scripts/init-start |
1 |
|
并在 web 设置中 Administration -> System 启用用户脚本。
其中 AA 为亚洲区,信号功率25,频段不全。需要其他频段时可设为 JP 或 TW。
然后在 Web 界面中重启路由器。
改好后语言菜单会解锁全部语言:

尝试 Odin 刷入港版系统,不管是四件套还是一体包,单刷还是全部,均会验证失败。查阅得知该型号虽然港版和中国(内地,下略)版均标示型号为SM-G9200,但港版机型代号为zerofltezh,中国版为zerofltezc,基带不同,港版不支持中国电信网络,因此无法混刷。
故底包只能采用中国版官方固件。在此基础上刷入 GApps 使手机可用。
使用 SamFirm 下载最新版CHC区域固件四件套:

使用最新版 Odin 刷入手机,重启,确认正常动作。
在 其网站主页 输入型号G9200后,选择 zerofltezc 版本:

点击最新固件,在其下载页面单击 Configure:

在配置选项中,Installation type 选择 Systemless Image,Advanced Encryption Options 中 dm-verify 选择 Remove ,其他保持默认,点击 Generate 生成刷机镜像,可能需要排队,且下载速度较慢。
下载后使用 Odin 在 AP 中刷入手机,重启,确认正常动作。
SuperSU 作者已经弃坑不再更新,当前使用 Magisk 管理SU权限。但我们目前没有安装 custom recovery,故不使用 zip 包直接安装,而采用 patch 系统镜像并用 Odin 刷入的方式安装。
Magisk Manager 并安装。7-zip 打开 rom 四件套中的 AP 文件,解压其中 boot.img 并复制到手机中。Magisk Manager ,点击安装 Magisk,选择 Patch 镜像,并继续在文件浏览中选择刚才提取的 boot.img。(注:根据官方文档,可以选择 Patch boot 或者 recovery,但测试 recovery 不成功,故此处采用 boot)boot.img,并使用 7-zip 等压缩软件打包为 tar 格式。Magisk Manager ,选择同意下载安装,再次重启后确认正常动作。TWRP 没有正式提供 G9200 版本的支持。多年前 Xiao1u 曾提供过修改过的兼容版本 G9200-PC1-TWRP-3.0-PC1-0324.tar ,搜索即可获得,此版本对 7.0 系统的兼容不完美,有可能会导致 bootloop。参考 J Tech board 的解决方案,在确认 dm-verify 已关闭后,使用 Odin 刷入该文件。刷入时取消 Odin 中 Auto Reboot 的勾选。刷完后使用 Vol+ Home Pow 三键进入 recovery,什么都不做直接选择重启到系统,询问是否阻止系统还原 Recovery 时选择忽略。确认依然能正常进入系统。
如果不删除,后面刷入 GApps 可能导致系统空间不足。即使删除后仍要使用,可以事后重新安装到用户空间。
安装 System App Remover 查看想要移除的内置应用,长按可以获得该应用的路径。使用 Solid Explorer 定位并删除文件。
在 OpenGapps 的主页获得 zip 刷机包,传输至手机,重启至 TWRP 后选择刷入。注意此处如果直接刷入 7.0 系统对应的 nano 或者 pico 包,会导致系统 WebView 被删除,从而导致 Google 账户无法登录等问题,无法使用。
解决方案有两个思路,一是安装新的 Chrome WebView 替代被删除的原生 WebView,二是避免原生 WebView 被删除。经测试,即使安装Chrome 也仍然不能恢复该组件正常使用,可能三星对允许使用的 WebView 做了限制,或有其他兼容性问题。避免 WebView 被删除则可以通过添加配置文件 ,或者添加 package-overlay 重新编译 等方法。这里使用相对比较简单的修改安装脚本方式完成。
下载 pico 版本 OpenGApps zip 包后,解压提取 install.sh 文件,搜索:
1 | List of GApps files that should NOT be automatically removed as they are also included in (many) ROMs removal_bypass_list |
并在其后的空引号内加入 WebViewGoogle,保存退出,将修改后的文件压入 zip 包,重启手机进入 TWRP 刷入即可。
刷好后清空缓存,进入系统开发者模式,查看 “实装的 WebView” 选项不为空,即可。推荐重启手机,双清后从向导开始重新初始化系统,避免谷歌系列服务出现授权问题。
避免购买在中国大陆境内售卖的任何具有中国定制 Rom 的电子产品(包括无线耳机等具有中国区定制 Firmware 的产品),并 7x24 连接全球互联网,和全球大多数国家和地区的用户保持类似的软件使用习惯,可以避免绝大多数的烦恼。
]]>如果虚拟磁盘已经挂载,需要先卸载。然后运行 diskpart,执行:
1 | select vdisk file="<Path to VHDX>" |
参考:
]]>Tested on Ubuntu 18.04 LTS
创建系统服务,每次开机时使用 ip link set 修改 mac 地址。
1 | sudo vim /etc/systemd/system/[email protected] |
1 | [Unit] |
1 | sudo systemctl enable [email protected] |
已知问题:有时涉及网络的重启(推测如 docker)会导致失效。此时需要重启服务。
1 | sudo service macspoof@eno2 restart |
使用 cat /proc/mdstat 可以查看所有 raid 卷。
1 | Personalities : |
注意到 md9 md13 md322 md256 均是横跨了机械硬盘的 raid 卷。搜索后得知 md9 和 md13 是系统自动创建的跨所有硬盘的 raid1 数据卷,存储系统配置和目录等。md322 和 md256 是系统 swap 分区。
使用 blkdevMonitor.sh 脚本查看硬盘读写,可以看到大量 md9 相关读取。因此首先处理 md9 和 md13。
使用 parted /dev/sdb print 命令查看各硬盘,通过容量判断 sdb 是 SSD,sda 和 sdc 是两块机械硬盘。因此将 SSD 以外的硬盘从阵列中踢出。
1 |
|
使用 mdadm -D /dev/md9 验证移除是否成功
然后使用 hdparm -y /dev/sda 立即休眠硬盘,并使用 hdparm -C /dev/sda查看硬盘状态,active/idle 或者 standby
但断开连接时万一系统盘损坏,则系统数据会丢失,因此每天同步一次。使用下列脚本恢复连接。
1 |
|
保存上述两个脚本后(记得添加 x 权限),使用 crontab 每天运行一次,加回去15分钟后断开连接,应足够其完成同步。
1 | sudo echo 15 0 \* \* \* /share/homes/Tojo/rebuild_internal_raid.sh >> /etc/config/crontab |
并修改启动脚本使其自动生效。
使用 cat /proc/swaps 查看系统 swap 分区,发现很诡异地两个 swap 都建立在机械硬盘上。
但目前看起来不是很影响休眠,就先不管他了。
参考:
Advanced guide to how I completely silenced my TS-453A - QNAP NAS Community Forum
md clarification please_ - QNAP NAS Community Forum
Find out which process prevents the hard drives from spindown - QNAPedia
]]>1 | sudo vi /etc/config/crontab |
记得把要运行的命令属性 +x
参考:
]]>