一、前情提要
- 在工作中,不可避免的需要制作各种客户需要的文件系统,常用的ubuntu、debian等
- 主要需求有:
- 带图形化界面
- 不带图形化界面
- 需提前打包一些应用依赖包进去
- 需要提前内置一些文件或开机自启执行脚本等
- 环境:ubuntu20.04 服务器版本
一、操作流程
1.1 构建工具下载
# 切换更新源
sudo vim /etc/apt/sources.list
:%s/archive.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g
或:%s/archive.ubuntu.com/mirrors.aliyun.com/g
sudo apt-get update
sudo apt-get upgrade
sudo apt install qemu-user-static -y
- 利用当前操作系统来运行其它架构的一个仿真模拟器,类似虚拟机。
sudo apt install debootstrap -y
- Debian/ubuntu 制作文件系统的工具
- 支持的发行版本可以在/usr/share/debootstrap/scripts查看
- sudo debootstrap --arch [平台] [发行版本代号] [目录]
- –include=systemd,systemd-coredump,makedev,locales,vim,openssh-serve,bash-completion // 定制文件系统所包含的软件包
ubuntu 20.04 版本代号 focal 查看
sudo debootstrap --foreign --verbose --arch=amd64 focal ubuntu20.04 http://mirrors.tuna.tsinghua.edu.cn/ubuntu/
debian 12 版本代号 bookworm 查看
sudo debootstrap --foreign --verbose --arch=arm64 bookworm debian12 http://mirrors.tuna.tsinghua.edu.cn/debian/
sudo cp /usr/bin/qemu-aarch64-static debian12/usr/bin/
- 64位 系统
sudo cp /usr/bin/qemu-arm-static debian12/usr/bin/
- 32位 系统
sudo LC_ALL=C LANGUAGE=C LANG=C chroot debian12 /debootstrap/debootstrap --second-stage --verbose
- 将下载的根文件系统进行一些初始化配置
- 显示Base system installed successfully即表示初始化成功。
sudo chroot debian12
- 切换工作目录,为后续工作准备
passwd root
- 设置root的密码
useradd -G sudo -m -s /bin/bash user-name
- 添加 user-name 用户,属于sudo组,并且可执行bash shell
passwd user-name
- 为 user-name 用户添加密码
echo debian12 > /etc/hostname
- 设置主机名,可自定义
rm debian12/usr/bin/qemu-aarch64-static
一个基本的根文件系统已经制作完成
安装需要的软件
apt install vim curl fdisk wget zip unzip openssh-server tasksel
安装图形界面所需要的库文件(可选)
- apt update
- 执行tasksel命令
- 图形用户界面,操作上下键,使用空格键选择,tab键跳出
history -c
- 清除之前的命令历史
exit
- 退出模拟 root,进行文件系统的下一步制作。
1.2 根文件系统制作(此处rootfs即上文debian12文件夹)
# 查看文件系统的大小
du -h rootfs/
# 创建 rootfs.img 大小 1G
sudo dd if=/dev/zero of=rootfs.img bs=1M count=1024
# rootfs.img ext4 格式化
sudo mkfs.ext4 rootfs.img
# 挂载 rootfs.img
mkdir tmp
sudo mount rootfs.img tmp
# 文件系统 拷贝
sudo cp rootfs/* tmp/ -a
# 卸载 rootfs.img
sudo umount tmp
# 删除临时文件夹
sudo rm -rf tmp
# 磁盘检查
sudo e2fsck -p -f rootfs.img
# 调整文件系统到最小值
sudo resize2fs -M rootfs.img
# 查看最终文件系统大小
ls –lht rootfs.img
# 以上为制作一个文件系统的标准操作,按说明操作即可
烧录测试 rootfs.img