meishaoming / blog

MIT License
1 stars 2 forks source link

树莓派:macos下安装树莓派系统 #63

Open meishaoming opened 4 years ago

meishaoming commented 4 years ago

工作搭个原型,又买了块树莓派,一步到位上最新的树莓派4B(4G内存版)。图省事儿在某宝上直接买个基础套餐,电源、SD卡、计卡器、外壳等都全部配好。

下载

https://www.raspberrypi.org/downloads/raspbian/

我一般喜欢安装不要桌面UI的最简系统 Raspbian Buster Lite。对我来说最快的办法是先下个种子然后用迅雷下载,快。

安装

SD卡插到读卡器,插到电脑 USB 后,在系统里会出现 disk2 分区。用 diskutil 可以看到分区挂载情况:

diskutil list

如果已经挂载了成分,先 umount。(注意不是 diskutil eject,这会连节点都卸载掉)。

sudo diskutil umountDisk /dev/disk2

最后写入,注意写入的设备是 rdisk2 而不是 disk2,在网上查了一下,说 rdisk 更接近于底层,disk 是缓存后的设备节点。rdisk 速度要快很多。

sudo dd bs=1m if=2020-02-13-raspbian-buster-lite.img of=/dev/rdisk2 conv=sync

一会就写完了。

$ sudo dd bs=1m if=2020-02-13-raspbian-buster-lite.img of=/dev/rdisk2 conv=sync
1764+0 records in
1764+0 records out
1849688064 bytes transferred in 83.771387 secs (22080189 bytes/sec)

我的另一张 32G Toshiba 卡竟然写入速度还慢一些:

$ sudo dd bs=1m if=2020-02-13-raspbian-buster-lite.img of=/dev/rdisk2 conv=sync

1764+0 records in
1764+0 records out
1849688064 bytes transferred in 122.774603 secs (15065722 bytes/sec)

第一次 ssh

第一次开机,网线插到路由器上,这样网口会 DHCP 分得一个 IP 地址,我们从这个 IP 地址 SSH 进去。

如果没有路由器,就先编辑 /boot/cmdline.txt 在最后加上 ip=192.168.9.23,加完之后完整的是这个样子:

console=serial0,115200 console=tty1 root=PARTUUID=738a4d67-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet init=/usr/lib/raspi-config/init_resize.sh ip=192.168.9.23

但是系统默认没有开启 ssh 服务,所以这个时候 ssh 不进去:

$ ssh pi@10.45.1.87        
ssh: connect to host 10.45.1.87 port 22: Connection refused

但是手头又没有显示器,再说接个显示器再找个 USB 键盘也太麻烦了。

搜了一番,原来他们早就想到这个问题了。系统里有个功能,在 /boot 分区里加一个文件 ssh.txt,这样系统启动后就会开启 ssh 服务。ssh.txt 文件内容无关,空文件都行。

系统启来后会删除 ssh.txt 这个文件,下次启动就不会自动开启了。这个功能给第一次 hack 太方便了,进去系统后再 raspconfig 自己配置想开启的服务。

进去系统后,做一些配置:

sudo raspi-config 

改完之后记得把 /boot/cmdline.txt 里的 ip=192.168.9.23 去掉。

重启一次。

ssh 自动登陆

就是不用每次都输入密码

mkdir -p ~/.ssh
vi ~/.ssh/authorized_keys

填入公钥之后,变更文件和文件夹的权限:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

更换国内软件源

使用清华源:https://mirrors.tuna.tsinghua.edu.cn/help/raspbian/

# 编辑 `/etc/apt/sources.list` 文件,删除原文件所有内容,用以下内容取代:
deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main non-free contrib
deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main non-free contrib

# 编辑 `/etc/apt/sources.list.d/raspi.list` 文件,删除原文件所有内容,用以下内容取代:
deb http://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ buster main ui
sudo apt update
sudo apt upgrade

安装和配置必要的软件

按我的使用习惯来

sudo apt install -y vim tmux git silversearcher-ag strace

git

git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status
git config --global core.editor vim

vim

echo "set nu" > ~/.vimrc
echo "set shiftwidth=4" >> ~/.vimrc
echo "set tabstop=4" >> ~/.vimrc
echo "set et"  >> ~/.vimrc
echo "syntax enable"  >> ~/.vimrc
echo "set hlsearch " >> ~/.vimrc
echo "map <C-h> :tabp<CR>" >> ~/.vimrc
echo "map <C-l> :tabn<CR>" >> ~/.vimrc

python3

sudo apt install -y python3-pip

sudo pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple pip -U

sudo pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

查看 CPU 温度

cat /sys/class/thermal/thermal_zone0/temp 

我装了个电扇,声音很大,但温度确实低

pi@raspberrypi:~ $ cat /sys/class/thermal/thermal_zone0/temp 
32615

第二次 ssh

把树莓派拿到公司,没插网线,之前第一次配置的时候就已经把公司的 WiFi 配置进去。所以现在上电我猜测它应该是连上了公司的 WiFi 了。但是我不知道它分到的 IP 地址是多少,这样也没办法 ssh 进去啊。

一个办法:

把局域网的 IP 都扫出来,使用下面这个脚本:

#!/usr/bin/env bash
tab=$'\t'
pIF=$(echo "show State:/Network/Global/IPv4" | scutil | awk -F: '/PrimaryInterface/{sub(/ /,"",$2); print $2}')
sn=$(ipconfig getifaddr $pIF | sed -En 's/^([0-9]+\.[0-9]+\.[0-9]+).*/\1/p')
for i in {1..254}; do ping -i0.1 -W100 -c1 $sn.$i | grep from; done
arp -a | grep $pIF | sed -e 's/^\?/unnamed/' -e "s/\ at\ /${tab}/g" -e "s/\ on\ /${tab}/g" -e 's/\ ifscope.*$//g' | awk 'BEGIN { FS="\t"; OFS="\t"; printf "%-17s\t%-15s\t%s\n", "MAC","INTERFACE","HOSTNAME (IP)" } { if($2!="(incomplete)") {printf "%-17s\t%-15s\t%s\n",$2,$3,$1}}'

然后再找 mac 地址 dc:a6:32 开头的,这是树莓派的 mac 地址前缀。比如买的这个树莓派的 wlan0 mac 地址是 dc:a6:32:6b:73:6f

我们公司局域网有两三个树莓派,试一试很快就找到了。

然后到局域网路由器里边绑定一个固定 IP,然后存到 .ssh/config 里边,下次 ssh 就方便了。

给 eth0 配置一个子 ip

eth0 默认是来走 DHCP 获取 IP 的。有时候换一个地方,要重新配置树莓派的 WiFi 就很麻烦,插网线也很麻烦。

所以如果 eth0 永远有一个固定 ip,这样我插根网线就能立即 ssh 进去,然后就可以做任意的配置了。

sudo vim /etc/network/interfaces.d/eth0-static-ip

内容:

auto eth0:1
allow-hotplug eth0:1
iface eth0:1 inet static
    address 192.168.9.23
    netmask 255.255.255.0
    metric 500

重启就会看到一个 eth0:1 网口

image

外接 USB 4G 网卡

买了一个 华为 E8372,插入系统后网口直接就出来了。这太省心了。

image