树莓派 3B 入门 openSUSE Leap 42.3
以下树莓派简称 RP。斜体表示要执行的指令,[] 表示指令参数。本文有多个链接,一般是中文 wiki,可以查看使用方法。
版权归本人所有,转载请注明原作者!
[0] About
openSUSE 是桌面服务器系统 SUSE 的开源版本,以稳定著称,系统工具 YaST 强大,在中国可能流行度不够。Leap 版本是稳定慢更新版,Tumbleweed 是快速更新版。SUSE 最早做出来适用于 RP3B 的 ARMv8 系统,支持几乎所有硬件。本篇将入门 openSUSE Leap 42.3。
[1] Image
打开 RP3B 的系统介绍页面,有多个版本的系统镜像可选,对应不同 GUI 或者无 GUI 的 JeOS。由于那几个 GUI 和系统本身很吃硬件,我选择 JeOS。准备好空的 Micro SD 卡,下载系统 image 到 Linux PC,用 fdisk -l 确认 SD 卡的编号(如 sdb 还是 sdc),注意需要软件包 xzcat。然后执行以下指令,注意 [image.raw.xz] 替换为文件位置,[sd] 替换为 SD 卡编号,参数不能少任何一个:xzcat [image.raw.xz] | dd bs=4M of=/dev/[sd] iflag=fullblock oflag=direct; sync。
dd 完成后,应该能看到两个分区 EFI 和 ROOT,不完全占用所有空间。将 5V 2A 或更强 USB Micro-B 电源给 RP3B 供电,不要拿旧线来用,否则工作不稳定!启动后,可以看到界面输出应该填满显示器(ARMv7 系统会有空),分区扩展会自动完成。如果有错误,应该是写入的问题,blocksize (bs) 的指定是必须的。
[2] System
启动后,可以 ssh 或者直接连接键盘操作 RP,root 默认密码 linux。
YaST 是个强大的系统管理工具,能把系统配置到需求状态,可以设置网络、管理软件、控制内核、修改用户......执行 yast 可以启动 YaST。方向键移动,功能键对应不同操作,空格键用于勾选,enter 键用于确认或选择。图形界面很容易操作,不再介绍,可以参考 wiki。用好 YaST,就用好了 openSUSE。
默认只有 vi 编辑器,nano 编辑器要额外安装。
服务管理用 Service Manager。在 Shell 中 service 后接指令即可,service [service] start/stop/status 可以启动或停止或查看服务状态,service [service] enable/disable 可以设置开机启动或不启动服务。在 YaST/System/Services Manager 可以 GUI 操作。
RP 没有实体时钟。设置时间在 /YaST/System/Date and Time 中,将时区改为任意中国城市,在 Other Settings 中设置自动同步:
设置时间同步Linux 编译各种东西是日常。gcc git make automake cmake wget build 这些软件肯定要。对于其它语言需求,请根据软件包列表和自身需要安装。
[3] Network
(下面的 [if] [dev] 表示 interface,即网络端口,请填写端口名称,如 wlan0 eth0;[phy] 是端口序号,如 0 1。请根据情况替换。)
RP3B 有两个网络芯片:BCM43438 Wi-Fi 芯片,支持 2.4G Wi-Fi,openSUSE 上需要特别操作才能用;LAN9514 以太网控制器,最高 100M 速率,名称 eth0,默认配置为自动连接。修改 /etc/dracut.conf.d/raspberrypi_modules.conf 这个文件(vi 编辑器),改为以下内容,之后执行 mkinitrd,并重启:
add_drivers+=" bcm2835-sdhost bcm2835_dma mmc_block "
omit_drivers+=" sdhci-iproc"
Wicked 是 openSUSE 指令行的网络管理器。wicked ifup/ifdown/ifcheck/ifreload [if] 可以启动或关闭或检查或重启端口,wicked ifstatus/show [if] 可以看端口信息。
IFConfig 可以用于配置临时配置网络端口,查看各端口情况和名称:ifconfig [dev] address/netmask/broadcast [IP]/[Netmask]/[Broadcast] 可以为一个端口配置 IP 地址、掩码、广播地址。ifconfig [dev] 可以查看端口状态信息,ifconfig [dev] up/down 可以启动或者关闭端口,ifconfig [dev] mtu [mtu] 可以设置 MTU 值。
IPRoute2 也可以进行网络管理。ip link 可以获取网络信息。ip link show dev [dev] 可以查看某个端口的信息。ip link set [if] up/down 启用或关闭某个端口。ip address show 可以打印所有地址信息。ip addr add [IP]/[netmask] broadcast [broadcast] 可以配置端口静态 IP、掩码、广播地址([netmask] 对应数字,255.255.255.0 是24,255.255.0.0 是16,255.0.0.0 是8,255.255.255.255 是32)。ip route add default via [IP] 可添加路由出口,出口即网络包从哪出入。
查看无线网络,可以用 iw。可以 iw list 查看所有芯片及支持能力。iw dev [dev] info 可以查看指定无线网络芯片信息。iw dev [if] scan 可以扫描可连接 Wi-Fi,但没法连接 WPA 加密网络。
NetStat 可以看到网络总体连接情况,netstat 输出信息,netstat -r 可以看到路由列表和对应端口 IP,netstat -i 可以看到活跃的网络端口信息,netstat -h 查看用法。
RFKill 用于屏蔽无线通信:rfkill list 列出已连接无线设备及序号,rfkill block/unblock [no] 可以屏蔽或解除某个设备。一般不会用到。
如果要使用 PPPoE 拨号,需要安装软件包 rp-pppoe。pppoe-setup 即可开始配置,按照引导一步步来。配置后,pppoe-start 启动,netstat -r 应该能看到端口 ppp0,pppoe-stop 停止。如果拨号后ip route 查看到默认出口不是 ppp,用 ip route 加入并更改默认路由。
YaST 可以在 Shell 中图形界面编辑网络设置,在 Syetem/Network Settings。
YaST 网络管理界面安装桌面后,一般有 Network Manager 可选用。在 YaST 网络管理页面把管理器换掉,然后桌面右下角的 Network Manager 插件就能用了,命令行是 nmcli 开头。
[4] Software Management
Zypper 是命令行软件管理工具。zypper update 可以更新软件列表和软件,zypper in [pack] 安装软件,zypper search [name] 可以搜索(含关键字的所有包)并显示是否安装了软件包,zypper rm [pack] 可以删除软件,zyppper repos 可以查看已配置的源。
YaST 第一面就是软件管理,Software Management 即软件管理器,Media Check 是搜索软件包光盘,Software Repositories 是设置软件源。
在高亮位置按空格可以选择操作,如 + 代表安装,- 代表卸载。openSUSE 软件列出了已编译的软件包。
[5] GPIO
树莓派的 GPIO 是个好玩的东西,能扩展很多功能,编译 GPIO 程序需要库。
wiringPi 是简单流行的一个 C 库,很容易找到帮助和示例。按照指引即可安装:git clone git://git.drogon.net/wiringPi 下载代码,cd wiringPi 进入目录,git pull origin 确认是新版,./build 进行编译安装。gpio -v 可以查看 RP 型号和 wiringPi 版本,gpio readall 可以查看很多信息,编译需在 gcc 指令末尾加上 -lwiringPi。
RPi.GPIO() 是个 Python 库,适合会 Py 人,容易使用。先安装管理工具 pip,然后 pip install rpi.gpio 下载安装。在代码文件开头加入 import RPi.GPIO as GPIO 即可使用。本人不会 Py,看这里的说明吧,还可以找找别人的 examples。
BCM2835 C 是比较底层的库,有点难用,兼容性强。访问网站,找到以 .tar.gz 结尾的链接下载文件(可以在 RP 上用 wget),tar zxvf [bcm2835-1.xx.tar.gz] 解压文件,cd bcm2835-1.xx 进入目录,make 并 make install 安装。根据版本不同,1.xx 替换成下载的版本。编译时要在 gcc 指令末尾加上 -lbcm2835 才可以。查看官方示例、别人的例子和 .h 文件慢慢学习吧。下面是测试程序,如果能编译就是已安装并能用:
#include <stdio.h>
#include <stdlib.h>
#include <bcm2835.h>
int main()
{_Bool test = bcm2835_init();
bcm2835_close();}
[6] Desk
openSUSE 上可选的桌面很多,已配置的 images 就有几种不同的桌面,能安装的更多。打开 YaST Software Management,搜索 X11,把 xorg-x11 xorg-x11-server yast2-x11 和有关的安装了,这是所有 GUI 必要的。
推荐 LXDE。搜索 LXDE,把 lxcc lxdm lxde-common lxde-common-branding-openSUSE patterns-openSUSE-lxde 选择安装,所需时间比较多。重启后,应该能见到 LXDE 桌面。
如果想要 VNC,可以安装 x11vnc 和 tigervnc,然后 vncserver 配置密码。
[7] End
入门就不写这么多。openSUSE 源于 SUSE,工具很强,有技术支援时很好用。在中国不算流行,服务器也不稳定。系统本身为了先进,占用很多硬件运行东西,运行慢。推荐英语好、有耐心的人折腾,中文 wiki 可以看看。