最近在用unity模仿做出一个12年的Flash游戏,我用Git做数据备份,但是随着不断的新资源加进来以后,Git目录开始变得越来越大,推到Github上已经满足不了我的要求,正好家里有个正在吃灰中的树莓派,还有一个闲置的硬盘,便心血来潮准备搭建一个Git服务器,顺便记录一些过程

原材料

  1. 吃灰中的树莓派ZeroW x 1
  2. 8GB SD卡 x 1
  3. 320GB 笔记本硬盘 x 1
  4. SATA to USB3.0 硬盘盒 x 1
  5. Putty软件
  6. 蓝牙串口模块 x 1
  7. 一堆杜邦线
  8. 笨拙的双手 x 1

IMG_20210113_165418

之所以要用到蓝牙串口模块,是因为树莓派没有屏幕(外接不方便),有时候ssh怎么都连不上,也不知道发生什么了,更不敢贸然断电重启,庆幸的是树莓派上有一组串口接口,通过它可以很方便地在无网络环境下登录shell

物理连线

首先开始连线,将硬盘通过usb连接到树莓派的OTG接口上(我的硬盘盒只剩下一个电路板了,hiahiahia)

因为手上没有microusb线,就只好用typec线加转接头了

IMG_20210113_170148把蓝牙串口模块连接到树莓派的串口上

模块的vcc连接到树莓派物理引脚1号(3.3v)上

模块的gnd连接到树莓派物理引脚6号(gnd)上

模块的tx连接到树莓派物理引脚10号(RXD)上

模块的rx连接到树莓派物理引脚1号(TXD)上

serial

IMG_20210113_173150

注意模块的txrx和树莓派的txrx是相互反接的,一方的发送,当然就是另一方的接收了

上电开机

线接好后就可以开机啦,直接插上电源就会启动

启动完毕后看一下功率,PiZeroW相当省电,平时待机大约5v * 0.1a = 0.5w的样子,满载时是0.2a,差不多1w的功耗(我拍照时硬盘已经休眠了,当然硬盘唤醒时大概有0.2a的额外电流)

IMG_20210113_173719

打开串口Shell登录

第一次使用需要先打开树莓派串口登录功能,先从ssh远程登录,输入sudo raspi-config打开配置界面,找到5 Interfacing Options(接口设置)按Enter确定

raspi-config-1

再切换到P6 Serial(串口),按Enter

raspi-config-2

这时,它会问你是否开启通过串口登录Shell的功能,我们选择是yes,按Enter键,然后重启树莓派,配置完成

raspi-config-3

如果你确实不想用官方提供的raspi-config来配置,也可以这样操作

  1. 编辑/boot/cmdline.txt,在文件开头添加console=serial0,115200 console=tty1和一个额外的空格,注意整个文件都只有一行,请不要多打回车
  2. 编辑/boot/config.txt,找到[all],在[all]下方添加一行enable_uart=1
  3. 保存重启

从蓝牙串口登录

现在已经打开串口登录功能了,等待系统重启完毕

1610531005751

可以看到蓝牙模块上的灯已经在闪烁了,我们就通过蓝牙登录树莓派吧。

打开系统设置,添加蓝牙设备,找到蓝牙串口模块的名字,连接,输入PIN,一气呵成

add-bt-device

found-bt-device

after-pair

打开设备管理器,找到对应的串口号,不知道为啥会有2个,但是以我的经验来说选数字小的那一个就对了,就是COM6

dev-man

找到了串口号后,打开putty,将ConnectionTypeSSH切到Serial(串口)上,会发现SerialLine会变成COM1

putty

我们将COM1修改为设备管理器里的COM6,并将Speed设置为115200,这个Speed代表串口波特率,只有双方都使用同样的波特率才能够正常传输数据,树莓派默认的波特率是115200(可以通过编辑/boot/cmdline.txt修改)

输入好串口号和Speed后,点击下方的Open按钮,等待3-5秒就会出现登录的界面啦

login

我们输入用户名pi和自己的密码,看到这个光标就代表登录成功啦,就可以执行任何命令了

由于串口不依赖网络,我们可以用这个特性配置wifi,或者出现故障时进行救援连接,非常方便

loggedin

搭建Git服务端

接下来开始搭建Git服务端,考虑到ZeroW的性能(bcm2835单核处理器),直接放弃Gitlab了,也许树莓派4的配置勉强一战。

由于是在局域网里,不会对外开放,我就选择最最最简单的搭建方式了,具体可以参考廖雪峰大佬的这篇文章,我这里讲一下大致流程

首先要给树莓派设置秘钥登录,设置好后开始安装Git,执行sudo apt install git等待安装/升级完毕就好了

接着在树莓派上创建一个目录用来存放Git仓库,其实远程仓库和本地仓库并没有什么不同,纯粹为了7x24小时开机并交换大家的修改。

我这里就创建在mkdir /home/pi/git-repositories这里了

如果是新项目,就在/home/pi/git-repositories下执行命令,git init --bare example

加上参数--bare后就会创建一个裸仓库(所谓裸仓库就是指没有工作区的git仓库,因为共享仓库不需要工作区),这样服务端就搭建好了

如果是已经存在的项目,先在/home/pi/git-repositories中创建一个空目录example2,然后将本地项目的.git目录复制到example2中就搭建好了(只需要复制.git目录就好了)

接着是配置git客户端,我们首先Clone仓库,比如我的什么树莓派ip是192.168.1.100,使用pi用户进行登录,那么就执行命令git clone pi@192.168.1.100:/home/pi/git-repositories/example就可以克隆到本地了

后续也可以把这个Git地址添加到仓库中,用于后续的推代码步骤

最后要说一下,蓝牙串口不用时一定要使用exit命令退出登录,并且一定要修改默认的pi用户和root用户的密码,尤其是root用户,不然你的邻居可能无意间连接上来,直接黑掉你的树莓派

为了保险起见,可以给蓝牙模块设置一个PIN,再配对时需要输入正确的密码才能连接

后话

Git服务器虽然搭建起来了,但由于受到CPU性能的限制,Git上传速度只有可怜的500kb/s,下载只有700kb/s,这还是外置硬盘的读写速度,不过好歹能用,等明年有钱了就上咸鱼淘一个树莓派3b去,先将就着用一下吧,反正也是备份数据,对速度要求并不高

(可以看到Clone时CPU已经接近100%了,而Push时的网速更慢)

overload