Pages

Saturday, 19 October 2024

树莓派的SD卡镜像刻录

 

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

准备镜像

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

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

格式化 SD 卡

首先 下载SD卡格式化工具

有 Windows 版本和 macOS 版本,Linux 下可以用 parted 命令.

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

刻录镜像到 SD 卡

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

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

diskutil list

 

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

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

卸载 SD 卡

diskutil unmountDisk /dev/disk2

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

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

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

开启ssh服务

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

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

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

diskutil eject /dev/disk2

Engine, start!

安装必要软件

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

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

修改apt源

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

于是找了国内的https源。

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

# /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 了

安装常用软件

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

创建热点

把以下代码保存为pi-setup-wifi.sh :

#! /bin/bash

sudo apt update

sudo apt install -y hostapd dnsmasq

sudo bash -c "cat >>/etc/dnsmasq.conf <<EOF
#this line existes to make sure below starts in a new line
interface=wlan0
dhcp-range=192.168.68.24,192.168.68.200,255.255.255.0,12h
EOF"

sudo bash -c "cat >/etc/hostapd/hostapd.conf <<EOF
interface=wlan0
hw_mode=g
channel=10
auth_algs=1
wpa=2
wpa_key_mgmt=WPA-PSK
wpa_pairwise=CCMP
rsn_pairwise=CCMP
wpa_passphrase=PASSWORD
ssid=SSID
EOF"

# enable ip_forward
sudo sed -i "s/#net.ipv4.ip_forward=[01]/net.ipv4.ip_forward=1/g" /etc/sysctl.conf

# open wifi on startup
sudo sed -i "s/exit 0//g" /etc/rc.local

sudo bash -c "cat >>/etc/rc.local <<EOF
ifconfig wlan0 down
ifconfig wlan0 192.168.68.1 netmask 255.255.255.0 up
iwconfig wlan0 power off
service dnsmasq restart
hostapd -B /etc/hostapd/hostapd.conf & > /dev/null 2>&1
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE  
sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT  
sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT

exit 0
EOF"

# sudo reboot
echo -e "now reboot to take effect"

该脚本会创建一个名为SSID,密码为PASSWORD的无线网络,使用的网段为 192.168.68/24。

必备服务

把frp脚本放进来。

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

配置透明网关代理

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

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

参考

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

https://www.jianshu.com/p/e95c406badaa

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

https://zhuanlan.zhihu.com/p/34603784

 


 

No comments:

Post a Comment