Qemu仿真----(12)运行Void Linux Rootfs

发布时间 2023-06-02 15:32:00作者: this毛豆

平台: ubuntu-22.04-desktop-amd64.
对象: void linux rootfs、qemu.
文件: linux-6.1.26.tar.xz、void-aarch64-ROOTFS-20221001.tar.xz.

本例通过qemu运行void linux rootfs for arm64。

1.安装依赖

$ sudo apt install qemu-user-static qemu-system-aarch64 gcc-aarch64-linux-gnu systemd-container

2.下载文件

linux-6.1.26.tar.xz

[https://mirrors.edge.kernel.org/pub/linux/kernel/v6.x/linux-6.1.26.tar.xz]

void-aarch64-ROOTFS-20221001.tar.xz

[https://repo-default.voidlinux.org/live/current/void-aarch64-ROOTFS-20221001.tar.xz]

3.编译内核

$ make defconfig ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-
$ make -j8 ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-

4.创建文件系统

$ dd if=/dev/zero of=voidlinux-base.ext4 bs=4096 count=256K
$ mkfs.ext4 voidlinux-base.ext4
$ sudo mount -t ext4 voidlinux-base.ext4 /mnt
$ sudo tar -xf void-aarch64-ROOTFS-20221001.tar.xz -C /mnt
$ sudo cp /usr/bin/qemu-aarch64-static /mnt/usr/bin/
$ sudo systemd-nspawn -D /mnt

进入chroot环境后,执行:

>$ passwd
>$ echo "voidlinux" > /etc/hostname
>$ xbps-install -Su xbps
>$ xbps-install -u
>$ xbps-install base-system
>$ xbps-remove base-voidstrap
>$ cd /etc/runit/runsvdir/default/
>$ ln -s /etc/sv/agetty-ttyAMA0 agetty-ttyAMA0
>$ exit

安装内核模块:

$ cd linux-6.1.26/
$ sudo make modules_install INSTALL_MOD_PATH=/mnt ARCH=arm64
$ cd ..

卸载文件系统:

$ sudo umount /mnt

5.运行

$ touch start-qemu.sh
$ chmod +x start-qemu.sh
$ vim start-qemu.sh

填入以下内容:

qemu-system-aarch64 \
    -M virt \
    -cpu cortex-a53 \
    -smp 1 \
    -m 512M \
    -nographic \
    -kernel linux-6.1.26/arch/arm64/boot/Image \
    -append "rootwait root=/dev/vda rw console=ttyAMA0" \
    -netdev user,id=eth0 \
    -device virtio-net-device,netdev=eth0 \
    -drive file=voidlinux-base.ext4,if=none,format=raw,id=hd0 \
    -device virtio-blk-device,drive=hd0

账号:root,密码:自己执行passwd设置的。执行start-qemu.sh正常的话,就可以进入系统了。