提醒:本文最后更新于 1319 天前,文中所描述的信息可能已发生改变,请谨慎使用!
你似乎正在查看一篇很久远的文章。
为了你这样的访客,我特地保留了我的历史博文。不要笑话过去的我,用温柔的目光看下去吧。


买了一块树莓派3B+,一年的使用下来,虽然不怎么吃灰,但使用却逐渐偏离了GPIO的主题。果然印证了那句“买前IoT,买后路由器” :笑哭: 。最近觉得作为软路由来使树莓派3B+的性能已经达不到我的要求了,加上眼馋树莓派4很久了,于是入手了一个树莓派4B 4G版。为什么不买矿难板子或者其他派?作为一个学生党,我不得不考虑功耗和便携性,再加上树莓派相关生态的完善,我选择了这块作为软路由看起来性价比不算最佳的机器。至于NUC,没钱警告 :耐克嘴: 。话不多说,先上图

开箱

树莓派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 ,注意下载后校验文件。
进入到工作文件夹,新建 rootboot 文件夹
解压备用: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



恭喜,你成功屏蔽了广告 *这是一则由 Google AdSense 自动推荐的广告,不代表本站立场