分类 博客文章 下的文章

为路由器刷入第三方固件——以ASUS ACRH17刷OpenWrt为例简述其思路

前言

最近翻出一个之前不知放在哪的ASUS ACRH17路由器,而且K2P、新三之类的路由器已经用了很多年了,是时候换一换了。同时感觉华硕原厂的固件功能太少,于是有了刷OpenWrt系统的想法。很多人都知道给电脑重装系统、给手机刷机,但不一定听说过给路由器刷机。那么给路由器刷第三方固件这项活动是因何而起的呢?

当Linksys在2002年发布了使用Linux作为系统内核设计的WRT54G路由器,就为后来第三方固件的流行埋下了种子。转眼2003年3月Cisco收购Linksys。同年6月,Linux内核开发组听说WRT54G固件使用了包含GPL开源协议的Linux代码,遂要求Linksys开源相关部分代码,为此FSF还因此起诉Cisco,最终7月Cisco迫于外界压力开源了WRT54G的固件。至此,极客行动了起来,各种定制的固件和给路由器刷机的行为就流行了起来。后来大浪淘沙,其中OpenWrt、DD-WRT、Padavan、Asuswrt-Merlin(梅林)、Tomato、PandoraBox等固件成为了主流第三方固件项目。

注意:本文主要记录路由器刷入第三方固件的思路,以备日后刷其他型号路由器时参考,而刷固件的操作是因机而异的,随着相关项目的更新,某些操作可能会有变化。为路由器刷入第三方的固件的操作是个需要细心的活。您可能因为误操作、意外等情况损坏设备,所以务必小心操作!笔者不承担您的任何相关风险。

软件和硬件的准备:

  • 连接shell的终端软件:用于通过SSH协议或串行口连接到路由器shell,可以使用PuTTY或其他熟悉的工具。
  • SCP客户端或一个U盘:备份出厂数据或固件时,用于通过网络传输文件到本地,使用scp(Linux),WinSCP (Windows)或其他自己熟悉的软件。或存储到U盘中(需要路由器有USB接口)。
  • 网线、USB TTL转换器:通过网线连接以支持SSH登录、SCP传输文件等。USB TTL线可用于连接路由器主板的TTL调试接口,以访问Shell。

步骤

  1. 准备固件映像
  2. 建立到路由器的shell连接
  3. 备份原厂数据
  4. 刷入新固件

准备固件映像

刷机自然是要先把新固件准备好,这一般来源于论坛或Q群,比如恩山、OP大群、OpenWrt官方Wiki;也可以自己从GitHub拉取项目代码编译,这需要Linux系统并且有些难度。

根据不同机型,我们可能需要准备:

  • 最终使用的系统固件(一般为后缀包含squashfs-sysupgrade的固件)
  • 中转固件(一般是类似Linux Live CD那种RAM加载的临时系统固件,后缀为initramfs-kernel.bin;或是专用于从官方固件过渡到OpenWrt的系统固件,后缀包含factory字样)
  • Bootloader固件(某些情况下我们需要刷入新的Bootloader,比如不死Uboot、Breed等)

并非在所有情况都需要准备以上所有固件,具体选择哪些文件,需要视情况而定。

比如,之前接触的Cisco Meraki Z1,其原厂固件非OpenWrt,不支持直接刷入sysupgrade,便有大佬编译了initramfs-kernel固件供大家使用DD指令刷入作为中转,然后通过该固件中提供的sysupgrade指令支持刷入最终的squashfs-sysupgrade固件。

而像ACRH17,虽然该机器保留原厂的Bootloader可以使用原厂提供的救援工具刷回原厂,但网友大多都是要刷第三方的Bootloader以实现通过Bootloader随意刷机的需求。需要注意的是,Bootloader对于路由器这类嵌入式设备是非常重要的 ,所以无论原厂固件还是一般的OpenWrt固件都是不允许重写Bootloader区域的,于是有网友编译了解锁Bootloader的squashfs-flash-factory固件。通过在原厂固件的固件升级页面中直接刷入该固件,便可以在Shell中执行重写Bootloader的命令了,最后便可通过第三方的Bootloader进行刷固件或一些其他的高级功能。

建立到路由器的shell连接

建立到路由器的Shell连接的方法,可以分为免拆机法和拆机法。不同型号能使用的方法不同,因为拆机法对于动手能力和工具有一定要求,所以优先选择免拆机的方法。

路由器的主板在设计时大多会留出四个排在一起的焊盘,这时为硬件调试留出的TTL串口,需要通过一定的电路分析经验找出其GND、TXD、RXD,然后通过USB-TTL转接器连接到电脑,在电脑的设备管理器中确认其串口号,然后使用Putty或SecureCRT等工具通过端口号连接。根据不同机型,有的可能需要提升Root权限,有的可能需要登录。

有些路由器厂商屏蔽了开启SSH远程登录的功能,但它的固件是使用OpenWrt固件定制的,这类便有机会通过浏览器注入等方式打开屏蔽的SSH。然后利用IP地址和端口号(默认22)使用Putty、Xshell等工具建立Shell连接。

而像ACRH17,华硕官方本身提供了打开SSH的设置,我们在系统管理->系统设置中将启用SSH选项设置为是即可打开SSH。然后利用IP地址和端口号(默认22)使用Putty、Xshell等工具建立Shell连接。

备份原厂数据

备份原厂数据也有拆机和免拆机两种方法。

目前路由器存储固件采用的存储器通常是SPI Flash或NAND Flash。SPI Flash一般会是8MB或16MB,容量较小;而NAND Flash容量相对大一些,比如ACRH17的NAND Flash容量为128MB。拆机取下存储器,通过烧录器连接电脑直接读取整个存储器的二进制映像以备份的方法是一种可靠的方法,但其需要的技术和工具也是个麻烦,SPI Flash的烧录器约20元左右即可买到,而NAND Flash的烧录器价格几百上千,这绝不是电子爱好者可以承受的。

ACRH17采用的128M NAND Flash方案,笔者家贫,没有NAND Flash烧录器,上文种已经获建立了SSH的连接,本文主要介绍的便是通过Shell备份。

  1. 使用以下命令查看分区结构,从回显的信息我们可以得知有mtd0~8共九个分区,以及其对对应的名字。
admin@RT-ACRH17:/tmp/home/root# cat /proc/mtd
dev:    size   erasesize  name
mtd0: 00400000 00020000 "Bootloader"
mtd1: 07c00000 00020000 "UBI_DEV"
mtd2: 0005d000 0001f000 "nvram"
mtd3: 0001f000 0001f000 "Factory"
mtd4: 0001f000 0001f000 "Factory2"
mtd5: 03013000 0001f000 "linux"
mtd6: 02e11440 0001f000 "rootfs"
mtd7: 03013000 0001f000 "linux2"
mtd8: 02e11440 0001f000 "rootfs2"
  1. 使用 dd if=/dev/mtd* of=/tmp/mtd*_NAME.bin 命令依次备份各分区,备份文件的名字建议使用分区序号加名称。例如备份Bootloader的命令如下:

    admin@RT-ACRH17:/tmp/home/root# dd if=/dev/mtd0 of=/tmp/mtd0_Bootloader.bin
    8192+0 records in
    8192+0 records out
  2. WinSCP使用SSH的连接信息登录,然后从 /tmp 目录复制到本地进行妥善保存即可。需要注意的是, /tmp 目录是存在于路由器的RAM中的,断电后会丢失,所以在操作完毕前不要断电或重启路由器。

  3. 实践发现因为UBI_DEV分区太大,临时分区的剩余空间不足以存储其备份文件,这时我们可以借助一个U盘来存储备份的文件。插入U盘后可以在 /mnt/ 目录下看到U盘,使用U盘存储空间的路径替换上文命令的 /tmp/ 即可将文件备份到U盘中。此方法便不需要WinSCP来传输备份文件了。

  4. 虽然备份的文件大概率我们是不会用到,但是有了备份后我们便可以更放心的为其刷入固件了。

注意:ACRH17较重要的便是Factory区,其称为ART分区。据说其存储了该机器的无线校准数据,此为备份的重点关注对象。将所有分区全部备份后, 我们可以根据其名称和大小分析其具体的功能,有经验的大佬甚至能将其切割拼接做成编程器固件(可使用WinHex工具处理)。

刷入新固件

这次刷的是ACRH17,参考多数大佬的方案,刷不死OpBoot和OpenWrt。因为原厂系统以及默认的OpenWrt固件均不允许修改Bootloader,所以需要先刷入允许写入Bootloader的特殊OpenWrt固件,此功能是在OpenWrt固件编译时配置的。

  1. 在ACRH-17原厂固件升级页面上传并刷入解锁Bootloadder的 squashfs-flash-factory 固件并重写启动。

    用户名:root 密码:password

  2. 使用U盘或WinSCP将opboot文件传输到路由器的 /tmp 目录下,参考使用以下格式命令计算其MD5并核对是否损坏,如有损坏切勿刷入。

    md5sum /tmp/rt-acrh17-opboot-XXX.bin
  3. 校验无误后参考使用以下命令格式解锁Bootloader并使用OpBoot覆写。

    mtd unlock /dev/mtd0
    mtd -r write /tmp/rt-acrh17-opboot-XXX.bin Bootloader
  4. 按住WPS键接通电源,即可通过浏览器访问OpBoot固件更新页面,按页面提示上传固件即可刷入。

不同机型会有不同的方法。其他机型,有可以在原厂Bootloader中直接通过命令刷入新固件的,这种机型一般可在连接TTL串口时通过特定按键中断以进入Bootloader,也有可通过按键组合进入Web固件更新页面,但大多数的厂商会限制Bootloader只能刷入或引导原厂固件,这类情况一般通过更换第三方的Bootloader解决。具体可以参考Installing OpenWrt

如何将ACRH17刷回官方固件:本文方案已经将Bootloader和系统都刷写成了第三方,如果只需要将系统刷回第三方可直接在华硕官网下载该路由器的最新固件,然后解压并在OpBoot页面刷入即可。如果需要将Bootloader也刷会原厂,可通过OpBoot的高级功能刷写Boot loader实现,mleaf大佬在此处提供了相关文件。

参考

HP39gs计算器改装锂电池供电

前言:

简而言之,就是切断电池仓正极连接,换成锂电池。为锂电池并联一个充电模块,充电模块供电从MINI USB接口取电。ADC电压采样电阻是R17和R18,把R17 换成 1MΩ 、R18 保持 2MΩ 不变,这样修改后,使用锂电池时电压高于3.85V,应当不会再提示Low Bat。按照这个核心方案干就完了,下面全是废话。

(回忆···)

首先说明,下文讲述的笔者是5年前干的事情的,前端时间看见欠陥電気大佬写的搞机贴,觉得此事我可以水一篇博文。那时我还是在校学生,是校电协成员。记不清是哪位朋友发现这款型号为HP 39gs的计算器在某宝以非常便宜的价格销售,仅27.58元。从来没有接触过图形计算器的我,通过搜索引擎了解到这款计算器属于图形计算器,2006年上市,当时售价千元。里面是一枚SAMSUNG S3C2410A ARM处理器,该处理器最高频率约200MHz,在该计算器中,官方设计为75MHz。据说可使用HP Basic编程语言编写程序以在此计算器上运行,另外其不支持CAS,这些我不懂。我们几位社员一合计,咱们也从来没用过图形计算器,现在有机会必须试试。好家伙,这计算器值!于是大家就入手(Keng)了。注:经简单了解,目前此计算器价格有所上涨;另外因年代久远且其设计理念不佳(S3C2410A上运行的Saturn CPU模拟器,然后模拟器上运行SysRPL),所以在当今看来,功能少,运算慢,据说其根本不适合日常工程计算使用。购(Ru)买(Keng)需谨慎!当然,笔者拿来当普通计算器算个加减乘除感觉还是可以的。算的数多了也慢。

基本规格:

*
型号: 惠普 HP 39gs 图形计算器
CPU: Samsung S3C2410A(ARM920T单核) @75MHz (实际最高约200MHz)
Memory: 256KB RAM (用户实际可用约200KB) ,1MB Flash
通信接口: USB Mini-B(Kermit 或 XModem协议) , IrDA ,4PIN 3.3V异步串口
供电: 4×AAA电池作为主电源 ,CR2032纽扣电池用于数据保持
屏幕: 131×64 像素+上方状态条 单色LCD,对比度可调
语言: sRPL , HP-Basic
其他: 内置蜂鸣器,带有硬质保护壳,不支持CAS
上市时间: 2006年 06月

注:上表信息来自维基百科

准备工作:

实践本文内容需要如下硬件准备:

  • HP 39gs 计算器
  • 合适大小的锂聚合物电池
  • 锂电池充电模块
  • 导线若干(建议线规约22AWG)
  • 螺丝刀(十字 1.0左右)
  • 薄型撬片(或撬棒)
  • 万用表(选配)

需要在技能树中点亮如下技能:

  • 电子产品拆卸技术
  • 基础电路知识
  • 基本锡焊技术

警告:电子DIY需要有一定的相关知识与技能,操作过程有静电损坏元器件风险,使用烙铁焊接有烫伤风险。请谨慎操作,避免受伤或损坏设备。笔者不会对您的改装行为所造成的任何损失负责!

改装:

我们在使用一周后发现了这一问题,耗电太快了。四枚普通AAA电池,使用一个星期就低电警告了。这对于我们这种穷苦学生怎么承受的了,所以大家想改锂电。原有供电系统为6V,考虑S3C2410A为3.3V IO系统,外围器件也多为3.3V供电,所以考虑单节锂电池供电是可能的。那年正是MPOS火爆推广的时候,1元即可买到一个MPOS还包邮,里面可以拆出拇指电池、4055单节锂电池充电IC、3.3V LDO、高精度运放IC、蓝牙模块、单片机(运气好可能是STM32)。这便给改装提供了思路,杀一只MPOS即可提供电池和锂电池充电IC,如果嫌一节电池容量太小,可以杀两只POS鸡。整个改装过程主要分为以下几步:

  1. 拆机
  2. 验证实际工作电压范围
  3. 查找并改装电压采样
  4. 制作充电电路
  5. 装配以完成改装

1.拆机:

该机器拆机简单,首先取下硬质塑料保护壳,使用薄撬片小心取下屏幕保护盖,避免划伤。使用螺丝刀拆下两颗螺丝,然后使用撬片沿机身四周撬开并取下底壳。需小心注意底壳上有电源与蜂鸣器的连接线,避免失手扯断连线。必要可使用烙铁拆焊部分连接线。请牢记各连线焊接位置,必要可拍照记录,以确保在装配时能正确复原

2.验证工作电压范围:

拆下主电源(电池仓)连接线,临时焊接测试线,连接到数控电源,使用数控电源输出模拟锂电池电压变化。经过粗略测试,电压需要保持在3.68V以上计算器才能正常工作。虽然锂电池可以放电到更低的电压,但是计算器不能在那个电压下正常工作。这表示,虽然使用单节锂电池方案不能完全使用电池的电量,但也是可行的。

3.查找并改装电压采样:

首先检查主板上的所有IC,发现没有ADC。猜测低电检测是使用CPU内置的ADC实现的,4枚AAA电池电压高达6V以上,必有分压电路进行电源电压采样后再输入ADC。一般来说,电压采样电路可能更靠近ADC,此处即应靠近S3C2410A。考虑专业设计一般会引出测试点,先对周围测试点进行电压测量,如果能测到一个会随电源电压变化而变化的电压,大概就是电压采样测试点,如果测不到那就该对周围的电阻两端进行测量,找出会随电源电压变化的点。经过测量发现,S3C2410A右上角的测试点明显符合预期。观察PCB走线,发现与R17和R18有连接。测量两颗电阻阻值分别为1.8MΩ和2MΩ,皆在兆欧级别,也符合电压采样分压电阻的规格。至此,便成功的找到了分压电路。

理论上,接下来通过数控电源提供各种电压进行测试,确定ADC输入的电压低于多少时触发低电提醒。测量后我们确认到的是2.4V,实际电池低电电压与ADC触发电压的差与ADC触发电压的比值即为R17和R18的比值。经过估算,R17 = 1.5MΩ 、R18 = 3.9MΩ应当是个不错的组合。但是实际更换后并不能按照预期提示低电,无论电量多低都没有低电提示,直到电压低至无法开机也没有低电提示。鄙人学艺不精,无法理解什么原因,但这是无法接受的。经过多次实际测试,最终我们选择将R17 换成 1MΩ 、R18 保持 2MΩ 不变,这样计算器大约会在低于3.84V提示低电,充电至高于此电压后便不会出现低电提示。

4.制作充电电路:

可充电的锂电池装到计算器里面,当然不能没有充电电路。大家可以某宝购买TP4055、TP4056等充电模块,价格很便宜。笔者当年使用了中指甲盖大小的一片单面洞洞板,将MPOS机中拆出的4055充电IC整到了上面。4055充电IC为SOT23封装,以左下角为起点1脚,逆时针旋转依次为2~5脚。1脚接充电指示LED负极,LED正极过1K电阻上4脚,与其一同连接至输入+;2脚接GND;5脚为充电电流编程脚,过一个电阻接地,阻值大小视电池容量决定;3脚为输出,连接到电池+。

5.装配:

最后我们需要将计算器装起来,前面如果都能搞定,这个并不难。把电池的正负极与充电模块的输出正负极分别连接,然后连接到计算器的主电池输入。从USB口附近或其他方便的地方引出5V电源和GND到充电模块的输入。切断电池仓正极的连接,把电池粘在底壳合适位置以保证能盖好底壳,然后把充电模块粘在电池仓缝隙处,保证能从外面看到充电指示灯。最后把底壳装回去就大功告成了。

参考:

HP 39gs --惠普官网

hpcalc.org

The HP HOME view

将 HP 39gs 升级为 HP 48gII--欠陥電気

计算器自检/HP-39GS

HP39gs 从入门到精通(完全教程)

我该用什么词典?——翻译工具的选择

前言

在研究电子技术和计算机技术的过程中,大家都不可避免的需要接触英文资料;如果英语水平不够,遇到不懂的单词、甚至成段看不懂的情况,那便需要翻译了。传统的纸质词典、电子词典等使用相对低效,在我们使用电脑看英文文档的当下,翻译这件事自然也是用电脑完成。通常,我们会通过浏览器使用谷歌、必应、百度、有道等提供的在线翻译网页查单词、整段翻译,也会在电脑上安装翻译工具程序进行翻译。而后者,作为一个应用程序,通常能提供比通过浏览器工作的在线翻译更好的使用体验。本文前部分会使用较小的篇幅记录笔者翻译工具使用史,后面的部分则介绍笔者如何配置、使用商业词典欧路词典和开源词典GoldenDict。

笔者的翻译工具使用史

说起笔者最开始使用的翻译工具,那应该是有道,那时我刚接触电脑时间不长,只是偶尔用词典软件查过几个单词,安装词典可能只是为了体验通过电脑查单词的这个过程。那时有道有鼠标取词的功能,闲暇时刻我会用鼠标胡乱指向一些中文的词语,将其翻译成英语。

后来笔者入了电子技术这个坑,阅读Datasheet的困难便随之而来,虽然我英语从未挂科,但只满足不挂科的英语水平的确不足以阅读Datasheet,更别提里面很多专业的词汇上课也不会学。可能那时比较流行使用破解版商业软件,又可能是因为PDF文档中取词的需求。看了百度上众多网友的推荐,我选择了使用破解版的金山词霸企业版,因为里面多个词库看起来蛮专业的,而且它有Adobe Reader取词插件,可以很方便的在PDF文件中拖动光标选取内容进行整段的翻译,翻译结果会自动显示。而有道不支持Adobe Reader,自然不会再使用它。

转眼来到2021年的某一天,我秃然发觉金山词霸是用了那么多年,想来这么多年过去,翻译工具是否会有更好的选择呢?一番搜索之后发现很多人都推荐欧路词典,下载安装后发觉界面不错,自带词库查词返回内容也挺多,支持整段的翻译,甚至它还有一个截屏取词的功能。取词与划词默认配置可能不适合所有人,其选项可以根据个人需求进行更改。虽然是商业软件,它的免费版本也没有广告,这点值得称赞。欧路词典可以挂载第三方提供的词库扩展,支持常见的Mdict和灵格斯格式。针对扩展词库,免费版本只能显示前两个。其实对于非英语专业来说,两个可能也够了。如果需要挂载更多扩展词库,欧路词典的价格也不贵,也就三箱桶面的样子。

通过对欧路词典几天的使用,我发现它经常出现划词翻译失灵的现象,这个问题也有可能是和其他翻译工具冲突的原因。抛开此问题不谈,我还发现它的鼠标取词功能识别率略低,之前使用金山词霸几乎没有的识别错误问题,短短几天欧路发生了好几次,但是后来的几天错误率降低了。但是软件版本并没有更新,这个表现很迷,难道是后台直接更新了部分文件还是什么其他的东西自动改变了?这些表现可能与我电脑软件环境有关,但我还是对欧路词典的稳定性抱有怀疑。

在发现欧路词典可能不稳后,开始寻找其他替代方案。想起前面看到的Mdict格式,便打算去了解了一下Mdict是什么,通过搜索引擎搜索后了解到这也是一款词典,功能不是很强,但是很多权威大辞典都是打包成这种格式。然后看到有人对Mdict、欧路词典和GoldenDict进行了简单对比,我了解到了GoldenDict是一款开源软件,它支持的词典格式较多,同时它也支持Mdict格式。然后发现了nonwill大佬优化过后的GoldenDict++OCR,这是支持OCR取词的GoldenDict版本。下载简单使用了一下后发现,功能确实挺不错,它还有一个称之为构词法规则的功能很实用。但它没有欧路词典这种商业软件那么美观的界面,配置也会比较复杂,想要使用它需要一定的折腾能力,但它是免费的。

目前我主要尝试使用欧路词典,而GoldenDict为辅。因为我不是英语专业类工作,也不是英语研究爱好者。我只是需要一个翻译工具用来翻译我无法读懂的文档。这种情况,一个简单易用美观的翻译工具是有必要的。如果欧路词典的划词稳定性没有问题,我可能会考虑购买付费版本;如果有问题,则会考虑换用GoldenDict。

词典的配置与使用

以下记录笔者使用时的配置,系统为Windows10,其他系统没有测试。仅供参考。

欧路词典:

首先是第三方词库的安装,因为免费用户只能加载两个扩展词库,所以需要做一些取舍。如可以安装一部带发音的词频词典和一部权威大词典(或行业词典),排序时把词频词典放第一,自带英汉汉英放第二,权威大辞典放第三以避免长篇幅挡住自带词典内容。如果不使用权威大辞典而是使用词条篇幅较短的行业词典,可以考虑和自带英汉汉英对调。

添加词典的操作过程。单文件的词典直接在词库管理中点击安装词库>选择文件,按照提示添加即可。多文件的词典安装时需要点击安装词库>选择文件夹。包含外观样式文件的词典,需要现在设置中心中点击打开软件配置目录,打开欧路的配置文件目录,复制词典自带的样式文件到这个目录。

欧路词典的划词翻译功能可能有问题,勾选开启划词翻译功能选项,使用光标选择一段内容后会出现翻译按钮,点击此按钮有时会出现无效的情况。但是手动划词快捷键F7按下还是能正常翻译的。这个问题可能是本人系统环境造成,也可能是欧路词典本身的Bug。针对此问题,建议记住快捷键F7,去掉开启划词翻译功能选项勾选,后期使用快捷键调用划词翻译。再记住一个截屏翻译快捷键:Ctrl+Alt+D,必要时可以直接截屏翻译。我个人始终认为:快捷键比点击图标更高效

其他设置就是比较常规的,比如我勾选了关闭窗口时最小化到状态栏。这样就可以缩到通知区域里面,不占用任务栏了。勾选启动Windows系统时自动运行,这样就可以随系统启动。如果不喜欢它的每日一句等在线内容,可以取消这个勾选,主页就会更清爽一些。其他一些快捷键也可以按实际习惯修改。

GoldenDict:

主程序安装与配置官网提供的版本已经太旧了,不支持mdx和mdd格式的词典文件,可以去SourceFORGE下载。建议使用nonwill大佬优化过后功能更强大的GoldenDict++OCR,这个有OCR功能,我也是用的这个。大佬针对Windows编译的版本都是便携版(Portable),根据自己系统下载主程序包解压到合适位置后,可以下载Dictionary文件,里面有一些共享的词典样式表和字体文件。

确保GoldenDict++OCR未打开,在其主目录下,新建portable文件夹和content文件夹。解压Dictionary文件中的dicts目录下的内容到content文件夹,解压portable目录下内容到portable文件夹。然后运行GoldenDict++OCR,点击编辑~~>首选项,打开首选项的设置页面。在此可以设置显示风格(即主题)和附加样式(查词结果显示区域的样式),.该词典上古风格的主题,在现在的审美看来糟糕透了,咱肯定不能指望免费的东西有什么漂亮的主题,但还是有必要按照自己喜好修改一下。我分别选择了灵格斯-蓝色调modern-yeah。如果需要随开机启动,可勾选随系统启动。取词和划词选项卡可以修改相应功能的快捷键,OCR取词默认快捷键是Ctrl+B+B,这个快捷键与Adobe Acrobat冲突,所以我的改成了Ctrl+Shift+C+C

词典的安装:与欧路词典需要付费不同,GoldenDict不需要付费即可加载多本词典,但是加载过多的词典可能带来使用卡顿。如果是对英语进行研究,可能需要查看大量不同词典;如果只是一般应用,建议尽量少装词典,像上文欧路配置两本词典也可以。具体按照操作:将词典文件解压到content目录,点击编辑~~>辞书在来源选项卡的文件选项卡引入前文创建的content目录的路径,然后在辞书选项卡中可以看到已经扫描到的词典。辞书排序栏中不需要的辞书,可以托拽到禁用栏中。

启用构词法规则:学习英语过程中,有时我们可能需要了解这个单词的来源是什么单词,以便更好地记忆、学习、理解单词。如果之前我们正确的将morphology文件夹放到了content目录,那么在来源选项卡下的构词法规则库页面,我们可以勾选需要的构词法(比如英语),应用设置后我们查询单词时如果在构词法库中有记录,则会在单词页面上附加显示来源词的释义。比如搜索sustainable,除了给出此单词释义是形容词可持续的,还会给出sustain的释义是动词维持。这个功能欧路词典是没有的。构词法词库还用于拼写错误时给出拼写建议。比如我听了一个词:algorithm,但我不知道如何拼写,我随手打出:aogerithm,然后GoldenDict便会给出拼写建议:algorithm,而欧路词典的建议是通过联网的网络释义实现的。

整句翻译:与其他商业公司的翻译软件相比,GoldenDict一个很大的缺点就是没有整句翻译。这个需求可以通过调用外部程序实现。因为Google翻译等对自己的翻译API做了限制,经过大佬们的努力,他们通过调用外部的一个Python程序实现,Python程序负责调用Google翻译API并把结果返回GoldenDict。笔者使用的xinebf提供的项目,托管于GitHub,项目页有详细的安装说明。

首先需要安装Python3.7以上版本,然后通过pip3 install google-translate-for-goldendict命令配置这个项目,接下来在GoldenDict中点击 编辑 - 字典 - 字典来源 - 程式,添加如下条目:

类型: Html
名称: Google Translate
命令行: python -m googletranslate zh-CN %GDWORD% -s "translate.google.cn"

图示请从GitHub项目中下载保存到合适位置,然后设置位置。保存设置后尝试使用快捷键对英文句子取词,即可看到整句翻译结果。

到此,本文结束。其他使用技巧大家可自行摸索,如果有什么见解,也可以在下面留言。

参考:

整理部分Linux主机测试脚本

整理部分Linux主机测试脚本

前言

本文整理了部分大佬的Linux主机测速脚本,方便本人使用,也介绍给大家。

千影大佬的脚本:

此脚本来自千影大佬。网站地址:https://www.94ish.me
千影大佬将此脚本命名为:Linux性能/网络测试综合脚本。可见此脚本功能非常全面。根据大佬介绍,此脚本支持以下功能:

  • 获取系统基本信息
  • 测试硬盘存取延迟iops存取速度
  • 测试本机带宽
  • 测试本机到25个国外节点下载速度
  • 测试本机到8个国内节点下载速度
  • 测试本机到国内9个节点的路由
  • 测试本机到国内9个节点的延迟与丢包

使用以下命令下载脚本:

wget https://raw.githubusercontent.com/chiakge/Linux-Server-Bench-Test/master/linuxtest.sh -N --no-check-certificate

运行说明:

#不含UnixBench的测试,无网页分享
bash linuxtest.sh

#不含UnixBench的测试,带网页分享
bash linuxtest.sh s

#含UnixBench的测试,不带网页分享
bash linuxtest.sh a

#含UnixBench的测试,带网页分享
bash linuxtest.sh as

#网页分享不包含任何VPSip信息

测试样本:

========== 开始记录测试信息 ==========
测试时间:2018-05-13 12:12:31
----------------------------------------------------------------------
CPU model            : Intel(R) Xeon(R) CPU E5-2620 0 @ 2.00GHz
Number of cores      : 1
CPU frequency        : 1999.830 MHz
Total size of Disk   : 59.0 GB (0.6 GB Used)
Total amount of Mem  : 512 MB (205 MB Used)
Total amount of Swap : 512 MB (10 MB Used)
System uptime        : 0 days, 9 hour 30 min
Load average         : 0.07, 0.02, 0.00
OS                   : Debian GNU/Linux 8
Arch                 : x86_64 (64 Bit)
Kernel               : 2.6.32-042stab127.2
ipaddr               : 美国 加利福尼亚州 洛杉矶  colocrossing.com
vm                   : openvz
----------------------------------------------------------------------
===== 开始硬盘性能测试 =====
ioping: seek rate
    min/avg/max/mdev = 39.9 us / 61.8 us / 37.3 ms / 345.1 us
ioping: sequential speed
    generated 14.4 k requests in 5.00 s, 3.52 GiB, 2.88 k iops, 720.3 MiB/s
===== 硬盘性能测试完成 =====
----------------------------------------------------------------------
===== 开始speedtest =====
Retrieving speedtest.net configuration...
Testing from ColoCrossing (198.23.239.***)...
Retrieving speedtest.net server list...
Selecting best server based on ping...
Hosted by Time Warner Cable (Los Angeles, CA) [0.74 km]: 4.27 ms
Testing download speed................................................................................
Download: 462.86 Mbit/s
Testing upload speed................................................................................................
Upload: 491.93 Mbit/s
Share results: http://www.speedtest.net/result/7306266209.png
===== speedtest完成 =====
----------------------------------------------------------------------
Node Name:                      IPv4 address:                  Download Speed
CacheFly:                       205.234.175.175:          81.66 MiB/s |  653.25 Mbps
Linode, Tokyo, JP:              106.187.96.148:            6.48 MiB/s |   51.85 Mbps
Linode, Tokyo2, JP:             139.162.65.37:             3.56 MiB/s |   28.46 Mbps
Linode, Singapore, SG:          139.162.23.4:              2.23 MiB/s |   17.86 Mbps
Linode, Fremont, CA:            50.116.14.9:               7.88 MiB/s |   63.06 Mbps
Linode, Newark, NJ:             50.116.57.237:             7.56 MiB/s |   60.45 Mbps
Linode, London, UK:             176.58.107.39:             4.52 MiB/s |   36.16 Mbps
Linode, Frankfurt, DE:          139.162.130.8:             2.22 MiB/s |   17.76 Mbps
Softlayer, Tokyo, JP:           161.202.125.20:            2.48 MiB/s |   19.86 Mbps
Softlayer, Singapore, SG:       119.81.28.170:             4.08 MiB/s |   32.64 Mbps
Softlayer, Seoul, KR:           119.81.28.170:             5.76 MiB/s |   46.09 Mbps
Softlayer, HongKong, CN:        119.81.130.170:            5.56 MiB/s |   44.49 Mbps
Softlayer, Dallas, TX:          169.48.124.82:            10.88 MiB/s |   87.07 Mbps
Softlayer, Seattle, WA:         67.228.112.250:           18.33 MiB/s |  146.61 Mbps
Softlayer, Frankfurt, DE:       159.122.69.4:              3.15 MiB/s |   25.18 Mbps
Softlayer, Paris, FR:           159.8.64.212:              3.58 MiB/s |   28.67 Mbps
Leaseweb, HongKong, CN:         43.249.36.49:              3.46 MiB/s |   27.68 Mbps
Leaseweb, Singapore, SG:        103.254.153.18:            6.09 MiB/s |   48.74 Mbps
Leaseweb, Washington D.C., US:  207.244.94.80:            14.61 MiB/s |  116.92 Mbps
Leaseweb, San Francisco, US:    209.58.135.187:           44.27 MiB/s |  354.13 Mbps
Leaseweb, Netherlands, NL:      5.79.108.33:               1.09 MiB/s |    8.70 Mbps
OVH, Montreal, CA:              192.99.19.165:             8.55 MiB/s |   68.39 Mbps
ChinaTelecom, Shanghai, CN:     101.95.48.41:            771.88 KiB/s |    6.03 Mbps
ChinaTelecom, Beijing, CN:      60.247.96.2:               6.16 MiB/s |   49.31 Mbps
ChinaUnicom, Beijing, CN:       61.135.202.2:             20.94 KiB/s |    0.16 Mbps
ChinaTelecom, Guangzhou, CN:    119.145.88.166:          706.60 KiB/s |    5.52 Mbps
ChinaMobile, Guangzhou, CN:     221.179.46.218:            2.44 KiB/s |    0.02 Mbps
ChinaTelecom, Hefei, CN:        61.191.111.11:             6.07 MiB/s |   48.55 Mbps
ChinaUnicom, Hefei, CN:         112.122.10.26:            24.36 KiB/s |    0.19 Mbps
ChinaMobile, Hefei, CN:         120.209.140.60:           10.31 KiB/s |    0.08 Mbps
Hinet, Taiwan, TW:              210.61.132.1:              2.43 MiB/s |   19.42 Mbps
----------------------------------------------------------------------
===== 测试 [四川电信] 的回程路由 =====
traceroute to 125.64.38.178 (125.64.38.178), 30 hops max, 60 byte packets
 1  ear.la.hiformance.net (198.23.239.2)  0.09 ms  AS36352  美国 加利福尼亚州 洛杉矶 colocrossing.com
 2  10.9.3.9  0.72 ms  *  局域网
 3  las-b3-link.telia.net (62.115.146.158)  9.17 ms  AS1299  美国 加利福尼亚州 洛杉矶 telia.com
 4  213.248.92.130  1.13 ms  AS1299  美国 加利福尼亚州 洛杉矶 telia.com
 5  202.97.50.234  3.79 ms  AS4134  美国 加利福尼亚州 洛杉矶 电信
 6  202.97.52.161  264.52 ms  AS4134  中国 广东 广州 电信
 7  *
 8  202.97.94.133  274.12 ms  AS4134  中国 广东 广州 电信
 9  202.97.36.222  299.99 ms  AS4134  中国 四川 成都 电信
10  *
11  118.123.217.86  302.58 ms  AS38283  中国 四川 成都 电信
12  *
13  125.64.38.178  297.95 ms  AS38283  中国 四川 成都 电信

===== 回程 [四川电信] 路由测试结束 =====
===== 测试 [北京电信] 的回程路由 =====
traceroute to 106.120.243.142 (106.120.243.142), 30 hops max, 60 byte packets
 1  ear.la.hiformance.net (198.23.239.2)  0.32 ms  AS36352  美国 加利福尼亚州 洛杉矶 colocrossing.com
 2  10.9.3.9  0.21 ms  *  局域网
 3  las-b3-link.telia.net (62.115.146.158)  0.39 ms  AS1299  美国 加利福尼亚州 洛杉矶 telia.com
 4  213.248.92.130  5.29 ms  AS1299  美国 加利福尼亚州 洛杉矶 telia.com
 5  202.97.50.234  7.61 ms  AS4134  美国 加利福尼亚州 洛杉矶 电信
 6  202.97.52.169  256.38 ms  AS4134  中国 北京 电信
 7  202.97.85.29  223.65 ms  AS4134  中国 北京 电信
 8  202.97.48.245  229.90 ms  AS4134  中国 北京 电信
 9  *
10  2.254.120.106.static.bjtelecom.net (106.120.254.2)  250.87 ms  AS4847  中国 北京 电信
11  142.243.120.106.static.bjtelecom.net (106.120.243.142)  221.05 ms  AS4847  中国 北京 电信

===== 回程 [北京电信] 路由测试结束 =====
===== 测试 [北京联通] 的回程路由 =====
traceroute to 103.254.70.52 (103.254.70.52), 30 hops max, 60 byte packets
 1  ear.la.hiformance.net (198.23.239.2)  0.32 ms  AS36352  美国 加利福尼亚州 洛杉矶 colocrossing.com
 2  10.9.3.9  0.17 ms  *  局域网
 3  las-b3-link.telia.net (62.115.146.158)  3.51 ms  AS1299  美国 加利福尼亚州 洛杉矶 telia.com
 4  213.248.92.130  6.09 ms  AS1299  美国 加利福尼亚州 洛杉矶 telia.com
 5  202.97.50.234  0.51 ms  AS4134  美国 加利福尼亚州 洛杉矶 电信
 6  202.97.25.233  258.66 ms  AS4134  中国 电信
 7  202.97.84.213  283.28 ms  AS4134  中国 北京 电信
 8  202.97.53.25  281.32 ms  AS4134  中国 北京 电信
 9  *
10  *
11  *
12  119.40.40.74  436.57 ms  AS4847  中国 北京 cnispunion.org 联通
13  *
14  103.254.70.52  269.65 ms  AS4808,AS4847  中国 北京 联通/电信

===== 回程 [北京联通] 路由测试结束 =====
===== 测试 [北京移动] 的回程路由 =====
traceroute to 218.205.152.14 (218.205.152.14), 30 hops max, 60 byte packets
 1  ear.la.hiformance.net (198.23.239.2)  0.29 ms  AS36352  美国 加利福尼亚州 洛杉矶 colocrossing.com
 2  10.9.3.13  0.23 ms  *  局域网
 3  las-b3-link.telia.net (62.115.146.156)  0.50 ms  AS1299  美国 加利福尼亚州 洛杉矶 telia.com
 4  chinamobile-ic-327136-las-b24.c.telia.net (62.115.37.99)  96.87 ms  AS1299  美国 加利福尼亚州 洛杉矶 telia.com
 5  223.120.6.17  97.05 ms  AS58453  美国 加利福尼亚州 洛杉矶 移动
 6  223.120.13.14  314.15 ms  AS58453  中国 移动
 7  *
 8  *
 9  *
10  *
11  *
12  *
13  218.205.152.14  348.18 ms  AS56048  中国 北京 移动

===== 回程 [北京移动] 路由测试结束 =====
===== 测试 [上海移动] 的回程路由 =====
traceroute to 117.131.14.202 (117.131.14.202), 30 hops max, 60 byte packets
 1  ear.la.hiformance.net (198.23.239.2)  0.31 ms  AS36352  美国 加利福尼亚州 洛杉矶 colocrossing.com
 2  10.9.3.13  53.19 ms  *  局域网
 3  las-b3-link.telia.net (62.115.146.156)  1.21 ms  AS1299  美国 加利福尼亚州 洛杉矶 telia.com
 4  chinamobile-ic-327136-las-b24.c.telia.net (62.115.37.99)  97.32 ms  AS1299  美国 加利福尼亚州 洛杉矶 telia.com
 5  223.120.6.17  97.42 ms  AS58453  美国 加利福尼亚州 洛杉矶 移动
 6  *
 7  *
 8  *
 9  221.183.25.189  344.80 ms  AS9808  中国 上海 移动
10  221.176.22.9  344.28 ms  AS9808  中国 上海 移动
11  *
12  *
13  *
14  *
15  117.131.14.202  345.54 ms  AS24400  中国 上海 移动

===== 回程 [上海移动] 路由测试结束 =====
===== 测试 [上海电信] 的回程路由 =====
traceroute to 211.144.205.58 (211.144.205.58), 30 hops max, 60 byte packets
 1  ear.la.hiformance.net (198.23.239.2)  0.30 ms  AS36352  美国 加利福尼亚州 洛杉矶 colocrossing.com
 2  10.9.3.9  0.42 ms  *  局域网
 3  las-b3-link.telia.net (62.115.146.158)  13.91 ms  AS1299  美国 加利福尼亚州 洛杉矶 telia.com
 4  chinaunicom-ic-155914-las-bb1.c.telia.net (213.248.82.206)  274.78 ms  AS1299  美国 加利福尼亚州 洛杉矶 telia.com
 5  219.158.96.25  273.72 ms  AS4837  中国 北京 联通
 6  219.158.3.137  308.87 ms  AS4837  中国 北京 联通
 7  219.158.5.149  316.10 ms  AS4837  中国 北京 联通
 8  219.158.16.90  286.87 ms  AS4837  中国 上海 联通
 9  *
10  112.64.252.86  324.28 ms  AS17621  中国 上海 联通
11  *
12  208.162.dsnet (211.144.208.162)  162.06 ms  AS23853  中国 上海 shuxun.net 电信/联通
13  208.134.dsnet (211.144.208.134)  160.57 ms  AS23853  中国 上海 shuxun.net 电信/联通
14  *
15  *
16  *
17  *
18  205.58.dsnet (211.144.205.58)  287.26 ms  AS17621,AS23853  中国 上海 shuxun.net 电信/联通

===== 回程 [上海电信] 路由测试结束 =====
===== 测试 [上海联通] 的回程路由 =====
traceroute to 220.196.42.133 (220.196.42.133), 30 hops max, 60 byte packets
 1  ear.la.hiformance.net (198.23.239.2)  0.37 ms  AS36352  美国 加利福尼亚州 洛杉矶 colocrossing.com
 2  10.9.3.13  16.81 ms  *  局域网
 3  las-b3-link.telia.net (62.115.146.156)  0.41 ms  AS1299  美国 加利福尼亚州 洛杉矶 telia.com
 4  chinaunicom-ic-324374-las-b24.c.telia.net (62.115.154.91)  314.46 ms  AS1299  美国 加利福尼亚州 洛杉矶 telia.com
 5  219.158.96.25  289.92 ms  AS4837  中国 北京 联通
 6  219.158.3.137  327.08 ms  AS4837  中国 北京 联通
 7  219.158.5.149  314.17 ms  AS4837  中国 北京 联通
 8  219.158.16.90  296.00 ms  AS4837  中国 上海 联通
 9  *
10  139.226.203.6  308.53 ms  AS17621  中国 上海 联通
11  112.65.207.162  331.72 ms  AS17621  中国 上海 联通
12  140.207.207.165  339.75 ms  AS17621  中国 上海 联通
13  140.207.207.126  349.24 ms  AS17621  中国 上海 联通
14  220.196.42.133  303.40 ms  AS17621  中国 上海 联通

===== 回程 [上海联通] 路由测试结束 =====
===== 测试 [广东联通] 的回程路由 =====
traceroute to 27.40.0.30 (27.40.0.30), 30 hops max, 60 byte packets
 1  ear.la.hiformance.net (198.23.239.2)  0.10 ms  AS36352  美国 加利福尼亚州 洛杉矶 colocrossing.com
 2  10.9.3.9  0.26 ms  *  局域网
 3  las-b3-link.telia.net (62.115.146.158)  27.72 ms  AS1299  美国 加利福尼亚州 洛杉矶 telia.com
 4  chinaunicom-ic-151188-las-bb1.telia.net (213.248.94.126)  382.24 ms  AS1299  美国 加利福尼亚州 洛杉矶 telia.com
 5  219.158.96.25  290.72 ms  AS4837  中国 北京 联通
 6  *
 7  219.158.18.69  319.49 ms  AS4837  中国 北京 联通
 8  219.158.112.46  371.24 ms  AS4837  中国 广东 广州 联通
 9  120.81.0.34  293.30 ms  AS17816  中国 广东 广州 联通
10  221.4.6.2  310.94 ms  AS17816  中国 广东 广州 联通
11  27.40.0.30  325.19 ms  AS17816  中国 广东 广州 联通

===== 回程 [广东联通] 路由测试结束 =====
===== 测试 [广东移动] 的回程路由 =====
traceroute to 211.139.129.222 (211.139.129.222), 30 hops max, 60 byte packets
 1  ear.la.hiformance.net (198.23.239.2)  0.12 ms  AS36352  美国 加利福尼亚州 洛杉矶 colocrossing.com
 2  10.9.3.13  2.57 ms  *  局域网
 3  las-b3-link.telia.net (62.115.146.156)  0.42 ms  AS1299  美国 加利福尼亚州 洛杉矶 telia.com
 4  chinamobile-ic-327136-las-b24.c.telia.net (62.115.37.99)  96.56 ms  AS1299  美国 加利福尼亚州 洛杉矶 telia.com
 5  223.120.6.17  96.39 ms  AS58453  美国 加利福尼亚州 洛杉矶 移动
 6  *
 7  *
 8  *
 9  221.176.19.37  322.20 ms  AS9808  中国 广东 广州 移动
10  221.176.24.5  372.73 ms  AS9808  中国 广东 广州 移动
11  *
12  *
13  *
14  *
15  211.139.129.222  327.84 ms  AS56040  中国 广东 广州 移动

===== 回程 [广东移动] 路由测试结束 =====
----------------------------------------------------------------------
【四川电信】 - 125.64.38.178
10 packets transmitted, 6 received, 40% packet loss, time 9001ms
rtt min/avg/max/mdev = 297.731/297.816/297.870/0.548 ms
----------------------------------------------------------------------
----------------------------------------------------------------------
【北京电信】 - 106.120.243.142
10 packets transmitted, 10 received, 0% packet loss, time 8999ms
rtt min/avg/max/mdev = 202.605/229.378/247.753/17.592 ms
----------------------------------------------------------------------
----------------------------------------------------------------------
【北京联通】 - 103.254.70.52
10 packets transmitted, 10 received, 0% packet loss, time 9009ms
rtt min/avg/max/mdev = 234.315/251.105/265.916/13.239 ms
----------------------------------------------------------------------
----------------------------------------------------------------------
【北京移动】 - 218.205.152.14
10 packets transmitted, 4 received, 60% packet loss, time 9004ms
rtt min/avg/max/mdev = 347.991/348.252/348.489/0.177 ms
----------------------------------------------------------------------
----------------------------------------------------------------------
【上海移动】 - 117.131.14.202
10 packets transmitted, 5 received, 50% packet loss, time 9001ms
rtt min/avg/max/mdev = 344.769/345.570/347.109/0.827 ms
----------------------------------------------------------------------
----------------------------------------------------------------------
【上海电信】 - 211.144.205.58
10 packets transmitted, 6 received, 40% packet loss, time 9007ms
rtt min/avg/max/mdev = 284.695/289.510/296.363/5.161 ms
----------------------------------------------------------------------
----------------------------------------------------------------------
【上海联通】 - 220.196.42.133
10 packets transmitted, 9 received, 10% packet loss, time 9006ms
rtt min/avg/max/mdev = 287.089/299.335/308.720/6.880 ms
----------------------------------------------------------------------
----------------------------------------------------------------------
【广东联通】 - 27.40.0.30
10 packets transmitted, 10 received, 0% packet loss, time 9008ms
rtt min/avg/max/mdev = 320.965/331.647/340.094/7.365 ms
----------------------------------------------------------------------
----------------------------------------------------------------------
【广东移动】 - 211.139.129.222
10 packets transmitted, 1 received, 90% packet loss, time 8999ms
rtt min/avg/max/mdev = 326.090/326.090/326.090/0.000 ms
----------------------------------------------------------------------
----------------------------------------------------------------------
min:最低延迟
avg:平均延迟
max:最高延迟
mdev:平均偏差
----------------------------------------------------------------------
----------------------------------------------------------------------

老鬼的博客脚本:

此脚本来自于oooldking大佬。网站地址:https://www.oldking.net
Shell中输入以下内容并按Enter键执行脚本即可。

wget -qO- git.io/superbench.sh | bash

此脚本默认测试主机配置信息、磁盘IO性能、多地的上传下载速度,如下所示。

wget -qO- git.io/superbench.sh | bash

 =========================================================
 \                 Superbench.sh  Script                 /
 \       Basic system info, I/O test and speedtest       /
 \                   v1.1.5 (14 Jun 2019)                /
 \                   Created by Oldking                  /
 =========================================================

 Intro: https://www.oldking.net/350.html
 Copyright (C) 2019 Oldking oooldking@gmail.com
 Happy New Year!

 Installing Speedtest-cli ...
 Installing tools.py ...
 Installing Fast.com-cli ...
----------------------------------------------------------------------
 Superbench.sh -- https://www.oldking.net/350.html
 Mode  : Standard    Version : 1.1.5
 Usage : wget -qO- git.io/superbench.sh | bash
----------------------------------------------------------------------
 CPU Model            : Virtual CPU 82d9ed4018dd
 CPU Cores            : 1 Cores @ 2593.904 MHz x86_64
 CPU Cache            : 16384 KB
 OS                   : CentOS 7.6.1810 (64 Bit) KVM
 Kernel               : 3.10.0-957.27.2.el7.x86_64
 Total Space          : 1.7 GB / 55.0 GB
 Total RAM            : 96 MB / 1838 MB (629 MB Buff)
 Total SWAP           : 0 MB / 0 MB
 Uptime               : 4 days 8 hour 19 min
 Load Average         : 0.00, 0.01, 0.05
 TCP CC               : cubic
 ASN & ISP            : AS20473, Choopa
 Organization         : Vultr Holdings, LLC
 Location             : Queenstown Estate, Singapore / SG
 Region               :
----------------------------------------------------------------------
 I/O Speed( 1.0GB )   : 344 MB/s
 I/O Speed( 1.0GB )   : 370 MB/s
 I/O Speed( 1.0GB )   : 494 MB/s
 Average I/O Speed    : 402.7 MB/s
----------------------------------------------------------------------
 Node Name        Upload Speed      Download Speed      Latency
 Speedtest.net    2149.18 Mbit/s    4895.81 Mbit/s      2.045 ms
 Fast.com         0.00 Mbit/s       138.9 Mbit/s        -
 Guangzhou CT     3.57 Mbit/s       13.11 Mbit/s        -
 Wuhan     CT     0.77 Mbit/s       1.31 Mbit/s         -
 Hangzhou  CT     1.28 Mbit/s       0.75 Mbit/s         -
 Lanzhou   CT     0.22 Mbit/s       1.17 Mbit/s         -
 Shanghai  CU     12.34 Mbit/s      17.57 Mbit/s        -
 Heifei    CU     15.54 Mbit/s      44.01 Mbit/s        -
 Chongqing CU     15.67 Mbit/s      16.70 Mbit/s        -
 Xizang    CM     2.08 Mbit/s       118.36 Mbit/s       -
----------------------------------------------------------------------

Shell还有以下使用方法:

wget git.io/superbench.sh; chmod +x superbench.sh

或者 curl -LsO git.io/superbench.sh; chmod +x superbench.sh

./superbench.sh info

./superbench.sh io

./superbench.sh speed

./superbench.sh share

SpeedTest 的Jinan Wo 节点测速:

以下脚本使用SpeedTest网站的Jinan Wo节点测速。

wget https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py

chmod +x speedtest.py

./speedtest.py --server 5563

RTL2838电视棒EEPROM分析-基于RTL2832U,PID为2838的SDR硬件

RTL2838电视棒EEPROM分析-基于RTL2832U,PID为2838的SDR硬件

前言:

前几天水群时看到有网友聊起要买RTL2832U电视棒,看起来很贵,记得自己买的电视棒很便宜。于是问了一下,然后有网友表示RTL28382U电视棒pid为2832,而便宜的那个是RTL2838且其pid为2838,某些软件不识别这种硬件。然后我翻出自己的试了一下,还真的被识别为RTL2838(pid2838)。难道为了兼容性,必须要多花很多钱?通过大家的努力,我们把RTL2838电视棒改成了RTL2832U电视棒。

正文:

我的电视棒之前曾经拆解过,里面IC丝印为RTL2832U,且不存在任何打磨重新雕刻的痕迹。当我发现计算机将电视棒名字识别为RTL2838UHIDIR而不是RTL2832U的时候,我第一感觉也怀疑到了IC,但是IC的外观并不像假货。又有网友提供了osmocom论坛相关WIKI,它有一句话:Many devices with EEPROM have 0x2838 as PID and RTL2838 as product name, but in fact all of them have an RTL2832U inside.Realtek never released a chip marked as RTL2838 so far.从此处我们了解到实际并没有RTL2838这款IC。

想到很多IC都会用外挂EEPROM的方式存储配置信息,我便再次想到,这款电视棒是否也是如此,而它的设备名称、PID&VID是否也如此?于是便将外壳再次拆下,果然在RTL2832U附近看到了一枚型号为24C02N的EEPROM。直接将24C02拆焊上编程器,将其数据dump到文件中。文件内容:

B1.jpg

我们发现在dump出的EEPROM数据中存在部分区域对应USB设备信息。很明显可以看到RTL2838UHIDIR这段文字的数据存在于0x1B~0x33地址区域,且字符间都相隔一个00。从计算机上给出的信息中得知,这段数据是这个设备的产品名称。我们还发现,0x0B~0x17地址区域中存储的内容为Realtek,与前面一样,字符间相隔一个00,这段便是这个设备的制造商。最终我们还发现,0x02~0x05这段中存储的数据就是USB设备的PID和VID,且是以倒序的方式存储的。其中0x050x04中存储的是PID,即2838;而0x030x02中存储的是VID,即0BDA。这些数据也是能和计算机读出的信息相匹配的。而其他地址中存储的数据具体含义与用途,我没有查到。如果有大佬知道,欢迎补充。

有了以上的信息,我们就可以着手尝试改变它了。上面提到,有网友表示:某些软件只支持PID为2832的设备。根据上文我们获取的信息,我们将EEPROM中的数据做如下修改,把他焊回到电视棒上,插入计算机,发现果然如预期,它变成了名为RTL2832U、PID为2832的电视棒。

B2.jpg

这还没有结束,我在搜索资料的时候,意外的发现了一个叫做rtl-sdr的实用程序包。这个工具可以运行在Linux系统下,它包含了一个叫做rtl_eeprom的工具,可以将连接到计算机的RTL电视棒的EEPROM数据dump到一个文件中,也可以将修改后的文件写回EEPROM。此工具通过shell操作,命令如下。

CentOS7下安装:

yum install -y rtl-sdr

将数据dump到文件中:

 rtl_eeprom -r <文件名>

将文件写入EEPROM中:

警告:此操作非常危险,写入错误的数据或写入失败损坏数据等意外将导致电视棒无法再次被计算机正常识别!

 rtl_eeprom -w <文件名>

有网帖表示若因写错EEPROM文件导致电视棒无法工作,可尝试用镊子等导电物体短路EEPROM的SDA和SCL引脚,使RTL2832U无法识别EEPROM而直接被识别为PID=2832,然后使用rtl_eeprom工具提供的-g选项直接生成默认文件。具体参考:rtl_eeprom一文,鄙人未对此方法的有效性做验证

有了上文的方案,没有烙铁或焊台等工具的CS大佬们便可以尝试不拆硬件修改EEPROM了。

此处附上本人RTL电视棒修改前后的EEPROM中dump到的文件:

EEPROM.zip

本文主要整理了鄙人发现EEPROM中部分数据对电视棒作用的过程,希望本文能对大家有所帮助。

参考:

1:RealTek RTL2832U
linuxtv.org/wiki/index.php/RealTek_RTL2832U

2:WIKI:rtl-sdr
https://osmocom.org/projects/rtl-sdr/wiki/Rtl-sdr

3:rtl-eeprom工具帮助文档
http://manpages.ubuntu.com/manpages/trusty/man1/rtl_eeprom.1.html

CentOS7下编译安装Shadowsocks-libev

CentOS7下编译安装Shadowsocks-libev

前言:

Shadowsocks是一种基于Socks5代理方式的加密传输协议,也可以指实现这个协议的各种开发包。在中国大陆,本工具广泛用于解决长城防火墙的未知错误而导致的Google、YouTube、Facebook等正常境外网站不能正常访问。网上有大量热心网友提供了各种版本的一键安装脚本,用于支持那些非计算机从业人员快速方便的在服务器上搭建服务端。但是某些情况下,一键脚本的安全性难以保证;另一方面,使用一键脚本不能让我们具体了解到这个工具是如何工作的。而本文则提供了一步一步从源代码手动编译安装Shadowsocks-libev的过程。

阅读本文,您可能需要基本的Linux系统操作技术与网络技术基础。

步骤:

  1. 准备编译环境,在CentOS7下运行以下两条命令完成环境准备。

     yum install epel-release -y
     yum install gcc gettext autoconf libtool automake make pcre-devel asciidoc xmlto c-ares-devel libev-devel libsodium-devel mbedtls-devel -y
  2. 安装Git,并从GitHub下载源码。

     yum install git -y
     cd /usr/local/src
     git clone https://github.com/shadowsocks/shadowsocks-libev.git
  3. 配置并编译源代码。

     cd shadowsocks-libev
     git submodule update --init --recursive
     sh autogen.sh
     ./configure --disable-documentation
     make
     make install
  4. 配置Shadowsocks服务端配置文件,文件位于 .../shadowsocks-libev/debian/config.json,将此文件复制到/etc/shadowsocks-libev/config.json

     mkdir /etc/shadowsocks-libev
     cp ./debian/config.json /etc/shadowsocks-libev/config.json
  5. 使用vi编辑器打开/etc/shadowsocks-libev/config.json

     vi /etc/shadowsocks-libev/config.json
  6. 按照自己的需求填写服务端参数。

     {
     "server":"0.0.0.0",    //服务端IP地址,Linux系统下0.0.0.0表示本地
     "server_port":8388,    //服务端端口号
     "local_port":1080,     //本地端口号
     "password":"barfoo!",   //密码
     "timeout":10,    超时时长(秒)
     "method":"chacha20-ietf-poly1305"     //加密方式
     }
     #加密方式据说有如下几种:
     aes-256-gcm
     aes-192-gcm
     aes-128-gcm
     aes-256-ctr
     aes-192-ctr
     aes-128-ctr
     aes-256-cfb
     aes-192-cfb
     aes-128-cfb
     camellia-128-cfb
     camellia-192-cfb
     camellia-256-cfb
     chacha20-ietf-poly1305
     chacha20-ietf
     chacha20
     rc4-md5
  7. shadowsocks-libev.default文件复制到/etc/sysconfig/shadowsocks-libev
    shadowsocks-libev.service文件复制到/usr/lib/systemd/system/目录。因为本例中编译安装的程序文件位置为/usr/local/bin/,需要修改一下文件中的启动命令。

    cp /usr/local/src/shadowsocks-libev/rpm/SOURCES/systemd/shadowsocks-libev.default /etc/sysconfig/shadowsocks-libev
    cp /usr/local/src/shadowsocks-libev/rpm/SOURCES/systemd/shadowsocks-libev.service /usr/lib/systemd/system/
    vi /usr/lib/systemd/system/shadowsocks-libev.service

    将以下一行:

    ExecStart=/usr/bin/ss-server -c "$CONFFILE" $DAEMON_ARGS

    替换成以下内容,按ESC键输入:wq,按Enter键保存退出即可。

    ExecStart=/usr/local/bin/ss-server -c "$CONFFILE" $DAEMON_ARGS
  8. 运行服务,检查服务是否正常运行,若服务运行正常,即显示:Active: active (running)

    systemctl start shadowsocks-libev
    systemctl status shadowsocks-libev
  9. 确定服务正常后,将服务添加到开机启动。这时我们在客户端中输入服务器的IP地址等配置信息后就可以使用了,若依然不可以,请检查配置信息是否填写正确,并检查服务端防火墙配置。

    systemctl enable shadowsocks-libev

防火墙配置:

若服务端与客户端配置均正确,依然无法建立连接,我们便需要检查是否服务端防火墙导致。若服务器系统配置了防火墙并已经启动,那么在配置防火墙开放对应服务端口前,自然是无法与服务器建立连接的。其实我们作为服务器的管理人员,自然应该知道自己服务器是否有开启防火墙的。

  1. 我们可以使用此网站检查某个端口是否可以访问。输入IP地址和端口号后点击Check即可检测。若提示Port XX is open on x.x.x.x 即表示端口已经打开。反之 close即表示端口没有反应。此时我们进一步检查防火墙。

  2. 检查防火墙服务是否运行,CentOS7默认将原来CentOS6时代的防火墙iptables升级为了firewalld。使用以下命令检查防火墙运行状态。若回显信息提示:running,则表示防火墙运行中。

    firewall-cmd --state
  3. 为Shadowsocks在防火墙中添加规则,开放对应端口的TCP和UDP通信。下以上文配置文件中的8388端口为例,具体按自己需求修改。到此为止,我们便完成了防火墙的配置。

    firewall-cmd --zone=public --add-port={8388/tcp,8388/udp} --permanent
    firewall-cmd --reload

本文到此结束。下附Ubuntu安装:

Ubuntu下编译安装Shadowsocks-libev

安装各种编译需要的库、工具等:

sudo apt install --no-install-recommends build-essential autoconf libtool libssl-dev gawk debhelper dh-systemd init-system-helpers pkg-config asciidoc xmlto apg libpcre3-dev zlib1g-dev libev-dev libudns-dev libsodium-dev libmbedtls-dev libc-ares-dev automake

拉取源代码:

sudo apt install git
git clone https://github.com/shadowsocks/shadowsocks-libev.git
cd shadowsocks-libev
git submodule update --init
./autogen.sh && ./configure --disable-documentation && make
sudo make install

创建配置文件:

创建配置文件目录:

sudo mkdir /etc/shadowsocks-libev

单用户配置文件:

sudo vi /etc/shadowsocks-libev/config.json
{
     "server":"0.0.0.0",
     "server_port":8388,
     "local_port":1080,
     "password":"mypassword",
     "timeout":300,
     "method":"aes-256-gcm" ,
     "fast_open": false
 }

多用户配置文件:

sudo vi /etc/shadowsocks-libev/manager_config.json
{
     "server":"0.0.0.0",
     "local_port":1080,
     "method":"aes-256-gcm" ,
     "timeout":300,
     "fast_open": true,
     "port_password": {
        "8388": "barfoo1",
        "8389": "barfoo2"
    }
 }

创建Systemd服务文件:

单用户:

sudo vi /etc/systemd/system/shadowsocks-libev.service
[Unit]
Description=Shadowsocks-libev Server
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/ss-server -c /etc/shadowsocks-libev/config.json -u
Restart=on-abort

[Install]
WantedBy=multi-user.target

多用户:

[Unit]
Description=Shadowsocks-libev Server
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/ss-manager -c /etc/shadowsocks-libev/manager_config.json -u
Restart=on-abort

[Install]
WantedBy=multi-user.target

启动并设置开机自启:

sudo systemctl start shadowsocks-libev
sudo systemctl enable shadowsocks-libev

参考:

  1. shadowsocks-libev-GitHub项目页