Lexsion 发布的文章

乐视路由器LBA-047-CH免拆机原厂系统开启SSH、备份固件、刷入breed

乐视路由器LBA-047-CH免拆机原厂系统开启SSH、备份固件、刷入breed

前言

这款乐视路由器虽然配置很低,处理器为QCA9531,RAM为128M,ROM为16M,2.4G频段300M无线,没有5G,1WAN口,2LAN口。但是今年双十一,乐视官网活动价19.9元,价格超级低,而且据说买五个可以包邮,看到好多网友们都买了,于是我也买了一只用于研究。虽说经历过斐讯的各位网友可能觉得没什么购买欲,但这个路由器性价比还是蛮高的。本文主要讲该路由器如何开启SSH。

读懂并实践本文,你可能需要在技能树中点亮以下技能:

1:基本的Windows系统与Linux系统操作;
2:基本的路由器组网知识;

操作警告:

修改路由器的设置,尤其是原厂固件设置界面未显示的设置项,可能会因此损坏您的路由器系统,甚至损坏设备硬件,所以请务必小心操作!学习本文需要您自担风险,本人不对您路由器可能发生的损坏负责。

软件和硬件准备:

学习本文体验这个工具需要做如下准备:
1:LBA-047-CH路由器一台(废话),本人手里这台固件版本为5.0.016S,其他版本未测试,请自行测试。
2:网线*2,不连接上级网络,1根网线就够。机器原包装只有电源适配器,没网线。
3:电脑一台,我的电脑上用的是Windows系统。
4:SSH客户端,我用的是Putty.
5:网页浏览器软件。
6: 可能需要Internet. 其实无Internet也可以。

开启SSH:

1:使用一根网线连接路由器WAN口到上级网络,上级网络要有Internet连接。如果你只是开启SSH,Internet不是必要的,另一根网线连接路由器LAN口与电脑,路由器接通电源。
2:打开浏览器,登陆管理页面,IP地址如果没修改过应该是:192.168.67.1,如果路由器之前没设置过,应该会引导设置路由器。
3:按照引导设置上网方式、无线ID、无线密码与管理密码等信息,进入管理页面后路由器就可以正常使用了。

4:点击‘更多功能’设置按钮,进入更多功能设置页。

008.JPG

此时浏览器地址栏中的地址类似为
http://192.168.67.1/cgi-bin/luci/;stok=********************************/admin/more/
5:对此进行修改,admin斜杠后面内容删除,添加部分内容。改为类似以下内容并回车进入Openwrt启动脚本设置页面,如下图:
***/admin/system/startup

006.JPG

006-2.JPG

6:对本地启动脚本进行编辑,按其要求将以下命令插入到'exit 0'前面
/usr/sbin/dropbear -p 0.0.0.0:22

点击‘/sbin/letvaccount 6’一行结尾处以将光标置于此,然后按回车键换行,插入一个新行,将上面一行代码填入。如果你想备注,行注以#标示。最后不要忘了点击提交按钮保存。

007.JPG

7:再次点击‘更多功能’设置按钮,进入更多功能设置页,点击重启路由,会询问是否确认重启,确认后路由器开始重启。

008.JPG

大约等待一分钟后确认路由器启动,前置彩色LED指示灯亮蓝色或绿色。尝试使用SSH客户端进行连接,连接成功。
Putty界面参考以下填写:

009.JPG

连接成功

010.JPG

输入用户名root,之前配置页面设置的密码,登陆成功。

012.JPG

至此,成功打开此路由器的SSH。

备份路由器分区

我们折腾路由器,最常做的就是为路由器刷入第三方固件,再刷固件之前,我们一般都会对原厂固件进行备份。一般我们两种备份方式,一种是将存储器拆下使用编程器对整个Flash制作镜像,一种是在打开Telnet或SSH的前提下使用命令行备份分区。

1:拆下Flash备份

拆下Flash备份需要有足够的焊接技术,要用到编程器,运气不好极易损坏设备。路由器常见的Flash有两种,一种是SPI Flash,另一种是NAND Flash。SPI Flash使用SPI接口存取数据,编程器实现简单,价格较低,大约三十元左右即可搞到;但NAND Flash较复杂,专业的编程器非常昂贵,价格几百到几千,业余玩家是没有财力购买这种设备的。曾有网友自购IC座与某些型号路由器自行DIY编程器,若读者有兴趣具体资料可使用搜索引擎搜索,本文暂不讨论硬件备份技术。

2:SSH登录使用命令行配合WinSCP备份分区

使用SSH登录路由器通过命令行备份分区需要有root权限。当您打开了路由器的SSH登录功能,且获取到了root账号的登录权限,您可以通过cat命令将分区备份到/tmp下,该位置在RAM中,因为路由器的RAM一般情况都是比ROM大的,所以我们可以把RAM的镜像存储在内存中。比如我们这次的乐视超级路由器,RAM大小为128M,ROM为16M。这个机器我已经成功备份了mtd0~mtd6的所有分区,以下是操作步骤。
首先确保网路连接正常,通过SSH终端连接路由器并登录,输入cat /proc/mtd 命令以列出所有分区,不同机型可能分区方案不同,我们看一下乐视这款路由器的分区:
root@OpenWrt:~# cat /proc/mtd
dev: size erasesize name
mtd0: 00040000 00010000 "u-boot"
mtd1: 00010000 00010000 "u-boot-env"
mtd2: 00e30000 00010000 "rootfs"
mtd3: 005b0000 00010000 "rootfs_data"
mtd4: 00170000 00010000 "kernel"
mtd5: 00010000 00010000 "art"
mtd6: 00fa0000 00010000 "firmware"
我们可以看出,名字为"u-boot"的mtd0分区明显是存储Bootloader的,Kernel可能表示的系统内核,art是机器的工厂数据,firmware就表示固件。
假如我们想要备份u-boot的分区数据,我们可以使用cat命令来创建备份并将其存储到/tmp。
root@OpenWrt:~# cat /dev/mtd0 > /tmp/mtd0
这条命令是没有回显信息的,当我们再次看到以下信息时,表示命令已经执行完毕。
root@OpenWrt:~#
这时我们就可以在/tmp目录下看到一个名为mtd0的文件,大小为256KB,我们可以使用WinSCP下载文件到本地,然后删除/tmp下的文件,以释放存储空间。
重复以上步骤,把mtd0改为mtd1,我们尝试运行以下命令,就可以将mtd1的数据备份到/tmp中。
root@OpenWrt:~# cat /dev/mtd1 > /tmp/mtd1
我们依然可以使用SCP客户端将文件下载到本地,然后删除/tmp下的mtd1文件。
如果我们需要,如此重复操作,可将mtd0~mtd6全部备份。我们发现,所有的文件的总大小超过了Flash的大小16M,分析文件大小可知,mtd3:rootfs_data是属于mtd2:rootfs的,mtd2:rootfs和mtd4:kernel构成了mtd6:firmware最终我们会发现,Firmware + u-boot + u-boot-env + art合起来正好是16384KB等于16M。如此看来,其实我们备份mtd0,1,5,6,即可对整个Flash空间进行了备份。

为机器刷入新的Bootloader

将机器原厂系统备份后我们就可以随意刷固件了么?别急,我们在开始随意刷入固件之前可以先为其刷入一个称之为Breed的Bootloader,通过这个Bootloader我们可以更方便安全的为路由器刷入新的固件。
看到这可能有人会问,什么是Bootloader?简单地说,Boot Loader 就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。如果想详细了解相关知识,具体参考:嵌入式系统 Boot Loader 技术内幕
为本机刷入Breed,我们需要找到与本机对应的Breed,我们可以访问作者提供的下载网站查找下载对应机器型号的的breed,下载后将文件改名为breed.bin后使用WinSCP上传至路由器/tmp目录,然后我们尝试运行mtd write /tmp/breed.bin u-boot,这时我们会发现如下提示:
root@OpenWrt:/tmp# mtd write breed.bin u-boot
Could not open mtd device: u-boot
Can't open device for writing!
这是因为当前运行的原厂固件不支持对Bootloader区写入,不仅如此,Openwrt编译时默认的配置都是不支持写Bootloader区的,如果需要Openwrt正常运行此命令,需要在编译openwrt时设置好配置文件,Openwrt的编译不在本文讨论范围。幸运的是,我在网上找到了其他网友分享的解锁u-boot临时固件,我们将此固件刷入,然后就可以正常运行写入命令了。
首先,我们下载这个临时固件ap147.bin,将其通过WinSCP上传至路由器/tmp目录,只保留与电脑连接的LAN口网线,断开路由器其他网线。然后使用sysupgrade命令刷入固件。
root@OpenWrt:/tmp# sysupgrade -F -n ap147.bin
Sending TERM to remaining processes ... netifd sleep sleep mcproxy miniupnpd zebra watchquagga ifplugd led-monitor nginx uhttpd dnsmasq monit letvremotecontr xl2tpd privoxy letvreport letvlogreport ntpd crond rcS logger syslogd klogd hotplug2 ubusd log_monitor
Sending KILL to remaining processes ... sleep sleep uhttpd letvlogreport crond
killall: led-monitor: no process killed
killall: wan_probe: no process killed
setting up led super_router:blue:wan
setting up led super_router:red:wan
setting up led super_router:green:wan
Switching to ramdisk...
Performing system upgrade...
Warning: Bad CRC, using default environment
ash: invalid number 'bootcmd=bootp;'
ash: invalid number 'setenv'
ash: invalid number 'bootargs'
ash: invalid number 'root=/dev/nfs'
ash: invalid number 'nfsroot=${serverip}:${rootpath}'
ash: invalid number 'ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}::off;'
ash: invalid number 'bootm'
ash: 0x0: unknown operand
Unlocking firmware ...

Writing from <stdin> to firmware ...
Upgrade completed
Rebooting system...

显示Rebooting后,我们会发现路由器的IP地址变成了192.168.1.20,我们登录管理页面,使用密码password登录路由器,修改密码。然后WinSCP和SSH终端使用修改后的密码通过IP192.168.1.20登录。将之前下载的breed文件改名为breed.bin后使用WinSCP上传至路由器/tmp目录,输入以下命令成功刷入。
root@Gargoyle:/tmp# mtd write /tmp/breed.bin u-boot
Unlocking u-boot ...

Writing from /tmp/breed.bin to u-boot ...
root@Gargoyle:/tmp#

然后我们输入reboot命令重启路由器。
按住复位键接通电源大约10秒左右,机器指示灯会不断闪烁,浏览器访问192.168.1.1进入Breed界面。然后我们就可以愉快的刷入固件了。

参考:

本文思路参考自:

1:(更新)解锁uboot,刷入breed,乐视路由已破解(非拆机)附官方固件+art备份64k文件
https://www.right.com.cn/forum/thread-172877-1-1.html

其他搞机参考资料:

1:乐视路由器抢先全网开箱+首拆+评价 多图(增补润色版)
http://bbs.mydigit.cn/read.php?tid=1327297
2:乐视路由器刷OpenWrt(LEDE)教程
https://www.right.com.cn/forum/thread-195788-1-1.html
3:[10-09更新]LETV 路由器刷openwrt固件---QCA高通原厂无线驱动
https://www.right.com.cn/forum/thread-194485-1-1.html
4:乐视超级路由器刷LEDE,安装SS插件
https://www.right.com.cn/forum/thread-261787-1-1.html
5:嵌入式系统 Boot Loader 技术内幕
https://www.ibm.com/developerworks/cn/linux/l-btloader/index.html
6:Breed下载页
https://breed.hackpascal.net/

记Google输入法在Google浏览器中无法正常显示候选词选择器

记Google输入法在Google浏览器中无法正常显示候选词选择器

  本人在最近一段时间突然发现Google输入法在Google浏览器中无法正常显示候选词选择器,尝试检查输入法设置,都处于正常状态,且其他软件中输入法使用正常。思来想去,发现最近有一次更新浏览器的记录,该问题是在浏览器更新之后出现的。检查浏览器与输入法版本,输入法版本为:2.7.25.128,浏览器当前版本是70.0.3538.67。尝试架好科学上网工具,打开Google浏览器,打开菜单选择:帮助-》关于。Google浏览器会检测到新版本,发稿日期当天,Google浏览器更新到70.0.3538.77,该问题解决。

  综上可判断这是一次Google浏览器与Google输入法不兼容导致的问题。

使用 Kon-Boot 绕过Windows 7登陆密码

前言

  Kon-boot 能够让用户不需要密码登陆电脑,该工具支持Windows和Mac,其原理是在于通过HookBIOS修改操作系统系统内核的引导处理,跳过SAM的检查,直接登陆系统。它对系统内核的修改是临时的,重启后就会恢复。这样就可以在不修改密码的情况下访问系统,这个在某些情况下是很有必要的。

读懂并实践本文,你可能需要在技能树中点亮以下技能:

1:基本的Windows系统操作;
2:会修改计算机BIOS设置,设置通过其他媒体启动计算机;
3:必要时需要科学上网技能;

操作警告:

  修改计算机的BIOS设置可能导致计算机无法正常启动,本文没有这项技能的教学内容,请自行通过搜索引擎学习相关内容;未经授权访问计算机系统是非法行为。本人对您学习本文的操作所引起的损失等不负任何责任,请遵守当地法律法规。

软硬件准备

  学习本文体验这个工具需要做如下准备:
1:一台装有Windows系统的计算机。
2:Kon-Boot软件包。
3:一个U盘:官方有文档建议不要大于16GB,否则可能导致引导问题;本工具文件很小,32M的U盘就足够了。
(我准备了一个2G的U盘)

操作步骤

1:下载Kon-Boot软件包

  您可以通过搜索引擎搜索下载,因为这是一个收费软件,可尝试通过搜索引擎下载一个破解版软件。比如可以在这里下载到。下载完成后自行解压并找到以下目录。

01.JPG

2:通过写入U盘制作启动盘

  首先检查计算机上不要插有其他可移动存储设备,插入准备好的U盘,记住这个U盘的盘符(比如我是H:)。参考README.txt内容,右击usb_install2_RUNASADMIN.bat,选择以管理员权限运行。
脚本会提示,确认移除了无关设备,确认是右键选择管理员权限运行的。
02.JPG

  确定,然后弹出以下内容,询问是不是要使用以下设备作为目标存储器。并且警告,磁盘中的所有数据将会被覆盖。
03.JPG

  对比Logical Drive:后的盘符,是否为U盘盘符。检查无误后点击确定,系统将调用系统自带的Diskpart来部署工具。

05.JPG

  完成后系统会有如下提示,Your Kon-Boot on USB is ready!

06.JPG

  点击确定退出即可。这时,我们的工具就制作完成了。

3:上机测试

  首先将U盘插入计算机,开机通过快捷键进入BIOS设置。如果机器启用了Security Boot,将其修改为关闭状态,设置允许通过USB启动计算机后保存。将刚才做好的U盘设为第一启动项后保存重启,或在重启后进入启动设备选项菜单选择通过U盘启动。
  然后您可以看到类似如下页面,这就表示Kona—Boot已经成功加载了。

07.JPG

  接下来Windows会开始加载,启动,完成过会进入登陆界面。

08.JPG

  在此登陆界面无需输入密码,或在密码输入框中随意输入字符,按Enter键系统直接欢迎您进入系统。

09.JPG

  至此我们就跳过了登陆密码,直接访问了系统。
  需要说明的是,这个工具只是让本次访问不需要密码,这种跳过密码登录系统的模式只是暂时的,拔掉工具U盘,重启计算机后还是需要原来的密码登录的。这不是一个密码破解工具,也不是一个密码删除工具,这是一个临时型密码跳过工具。

4:使用本工具修改密码

  某些情况下,我们可能需要修改密码。您可以直接在登陆的系统中以管理员权限运行命令提示符,或者在登陆页面状态下直接点击五次键盘上的Shift键(假如粘滞键功能未禁用,系统默认是未禁用的)。
通过在以管理员权限运行的命令提示符中输入以下命令直接修改指定用户密码:
net user [用户名] [密码]
  如图,是将用户Lexsion的密码修改为:123456
10.JPG

最后,再次声明,未经授权访问计算机系统是非法行为,请遵守当地法规。

欢迎转载,转载请注明出处

参考:

1:https://kon-boot.com/docs/#

[译]Cisco Meraki Z1刷入LEDE固件教程

前言:

本文内容主要是对OpenWrt论坛的一个帖子的翻译,原帖地址:https://forum.openwrt.org/t/build-for-cisco-meraki-z1/7939
原文:LEDE firmware for Cisco Meraki Z1
原文作者:vuhuy
(如有出入请以原帖内容为准,若能看懂英文,建议先看原帖;本文仅供参考,刷机风险自担,本人概不负责)

读懂并实践本文,你可能需要在技能树中点亮以下技能:

1:基本的Windows系统与Linux系统操作;
2:基本的路由器组网知识;
3:至少拥有一个USB转TTL工具,并且会使用它;
4:必要的情况下,可能需要科学上网技能

为Cisco Meraki Z1刷入LEDE固件

操作警告:

使用和刷入自定义固件是一个细活。您可能会因此损坏您的设备,所以请务必小心操作!使用本指南和固件需要您自担风险。LEDE和我都不对您路由器可能发生的损坏负责。

关于本编译:

LEDE已经支持Cisco Meraki Z1。但是,我需要编译一个额外的initramfs映像,以用于第一次为路由器刷机。此外,此设备在OpenWRT的TOH条目不完整且具有无效链接。我就把它放在这里以防有人需要它。

软件和硬件准备:

以下列出了所需的软件和硬件及其示例
串行终端(Serial terminal):使用minicom(Linux系统),PuTTY 3 (Windows系统)或其他自己熟悉的软件。
SCP客户端(SCP client):使用scp(Linux),WinSCP 1 (Windows)或其他自己熟悉的软件。
USB TTL转换器(USB TTL converter):基于FTDI FT232RL的主板是优质廉价的USB TTL转换器(在您最喜欢的中国网店上1.5欧元)。
(译者注:USB TTL转换器,俗称USB转串行口,我用的模块用的CP2102方案,软件使用的SecureCRT)

步骤

1:下载固件映像
2:建立root访问权限
3:备份原始固件
4:刷入 initramfs 映像
5:删除存储分区
6:刷入 sysupgrade 映像
7:更新LEDE

下载固件映像

访问我的 OneDrive 以下载预编译的二进制文件。提供了基于 LEDE 17.01.4 使用默认配置编译的initramfs和sysupgrade映像。
Meraki Z1的initramfs映像LEDE网站上是没有提供下载的,您需要在这下载以能够完成LEDE固件的第一次刷入(译者注:因为要先刷initramfs才能再刷sysupgrade)

LEDE网站会自动编译Sysupgrade映像,并可在LEDE网站上获取。从LEDE网站 (目录/ ar71xx / nand / z1-squashfs-sysupgrade.tar)下载(较新的)sysupgrade映像,或使用我的 OneDrive 上的映像 。

建议使用LEDE网站提供的sysupgrade映像。Opkg可能会针对(任何)自定义sysupgrade映像上的内核依赖性失败。如果您使用的是自定义编译映像,请使用--force-depends标志忽略此项。

建立root访问权限

为了开始刷入固件,我们需要获取路由器的root访问权限。

1:关闭设备电源并拔下所有以太网电缆。
2:拆开设备。注意拆掉橡胶垫下方的四个螺钉。
3:将USB TTL转换器连接到JP1的串行UART接口。
J1 = GND(连接到USB TTL转换器的GND)
J2 = RxD(连接到USB TTL转换器的TxD )
J3 = TxD(连接到USB TTL转换器的RxD)
J4 = Vcc(不要连接,这是最靠近USB端口的跳线)
4:打开设备电源并打开USB TTL转换器的终端软件。波特率(速度)为115200。
5:按住重置按钮10-15秒,直到设备上的LED熄灭。
6:让设备启动,几分钟后在串行终端界面输入回车。它应该输出
7:检查您是否可以使用该odm help命令:

odm help *(译注:以上内容假设您已点亮“USB TTL转换器使用”技能,并有一定电子技术常识,否则您可能难以看懂,那就不要继续了)*

8:如果路由器输出帮助文本,请跳至步骤14.否则,重复步骤5-7几次,如果路由器继续输出UNRECOGNIZED COMMAND LOGGED TO CLOUD SERVERS消息,则继续执行下一步。

9:将Z1的WAN端口连接到另一台路由器的LAN端口。此路由器还必须与Internet断开连接(拔下WAN以太网电缆)。

10:按住重置按钮10-15秒,直到设备上的LED熄灭。

11:让设备启动,几分钟后在串行终端输入回车。它应该输出

12:通过键入odm help命令来检查是否可以使用ODM命令。

13:如果路由器输出帮助文本,请跳至步骤14.否则,如果路由器继续输出UNRECOGNIZED COMMAND LOGGED TO CLOUD SERVERS信息,请多次尝试重复步骤10-12。在这一步,odm help命令对我有用。如果您继续看到此信息,那么很遗憾,您当前版本的固件不能使用此方法获取root权限。

14:首先我们要更改设备的序列号为Q2XX-XXXX-XXXV以准备获取root权限,这是漏洞利用的一部分。如果您不知道您原来的序列号,请写下您的原始序列号。它通常印在Z1底部的标签上(或使用步骤15中的命令直接读取)。(译者注:意思可以先用步骤15的方式读出原来的序列号,自己找个地方记下来。因为待会儿完事要重新把原来的序列号写回去,现在我们为了利用漏洞,临时先改一下序列号)

odm serial_num write Q2XX-XXXX-XXXV

15:检查序列号是否更改为Q2XX-XXXX-XXXV。

odm serial_num read

16:如果序列号已经正确更改,请关闭设备电源并在重新打开设备电源时在电脑串行终端中按住“s”键,直到出现Busybox提示符。
Got magic key s

BusyBox v1.20.2 (2014-09-19 12:42:33 PDT) built-in shell (ash)
Enter 'help' for a list of built-in commands.

/ #

17:请依次运行以下命令获取固件的root权限。这些命令将删除路由器中一些配置文件和日志文件。如果你想保留这些文件,请复制一份!(译者注:文中没有提供配置文件备份方式)
/ # cd /storage/
/ # rm ./config*
/ # rm ./odm_test.log
/ # echo "serial_allow_odm true" > ./config
/ # echo "serial_access_enabled true" >> ./config
/ # echo "serial_access_check false" >> ./config
/ # echo "valid_config true" >> ./config
/ # cp ./config ./config.local
/ # exit

18:输入exit命令后,设备将继续引导。

19:将序列号更改回原始序列号。
m001122334455:/# odm serial_num write

20:您现在已经拥有root访问权限。请注意,如果您将路由器连接到互联网,您可能会再次失去root权限。

备份原始固件

通过root权限,我们现在可以创建原始固件的备份。如果出现问题,或者您想恢复原厂固件时,可以使用它。

1:如果您使用其他路由器来获取root权限,现在请断开所有网线。

2:通过网线将电脑连接到路由器Z1上的LAN1网口。

3:重新获取路由器IP地址(提示:它是网关地址)。

4:使用串行终端设置root密码。
m001122334455:/# passwd

5:输入cat /proc/mtd命令以列出所有分区。您的分区方案可能不同,但对于mtd0到mtd4(包括mtd4)应该是相同的。
m001122334455:/# cat /proc/mtd
mtd0: 00020000 00020000 "loader1"
mtd1: 007e0000 00020000 "bootkernel1"
mtd2: 00020000 00020000 "loader2"
mtd3: 007e0000 00020000 "bootkernel2"
mtd4: 06fe0000 00020000 "ubi"
mtd5: 00020000 00020000 "origcaldata"
mtd6: 0001f800 0001f800 "board-config"
mtd7: 0087d800 0001f800 "rootfs-wired-9-144173-1-2"
mtd8: 0086a000 0001f800 "rootfs-wired-9-144173-1-1"
mtd9: 0501a800 0001f800 "storage"
mtd10: 0003f000 0001f800 "caldata"

6:为loader1通过使用cat命令来创建备份并将其存储在/storage/文件夹上。
m001122334455:/# cat /dev/mtd0 > /storage/mtd0 //译注:mtd0就是loader1分区,后面的bootkernel1对应使用mtd1,以此类推

7:使用SCP客户端检索备份。使用SCP协议建立连接,用户名为root,密码为步骤4中设置的密码。

8:当你在本地PC上检索并存储备份后,从路由器中删除备份。使用SCP客户端功能或在串行终端中使用rm命令来删除它。
m001122334455:/# rm /storage/mtd0
(译注:作者没有给出SCP软件使用方法,因为您可以使用带GUI的软件,否则您的技能树可能不支持您学习本文内容)

9:为bootkernel1,loader2,bootkernel2,board-config和caldata分区重复步骤6-8的操作。如果一次执行此操作,您可能会因此耗尽内存。(译注:所以请一个一个来,避免在删除上一个备份前创建下一个备份)

10:另外,需要备份storage分区。这是一个很大的分区,所以只需使用 SCP 将/storage/文件夹中的所有文件传输到本地PC即可。(译注:没法用前面步骤6-8办法)

11:要验证备份数据是否正确,请再次重复步骤6-9,并比较(例如运行checksum软件或在Linux系统中使用cmp命令)两次获取的文件结果是否相同。(译注:作者没有提供具体操作,只提供了个方法)

刷入initramfs映像

重刷该路由器固件由两部分操作组成:刷入initramfs映像和刷入sysupgrade映像。

1:将PC连接到Z1上的LAN1端口。它应该之前已经连上了,你刚才确实已经做了备份,不是吗?

2:在本地计算机上搭建HTTP服务器以提供initramfs映像。
(译注:作者没有给出具体操作过程,如果您之前给别的路由器刷过第三方固件,应该是会这个操作的,否则可以考虑先通过搜索引擎学习一下,或参考下一条译注。)

3:检查您的计算机本地IP地址(提示:它的IP地址是由Z1的DHCP分配的)

4:串行终端中使用wget命令将initramfs映像下载到路由器中的/storage/文件夹中。
m00180A167ED0:/# wget http:/// -O /storage/initramfs.bin
(译注:译者本人不是通过这种方式将映像下载到/storage/文件夹的,其实可以使用SCP软件直接上传的方式,取代上面2-4的操作。另外,您没看错,我也没翻译错,下面又出现了一个步骤4,原文中就是写了两个步骤4。这个是教您校验映像文件,您可以使用SCP软件再上传一个initramfs映像文件,改名为:initramfs2.bin,取代下面条目4中第一条命令)

4:您可能想验证下载的 initramfs 映像。下载第二个并比较是否存在任何差异(它不应该存在差异,而cmp命令也不应该返回任何输出)。
m001122334455:/# wget http:/// -O /storage/initramfs2.bin
m001122334455:/# cmp /storage/initramfs.bin /storage/initramfs2.bin
m001122334455:/# rm /storage/initramfs2.bin

5:使用 dd 命令将下载的 initramfs 映像写入 bootkernel1 分区。
m001122334455:/storage# dd if=/storage/initramfs.bin of=/dev/mtdblock1

6:使用rm命令删除下载的initramfs映像。
m001122334455:/# rm /storage/initramfs.bin

7:使用reboot命令重新启动路由器。
m001122334455:/# reboot now

8:如果一切都正确完成,LEDE现在应该启动。检索您的计算机新的本地IP地址。如果LEDE无法启动,请不要继续!
(译注:LEDE是否成功启动,是能够在串行终端中看到的回显信息的,如果您看不懂,可能您不太适合阅读本教程)

9:串行终端中使用wget命令将initramfs映像下载到路由器中的/tmp/文件夹中。
root@LEDE:/# wget http:/// -O /tmp/initramfs.bin

10:您可能想验证下载的initramfs映像。下载第二个并比较是否存在任何差异(它不应该存在差异,而cmp命令也不应该返回任何输出)。
root@LEDE:/# wget http:/// -O /tmp/initramfs2.bin
root@LEDE:/# cmp /tmp/initramfs.bin /tmp/initramfs2.bin
root@LEDE:/# rm /tmp/initramfs2.bin

11:使用dd命令将下载的initramfs映像写入bootkernel3分区(recovery)。
root@LEDE:/# dd if=/tmp/initramfs.bin of=/dev/mtdblock3

12:使用rm命令删除下载的initramfs映像。
root@LEDE:/# rm /tmp/initramfs.bin

13:使用reboot命令重新启动路由器。
root@LEDE:/# reboot now

删除存储分区

存储器中还有一些LEDE不使用的存储分区。我们可以在刷入sysupgrade映像之前删除它们,以释放一些空间(大约100MB)。

1:使用ubinfo命令列出所有的UBI卷。
root@LEDE:/# ubinfo -a

2:使用ubirmvol命令删除列出的UBI卷,但board-config卷除外。对每个UBI卷重复该命令。永远不要删除board-config卷!
root@LEDE:/# ubirmvol /dev/ubi0 -N

3:使用ubimkvol命令创建新的calibration data卷。
root@LEDE:/# ubimkvol /dev/ubi0 -N caldata -s 252KiB

4:使用ubinfo命令验证您的UBI卷。它应该显示有两个卷:board-config卷和新创建的caldata卷。
root@LEDE:/# ubinfo -a

刷入 sysupgrade映像

接下来将为路由器刷入sysupgrade映像。刷入sysupgrade映像将重新填充calibration data卷,创建rootfs并自动展开rootfs_data到剩余的UBI可用空间。

1:将PC连接到Z1上的LAN1端口。它应该之前已经连上了,你刚才确实已经做了备份,不是吗?

2:在本地计算机上设置HTTP服务器以提供sysupgrade映像。

3:串行终端中使用wget命令将sysupgrade映像下载到路由器中的/tmp/文件夹中。
root@LEDE:/# wget http:/// -O /tmp/sysupgrade.tar

4:您可能需要验证下载的sysupgrade映像。下载第二个并比较是否存在任何差异(它不应该存在差异,而cmp命令也不应该返回任何输出)。
root@LEDE:/# wget http:/// -O /tmp/sysupgrade2.tar
root@LEDE:/# cmp /tmp/sysupgrade.tar /tmp/sysupgrade2.tar
root@LEDE:/# rm /tmp/sysupgrade2.tar

5:使用sysupgrade命令执行sysupgrade 。
root@LEDE:/# sysupgrade -v /tmp/sysupgrade.tar

6:恭喜您,您在Meraki Z1上运行LEDE!您现在可以拆除USB TTL转换器并将路由器装回外壳。

更新LEDE

您现在可以通过执行sysupgrade命令将LEDE更新为任何更新的版本。不再需要initramfs 映像了!您可以在LEDE网站上下载Meraki Z1的新sysupgrade映像。
使用SSH访问路由器并使用wget和sysupgrade两条命令执行升级。

root@LEDE:/# wget http://<your_local_ip>/<sysupgrade_file> -O /tmp/sysupgrade.tar
root@LEDE:/# sysupgrade -v /tmp/sysupgrade.tar

不要忘记调整/etc/sysupgrade.conf 告诉LEDE在升级过程中应该保留哪些设置。

参考

https://servernetworktech.com/2016/02/pwning-the-meraki-mr18/
https://servernetworktech.com/2017/06/pwning-the-meraki-mr18-again/
https://wiki.openwrt.org/toh/meraki/z1

安装Ubuntu系统时硬盘分区方案

安装Ubuntu系统时硬盘分区方案

了解分区类型

1:/.分区

  根目录,一般用于存储系统文件的分区。

2:swap分区

  交换分区,也可表示一种文件系统,它是Linux系统的虚拟内存。
  在Windows系统下,虚拟内存是以存储在分区中的文件形式存在的,文件名为pagefile.sys;在Linux系统下,虚拟内存需要使用独立的分区,该分区有专用的swap文件系统。

3:/boot分区

  该分区包含了操作系统内核,和一些启动过程中的必要文件。一般情况没有必要单独分区。
在很多老旧的教程中,都会让用户在/boot目录上挂载一个大小为100MB左右的独立分区,并推荐把该/boot放在硬盘的前面——即1024柱面之 前。事实上,那是Lilo无法引导1024柱面后的操作系统内核的时代的遗物了。当然,也有人说,独立挂载/boot的好处是可以让多个Linux共享一个/boot。
其实,无论是基于上述的哪种理由,都没有必要把/boot分区独立出来。首先,Grub可以引导1024柱面后的Linux内核;其次,即使是安装有多个 Linux,也完全可以不共享/boot。因为/boot目录的大小通常都非常小,大约20MB,分一个100MB的分区无疑是一种浪费,而且还把把硬盘 分的支离破碎的,不方便管理。另外,如果让两个Linux共享一个/boot,每次升级内核,都会导致Grub的配置文件冲突,带来不必要的麻烦。而且,不独立/boot分区仅仅占用了根目录下的大约20MB左右的空间,根本不会对根目录的使用造成任何影响。
但值得注意的是,随着硬盘容量的增大,无法引导Linux内核的现象再次出现,这也就是著名的137GB限制。很遗憾,Grub是无法引导137GB之后 的分区中的Linux内核的。如果你不巧遇到了这样的情况,你就要考虑把/boot独立挂载到位于137GB前方的独立分区中,或者索性就把 Linux的分区都往前移动,让根目录所在分区位于137GB之前。
以上关于/boot分区介绍来自 ropenyuan 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/RopenYuan/article/details/44917271?utm_source=copy

4:/home分区

  用户的home目录所在地,这个分区的大小设置取决于有多少用户需求。如果是多用户共同使用一台电脑的话,这个单独分区是完全有必要的,且根用户也可以很好地控制普通用户使用计算机,如对用户或者用户组实行硬盘限量使用,限制普通用户访问哪些文件等。
  有独立的分区挂载/home,即使遇到Ubuntu系统莫名挂掉,也可以直接重装系统,而不影响存储于/home下的用户文件。就像常有人说Windows系统不要把重要文件放系统盘一样。

5:/var;/tmp 分区

/var:系统日志记录分区。
/tmp:用于存放临时文件。
  这两个目录是用于存放日志和临时文件的。建议将其独立挂载到单独分区的教程一般面向服务器,这样有利于提高服务器性能,个人用户桌面级应用就没有这个必要了。

分区方案

1:只有一个主分区

  /.(主分区):主分区,只分这一个区,将所有空闲空间(free space)都分给主分区。

  不推荐使用这种方法,没有swap交换空间,当然物理内存够大也可以。

2:主分区 + swap分区

  Swap(虚拟内存):swap分区,如果物理内存等于或低于512M,大小设为物理内存两倍。物理内存大于512M情况一般设置为电脑内存大小,或者可以再加1、2G;

  /.(主分区):主分区,其他剩余空间都分给主分区。

  一般情况这种方案即可。

3:主分区 + home单独挂载 + swap

  /.(主分区):主分区,分配20G;

  Swap(虚拟内存):swap分区,如果物理内存等于或低于512M,大小设为物理内存两倍。物理内存大于512M情况一般设置为电脑内存大小,或者可以再加1、2G;

  /home(用户存储数据用):逻辑分区,存储用户数据,这方面类似于Windows下User文件夹,要尽可能大,剩余空间分配给这个分区。

  考虑上文提到的文件安全的情况,可以用这种方案,单独分区挂载/home。

Solidworks开坑:绘制摇杆-已知球缺求原球体

前言

  此项目来自于工作需求,起因是我司维护的某款机器一个零件缺货,该零件是用于将摇杆电位器连到机器外操作摇杆的一系列零件中的一个结构件。因该机器是一款儿童玩具,损坏几率不低,没有本零件将无法为其修复。为此计划使用3D打印机制作该零件,且因公司不提供该零件的3D模型文件,为解决此问题,建立本项目。

准备

  因之前没有接触过3D建模领域,所以该项目查找了大量网络资料。通过查找资料得知,这种工件类设计使用Solidworks(后称SW)比较合适。于是通过查找资料,采用边学习边做的方式尝试对该零件进行建模。

  零件形状如图所示;
摇杆1.png

  考虑零件形状,组成结构类似于一个半球上加一个圆柱,内部是空的,该零件是左右对称的解构。通过搜索引擎得知,SW可以通过草图旋转产生3D模型,于是我们就需要设计一个可以用于旋转产生的草图。
草图A.png

  接下来事情是要确定下面那个类似半球的结构,其底面直径可以测出,但是观察发现,这个并非一个半球,这个球缺比它所属的球的半球小,这样我们就要先算一下这个球缺所属球体的数据。

求解过程

  我先画了一个截面图,能够测量出的数据有a = 14.5mm,b = 15.75mm;设r为原始球体的半径,则a+y = r。
截面图.JPG

  根据三角行外接圆半径公式
R = abc/4s,下图
公式1.JPG

  这个公式中的字母与我图中画的无关,其中R是圆的半径,abc分别为三角形三边的长,S为三角形的面积。如图可见,三角形BCC'是这个圆的内接三角形。

  公式套到我的图中就是:
r = (2bcc^′)/(4 2ba/2) ;下图
公式2.JPG

  代入勾股定理得;
r = (2b(√(a^2+b^2 ))^2)/(4 2ab/2),下图
公式3.JPG

  化简后得到:
r = (a^2+b^2)/2a,下图
公式4.JPG

  将数值代入公式;
r = (14⋅5^2+〖15.75〗^2)/(2×14.5)= 15.8(约值),下图
公式5.JPG

  至此,我算出了那个球的半径r约为15.8mm
  那么,y值约为15.8-14.5 = 1.3mm