鱼喃

听!布鲁布鲁,大鱼又在那叨叨了

树莓派SD卡镜像刻录与系统配置

平稳运行了两年多的树莓派前两天终于挂了。

执行docker命令就出现 segmentation fultt 错误,尝试通过重启来解决,结果关机之后启动不起来了。估计是因为过年的时候由于断网,某个服务疯狂重试并且用错误日志塞满了整个SD卡,然后造成部分核心文件损坏吧。

话说周一中午刚跟老师说好下午演示系统,话音刚落,发现服务器挂了,依旧是关机之后无法启动,花了一下午时间重建环境。部署脚本由于没有及时备份丢失了。

这周大概是我的数据安全周吧。(论数据备份的重要性)

没法 Hey Google, play some music 还是挺难受的,于是赶紧重装系统,丢的数据也就放弃了。(等不急新的 SD 卡)

以下是在 macOS下完成的,其他系统可以找到相关替代品

准备镜像

我用的是 Raspbian,可以到官网下载最新镜像,选最后一个无桌面版,如果你有支持HDMI的屏幕,也可以选择桌面版,不过镜像会大一些,下载和刻录慢一点。

下载完毕之后解压,得到img文件。

格式化 SD 卡

首先 下载SD卡格式化工具

有 Windows 版本和 macOS 版本,Linux 下可以用 parted 命令,参考 How to format an SD card in Linux

然后打开它,选择SD卡,快速格式化。

f201552c807d012231258db5f260ed49.png

刻录镜像到 SD 卡

macOS 和 Linux 下使用 dd 工具,Windows的话没有试过,可以尝试一下 ultraISO。

首先查看一下 SD 卡的设备标识符

1
diskutil list

df3edf6913f4327c30963de4459c5444.png

在macOS下,如果没有外接其他设备,应该就是 /dev/disk2

以下直接使用 /dev/disk2 ,如果你的设备标识符不是这个,务必换成自己的

卸载 SD 卡

1
diskutil unmountDisk /dev/disk2

刻录镜像(把镜像路径换成你自己的)

1
sudo dd if=~/Downloads/raspbian-stretch-lite.img of=/dev/rdisk2 bs=1m

请注意上面用的是 /dev/rdisk2 而不是 /dev/disk2,因为后者速度实在是太慢了,等了半小时没写完。

开启ssh服务

在某个版本开始,raspbian 就默认不开启ssh服务,如果没有准备屏幕和键盘的话,就连不上了。

开启ssh服务的方法很简单,就是等 SD 卡镜像刻录完毕之后,在根目录创建一个名为 ssh 的文件夹即可。

然后弹出SD卡,插到树莓派上,插上网线,接上电源。

1
diskutil eject /dev/disk2

Engine, start!

安装必要软件

关于树莓派ip的获取可以通过在路由器设备列表里找,也可以接上屏幕看最后一行输出。当然了,如果以上你都没有的话,用 nmap 去扫你所在的网段吧,good luck。

raspbian 的初始ssh账号和密码分别是 pi 和 raspberry,记得及时修改。

修改apt源

默认的apt源是官方的,可问题在于它是http协议的,由于国内的网络环境实在是太糟糕了,出现了 Hash Sum mismatch 的错误,尝试改成 https,发现不支持。

于是找了国内的https源。

有两个文件需要修改,把原来的源分别换成一下两个就行。

1
2
3
4
5
# /etc/apt/sources.list
deb https://mirrors.ustc.edu.cn/raspbian/raspbian/ stretch main contrib non-free rpi

# /etc/apt/sources.list.d/raspi.list
deb https://archive.raspberrypi.org/debian/ stretch main ui

现在就可以愉快的使用 apt 了

安装常用软件

1
2
sudo apt update
sudo apt install -y git vim curl wget httpie tree

创建热点

直接上一键脚本 pi-setup-wifi.sh。该脚本会创建一个名为SSID,密码为PASSWORD的无线网络,使用的网段为 192.168.68/24。

必备服务

风扇自动控制脚本、frp、校园网登陆脚本放进来。

然后把启动命令写到 /etc/rc.local 中,都是简单的脚本,就没有写成服务了。

配置透明网关代理

前面折腾了这么多,这个才是重点啊,毕竟现在树莓派对我来说最大的用途就是给 Google Home 提供科学上网服务了。

这块略微复杂,所幸之前折腾之后整理了一篇文章,不过由于是后来补的,这次改了很多bug,下次估计能很快搞定了。(希望没有下次了。。。)

参考: 在树莓派上搭建全局透明代理网关

去广告服务

之前基于 dnsmasq 做了dns解析层面的广告过滤,可惜没有把脚本和文档备份,都丢了。等之后有时间再重新弄吧,毕竟现在很少在寝室用网了,都是直接用的实验室代理,通过IPv6直连海外。

参考

MacOS下树莓派烧录img/iso文件到SD卡

解决macOS使用dd指令写入/读取速度过慢的问题

系列 - 树莓派装机(二)