一段时间以来,我一直是各种形式的Raspberry Pi计算机的忠实拥护者 。 我有很多人,每个人都扮演服务器角色。 在大多数情况下,它们工作得非常好,并且我知道它们所消耗的少量电量可以降低费用,因此我是安全的。
如果您以前阅读过我的博客,那么您可能已经阅读了有关如何将台式计算机迁移到Pi 3的说明。这在相当长的一段时间内都奏效,但是我最终不得不接受编辑大型图形和多媒体文件是一项艰巨的任务。问题,因此我将其替换为Intel NUC 。 不过,我仍然渴望进行Pi实验,因此我决定进行“假设分析”练习,看看它是否可以在路上生存。 那就是我从零配件箱中退出Pi Pi退出退休的时候。
为什么要带树莓派旅行
“我为什么要这么做?趋势肯定是要使用功能尽可能强大的设备旅行吗?”
但是,问题是多方面的:如果您的角色如此,以至于您需要能够在旅途中修复软件/系统,而又不总是能够使用“备用”笔记本电脑,该怎么办? 在我乘火车旅行的时候,我不得不随身带上笔记本电脑,这在一天当中是很痛苦的。 然后是丢失/盗窃/损坏的问题。 笔记本电脑很容易成为目标,它们可能会被留在火车上,或者您可能被抢劫。 或存在“ 邪恶女仆 ”场景,其中有人在您不知情的情况下干扰了您的设备。 清单继续。
因此,这是使用Pi Zero便携式计算机所能获得的:
- 它足够小,可以放在手提行李或口袋中。
- 如果您的丢失,被盗/损坏,它的价格很便宜,只需8美元即可购买另一个。
- 整个操作系统和数据都保存在一个只有指甲的小“磁盘”上,价格便宜,并且很容易在各种各样的零售店中购买。 如果需要,您可以从电话借来的卡中创建一个新卡。
- 具有脱机或联机工作能力的完整开发环境。 它还可以充当SSH服务器,以便多个人可以一次使用它。
- 安全存储:如果您对偏执狂或在某些航空公司旅行时,可以取出“磁盘”并将其存储在钱包或个人中。 如果您的计算机在运输途中被盗,请立即购买另外一台:您已经设置好操作系统。
- 耐网络:全球各地都有特定国家/地区的WiFi频率,简单的文本文件更改即可让您在数分钟内达到标准。
- 独立于键盘:您可以使用兼容的蓝牙键盘,但是当您需要做更多工作时,只需使用On-The-Go电缆将任何USB键盘插入备用USB接口即可。
- 耐电源:我的3300mAh移动电源可以使Pi Zero运行约8个小时,但是如果其他所有故障,则可以使用电视的USB连接器为其供电。 一般来说,如果电视具有HDMI,则电视也将具有USB插Kong,零位仅消耗120mA电流。 或使用某人的手机充电器!
- 最后,如果您不幸丢失或损坏了“磁盘”,则可以通过从云中的安全位置下载2GB映像并将其刻录到新卡上来轻松创建另一个磁盘。 也可以尝试使用普通笔记本电脑。
这对我来说足够动机了!
这是我的成品,上面有啤酒杯垫。
![Pi Zero W设定 Pi Zero W setup](https://i-blog.csdnimg.cn/blog_migrate/5b692d7ca63b0643e06de2eae995c3e6.jpeg)
我如何设定Pi Zero出行
在我看来,便宜的Pi Zero一直是个奇怪的野兽。 它具有单核CPU,并具有节俭的512MB内存,其中一些必须与板载视频共享。 当前基于Debian Stretch的Raspbian操作系统被吹捧为可以使用基于LXDE的“ Pixel” GUI桌面实现“零”,并且确实可以加载和启动它-但实际上,可怜的东西实际上很难管理GUI 和运行有用的软件。
不过,我决心尽力尝试一下,并使用内存占用最小的应用程序进行设置。 我已经在Pi 3上经历过这种循环,所以它几乎是一样的-甚至更多! 请记住,这是要成为公路战士的计算机,这是我想要的:
Web browser | 轻巧但兼顾隐私 |
具有IMAP功能并无缝支持GPG | |
XMPP/Jabber client | 废话 |
VPN client | 我在路上,记得 |
Tor client | 一直有用... |
Music | 我携带一些MP3,但是互联网广播也很酷 |
Multiple desktops | 小屏幕很有用 |
Editor/IDE | 嘿,这是一台正在运行的计算机! |
FTP/SFTP client | 嘿,这是一台正在运行的计算机! |
总而言之,对于我来说,这是一个非常有用的捆绑软件,如果我实现了一个平衡的环境,它实际上可以工作。
硬件
硬件有点挑战。 电池不是问题,因为我有各种容量不同的可充电电源,所以实际上只是一个问题,那就是每天要选择一个合适的电池。 唯一的前提条件是电池在使用时应该能够充电,而我所有的Jackery品牌电池都可以做到这一点。
对于我的“磁盘”,我选择了内部标准的32GB SanDisk Extreme microSDHC。 它们非常可靠,而且大小足够大,可以容纳许多软件和数据,同时仍然可以负担得起。
我预计,使用Zero的mini-HDMI连接器可以将视频输出输出为HDMI。 这非常适合我的目的,因为大多数酒店电视使用此界面。 音频也将通过HDMI传输。
这就留下了人机界面设备(HID),可以预见的是,这引起了最大的惊慌。 我满怀激情地讨厌蓝牙,而零号的有限连接器让我不得不硬着头皮,使用蓝牙键盘和鼠标,最好是一个又一个又小的。 如果您还拥有一个很棒的鸣笛键盘,那么拥有一台小型计算机是没有意义的,所以我的不愉快追求就开始了。
蓝牙问题
零号板上的USB连接器数量有限-如果允许使用电源连接器,则只有一个,这显然意味着您的连接选项有限。 您始终可以使用USB扩展器集线器,但是要携带更多的电源,包括另一个电源。 基本上,您可以尝试通过蓝牙连接键盘和鼠标。 我不相信有关它如何“ 轻松地将各种设备连接在一起 ”的炒作,并且我与各种据称的标准设备进行了角力,试图使这些血腥的东西很好地一起玩。 Pi的部分问题(我认为)是WiFi和蓝牙之间发生了一些意想不到的交互,导致发生了奇怪的事情。 我的问题是我能够使用键盘或鼠标连接到Pi,但不能同时可靠地连接到Pi。 是的,我有各种各样据称遵循标准的蓝牙设备,但都没有一个决定能够正常工作。
此时,我想知道是否有蓝牙Samaritan的帮助热线,但没有,那么我该怎么办?! 暂时,我求助于使用带有两个USB插座的Apple USB键盘; 这对于设置非常有用,但对于上路没有帮助。 最后,我花了数小时浏览eBay和Amazon,然后找到了它: 适用于Windows iOS的3合1迷你无线蓝牙键盘鼠标触摸板Android UK-背光,超薄,内置可充电电池,QWERTY ”。 在纸上很完美,但是行得通吗? 我寄去了这笔钱,四天后,一个瘦小的包裹从中国运来。 而且它的血腥效果很好! 第一次,每次都像Pi和薯条那样与Pi结合。 我Swift下令再下一次—发生了事故,而且我不想陷入困境。
因此,在完成我的硬件阵容之后,我可以安心安装Pi。
GUI和Pi
回到我的软件需求,我对最小的桌面环境进行了长时间的认真考虑,并选择了随附的LXDE桌面,该桌面在其他项目中使用了几次。 尽管Pi在屏幕处理方面有些挣扎,但总体来说效果不错,因此我开始设置软件。
Web browser 1 | Midori:在尺寸和现代性之间做出很好的折衷。 支持私人浏览并与Pi捆绑在一起 |
Web browser 2 | 图形模式下的Links2:轻巧,快速,安全,可与代理一起使用 |
Sylpheed:体积小,重量轻,并且与GPG兼容 | |
XMPP/Jabber client | 亵渎。 这很棒! |
VPN client | 开放VPN |
Tor client | 哈! 再次链接2 |
Music | SMPlayer:MPlayer的GUI |
Editor/IDE | Geany:轻巧但功能强大 |
Image viewer/editor | 平塔 |
FTP/SFTP client | Filezilla |
Other stuff: | |
Midnight Commander | 不只是文件管理器(稍后介绍) |
Tor proxy server | 一直在线,所以我可以根据需要使用Tor |
Nmap | 我有时候需要测试 |
vnStat | 监视wlan0接口上的数据使用情况 |
SSH/SFTP server | 该发行版的标准发行 |
UFW | 防火墙; 不能太小心! |
Gopher client | Gopherspace! 它仍然在那里,并且我使用原始的 Gopher客户端! |
以上所有都是经过尝试,测试且非常稳定的软件包。 Web浏览器的决定是一个计算的一个:零并没有真正有什么需要谈判现代臃肿,广告缠身的网站,说实话,我的手机可以处理之类的事情。 同样,运行Tor代理的决定:能够访问Marianas Web十分方便,并且使用Links2作为浏览器意味着风险最小。
Sylpheed是一个成熟的软件包,我认为它已在很大程度上被Claws取代,但实际上对资源的需求较少。 GPG与它无缝集成,因此我能够轻松交换签名/加密的消息。 它可以很好地呈现纯文本和HTML消息,并且界面整洁。
我需要一个简单的 XMPP / Jabber客户端。 我发现许多此类应用程序的问题是,当我只真正需要XMPP时,它们尝试合并多种消息传递标准。 亵渎是一种理想的选择,因为它会完成一项工作并且做得很好。
系统设置
我花了大量时间来设置操作系统以获得最佳性能。 这项工作变得容易了,因为我之前已经建立了许多Raspberry Pi。 在如此小的系统(如内存系统)中,使用交换文件的决定并非轻描淡写,不幸的是,使用GUI桌面意味着交换被频繁使用。 另一种选择是没有一个,并希望系统不会冻结太多。 我建议使用默认的100MB。
然后,我查看了日志记录。 由于这应该是一个小型便携式系统,因此我认为进行大量日志记录并没有多大意义,尤其是从长远来看,这会对SDHC卡产生负面影响。 一种解决方案是在可能的情况下禁用应用程序登录并牺牲少量内存来创建tmpfs内存文件系统。 这将具有额外的优势,因为它将在每次引导时重新创建。 因此,我确定8MB可以用于此目的,并适当更新/ etc / fstab 。 这非常好用。
tmpfs / var / log tmpfs defaults,noatime,nosuid, mode =0755, size =8m 0 0
我还必须更新/etc/rc.local以在启动时提供一些基本目录。 这使rsyslog和Tor守护程序感到满意。
mkdir
-p
/ var
/ log
/ rsyslog
mkdir
-p
/ var
/ log
/ tor
/
mkdir
-p
/ var
/ log
/ vnstat
/
chown vnstat.root
/ var
/ log
/ vnstat
/
chown debian-tor
/ var
/ log
/ tor
/
一切就绪后,这台小型计算机几乎准备就绪了。 但有一个问题。 我已经提到过零内存的节省,即使GUI和应用程序精简了,我还是经常使用交换空间。 更糟糕的是,我精心设置的桌面菜单出现了问题。
Pi桌面安装了数量惊人的软件,主要是为了满足其作为教育机器的原始目的。 我很早就决定编辑菜单,以删除很多“垃圾”并将其替换为我的应用程序列表,因此我启动了“主菜单编辑器”应用程序。 通常,这是非常敏感的响应,但是在资源挑战的“零”上,我进行更改时会出现令人担忧的延迟和暂停。 最终,这意味着我的临时菜单已损坏,更糟糕的是,默认的Pi菜单已恢复。 搜索有关此问题的帮助,发现菜单系统很复杂,如果更新保存不正确,则将替换为默认值。
我尽可能地看了看菜单的结构,并决定尝试将这些碎片化的东西拆开比它值得的麻烦多。 因此,我放弃了LXDE / Pixel,并在其位置安装了XFCE(及其更轻量级的GUI)。 这次,菜单编辑器似乎更稳定,但是当我进行更改时,我意识到是的,它又在发生。 那时,我发脾气,把玩具扔出婴儿车。 我在巡回赛中的设置已经达到了十字路口:除了菜单之外,它的运行情况非常好,而且我觉得在完成所有这些工作之后我再也回不去了,因此,我怀着一颗沉重的胸怀,重新思考了一下。 那应该是黑客的机器,对吧? 是Linux,对于许多志同道合的人来说,这意味着基于文本的界面,对吗?
因此,我做了我必须做的事情:我放弃了被指控的GUI! 是的,可以追溯到90年代,甚至更早,然后像老板一样运行。™我心中的主要问题是我不再拥有漂亮,安全,图标驱动的应用程序和多个台式机才能工作用。 我的WiFi /网络切换器不再可用,更糟糕的是,我不得不尝试从命令行管理蓝牙。 那将是一个巨大的挑战,但是无论如何我还是决定继续前进,并且我有一份microSDHC的克隆副本,以防万一我不知所措。
再次设置
顺便说一句,如果我使用的是全规格的Raspberry Pi 3,我就不会遇到这种情况。 但这是我的选择,所以...这项练习开始得很好。 我已经重新启动进入终端登录提示,并且蓝牙键盘正在工作,所以我能够登录(以前,我需要运行startx才能进入桌面)。 由于我不再需要担心台式机膨胀,因此我的内存使用仅为78MB,没有交换使用。 我已经感觉好多了。 但是,让生活变得轻松的应用又如何呢? 我做了更多的狩猎,这就是我的想法。
Web browser | Links2 不在图形模式下:轻巧,快速,安全,可与代理一起使用 |
(Neo)Mutt:功能强大,可扩展且与GPG兼容 | |
XMPP/Jabber client | 亵渎。 这很棒! |
VPN client | 开放VPN |
Tor client | 哈! 再次链接2 |
Music | 午夜指挥官+ mpg123 |
Editor/IDE | Nano:我用它来写这个 |
FTP/SFTP client | 午夜指挥官 |
File manager | 午夜指挥官 |
Other stuff | |
Tor proxy server | 一直在线,所以我可以根据需要使用Tor |
Nmap | 我有时候需要测试 |
vnStat | 监视wlan0接口上的数据使用情况 |
SSH/SFTP server | 该发行版的标准发行 |
Gopher client | Gopherspace! 它仍然在那里,并且我使用原始的 Gopher客户端! |
Graphics workarounds | |
fbcat | 使用帧缓冲设备拍摄屏幕截图 |
fbi | Linux framebuffer imageviewer:在终端中显示图像 |
fbgs | 在终端上使用Linux framebuffer设备显示PostScript / PDF文件 |
pnmtopng | 将PPM转换为PNG文件 |
您会注意到那里没有太多更改,但有一些值得注意的例外来显示图形内容。
再做一次,正确地做
情况看起来不错,但我仍有一些问题要解决。
台式机
“但是,多个台式机呢?!” 我听到您问,“您将如何查看图像或连接到WiFi网络?” 我需要快速找到解决方案。 对于多桌面设备,我决定安装tmux,即Linux Terminal Multiplexer。 在Linux系统上运行tmux的理由很多,但我的主要理由是它使多屏工作成为可能,并且只占用很少的内存。 这也使我能够通过SSH连接到Pi并接管会话,如下所示。
![在Raspberry Pi上运行的tmux tmux running on Raspberry Pi](https://i-blog.csdnimg.cn/blog_migrate/de3c94a960e7137956b58659bb7e02f0.png)
音乐
我必须说,对我来说,在工作或放松时听音乐非常重要,因此(S)MPlayer的丢失是一个重大打击。 我能够收听单个MP3或完整的播放列表。 我能够播放网络广播。 叹。 午夜指挥官凭借其处理各种文件类型的能力来进行救援。 秘诀是在“扩展文件”菜单中,对我来说,它是这样的:
shell
/ i
/ .mp3
Open =
/ usr
/ lib
/ mc
/ ext.d
/ sound.sh open mp3
regex
/ i
/ \.
( m3u
| pls
) $
Open =
/ usr
/ lib
/ mc
/ ext.d
/ sound.sh open playlist
我的sound.sh看起来像这样:
#!/bin/bash
do_open_action
(
)
{
filetype =
$1
case
" ${filetype} "
in
playlist
)
mpg123
-C -
@
" ${MC_EXT_FILENAME} "
;;
m3u
)
mpg123
-C -
@
" ${MC_EXT_FILENAME} "
;;
mp3
)
mpg123
-C
" ${MC_EXT_FILENAME} "
;;
*
)
;;
esac
}
case
" ${action} "
in
open
)
(
" ${MC_XDG_OPEN} "
" ${MC_EXT_FILENAME} "
>/ dev
/ null
2
>&
1
)
|| \
do_open_action
" ${filetype} "
;;
*
)
;;
esac
点击MP3上的Enter将播放文件,或者点击M3U播放列表将播放播放列表中的所有内容。 我使用了-C选项,以便可以访问mpg123的控件。 排序!
SFTP / FTP客户端
午夜指挥官再次! 您可以使用内置菜单设置客户端连接条目,然后使用CTL + \从下拉菜单中选择它。 FTP站点在一个面板中呈现为目录结构,您可以将其视为本地文件系统。 SFTP有点困难,因为您必须将其设置为SSH连接,然后根据需要进行复制; 如果您具有密码身份验证就可以了,但是对于公共密钥身份验证,我发现从命令行使用SFTP涉及的较少。 供参考,以下是语法:
sftp:
//
[ user
@
] machine:
[ port
]
/
[ remote-dir
]
The user, port and remote-dir elements are optional.
![MC FTP客户端示例 MC FTP client example](https://i-blog.csdnimg.cn/blog_migrate/da204686984ff88b71e650f09970c773.png)
WiFi选择器
在GUI世界中,我有一个不错的,基于图标的WiFi网络管理器应用程序,可以用来在网络之间进行切换。 文本模式的替代品是奇异的wicd-curses 。 这是一个使用光标键与wicd(无线控制守护程序)进行通信的应用程序,并且运行良好。 我必须使用systemctl禁用dhcpcd服务才能使其正常工作,但是至少它使我可以选择合适的网络,包括当我在旅途中时的家庭网络或电话的无线热点。 这是这样做的方法 。
![wicd-curses WiFi应用程序 wicd-curses WiFi app](https://i-blog.csdnimg.cn/blog_migrate/308e9e2f7895b08197b6697654e7522d.png)
电子邮件和网页浏览
对于电子邮件和Web浏览,我分别使用Mutt(Neomutt)和Links2,它们都可以正常工作。
地鼠
相信我; 您的年龄还不够大,无法记住Gopher(WWW的文本模式先行者)。 严格来说,这也是我的时间,但是我运行的是一个繁荣的Gopher服务器,因此我需要一个客户端。 这就是Gopher服务器在Raspberry Pi上运行的样子。
gopher://gopher.petergarner.net:70
__/\\\\\\\\\_______/\\\\\\\\\\\\\__________________/\\\____
_/\\\///\\\____\/\\\/\\\______________/\\\\\____
_\/\\\_____\/\\\___\/\\\_______\/\\\__/\\\_______/\\\/\\\____
_\/\\\\\\\\\\\/____\/\\\\\\\\\\\\\/___\///______/\\\/\/\\\____
_\/\\\//\\\____\/\\\/_____/\\\_____/\\\/__\/\\\____
_\/\\\____\//\\\___\/\\\_____________\/\\\____/\\\\\\\\\\\\\\\\_
_\/\\\_____\//\\\__\/\\\_____________\/\\\\__///\\\//__
_\/\\\______\//\\\_\/\\\_____________\/\\\_______________\/\\\___
_\///________\///__\///______________\///_________________\///___
Welcome to... "The Rpi4 Gopher"
... your source for local information, and beyond!
--> [14] About this server (and legal)/
-- Content
[18] Tech-related/
[19] Politics and Propaganda (from all sides)/
[20] Cyber and Internet related/
[21] Stuff (filed under "miscellany")/
.....
性能
总体而言,我很高兴地说,我的切换到文本模式对于响应式处理用户界面任务非常有益。 从典型的顶部显示屏可以看到,原始512MB剩余了许多可用和缓存的内存。 现在,我正在听一个播放列表,在SSH连接的tmux会话中写这篇文章,运行top ,而Mutt正在处理电子邮件。
定期地,这就是我可能需要做的所有事情,但是如果需要的话,可以选择随时随地开发和测试软件,这是很棒的。 这是一个简单的Python脚本,用于获取Pi的CPU序列号(类型):
>>>
#!/usr/bin/env python
...
>>>
import
subprocess
>>>
>>>
def GetCPUserial
(
) :
...
cpuinfo
=
subprocess .
check_output
(
[
"/bin/cat"
,
"/proc/cpuinfo"
]
)
...
cpuinfo
= cpuinfo.
replace
(
" \t "
,
""
)
...
cpuinfo
= cpuinfo.
split
(
" \n "
)
...
[ legend
, cpuserial
]
= cpuinfo
[
11
] .
split
(
' '
)
...
return cpuserial
...
>>>
print GetCPUserial
(
)
9000c1
>>>
top -
15 :
55 :
47 up
5 :
49 ,
6
users , load average:
0.21 ,
0.25 ,
0.34
Tasks:
112 total,
1 running,
110 sleeping,
1 stopped,
0 zombie
% Cpu
( s
) :
3.9 us,
5.8 sy,
0.0 ni,
90.3
id ,
0.0 wa,
0.0 hi,
0.0 si,
KiB Mem :
493252 total,
37984
free ,
73248 used,
382020 buff
/ cache
KiB Swap:
102396 total,
102392
free ,
4 used.
367336 avail Mem
我当然会使用必不可少的rpi-clone进行定期备份。 这个应用程序的优点在于,我可以在Pi运行时将整个microSDHC卡复制到另一个卡上。 它还具有以下优点:如果我使用较小容量的卡,它将自动安全地考虑到这一点。 我使用32GB的卡,但是我只能使用约4GB的内存,因此可以将其转储到8GB的卡中。 相反,对于较大的目标卡,则是如此。 如果您仅在Pi上添加一个实用程序,那就应该是它—它比我以前用过的任何东西为我节省了更多的痛苦! 您也可以使用它来创建系统的分发副本。
电池寿命
我只能将电池寿命描述为“令人印象深刻”。 零启动后,平均运行时间为平均0.15A / 0.65W:
- 系统
- 蓝牙
- 无线上网
- 音频(HDMI)子系统
- 视频(HDMI)子系统
我已经从6000mAh Jackery Jetpack移动电源上测量了20个小时的混合使用时间,如果我禁用了WiFi,而仅在“本地”模式下使用它,则可能更多。 将它与我的3300mAh较小的Anker电池搭配使用确实很实用,不幸的是,使用时该电池无法充电。 我还有一个20,000mAh的电池,可以长途旅行:我还没有尝试过。
在路上
对于计算这一挑战,设置“零”是一项非常有价值的工作。 它教会我在底层上熟悉操作系统和应用程序软件,以便从系统中获取最大的内存量。 它也告诉我,我不必投入大量资金来构建相对强大的系统,该系统可以在路上使用并可以高效地使用。
现在我几乎完成了设置,现在该是将其实际投入使用并查看其在野外如何运行的时候了。 嘿,也许我实际上会进入一个领域,看看我是否可以做一些工作并听音乐。
该文件最初以CC BY-NC-ND 4.0许可在Peter Garner的博客上发布,并在得到作者许可的情况下在此重复使用。