于是在我编译完 MongoDB Embedded 之后发现,虽然 Raspberry Pi 4 的 CPU 是 64-bit 的,但是默认使用的还是 32bit 的内核,userland 的程序也都是 32-bit 的。
自然,前一篇编译出来的 MongoDB Embedded 也是
要让 Raspberry Pi 4 完全运行在 64 位模式下的话,有一个似乎简单的方法——安装 Manjaro,但是我不喜欢 Arch。
总体来说分如下几步~
1. sudo rpi-update 获取 64-bit 的 kernel.img
这一步十分简单,只需要执行如下命令即可,注意可能会询问是否要继续,按 y
即可~
sudo rpi-update
2. 修改 /boot/config.txt 指定 64-bit 模式启动
接下来修改 /boot/config.txt
文件,告诉 VideoCore 使用 64-bit 模式启动。
修改的内容也就是增加一行如下代码到 /boot/config.txt
中
arm_64bit=1
保存并重启 Raspberry Pi 之后,kernel 就是 64-bit 的了,我们也可以通过 uname -a
验证~
然而,此时 userland 其实还是 32-bit 的,因此需要一个完全的 64-bit 环境的话,还需要一点 hack
3. schroot 一个完全的 64-bit 环境
我们需要 debootstrap
来创建 schroot
创建一个虚拟环境~
sudo apt install -y debootstrap schroot
如果在国内的话,为了之后使用清华大学的镜像源,可能还需要 apt-transport-https
sudo apt install -y debootstrap schroot apt-transport-https
接下来给 schroot
创建一个该虚拟环境的描述文件
cat << EOF | sudo tee /etc/schroot/chroot.d/pi64 [pi64] description=V3D arm64 testing type=directory directory=/srv/chroot/pi64 users=pi root-groups=root profile=desktop personality=linux preserve-environment=true EOF
随后则可以使用 debootstrap
来初始化 debian 环境了~
sudo debootstrap --arch arm64 buster /srv/chroot/pi64
如果在国内的话,则可以加上清华大学的 debian 镜像源地址~
sudo debootstrap --arch arm64 buster /srv/chroot/pi64 https://mirrors.tuna.tsinghua.edu.cn/debian
在略显漫长的安装之后(因为会自动安装很多必要的软件包),/srv/chroot/pi64
下面就初始化好了一个 64-bit 的虚拟环境了~
下一步的话,则是先在那个虚拟环境里安装上 sudo
,不然一会儿 pi 用户有权限却没有 sudo 可用 233333
sudo schroot -c pi64 -- apt install -y sudo
安装好 sudo
后,就只差一步 schroot
切换到 pi64
环境就完成啦~
schroot -c pi64
这个时候就跟平时使用 Raspberry Pi 一样,但已经是 64-bit 的环境了~
国内下载不下来,可以参考这个方法:https://github.com/Hexxeh/rpi-update/issues/253#issuecomment-349316545