刘帅的个人站

天行健,君子以自强不息

0%

制作 Deiban Rootfs

制作debian rootfs的方法

qemu-debootstrap

如我们知道,debootstrap用以通过源制作debian/ubuntu 的基础rootfs。通常来说其分为下载(–foreign)和安装配置(–second-stage)两个阶段。对于跨平台的第一阶段下载只需要通过–arch置顶平台下载对应deb包,但是对于包安装则需chroot后在编译机上面虚拟目标机的deboosttap 执行安装。

1
2
3
4
5
6
7
8
9
10
$which qemu-debootstrap |xargs tail -n 10

if ! which "qemu-$qemu_arch-static" >/dev/null 2>&1; then
die "Sorry, couldn't find binary %s" "qemu-$qemu_arch-static"
fi

eval run debootstrap --arch "$deb_arch" --foreign $opts $args
mkdir -p "$target/usr/bin"
cp $(which "qemu-$qemu_arch-static") "$target/usr/bin"
run chroot "$target" /debootstrap/debootstrap --second-stage

提示:

如上代码片段所示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
2
3
4
5
 #用以下载安装rootfs
sudo apt-get install debootstrap
#包含应用qemu-debootstarp,
#以及用以跨平台chroot的qemu-aarch64-static的应用软件
sudo apt-get install qemu-user-static

下载归档keyring

1
2
sudo apt-get install debian-archive-keyring
sudo apt-key add /usr/share/keyrings/debian-archive-keyring.gpg

通过源下载rootfs

1
2
3
4
sudo qemu-debootstrap --arch=arm64 
--keyring /usr/share/keyrings/debian-archive-keyring.gpg
--variant=buildd --exclude=debfoster
unstable debian-arm64 http://ftp.debian.org/debian

提示:如上已经分析qemu-debootstrap 源码,其操作已经包含编译机(x64)的下载和chroot后arm64(arm64)的包安装配置阶段。

deiban jessie 如上下载安装可能会因为包缺失提示下载失败,这里搜索寻找替换了老的软件源。

1
2
3
4
5
sudo qemu-debootstrap --arch=arm64 
--keyring /usr/share/keyrings/debian-archive-keyring.gpg
--variant=buildd --exclude=debfoster
--include=systemd-sysv jessie debian-jessie
https://mirrors.mediatemple.net/debian-archive/debianchroot

安装软件

  • chroot方式

    chroot 是linux 用以切换rootfs的一个应用,跨平台操作通过需要切换的rootfs 路径下的/usr/bin/qemu-aarch64-static 应用实现。
    如上通过qemu-debootstrap 跨平台下载rootfs之后,可以通过chroot增加用户和安装软件。

    1
    2
    3
    4
    5
    6
    7
    sudo chroot debian
    #挂载proc文件系统,否则部分命令无法运行,
    #比如htop,需要注意的是,在退出chroot时,要卸载proc文件系统
    mount -t proc proc /proc
    #之后就可以在x64 平台 虚拟 arm64 roofs,并且可以虚拟运行其软件。
    adduser pi
    apt-get install vim
    • nfs方式

      可以通过nfs的方式,挂在下载好的rootfs,然后安装需要的软件。

只想买瓶饮料