最近入手了树莓派3代,从树莓派出世到现在(2016.04),总共买了共4片各型号的树莓派,算不上狂热的爱好者,但也算是个比较热心的用户了吧。
在此记录一些树莓派3代的使用笔记。
『1』ARMv8的Arch Linux系统?
树莓派3代的CPU是ARMv8的64位CPU,但是在Arch Linux ARM的官方网站上,并没有for Raspberry Pi 3的ARMv8版本的OS下载,现在只能下载ARMv7 Raspberry Pi 2的OS来用。不用担心,以后面包会有的。
2017.2.24更新:再次到Arch Linux ARM官网看时,发现已经有了,开源社区实在太棒。
文章来源:http://www.codelast.com/
『1』切换到 root 用户
OpenSSH7默认已经禁止了root用户登录,因此,刚安装好的Arch Linux ARM是用alarm用户登录的。
然而登录后,一堆操作(例如用pacman安装软件)都是需要root权限的,因此,需要切换到root再操作:
su root
输入默认密码 root 即可。
文章来源:http://www.codelast.com/
『2』添加中科大的源
按照这个页面的说明,在文件 /etc/pacman.d/mirrorlist 最上方添加一句:
Server = https://mirrors.ustc.edu.cn/archlinuxarm/$arch/$repo
即可。
然后用 pacman -Syu 升级系统,你就会发现快了许多。
文章来源:http://www.codelast.com/
『3』使用树莓派3代的板载的WiFi
注:在本小节的最后有更新说明,请注意看。
在Raspbian上把WiFi用起来实在是太轻松了(当然也有可能是我运气太好),只要用dd命令把Raspbian系统写到TF卡上,再插到树莓派3的卡槽里,上电,进Raspbian系统,WiFi就自然而然地可用了,完全不需要做任何配置!但是在Arch Linux ARM系统下,就没有那么爽了——
我以前在树莓派Model B+的Arch Linux系统里配置过USB WiFi,记录在这篇文章里。如果在树莓派3代上刚装好Arch Linux,就使用同样的方法去配置,会发现不能work。
为了让它work,我们先要使用rpi-update这个第三方工具来更新树莓派的firmwre。
以root用户执行:
rpi-update
可能会提示:
*** Raspberry Pi firmware updater by Hexxeh, enhanced by AndrewS and Dom*** Performing self-update*** Relaunching after update*** Raspberry Pi firmware updater by Hexxeh, enhanced by AndrewS and Dom!!! This tool requires you have readelf installed, please install it firstIn Debian, try: sudo apt-get install binutilsIn Arch, try: pacman -S binutils
文章来源:http://www.codelast.com/
所以我们按它说的,先安装另一个package:
pacman -S binutils
安装完之后,重新执行 rpi-update,遇到问你yes or no的地方都输入y即可,就会输出下面的一堆信息:
*** Raspberry Pi firmware updater by Hexxeh, enhanced by AndrewS and Dom*** Performing self-update*** Relaunching after update*** Raspberry Pi firmware updater by Hexxeh, enhanced by AndrewS and Dom*** We're running for the first time*** Backing up files (this will take a few minutes)*** Backing up firmware*** Backing up modules 4.1.20-3-ARCH#############################################################WARNING: This update bumps to rpi-4.4.y linux treeBe aware there could be compatibility issues with some driversDiscussion here:https://www.raspberrypi.org/forums/viewtopic.php?f=29&t=144087##############################################################Would you like to proceed? (y/N)*** Downloading specific firmware revision (this will take a few minutes)% Total % Received % Xferd Average Speed Time Time Time CurrentDload Upload Total Spent Left Speed100 168 0 168 0 0 111 0 --:--:-- 0:00:01 --:--:-- 111100 50.2M 100 50.2M 0 0 45414 0 0:19:20 0:19:20 --:--:-- 73368*** Updating firmware*** Updating kernel modules*** depmod 4.4.7+*** depmod 4.4.7-v7+*** Updating VideoCore libraries*** Using HardFP libraries*** Updating SDK*** Running ldconfig*** Storing current firmware revision*** Deleting downloaded files*** Syncing changes to disk*** If no errors appeared, your firmware was successfully updated to 1e84c2891c1853a3628aed59c06de0315d13c4f1*** A reboot is needed to activate the new firmware
可能是我运气不好,重启没用,板载的WiFi依然起不来。甚至于,我用 iwconfig 命令都看不到 wlan0 设备。
于是用dmesg命令来查看一下问题(dmesg用于显示和控制内核环缓冲,可帮助用户了解系统的启动信息),打印出的信息可谓是非常多,和WiFi模块相关的错误大概有下面几条(不是连在一起的):
brcmfmac: brcmf_sdio_drivestrengthinit: No SDIO Drive strength init done for chip 43430 rev 1 pmurev 24brcmfmac_sdio mmc1:0001:1: Direct firmware load for brcm/brcmfmac43430-sdio.bin failed with error -2brcmfmac: brcmf_sdio_htclk: HT Avail timeout (1000000): clkctl 0x50brcmfmac: brcmf_sdio_htclk: HT Avail timeout (1000000): clkctl 0x50
所以这里打印出来的brcmfmac又是个什么鬼?它是用于支持基于Broadcom 802.11n芯片的WiFi设备的驱动程序的名字。
因此,我们从上面的信息,是不是能这样说:WiFi模块的驱动程序没找到?
事实上,我们并不能这样推断,因为有人在树莓派的论坛里反馈说,他们的WiFi可以完全正常使用,但dmesg还是打印出了上述信息。而我个人的实验也证实了这样的说法。
文章来源:http://www.codelast.com/
那么怎么办呢?树莓派论坛里有人给出了这样一种方案:
到这个Github链接下载brcmfmac43430-sdio.bin 和 brcmfmac43430-sdio.txt这两个文件,放到系统的 /lib/firmware/brcm/ 目录下——事实上,我在下载之前查看了一下这个目录,里面确实没有这两个文件,这也是为什么我的Arch Linux ARM连iwconfig都找不到wlan0的原因了。
按上面的方法做好之后,重启Arch,再安装命令行的类图形化工具dialog:
pacman -S dialog
启用wlan0:
ifconfig wlan0 up
再使用wifi-menu程序来连接WiFi:
wifi-menu -o
这里假设在交互式设置的过程,你将WiFi的名字设置成了wlan0-NG,则下一步,就是将其设置成开机启动:
netctl enable wlan0-NG
这将创建并启用一个随计算机启动而自动运行的 systemd 服务。
文章来源:http://www.codelast.com/
再重启Arch试试?执行ifconfig,你会惊喜地发现WiFi连上了。
另外,如果发现WiFi不稳定,可以试试把WiFi的电源管理关闭:
iwconfig wlan0 power off
然后把这行命令添加到启动执行。等驱动更新到更稳定的版本或许能解决WiFi稳定性问题。
2016-09更新:
- 在一次Arch Linux ARM的系统更新中,提示错误“/usr/lib/firmware/brcm/brcmfmac43430-sdio.bin exists in filesystem”并失败,这个提示已经存在的文件恰恰就是我放到 /usr/lib/firmware/brcm 目录下的,因此,这似乎说明了Arch官方的更新已经支持了树莓派3上的WiFi模块,所以我立即把 /usr/lib/firmware/brcm/brcmfmac43430-sdio.bin 文件mv到其他备份目录下,再用pacman -Syu继续更新系统,但是更新完之后WiFi就不能用了,使用wifi-menu-o命令扫描不到我的路由器的WiFi网络。我相信这个问题是可以通过一些配置解决的,只不过我暂时还没有时间折腾。
- (接上)后来我发现,用我的手机创建的WiFi热点(WPA加密模式)可以让树莓派扫描到,并且可以连上,所以,我现在判断是树莓派3的WiFi模块与我的路由器的WiFi加密方式不兼容——但这不应该啊,百思不得其解。
文章来源:http://www.codelast.com/
『4』解决系统更新后无法使用tmux的问题
用 pacman -Syu 更新系统后,重启,再执行tmux,提示错误:
tmux: need UTF-8 locale (LC_CTYPE) but have ANSI_X3.4-1968
查了一下,找到这个Arch Linux的Wiki页面,解决方法就是:
- 编辑 /etc/locale.gen 文件,取消这一行的注释:
en_US.UTF-8 UTF-8
- 执行以下命令生成Locale:
locale-gen
- 执行以下命令设置整个系统的Locale:
localectl set-locale LANG=en_US.UTF-8
之后再执行tmux命令,不再出错。
文章来源:http://www.codelast.com/
『5』用pacman -Syu升级时出现“ca-certificates-utils: /etc/ssl/certs/ca-certificates.crt exists in filesystem”错误的解决办法
如果升级时出现以下错误:
error: failed to commit transaction (conflicting files)ca-certificates-utils: /etc/ssl/certs/ca-certificates.crt exists in filesystemErrors occurred, no packages were upgraded.
pacman -Syuwrm /etc/ssl/certs/ca-certificates.crtpacman -Su
其中第1条命令是只下载package,但不安装。
文章来源:http://www.codelast.com/
『6』Raspbian系统默认禁用ssh连接,如何启用
有一个最最简单的办法,你用了之后一定不想去试其他的方法,那就是:把树莓派安装Rabpbian系统的TF卡拔下来,用USB适配器插到一台Ubuntu台式机上,打开其boot分区,在里面创建一个名为“ssh”的文件(不含引号,文件内容为空即可),然后再把TF卡插回树莓派,就会发现ssh已经神奇地启用了。
这个原理是:Raspbian启动时会在boot分区里找名为ssh的文件,如果找到了,就会启用ssh,并把该文件删除。
文章来源:https://www.codelast.com/
➤➤ 版权声明 ➤➤
转载需注明出处:codelast.com
感谢关注我的微信公众号(微信扫一扫):