使用debootstrap构建制作aarch64/arm64 Debian rootfs文件系统

简介: 使用debootstrap构建制作aarch64/arm64 Debian rootfs文件系统

使用debootstrap构建制作aarch64/arm64 Debian rootfs文件系统

安装debootstrap和qemu-user-static

构建Debian 10(buster)系统,基础包为minbase,使用清华的源:

拷贝qemu

换源

配置网络信息:

配置系统信息

挂载本地设备文件到rootfs:

`chroot rootfs` 内配置:

在rootfs内执行

最后的准备

打包


安装debootstrap和qemu-user-static

apt install apt-transport-https qemu qemu-user-static binfmt-support debootstrap

构建Debian 10(buster)系统,基础包为minbase,使用清华的源:

如果想用其他的源,建议将你本机系统的源也换成相应的,然后 update 下以更新相应的 key 以及文件


variant 说明


minbase: 只包含必要的包和apt;

buildd: 包含编译工具包

fakechroot: 包含不用root权限的包

scratchbox: 包含scratchbox(交叉编译工具链)相关包

qemu-debootstrap --arch arm64 --variant=minbase --include=whiptail,ca-certificates,tzdata buster rootfs http://mirrors.ustc.edu.cn/debian/

如果想制作Ubuntu系统同理。看下http://mirrors.ustc.edu.cn里面的支持的镜像

qemu-debootstrap --arch arm64 --variant=minbase --include=whiptail,ca-certificates,tzdata bionic rootfs http://mirrors.ustc.edu.cn/ubuntu-ports/

执行完成后应该会在当前目录下有rootfs文件夹


拷贝qemu

cp  /usr/bin/qemu-aarch64-static  rootfs/usr/bin

换源

sed -i 's#http://deb.debian.org#http://mirrors.ustc.edu.cn#g' rootfs/etc/apt/sources.list
# 原始源
sed -i 's#http://ports.ubuntu.com#http://mirrors.ustc.edu.cn#g' rootfs/etc/apt/sources.list

配置网络信息:

$ echo 'nameserver 192.168.2.1' > rootfs/etc/resolv.conf
$ mkdir rootfs/etc/netplan
$ cat > rootfs/etc/netplan/50-cloud-init.yaml <<EOF
network:
    ethernets:
        eth0:
          dhcp4: no
            addresses: [192.168.168.6/24]
            gateway4: 192.168.168.1
            nameservers:
                addresses: [192.168.168.1]
    version: 2
EOF

配置系统信息

echo 'Debian10' > rootfs/etc/hostname
echo "127.0.0.1 localhost" > rootfs/etc/hosts
echo "127.0.0.1 Debian10" >> rootfs/etc/hosts

挂载本地设备文件到rootfs:

mount -t proc /proc  rootfs/proc
mount -t sysfs /sys  rootfs/sys
mount -o bind /dev  rootfs/dev
mount -o bind /dev/pts  rootfs/dev/pts

chroot rootfs 内配置:

LANG=zh_CN.UTF-8 chroot rootfs/ /bin/bash

在rootfs内执行

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
apt update
apt upgrade
apt install systemd -y
apt install wireless-regdb crda -y
apt install rsyslog udev dbus kmod openssh-server openssh-client netplan.io man vim wget net-tools sysstat tmux less wireless-regdb crda dosfstools parted sudo git iputils-ping -y
#你还可以安装其他的工具

需要工具链的可以执行以下命令

apt install gcc g++ -y (或者选择buildd的包)
echo 'PermitRootLogin yes' >> /etc/ssh/sshd_config

最后的准备

passwd root
umount /dev/pts/ /dev/ /proc/ /sys
exit

如果需要添加用户,使用

useradd -m debian -g sudo -s /bin/bash -d /home/debian

到这里就可以烧写到板子上了

退出后,打包

可选设置网络DHCP

cat > /etc/netplan/50-cloud-init.yaml <<EOF
network:
    ethernets:
        eth0:
            dhcp4: yes
    version: 2
EOF

打包

cd rootfs
tar jcvf ../rootfs.tar.bz2 *
相关文章
|
Docker 容器
x86 平台利用 qemu-user-static 实现 arm64 平台 docker 镜像的运行和构建
x86 平台利用 qemu-user-static 实现 arm64 平台 docker 镜像的运行和构建
1331 1
|
6月前
|
存储 Ubuntu Linux
xenomai3+linux构建linux实时操作系统-基于X86_64和arm
Xenomai是一个实时性解决方案,通过在Linux上添加实时内核Cobalt来增强实时性能。它有三个主要部分:libcobalt(用户空间实时库)、Cobalt(内核空间实时内核)和硬件架构特定层(ipipe-core或dovetail)。ipipe-core适用于Linux 5.4以下版本,而dovetail用于5.4及以上版本。本文介绍了在X86 Ubuntu环境下,如何编译Xenomai内核,搭建应用环境,包括配置、编译、安装和实时性测试。对于其他硬件架构,如ARM和ARM64,步骤类似。文章还提到了Xenomai与Linux内核版本的兼容性和实时性测试结果。
455 0
xenomai3+linux构建linux实时操作系统-基于X86_64和arm
|
6月前
|
存储 Ubuntu 网络协议
从Ubuntu-base构建ubuntu rootfs系统(以x86_64和arm为例)
本文介绍了基于Ubuntu-base构建自定义Linux系统的过程,适合嵌入式设备。Ubuntu-base是最小文件系统,包含软件包管理器,可以从Ubuntu源轻松安装软件。文章详细阐述了构建步骤,包括准备宿主系统(确保使用与目标系统相同架构的Ubuntu系统)、创建和挂载分区、配置Ubuntu源、设置DNS、添加用户配置、进入chroot环境以及安装软件(如内核、X-window系统等)。对于arm架构,还提供了通过qemu在X86_64系统上构建arm rootfs的方法。整个过程强调了定制和灵活性,适合对Linux系统有深入了解的开发者。
1542 0
|
缓存 安全 测试技术
ARM深入理解-AArch64启动过程
ARM深入理解-AArch64启动过程
|
存储 人工智能
ARM深入理解-5.2-通往内核的大门(异常向量表_AArch64)
ARM深入理解-5.2-通往内核的大门(异常向量表_AArch64)
|
Ubuntu
X86下构建 ARM 文件系统并运行
X86下构建 ARM 文件系统并运行
635 0
从openjdk.java.net获取OpenJDK8源码并编译(amd64/aarch64/arm64)
从openjdk.java.net获取OpenJDK8源码并编译(amd64/aarch64/arm64)
341 0
|
Android开发
eclipse ARM/AARCH64版本下载
eclipse ARM/AARCH64版本下载
271 0
开源:OpenJDK8 AARCH64(ARM)
开源:OpenJDK8 AARCH64(ARM)
483 0