ArduinoYun教程之OpenWrt-Yun与CLI配置Arduino Yun
OpenWrt-Yun
OpenWrt-Yun是基于OpenWrt的一个Linux发行版。有所耳闻的读者应该听说他是一个使用在路由器上的操作系统。其实准确地说OpenWrt是一个嵌入式Linux发型版,它可以安装在各种嵌入式芯片中,如Arduino Yun。在本节中,将为大家介绍OpenWrt-Yun系统相关的知识。
使用SSH连接Arduino Yun
SSH是Secure Shell的缩写,它是建立在应用层和传输层(详细知识可以查找OSI模型)基础上的安全协议。通俗地来说,它的作用就是加密你与操作系统之间的通讯信息。在Arduino Yun上,提供支撑SSH通讯的基础的SSH服务。它在Arduino Yun上是作为系统服务运行的,所以在系统启动之后它就运行起来了。使用SSH方式需要电脑可以通过IP地址找到Arduino Yun,所以需要使用3.1节中介绍的3种方式连接Arduino Yun与电脑。
在Linux中使用SSH连接Arduino Yun
在绝大部分Linux发行版中都内置了SSH客户端,所以可以直接发起SSH连接。连接的方式也非常简单,使用如下的命令可以不指定用户名连接:
- ssh Arduino Yun的IP地址
例如,笔者所用Arduino Yun所在的IP地址为192.168.4.103,所以可以使用如下命令:
- ssh 192.168.4.103
另一种方式是在命名中直接指定登录用户,可以使用如下的方式之一:
- ssh –l 用户名 Arduino Yun的IP地址
- 或
- ssh 用户名@Arduino Yun的IP地址
那么,我们以root用户登录IP地址为192.168.4.103的Arduino Yun对应的命令如下:
- ssh –l root 192.168.4.103
- 或
- ssh root@192.168.4.103
在以上命令之后,SSH客户端会询问你几个问题:
- The authenticity of host '192.168.4.103 (192.168.4.103)' can't be established.
- RSA key fingerprint is 81:1e:44:66:b3:1d:4f:6a:6b:a2:c2:7a:30:b1:e3:ed.
- Are you sure you want to continue connecting (yes/no)?
上面的内容就是提示这个IP地址的可靠性无法确认,询问你是否继续连接。这里我们回答“yes”继续,然后会出现如下的警告信息:
- Warning: Permanently added '192.168.4.103' (RSA) to the list of known hosts.
这里提示你将要把192.168.4.103永久性地添加到你已知的主机名列表中。这样导致的结果就是你以后访问这个地址时候不会再出现上面的问题,而是直接要求你输入登录远程访问的密码:
- root@192.168.4.103's password:
这里就需要输入我们在3. 2节中设置的密码,如果你之前没有更改则为原始密码“arduino”,之后就登录到了远程系统,如图3.25所示:
图3.25 登录系统
在登录进系统之后,命令行提示符(即图3.24最后一行)显示了当前是以root用户到名为TomArduino的远程主机上。此时的操作环境就是在Arduino Yun上了(由于命令提示与PC上的非常类似,所以需求读者仔细区分),所有的操作都是针对Arduino Yun的。在执行完所有的操作之后,可以输入exit命令退出,同时输出提示信息:
- Connection to 192.168.4.103 closed.
在Windows中使用SSH连接Arduino Yun
在Windows操作系统中使用SSH要稍微麻烦一点,因为Windows操作系统没有自带SSH客户端,所以需要下载客户端。笔者和官方都推荐使用PuTTY,它免费又好用,官方链接为:www.putty.org。
1.安装PuTTY软件
PuTTY官方提供为Windows操作系统提供了压缩文件形式和安装包两种形式,笔者推荐使用安装包形式,其文件名为putty-0.63-installer.exe。PuTTY提供的安装包是标准的Windows软件安装形式——简洁明了,如图3.26所示是欢迎页。
(1)这个页面中提示要将PuTTY0.63版本安装到你的电脑中。我们单击Next >按钮继续,这一步要我们选择PuTTY要安装的路径,如图3.27所示。
图3.26 PuTTY欢迎页 图3.27 选择安装路径
(2)笔者推荐使用默认路径。PuTTY非常紧凑,只需要占用3.5MB的空间。我们接着单击Next >按钮继续,这次要我们选择是否创建开始菜单文件夹,如图3.28所示。
(3)这一步根据读者习惯进行选择即可。默认是不创建,所以想要创建,就需要将复选框置为选中状态。接着单击“Next >”继续,这一步要我们选择一些附加执行的任务,各项含义均在图3.29中有标注。
图3.28 选择是否创建开始菜单文件夹 图3.29 选择附加任务
(4)这里同样需要根据自身喜好进行选择即可。然后接着单击Next >按钮。这一步是对之前所有步骤的总结,如图3.30所示。
(5)这里展示出了之前询问过用户的所有问题的答复。如果你对这个配置不满意,那么还可以使用< Back按钮返回之前的步骤重新配置;如果确认无误,那么单击Install按钮开始安装。在安装完成后,会出现完成的界面,并提示你阅读README.txt文件,如图3.31所示。
图3.30 准备好安装 图3.31 安装完成
README.txt文件会对一些常见问题给出建议,例如接下来需要做什么、如果软件不工作怎么办等问题。你可以自由选择是否阅读该文件,之后点击“Finish”安装完成PuTTY的整个安装。
2.使用PuTTY软件
PuTTY软件的主页面简单至极。它左侧的树状列表列出了所有的选项,这些选择通常情况下无须关心,现在唯一需要关心的就是PuTTY的连接方式,而默认的连接方式就是SSH,如图3.32所示。
与在Linux下连接类似,我们需要提供远程主机的IP地址,当然也可以通过与Linux相同的方式直接指定用户名:
- root@192.168.4.103
(1)将你Arduino Yun对应的登录用户名以及IP地址以上面所示的方式填写到如图3.33所示的输入框中。
图3.32 PuTTY主页面 图3.33 输入用户名和IP地址
(2)单击Open按钮,开始连接。在第一次连接一个远程主机的时候,同Linux类似的,它需要你保证连接操作是你所期望的,如图3.34所示。
这个提示框中有4个按钮,他们的作用分别如下:
- q 是(Y):这个按钮会将这个主机缓存,在此之后的访问就不会再出现这个提示框;
- q 否(N):这个按钮会关闭这个提示框并开始后续操作,但是在下次连接这个主机的时候还会弹出这个提示框;
- q 取消:这个按钮会取消当前及后续操作,即取消这次连接;
- q 帮助:这个按钮会打开PuTTY的用户手册,你可以在手册中寻找答案。
所以,单击“是(Y)”或“否(N)”按钮均会执行后续的操作。如果你只提供了IP地址,那么将会出现如图3.35所示的提示信息。
图3.34 安全提示信息 图3.35 未提供登录用户的提示信息
(3)这里就是要求我们提供登录的用户名。如果这是你第一次以SSH方式连接Arduino Yun,那么你只能以root用户登录,所以你需要输入“root”继续。如果你在连接的开始就提供了用户名则会提示如图3.36所示的信息。
(4)这里提示我们使用“root”用户登录,然后要求我们输入“root”用户的密码。在输入正确的密码后(密码不会显示),就进入了OpenWrt-Yun系统(准确地说是系统中的BusyBox软件),如图3.37所示。
图3.36 提供登录用户的提示信息 图3.37 成功登录系统
细心的读者可能注意到了,在OpenWrt字符LOGO的上方显示了BusyBox。BusyBox被称为Linux工具里的瑞士军刀,在嵌入式系统中非常流行。它集成了100多个最常用的Linux命令和工具。如果你想看它支持的所有命令,只需要在键盘上按两次Tab键即可。
使用CLI配置Arduino Yun
CLI是Command Line Interface的缩写,中文译名为命令行界面。CLI相对GUI(图形用户接口)的优点也非常明显,它的使用要求极低——只需要串行口,而串行接口是单片机的标配。有使用过Linux系统的读者一定对它十分熟悉,它可以完成所有在图形界面下完成的系统管理操作。如你所想的,CLI通常用来管理系统,对于OpenWrt-Yun这种紧凑的系统来说这是一种管理系统的绝好方式。
Arduino Yun中为什么使用CLI
在3.1.2节中配置Arduino Yun的方式是使用Web页面的方式进行的,它是基于一个名为LuCi的接口实现的。Web页面只提供了最常用的配置,如密码和WiFi设置。在本节中,我们将教授大家以CLI的方式管理Arduino Yun。这种方式可以完成的功能可就非常多了,接下来演示一下使用这种方式为Arduino Yun安装软件。
在Linux操作系统中,管理软件包的软件通常称为软件包管理器。它可以完成查找、安装、卸载以及依赖解决等功能。PC上Linux发行版常见的软件包管理器有RPM、APT以及Pacman等。而在Windows操作系统下,类似功能的软件有腾讯软件管家、360软件管家等。
在Arduino Yun中,准确地说是OpenWrt-Yun中使用软件包管理工具是opkg。虽然BusyBox已经内置了非常多的工具,足以满足我们绝大多数的需求,但是也不能排除需要安装一些软件的特殊情况。所以下面就来介绍一下opkg最基本最常用的几个命令。
更新软件包数据库
鉴于Arduino Yun紧张的存储资源,opkg软件包数据库是存储在RAM中的。这样,可以节省相当一部分ROM资源,但是带来的问题就是只要RAM一掉电(如重启系统),我们就需要再次更新。好在opkg软件包数据库并不庞大,而且更新的命令也非常简单,所以我们需要养成每次新安装软件之前都更新软件包数据库的习惯。更新软件包数据库使用update命令:
- opkg update
在命令的执行过程中会提示当前正在执行的操作,其内容下面所示的:
- root@TomArduino:~# opkg update
- Downloading http://downloads.arduino.cc/openwrtyun/1/packages/Packages.gz.
- Updated list of available packages in /var/opkg-lists/attitude_adjustment.
- Downloading http://downloads.arduino.cc/openwrtyun/1/packages/Packages.sig.
- Signature check passed.
- root@TomArduino:~#
以上的内容就显示更新了可用包的列表,并且签名检查也通过了。那么,接下来我们就可以查找或者安装软件了。
查找Arduino Yun中的软件包
由于OpenWrt通常是基于不同于PC的处理器架构的,所以在PC上可以安装使用的软件不一定被移植到了软件列表中。所以,这个命令可以让你确定软件是否存在于软件列表中。它的使用方法如下:
- opkg find 软件名
例如,要搜索名为fortune的软件,那么可以使用如下的命令:
- opkg find fortune
这条命令就会输出对应的软件名及其描述:
- fortune-mod - 1.2.1-2 - Fortune mod displays fortune cookies on demand
- znc-webskin-forest - 0.206-2 - forest webskin for webadmin
如果没有找到,则这条命令会有任何反馈。
查找软件包的命令不一定非要你知道全名,当你只记得软件名的一部分的时候会变得特别有用。它可以使用通配符来匹配软件。关于通配符的知识在这里不做深入介绍,只演示一个最常用到的通配符“*”。星号(*)通配符可以匹配任意多个任意字符。例如,for*可以匹配for、forabcd、for1a以及foraaaaaaa等等字符。它的一种使用方法如下:
- root@TomArduino:~# opkg find for*
- fortune-mod - 1.2.1-2 - Fortune mod displays fortune cookies on demand
- znc-webskin-forest - 0.206-2 - forest webskin for webadmin
上面的for*只匹配到了fortune-mod这个软件。我们接着看以下命令:
- root@TomArduino:~# opkg find fo*
- fortune-mod - 1.2.1-2 - Fortune mod displays fortune cookies on demand
- fowsr - 1.0-20110904-1 - fowsr is a USB Data Collector application for WH1080 compatible
- weather stations.
- Output formats includes XML, Wunderground.com and pywws.
- znc-webskin-forest - 0.206-2 - forest webskin for webadmin
这里我们可以看到,除了匹配到fortune-mod之外还匹配到了fowsr和znc-webskin-forest。而如果再次减少确定字符数,例如使用f*,则会匹配所有以f开头的软件,那个数目可就不止个位数了,读者可以自己尝试下大学霸。
注意:星号不只是可以只在结尾,它可以放在任意的位置,例如*for、f*r甚至*for*、*f*r*的形式。
安装Arduino Yun中的软件包
安装软件包使用的命令是install,它的命令格式如下:
- opkg Install 软件名
例如,安装名为fortune-mod软件,可以使用如下的命令:
- opkg Install fortune-mod
这条命令会输入如下的信息:
- root@TomArduino:~# opkg install fortune-mod
- Installing fortune-mod (1.2.1-2) to root...
- Downloading http://downloads.arduino.cc/openwrtyun/1/packages/fortune-mod_1.2.1-2_ar71xx.ipk.
- Configuring fortune-mod.
在安装完成后,我们就可以执行这个命令了。fortune-mod命令用来随机输出一句话,它执行的结果如下:
- root@TomArduino:~# fortune
- You will be Told about it Tomorrow. Go Home and Prepare Thyself.
- root@TomArduino:~# fortune
- You should go home.
提示:输入命令的时候你可以使用Tab键补全。例如你想输入fortune命令,那么你可以只输入前一部分for之后按Tab键,你就可以看到命令被自动补全了。
升级Arduino Yun中的软件包
顾名思义,升级软件包就是将当前安装的软件升级到软件库中最新的版本,它使用的是upgrade命令,格式如下:
- opkg upgrade 软件名
例如,升级fortune-mod可以使用如下的命令:
- opkg upgrade fortune-mod
删除Arduino Yun中的软件包
删除软件包是安装软件的逆过程——将系统中已经安装的软件移除。它使用的命令是romove命令,格式如下:
- opkg remove 软件名
例如,删除fortune-mod可以使用如下的命令:
- opkg remove fortune-mod
当然,使用CLI形式可以完成的功能远不止这些,其他的一些功能我们将在之后的内容中穿插介绍给读者,在这里就不再做深入的介绍。
本文选自:Arduino Yun快速入门教程大学霸内部资料,转载请注明出处,尊重技术尊重IT人!