您的位置:首页 > 文旅 > 旅游 > 东莞建设专业网站_网页海报设计教程_流量精灵网页版_客户管理系统

东莞建设专业网站_网页海报设计教程_流量精灵网页版_客户管理系统

2025/3/22 1:39:42 来源:https://blog.csdn.net/m0_56800366/article/details/146343738  浏览:    关键词:东莞建设专业网站_网页海报设计教程_流量精灵网页版_客户管理系统
东莞建设专业网站_网页海报设计教程_流量精灵网页版_客户管理系统

从官方发行版镜像提取内核

如果你想运行完整的 Linux 发行版(如 Ubuntu、Debian),可以从官方的 ARM64 镜像 提取内核 (vmlinuzImage)。


步骤 1:下载官方 ARM64 镜像

首先,下载官方提供的 Ubuntu ARM64 镜像,这里以 Ubuntu 22.04 Server 为例:

wget https://cloud-images.ubuntu.com/releases/22.04/release/ubuntu-22.04-server-cloudimg-arm64.img

也可以去 Ubuntu 官方云镜像 选择最新版本。

如果你需要 Debian

wget https://cdimage.debian.org/cdimage/cloud/latest/debian-12-generic-arm64.qcow2

步骤 2:安装挂载工具

我们需要 guestfishqemu-nbd 来挂载 .img.qcow2 镜像文件,以提取 /boot 目录中的内核和设备树。

安装 guestfish

sudo apt update
sudo apt install -y libguestfs-tools

安装 qemu-nbd

如果你选择用 qemu-nbd,需要安装:

sudo apt install -y qemu-utils

方法 1:使用 guestfish 提取内核

guestfish 是专门用于查看和提取虚拟机磁盘内容的工具。

  1. 列出分区

    guestfish --ro -a ubuntu-22.04-server-cloudimg-arm64.img -i list-filesystems
    

    输出示例:

    /dev/sda1: ext4
    
  2. 挂载并查看 /boot 目录

    guestfish --ro -a ubuntu-22.04-server-cloudimg-arm64.img -i
    

    进入交互模式后,运行:

    ls /boot
    

    你应该能看到类似的文件:

    vmlinuz-5.15.0-105-generic
    initrd.img-5.15.0-105-generic
    
  3. 提取内核文件

    copy-out /boot/vmlinuz-5.15.0-105-generic .
    mv vmlinuz-5.15.0-105-generic Image
    
  4. 解压内核

    zcat Image > Image.uncompressed
    mv Image.uncompressed Image
    

    这样,你就得到了一个 QEMU 可用的 Image 内核文件。


方法 2:使用 qemu-nbd 挂载提取

如果你不想用 guestfish,可以用 qemu-nbd 直接挂载磁盘。

  1. 加载 nbd 模块

    sudo modprobe nbd max_part=8
    
  2. 挂载镜像

    sudo qemu-nbd --connect=/dev/nbd0 ubuntu-22.04-server-cloudimg-arm64.img
    sudo fdisk -l /dev/nbd0  # 查看分区信息
    

    假设 /dev/nbd0p1 是根文件系统(通常是 ext4),然后挂载:

    sudo mount /dev/nbd0p1 /mnt
    
  3. 查找 /boot 目录

    ls /mnt/boot
    

    找到类似 vmlinuz-5.15.0-105-generic 的文件。

  4. 复制内核

    cp /mnt/boot/vmlinuz-5.15.0-105-generic .
    mv vmlinuz-5.15.0-105-generic Image
    
  5. 卸载镜像

    sudo umount /mnt
    sudo qemu-nbd --disconnect /dev/nbd0
    

步骤 3:提取 initrd(可选)

如果你的系统需要 initramfs,可以同时提取 initrd.img

cp /mnt/boot/initrd.img-5.15.0-105-generic initrd.img

并在 QEMU 启动时加入:

-initrd initrd.img

步骤 4:获取设备树(可选)

如果你的模拟目标需要 设备树(DTB),可以从 /boot/dtb//boot/dtbs/ 目录获取:

cp -r /mnt/boot/dtb-* dtb/

或者从 /usr/lib/linux-image-*/ 目录获取。


总结

方法适用情况主要命令
guestfish更安全、自动识别文件系统guestfish --ro -a img -i copy-out
qemu-nbd适用于手动挂载qemu-nbd --connect=/dev/nbd0 + mount /mnt

完整 QEMU 启动示例

假设你已经提取了:

  • 内核镜像: Image
  • 根文件系统: ubuntu-22.04-server-cloudimg-arm64.img
  • initrd(可选): initrd.img

启动命令

qemu-system-aarch64 \-machine virt,virtualization=true,gic-version=3 \-cpu cortex-a55 -smp 4 -m 2048M \-nographic \-net nic -net tap,ifname=tap0,script=no \-kernel Image \-initrd initrd.img \-hda ubuntu-22.04-server-cloudimg-arm64.img \-append "root=/dev/vda rw console=ttyAMA0"

这样,你就能使用 官方发行版的 ARM64 镜像 运行 QEMU 虚拟机!🚀

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com