制作debian的rootfs
使用debootstrap构建制作aarch64/arm64 Debian rootfs文件系统
1.宿主机软件安装
PC端宿主机使用的系统为Ubuntu22.04 amd64,在制作debian10系统之前,需要安装制作系统所需要的一些工具软件。
1 | root@ubuntu:~# apt-get install apt-transport-https qemu qemu-user-static qemu-system-arm binfmt-support debootstrap |
qemu-system-arm 用于模拟arm架构的设备,在此平台上进行debian系统的运行演示。
debootstrap 构建debian基本文件子系统的工具。
qemu-user-static 在PC端非arm架构的ubuntu系统上,需要借助于qemu-arm-static工具来模拟arm环境安才可以安装arm架构下所需要的软件。
2.使用debootstrap工具下载debian文件系统
1 | root@ubuntu:~# debootstrap --arch=arm64 --variant=minbase --include=whiptail,ca-certificates,tzdata --foreign buster rootfs http://mirrors.ustc.edu.cn/debian/ |
–arch : 指定系统架构
–foreign :指定要下载的系统代号(debian-10 为 buster)
rootfs : 指定存放下载内容的目录
http://mirrors.ustc.edu.cn/debian :下载路径(此处使用的是国内中科大源)
–variant 说明
minbase: 只包含必要的包和apt;
buildd: 包含编译工具包
fakechroot: 包含不用root权限的包
scratchbox: 包含scratchbox(交叉编译工具链)相关包
3.复制qemu-arm-static到debian文件系统/usr/bin/目录
因为使用的宿主机是ubuntu18.04 amd64,所以需要使用qemu-arm-static来模拟arm环境,下载安装所需要的软件。
1 | root@ubuntu:~# cp /usr/bin/qemu-arm-static rootfs/usr/bin/ |
4.执行第二阶段的下载
1 | root@ubuntu:~# DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true LC_ALL=C LANG=zh_CN.UTF-8 chroot rootfs/ debootstrap/debootstrap --second-stage |
设置环境变量,然后切换至文件系统存放目录,使用目录下的debootstrap/debootstrap命令,执行第二阶段的下载。等待几分钟后,命令执行完成,终端输出“I: Base system installed successfully.”即为系统下载完成。
5.换源
1 | root@ubuntu:~# sed -i 's#http://deb.debian.org#http://mirrors.ustc.edu.cn#g' rootfs/etc/apt/sources.list |
6.配置网络信息
1 | root@ubuntu:~# echo 'nameserver 192.168.2.1' > rootfs/etc/resolv.conf |
可选设置网络DHCP
1 | cat > /etc/netplan/50-cloud-init.yaml <<EOF |
7.配置系统信息
1 | root@ubuntu:~# echo 'Debian10' > rootfs/etc/hostname |
8.挂载本地设备文件到rootfs
1 | root@ubuntu:~# mount -t proc /proc rootfs/proc |
9.系统磁盘挂载配置
系统开机时会主动读取/etc/fstab这个文件中的内容,根据文件里面的配置挂载磁盘
1 | root@ubuntu:~# vim rootfs/etc/fstab |
10.进入chroot rootfs 内配置
1 | root@ubuntu:~# chroot rootfs |
需要工具链的可以执行以下命令
1 | root@ubuntu:/# apt install gcc g++ -y #(或者选择buildd的包) |
设置swap分区
1 | root@ubuntu:/# dd if=/dev/zero of=/swapfile bs=1M count=16384 status=progress #创建16G的交换空间 大小根据需要自定 |
如需要关闭swap和swap文件,则可以输入以下命令
1 | sudo swapoff /swapfile |
11.最后的准备
如果需要添加用户,使用
1 | #创建用户debian |
设置密码,取消挂载,退出chroot
1 | root@ubuntu:/# passwd root |
12.打包rootfs
1 | root@ubuntu:~# cd rootfs |