本文的系统镜像源自https://github.com/radxa-build/rock-5b/releases/download/20221213-1106/rock-5b_debian_bullseye_kde_2022-12-13T1118+0000_gpt.img.xz,还没做过任何更改(是的我在5b上编译它自己的内核哈哈哈哈哈哈哈),以下操作均是进行过
sudo su
cd ~
(也就是切换到 root 用户,文件下载到 /root 中)后才进行的
那么,先浅浅地装些依赖吧!
apt install git build-essential fakeroot libncurses5-dev libssl-dev ccache build-essential autoconf libtool gawk alien fakeroot zlib1g-dev uuid-dev libattr1-dev libblkid-dev libselinux-dev libudev-dev libdevmapper-dev parted lsscsi ksh linux-headers-$(uname -r) linux-libc-dev-$(uname -r) busybox
然后是下载源码环节
git clone -b linux-5.10-gen-rkr3.4 https://github.com/radxa/kernel.git
wget https://github.com/openzfs/zfs/releases/download/zfs-2.1.7/zfs-2.1.7.tar.gz
请注意,随着时间的迁移,上方OpenZFS会有更新的release,还请自己核对哈(因为我不会链接到最新的版本哈哈哈哈哈哈)
因为高版本的OpenZFS已经集成了SPL (Solaris Porting Layer),所以我们不用再去 clone 了
网络环境不好的朋友可以在地址前加上 https://ghproxy.com/ 来加速下载,比如改写成https://ghproxy.com/https://github.com/radxa/kernel.git
*注意:虽然ghproxy是免费提供服务的,但是鉴于国内服务器流量费用极高,请不要恶意抢占他们服务器的资源,也尽可能地不要重复下载。如果你心疼他们,那就给他们点赞助吧!
有方法的朋友可以在终端中分别输入
export http_proxy=http://<IP>:<PORT>
export https_proxy=http://<IP>:<PORT>
两串神秘代码来走捷径
之后我们
cd kernel/
nano .config
然后在nano中使用 Ctrl + W 对 CONFIG_SYSTEM_TRUSTED_KEY 和 CONFIG_MODULE_SIG_KEY 进行搜索,然后把他们注释掉
使用 Ctrl + X 进行保存,然后执行
make prepare
此时,系统会询问证书相关问题,直接回车就好,会填上默认值
之后我们要转到OpenZFS的源码之中并将其编译到(?)我们要编译的内核中,完整操作如下
cd ..
cd zfs-2.1.7/
./autogen.sh
./configure --enable-linux-builtin=yes --with-linux=/root/kernel --with-linux-obj=/root/kernel
./copy-builtin /root/kernel
上述操作完成后,我们理论上就能在menuconfig中看到我们想要的ZFS了。打开menuconfig的完整步骤如下
cd ..
cd kernel/
make menuconfig
然后使用键盘上的方向键下移,使光标移动到File systems上,然后回车
再用光标移动到 ZFS filesystem support 上,按下键盘上的 Y 键,出现星号代表成功勾选
此时便可用键盘上的方向键右移,选择 Save,回车两次即可
当然,你还可以顺便做点其他设置,make menuconfig的操作方法在其顶部就写得很清楚了,在此不再赘述
*注意:既然是小白向,我就不建议动Device drivers里的设置,因为容易涉及到很多依赖的安装,到时候哭都没有眼泪哭:(
我就是因为开太多了导致东缺西缺最后懒得改了从头再来:(
搞定后选择Exit即可
接下来我们回到zfs的源码目录,进行编译和安装
cd ..
cd zfs-2.1.7/
make -s -j8
make install
接着回到内核源码中
cd ..
cd kernel/
make clean
make modules -j8
make modules_install
make -j 8 bindeb-pkg LOCALVERSION=-custom
编译完成后,安装内核,更新引导
cd ..
dpkg -i linux*
u-boot-update
接下来重启即可!大功告成!
Reference list