在重新折腾树莓派并写下这篇文章之前,我的树莓派4一直承担着云笔记和git服务器的角色,经常连续开机一两天。直到前端时间,突然无法开机,连接屏幕发现报 错。基本可以确定是SD卡长时间进行独写操作,数据产生了损坏。在拖延许久苦于没有服务器用,终于找时间重新折腾了一遍树莓派。这次折腾树莓派,让我产生了一 些新的认识。
几年前我也写过一些折腾树莓派的文章,那时候我甚至尝试过给刚刚有64位处理器的树莓派3手动编译arm64架构的linux内核,而且按照国外的资料竟然编译成功 了。只可惜有很多兼容性问题,而且树莓派3一样只有1G内存,64位内核没有太大实用价值。那时候还是红帽的粉丝,会在树莓派上折腾红帽和fedora。现在的我已 经转投Ubuntu的怀抱了。而且由于树莓派4终于官方支持了通过USB外挂移动硬盘的方式直接启动(Direct USB Boot)。在我尝试了网上关于各种系统做Direct USB Boot的各种教程后,我发现还是有很多问题解决不了,只有官方的Raspberry Pi OS(基于Debian,曾经的Raspbian)能完美支持Direct USB Boot。 所以为了以后折腾的时候能够标准化通用化,没有特殊需要的情况下,默认用官方Raspberry Pi OS。
由于我一直想用树莓派作为我的私人服务器用,刚好现在在学习Docker,而arm架构的Docker在安装和使用上都存在一定差异,因此决定把原来的树莓派3拿来折 腾。于是就有了这篇文章。
现在树莓派相关的工具越来越丰富,写卡变得非常简单,直接用官方的Raspberry Pi Imager擦写即可。因为我都是通过远程命令行使用,因此默认选择 Raspberry Pi OS Lite镜像。
在写好的SD卡boot分区新建wpa_supplicant.conf文件,文件内配置如下内容:
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
fast_reauth=1
country=[WIFI COUNTRY CODE]
network={
ssid="[NETWORK SSID]"
psk="[NETWORK PASSWORD]"
}
[WIFI COUNTRY CODE]需要填的内容可以在维基ISO 3166-1找到,中国大陆地区就是CN,香港是
HK,澳门是MO,台湾省是TW。
需要注意的是SSID可能会区分大小写。假如需要配置多个SSID,可以这样配置:
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
fast_reauth=1
country=[WIFI COUNTRY CODE]
network={
ssid="[NETWORK SSID 1]"
psk="[NETWORK PASSWORD 1]"
priority=[PRIORITY, greater values have higher priority]
}
network={
ssid="[NETWORK SSID 2]"
psk="[NETWORK PASSWORD 2]"
priority=[PRIORITY, greater values have higher priority]
}
可以使用wpa_passphrase工具生产加密的psk:
$ wpa_passphrase [NETWORK SSID] [NETWORK PASSWORD]
在Raspberry Pi OS中,SSH连接默认是禁用状态。要想写卡后首次启动就能通过SSH连接,需要在写好的SD卡boot分区新建一个空的ssh文件。
执行完这一步,就可以把SD卡插入到树莓派里并通电启动了。Raspberry Pi OS官方镜像默认用户名pi,密码raspberry。
Linux raspberrypi 5.4.51-v7+ #1333 SMP Mon Aug 10 16:45:19 BST 2020 armv7l
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
SSH is enabled and the default password for the 'pi' user has not been changed.
This is a security risk - please login as the 'pi' user and type 'passwd' to set a new password.
pi@raspberrypi:~ $
通过ssh命令或者putty远程连接,就可以看到以上提示信息了。
这一步一样可以一笔带过,主要检查Hostname,Locale,Time Zone,Keyboard Layout等设置,同时可以修改默认用户pi的密码,以及在高级选项中选择扩 展文件系统,让系统可以使用整张SD卡。
# adduser [NEW USER NAME]
# usermod -aG sudo [NEW USER NAME]
# su - [NEW USER NAME]
$ sudo ls -la /root
以下命令可以锁定指定用户
# usermod -L pi
编辑/etc/passwd文件禁止pi用户登录shell
# cp /etc/passwd /etc/passwd.bak
# nano /etc/passwd
将以下行修改为下面的结果,将登录指定的shell替换为/usr/sbin/nologin。
pi:x:1000:1000:,,,:/home/pi:/bin/bash
pi:x:1000:1000:,,,:/home/pi:/usr/sbin/nologin
首先备份原文件内容,方便以后恢复。
# cp /etc/apt/sources.list /etc/apt/sources.list.bak
# cp /etc/apt/sources.list.d/raspi.list /etc/apt/sources.list.d/raspi.list.bak
然后将/etc/apt/sources.list文件内容改为如下:
deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main non-free contrib rpi
# Uncomment line below then 'apt-get update' to enable 'apt-get source'
#deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main non-free contrib rpi
再将/etc/apt/sources.list.d/raspi.list文件内容改为如下:
deb http://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ buster main ui
# Uncomment line below then 'apt-get update' to enable 'apt-get source'
#deb-src http://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ buster main ui
改完以后就可以检查更新了:
# apt update
# apt upgrade
其中webmin需要添加源才能安装。可以执行以下命令创建/etc/apt/sources.list.d/webmin.list文件。
# echo deb http://download.webmin.com/download/repository sarge contrib|sudo tee /etc/apt/sources.list.d/webmin.list
然后加入其apt-key即可。
$ wget -q -O- http://www.webmin.com/jcameron-key.asc | sudo apt-key add
# apt install webmin
$ byobu-enable
至此,一个基础的Linux使用环境在树莓派上就搭建好了。后续内容更多会关注如何在树莓派上部署各种应用或服务,以及搭建开发环境等。