论坛之前已经有一个使用debootstrap生成Debian rootfs的教程了,但我一直使用的是一个Github上的自动生成脚本来生成,优势主要是:
更方便,跑一个脚本生成直接可用的rootfs,无需更多设置
包括版本和预装包都完全可定制
生成的rootfs可以直接chroot进去,所需的依赖自动安装
最近给D1s定制rootfs,为了支持riscv64,我对原作者的脚本进行了一定的魔改,在此分享一下使用方法:
首先clone仓库到本地:
git clone https://github.com/SdtElectronics/debian-rootfs.git
然后安装相关依赖
apt-get install multistrap binfmt-support qemu-user-static
最后运行一条命令即可生成:
./make-rootfs.sh ARCHITECTURE
支持的ARCHITECTURE有:
amd64
arm64
armel
armhf
i386
mips
mipsel
powerpc
powerpcspe
ppc64el
s390x
riscv64
注意要是想生成riscv64的rootfs,需要改用如下命令(因为risc-v目前还在Debian port源下):
sudo ./make-rootfs.sh riscv64 multistrap_debian-ports.conf
生成的rootfs在build/目录下。
若脚本运行时出现类似错误信息:
The following signatures couldn't be verified because the public key is not available
需要手动给multistrap的文件打上这个补丁。
更多信息,可以参考原仓库:
https://github.com/SdtElectronics/debian-rootfs
离线
一些进阶用法:
更改预装包:
修改multistrap.conf中的packages字段即可。注意要生成riscv64的rootfs,需要修改的是multistrap_debian-ports.conf。
更改版本:
修改multistrap.conf中的suite字段即可。合法的值可以是版本名,或者是stable, testing和sid。注意要生成riscv64的rootfs,需要修改的是multistrap_debian-ports.conf。
异构chroot:
异构chroot所需的qemu等依赖,脚本都已经自动装好,直接chroot ./ 即可。
离线
强大!
对 qemu-user-static 版本有要求吗? 有些低版本的Ubuntu没有 riscv。
没有专门对多个qemu版本进行测试,但已知Ubuntu16.04源中的qemu在模拟aarch64平台的时候有bug,部分程序运行时会报非法指令然后退出。最好用高一点的版本。
离线