
一、宿主机环境准备
安装依赖工具
# 更新系统并安装 QEMU 及配套工具
sudo apt update -y && sudo apt upgrade -y
sudo apt install -y qemu-system-x86 qemu-utils gcc make git \
linux-headers-6.2.0-26-generic parted e2fsprogs \
wget curl bash-completion准备核心文件(内核 + 基础镜像)
# 创建工作目录(统一管理文件)
mkdir -p ~/qemu-ubuntu22.04.5 && cd ~/qemu-ubuntu22.04.5
# 复制宿主机 6.2.0-26 内核(版本严格匹配,避免驱动问题)
cp /boot/vmlinuz-6.2.0-26-generic ./vmlinuz
cp /boot/initrd.img-6.2.0-26-generic ./initrd
# 下载 ubuntu-base 镜像(清华源,速度更快)
wget https://mirrors.tuna.tsinghua.edu.cn/ubuntu-cdimage/ubuntu-base/releases/22.04/release/ubuntu-base-22.04.5-base-amd64.tar.gz -O ubuntu-base.tar.gz
# 验证镜像完整性(防止解压失败)
mkdir -p test && tar -xzf ubuntu-base.tar.gz -C test
[ -f "test/bin/bash" ] && echo "镜像完整" || (echo "镜像损坏,重新下载" && exit 1)
rm -rf test二、创建并初始化 40GB 根文件系统
生成镜像并格式化
# 创建 40GB raw 格式镜像(足够日常使用)
qemu-img create -f raw rootfs.img 40G
# 格式化为 ext4 文件系统(输入 y 确认)
echo "y" | mkfs.ext4 rootfs.img挂载镜像并配置基础环境
# 挂载镜像到 ./mnt 目录
mkdir -p ./mnt && sudo mount -o loop rootfs.img ./mnt
# 解压 ubuntu-base 到镜像
sudo tar -xzf ubuntu-base.tar.gz -C ./mnt
# 配置 DNS(解决域名解析问题,复制宿主机配置)
sudo cp /etc/resolv.conf ./mnt/etc/resolv.conf
# 配置软件源(清华源 + 安全源,确保更新速度和安全性)
sudo tee ./mnt/etc/apt/sources.list << EOF
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu/ jammy-security main restricted universe multiverse
EOF
# 绑定系统目录(解决 chroot 权限和设备访问问题)
sudo mount --bind /dev ./mnt/dev
sudo mount --bind /dev/pts ./mnt/dev/pts # 关键:支持 sudo 和终端交互
sudo mount --bind /proc ./mnt/proc
sudo mount --bind /sys ./mnt/sys
# 补全缺失目录(避免网络配置和 APT 报错)
sudo mkdir -p ./mnt/etc/network ./mnt/var/lib/apt/lists/partial
sudo chmod 755 ./mnt/etc/network ./mnt/var/lib/apt/lists三、chroot 环境初始化(核心配置)
# 进入 ubuntu-base 内部环境
sudo chroot ./mnt /bin/bash
# 1. 设置 root 密码(示例:root123,按提示输入两次)
passwd
# 2. 安装核心工具(bash 补全、串口驱动、SSH 等)
apt update # 基于清华源更新,速度更快
apt install -y sudo openssh-server net-tools vim \
ifupdown kmod bash-completion \
linux-image-6.2.0-26-generic linux-headers-6.2.0-26-generic
# 3. 创建普通用户(qemu-user,密码:qemu123,赋予 sudo 权限)
useradd -m qemu
passwd qemu
usermod -aG sudo qemu
# 4. 配置 bash 为默认 Shell(替代功能有限的 sh)
chsh -s /bin/bash root
chsh -s /bin/bash qemu
# 5. 配置串口驱动(8250,解决 /dev/ttyS0 缺失问题)
modprobe 8250 # 加载驱动
echo "8250" > /etc/modules-load.d/8250.conf # 开机自动加载
tee /etc/udev/rules.d/50-ttyS0.rules << EOF
KERNEL=="ttyS0", SUBSYSTEM=="tty", MODE="0660", OWNER="root", GROUP="dialout"
EOF
# 6. 配置网络(开机自动获取 IP,固定网卡名为 eth0)
tee /etc/network/interfaces << EOF
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
EOF
ln -s /dev/null /etc/udev/rules.d/80-net-setup-link.rules # 禁用网卡名自动重命名
# 7. 添加 /etc/readme.txt(记录系统配置信息)
tee /etc/readme.txt << EOF
QEMU ubuntu-base System Info
============================
- OS Version: Ubuntu 22.04.5 LTS (jammy)
- Kernel Version: 6.2.0-26-generic
- QEMU Version: 6.2.0
- Key Configurations:
1. SSH Service: Enabled (port 22, host forwarded to 10022)
2. Serial Port: /dev/ttyS0 (8250 driver loaded)
3. Default Shell: bash (with bash-completion)
4. Software Sources: Tsinghua Mirror + Ubuntu Security
EOF
# 8. 退出 chroot 环境
exit
# 9. 卸载所有挂载点(避免镜像损坏)
sudo umount ./mnt/dev/pts ./mnt/dev ./mnt/proc ./mnt/sys ./mnt四、创建 QEMU 启动脚本并验证
编写启动脚本(适配 QEMU 6.2.0)
tee ./start.sh << EOF
#!/bin/bash
# QEMU 启动参数说明:
# -enable-kvm:启用硬件加速
# -smp 2:分配 2 核 CPU
# -m 2G:分配 2GB 内存
# -kernel/initrd:指定内核和初始化镜像
# -drive:挂载根文件系统
# -chardev/device:绑定串口到终端
# -net:配置网络(端口转发 SSH 到宿主机 10022)
qemu-system-x86_64 -enable-kvm -cpu host -smp 2 -m 2G \
-kernel ./vmlinuz -initrd ./initrd \
-drive format=raw,file=./rootfs.img,if=virtio \
-chardev stdio,id=serial0 -device isa-serial,chardev=serial0,index=0 \
-append "root=/dev/vda rw console=ttyS0,115200n8 net.ifnames=0" \
-monitor none -display none \
-net nic,model=virtio -net user,hostfwd=tcp::10022-:22
EOF
# 赋予执行权限
chmod +x start.sh启动并验证环境
# 启动虚拟机
sudo ./start.sh
# 登录验证(出现 login 提示后)
# 用户名:qemu-user 或 root,密码:qemu123 或 root123
# 登录后执行以下命令确认系统正常
uname -r # 输出 6.2.0-26-generic(内核版本匹配)
echo $SHELL # 输出 /bin/bash(bash 为默认 Shell)
ls -l /etc/readme.txt # 确认文件存在
cat /etc/readme.txt # 查看系统信息
ping -c 3 baidu.com # 网络通畅
sudo systemctl status ssh # SSH 服务正常运行
lsmod | grep 8250 # 串口驱动已加载五、常见问题解决

点击图片可查看完整电子表格
六、日常操作指南
# 宿主机执行:扩容 10GB
qemu-img resize rootfs.img +10G
# 虚拟机内执行:生效扩容
sudo resize2fs /dev/vda七、总结
此环境通过严格的版本统一、完整的基础配置,可稳定支持串口通信、SSH 远程访问、bash 脚本开发等需求,适合嵌入式测试、轻量级服务部署等场景。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。