在没有显示器的情况下安装并配置树莓派的系统(Raspberry Pi 4B)
网络上大部分有关于树莓牌安装的教程都是基于有显示器的,有少部分教程不需要显示器,但是也过时了(期间树莓派官方系统修改了初始化策略,将不使用 pi 用户),本文将在无显示器的情况下安装并配置树莓派系统
此文章的性质更偏向于笔记,所以代码和脚本偏多,文字介绍较少,甚至缺失
下载系统 IMG 文件
由于地理环境限制,树莓派官网下载 ISO 文件的速度异常缓慢,因此我们可以前往镜像源下载
镜像源列表:
下载地址组成:
${MIRROR_URL}/raspberry-pi-os-images/raspios_lite_arm64/images/${VERSION}/${DATE}-raspios-bullseye-arm64-lite.img.xz
例如:
Tips: 可以使用 aria2c 进行多线程下载来加快下载速度:
| |
将 IMG 写入 SD 卡并进行配置
解压 IMG.XZ 系统映像文件:
1unxz -kvv 2022-09-22-raspios-bullseye-arm64-lite.img.xz使用 dd 指令写入: (
/dev/sdb为 SD 卡块设备路径)1sudo dd if=2022-09-22-raspios-bullseye-arm64-lite.img of=/dev/sdb bs=32K status=progressTips:
须注意磁盘是否全部卸载,使用
lsblk查看,以下指令卸载:1sudo umount -A /dev/sdb{1,2}挂载
/dev/sdb1并进入1 2 3mkdir -p mnt sudo mount /dev/sdb1 ./mnt cd mnt添加用户: (原理: 创建
userconf.txt并写入账户密码)1 2 3export NEW_USER="username" export NEW_PASSWD="password" echo "${NEW_USER}:$(openssl passwd -6 ${NEW_PASSWD})" | sudo tee userconf.txt启用 SSH
1sudo touch ssh卸载分区
1 2 3cd .. sudo umount ./mnt rm -r ./mnt
对启动后的树莓派进行配置
使用
ssh user@ip连接树莓派,例如:1ssh user@172.16.0.2更换镜像源: 修改
/etc/apt/sources.list和/etc/apt/sources.list.d/raspi.list文件,添加镜像地址,可以将MIRROR_URL环境变量设置为自己喜欢的镜像源地址,一键脚本: (咱激进一点,直接用 testing 分支来获取更多功能,如果要使用稳定分支,修改第 2 行)1 2 3 4 5 6 7 8 9 10export MIRROR_URL="https://mirrors.ustc.edu.cn" export BRANCH="testing" # or stable sudo apt install ca-certificates echo "deb ${MIRROR_URL}/debian/ ${BRANCH} main contrib non-free deb ${MIRROR_URL}/debian/ ${BRANCH}-updates main contrib non-free deb ${MIRROR_URL}/debian-security/ ${BRANCH}-security main contrib non-free" | \ sudo tee /etc/apt/sources.list echo "deb ${MIRROR_URL}/raspberrypi/debian/ bullseye main" | \ sudo tee /etc/apt/sources.list.d/raspi.list sudo apt update完整更新系统并清除无用包
1 2sudo apt full-upgrade -y sudo apt autopurge -y设置语言及时区并重启
1 2 3 4 5 6 7sudo sed -i 's|# zh_CN.UTF-8 UTF-8|zh_CN.UTF-8 UTF-8|g' /etc/locale.gen sudo sed -i 's|# en_US.UTF-8 UTF-8|en_US.UTF-8 UTF-8|g' /etc/locale.gen sudo locale-gen sudo localectl set-locale "zh_CN.UTF-8" sudo timedatectl set-timezone "Asia/Shanghai" sudo timedatectl set-ntp yes sudo reboot