制作debian rootfs的方法
qemu-debootstrap
如我们知道,debootstrap用以通过源制作debian/ubuntu 的基础rootfs。通常来说其分为下载(–foreign)和安装配置(–second-stage)两个阶段。对于跨平台的第一阶段下载只需要通过–arch置顶平台下载对应deb包,但是对于包安装则需chroot后在编译机上面虚拟目标机的deboosttap 执行安装。
1 | $which qemu-debootstrap |xargs tail -n 10 |
提示:
如上代码片段所示qemu-debootstrap 功能:
line.7 指示debootstrap 第一阶段通过指定–arch 确定平台下载包。
line.9 拷贝qemu-arrch64-static 下的虚拟软件到rootfs /usr/bin 目录用以chroot
line10指示chroot后debootstrap 第二阶段。arm64 debian jessie
如上讨论,这里我们在x64 平台下载arm64(aarch64)平台rootfs并且尝试通过chroot实现初始用户、包安装重等操作。
安装依赖包
1 | #用以下载安装rootfs |
下载归档keyring
1 | sudo apt-get install debian-archive-keyring |
通过源下载rootfs
1 | sudo qemu-debootstrap --arch=arm64 |
提示:如上已经分析qemu-debootstrap 源码,其操作已经包含编译机(x64)的下载和chroot后arm64(arm64)的包安装配置阶段。
deiban jessie 如上下载安装可能会因为包缺失提示下载失败,这里搜索寻找替换了老的软件源。
1 | sudo qemu-debootstrap --arch=arm64 |
安装软件
chroot方式
chroot 是linux 用以切换rootfs的一个应用,跨平台操作通过需要切换的rootfs 路径下的/usr/bin/qemu-aarch64-static 应用实现。
如上通过qemu-debootstrap 跨平台下载rootfs之后,可以通过chroot增加用户和安装软件。1
2
3
4
5
6
7sudo chroot debian
#挂载proc文件系统,否则部分命令无法运行,
#比如htop,需要注意的是,在退出chroot时,要卸载proc文件系统
mount -t proc proc /proc
#之后就可以在x64 平台 虚拟 arm64 roofs,并且可以虚拟运行其软件。
adduser pi
apt-get install vimnfs方式
可以通过nfs的方式,挂在下载好的rootfs,然后安装需要的软件。