去年买了一块树莓派3B+,一年的使用下来,虽然不怎么吃灰,但使用却逐渐偏离了GPIO的主题。果然印证了那句“买前IoT,买后路由器”


开箱
树莓派4代的更换了包装,大小和33代一样,不过外观改变了,讲道理,我觉得3代的盒子更好看一些
树莓派4B主板目前有两个版本 Rev 1.1 和改进版 Rev 1.2 ,新版改进了电源部分电路,对pd2.0充电头兼容性更佳。但价格是一样的。幸运的是,我买到的是 Rev 1.2 版本的,如下图我画出的红色框所示,多了个电源管理模块。
来几张3B+和4B的外观主要区别对比图,上为3B+,下为4B
3B+和4B主要是HDMI接口换为了2个micro HDMI,网口和USB接口位置对调了
我的3B+亚克力板子那一面翻过来刚好可以用 ,3B+的两个 USB 2.0 接口换为了 USB 3.0
性能方面,我使用了archlinuxarm的32位和64位系统,当然我没安装图形界面,体验下来感觉就是一个词:流畅,值得一提的是树莓派4B支持4K 60HZ/4K 30HZ×2 输出,用作流媒体挺好,性能方面我是十分满意的,就是这功耗不敢恭维,低负载加上风扇的情况下,CPU 的温度一直保持在 50+ ℃ ,后面我会加几个散热片,顺便换个外壳。对了,还有一件事就是电源问题,必须保证在 5V 2.5A 以上(官方推荐是5V 3A),不然系统会运行不正常。
ArchLinux ARM安装
之前用3B+的时候就用的archlinuxarm的aarch64版本,所以直接下载安装了,等我插上卡通电后才发现不对劲,原来archarm目前的包也是32位的......浪费了我好多时间。
PS:如果选择自编译64位系统需要主机环境为Arch Linux
32位
参照 https://archlinuxarm.org/platforms/armv8/broadcom/raspberry-pi-4 ,安装的过程和 3B+的安装 一样。
64位
raspberrypi官方的64位os还处于beta阶段,所以安装32位比较方便,但我3B+都用了aarch64了,4B再不上64位就说不过去了。
64位的系统就需要自己动手啦,不过我也找到了有人 打包好的 ,可以直接刷入,步骤和 之前 一样。需要注意的有:
- 需要自定义DNS,使用nano(因为没有自带vi)编辑
/etc/resolv.conf
,加一行nameserver 8.8.8.8
- 需要安装dhcp(
pacman -S dhcp
)或者自定义IP以正常使用网络 - 需要自己打开时间同步
timedatectl set-ntp true
,不然每次重启时间会归位
如果对安全性有要求的话还是建议按照如下步骤自己打包:
下载rootfs
在 ArchLinuxARM 官网 上下载 多平台镜像 http://os.archlinuxarm.org/os/ArchLinuxARM-aarch64-latest.tar.gz ,注意下载后校验文件。
进入到工作文件夹,新建 root
和 boot
文件夹
解压备用:bsdtar -xpf ArchLinuxARM-aarch64-latest.tar.gz -C root
配置虚拟容器
## 先安装静态库
~/w/r/pi yay -S qemu-arm-static
## 进入容器
~/w/r/pi systemd-nspawn -D root
## 显示进入容器了
[root@root ~]#
不知道为什么,DNS一直不能用,于是我直接修改的hosts
## 根据自己的需要换源
[root@root ~]# vi /etc/pacman.d/mirrorlist
Server = http://mirrors.tuna.tsinghua.edu.cn/archlinuxarm/$arch/$repo
[root@root ~]# vi /etc/hosts
101.6.8.193 mirrors.tuna.tsinghua.edu.cn
先安装依赖
[root@root ~]# pacman-key --init
[root@root ~]# pacman-key --populate archlinuxarm
[root@root ~]# pacman -Syy
[root@root ~]# pacman -S base-devel fakeroot libffi xmlto docbook-xsl inetutils bc
编译kernel
## 下载 PKGBUILD
~/w/r/pi git clone https://github.com/esotericnonsense/linux-raspberrypi4-aarch64.git boot/home/alarm/
## 进入容器
~/w/r/linux-raspberrypi4-aarch64 master ± systemd-nspawn -D root
## 修改编译的cpu核心数,我改成8核了,根据自己的电脑配置修改
[root@root ~]# vi /etc/makepkg.conf
MAKEFLAGS="-j8"
## 切换为普通用户
[root@root ~]# su alarm
[alarm@root root]$ cd ~/linux-raspberrypi4-aarch64/
## 编译
[alarm@root linux-raspberrypi4-aarch64]$ makepkg -si
需要注意的是,这里编译的是 https://github.com/raspberrypi/linux 4.19 分支提交的内核,PKGBUILD 的版本是 commit edc6ef437bd690772d7a562adeea6c85daf11440 ,版本是4.19.89。
当然也可以选择其他版本,我选择的是 5.2分支 的版本。 只需要修改 PKGBUILD 中的 _commit
为最新commit-id,pkgver
为5.2就行了。考虑到网络环境的问题,我选择提前下载内核文件:https://github.com/raspberrypi/linux/archive/commitid.tar.gz ,下载后修改文件名为 commit-id.tar.gz
,之后编译时跳过检验就好了:makepkg --skipinteg
,编译时间很长,在我的低压U本子8核全满上跑了近4小时,感觉这个改不改核心影响不大,因为我之后在树莓派上常规编译跑了5个小时。
## 切换回普通用户
[alarm@root linux-raspberrypi4-aarch64]$ exit
[root@root ~]# cd /home/alarm/linux-raspberrypi4-aarch64/
## 安装编译好的内核文件
[root@root linux-raspberrypi4-aarch64]# pacman -U linux-raspberrypi4-aarch64-headers-5.2-1-aarch64.pkg.tar.xz linux-raspberrypi4-aarch64-5.2-1-aarch64.pkg.tar.xz
安装依赖
[root@root ~]# pacman -S pacman-contrib # for pactree
[root@root ~]# pacman -Sw $(pacman -Qqn)
[root@root ~]# pactree -l pacman | pacman -S -
[root@root ~]# pacman -Qqn | pacman -S -
安装系统
先按照 步骤 进行分区,然后就可以把配置好的系统打包到 SD 卡了,我使用的是rasyc,当然也可以使用dd。
~/w/r/pi sudo mount /dev/sdd2 boot
~/w/r/pi sudo mkdir -p boot/boot
~/w/r/pi sudo mount /dev/sdd1 boot/boot
~/w/r/pi sudo rsync --archive --numeric-ids --acls --xattrs --human-readable --verbose --progress --stats --itemize-changes --exclude='/home/alarm/*' root/ boot
~/w/r/pi umount -R boot
之后插卡通电就能使用
后续配置
之后的操作与一般linux无异,如果要升级内核的话,还需自己编译,不过建议树莓派上makepkg,配合 Distcc 使用,晚上挂上,早上起床估计就能安装了 。
2020.08.11 更新
今天逛论坛发现aarch64的镜像发布了 (http://os.archlinuxarm.org/os/ArchLinuxARM-rpi-aarch64-latest.tar.gz) ,但重新安装系统未免太费时间,而且树莓派上的数据迁移比较麻烦,所以我直接更换了内核。
要切换Linux为主线内核其实非常简单,只需要以下几句:
paman -S linux-aarch64
pacman -S linux-api-headers
但会发现启动不了,所以还需要修改引导
pacman -S raspberrypi-bootloader
pacman -S uboot-raspberrypi
由于分区改变了,需要更新 fstab
sed -i 's/mmcblk0/mmcblk1/g' /etc/fstab
之后便可以重启使用了
需要注意的是如果更改了/boot/config.txt
需要运行 /boot/mkscr
来应用更改,为此需要安装 uboot-tools
软件包
参考:
- esotericnonsense:linux-raspberrypi4-aarch64
Comments | 2 条评论
可惜了,我买的时候还特意问了老板,结果还是Rev 1.1的存货..有空就刷成64位,另外8GB都有货了(
@FSpark 4G版基本都是Rev 1.2,因为没用桌面,我日常使用没用满过内存,上8G的话感觉没有太大必要,同一个CPU,内存有点性能过剩了
