创建 Alpine Linux PV DomU

来自 Alpine Linux

获取 Alpine Linux 副本

要创建 Alpine Linux 半虚拟化 (PV) DomU,您需要 Alpine Linux iso 文件。

https://alpinelinux.cn/downloads/ 下载最新的 alpine-virt iso 文件

在本例中,我们将使用 /data/ 目录存放下载和磁盘镜像。

挂载 ISO 镜像

接下来,挂载 iso 文件以便您可以读取内核和 initramfs

mount -t iso9660 -o loop /data/alpine-virt-3.21.3-x86_64.iso /media/cdrom

现在您的内核在 /media/cdrom/boot/vmlinuz-virt,initramfs 在 /media/cdrom/boot/initramfs-virt

或者,您可以使用 uniso7z 将内容提取到临时区域。

创建磁盘镜像

现在您需要创建一个空文件,用作 DomU 的硬盘驱动器(在本例中,我们使用 3GB 磁盘)

dd if=/dev/zero of=/data/a1.img bs=1M count=3000

或者,如果 dom0 上有可用的 LVM 卷组(例如 vg1)和可用空间,请为 Alpine 创建一个逻辑卷

sudo lvcreate -n alpine -L 10g vg1

创建一个引导 ISO 镜像的 DomU 配置文件

接下来,创建一个基本的 DomU 配置文件,以便您可以启动 pv guest iso 文件(您可以将其保存在任何位置,但最常见的位置是 /etc/xen/)。

Contents of /etc/xen/a1.cfg

# Alpine Linux PV DomU # Kernel paths for install kernel = "/media/cdrom/boot/vmlinuz-virt" ramdisk = "/media/cdrom/boot/initramfs-virt" extra="modules=loop,squashfs console=hvc0" # Path to HDD and iso file disk = [ 'format=raw, vdev=xvda, access=w, target=/data/a1.img', 'format=raw, vdev=xvdc, access=r, devtype=cdrom, target=/data/alpine-virt-3.21.3-x86_64.iso' ] # Network configuration vif = ['bridge=br0'] # DomU settings memory = 512 name = "alpine-a1" vcpus = 1 maxvcpus = 1

如果使用 LVM,请在磁盘规范中将 /data/a1.img 替换为 /dev/vg1/alpine

安装 guest 系统

现在您已经有了必要的文件,您可以启动 DomU 以继续安装

xl create -f /etc/xen/a1.cfg -c

使用用户名 “root” 和空密码登录系统。

配置基本系统后,系统会询问您希望将 Alpine 安装在哪里。选择 xvda 和 sys。

这将在您的磁盘上创建三个分区。xvda1 用于 /boot,xvda2 用于 swap,xvda3 用于 /

Available disks are:
  xvda	(3.1 GB  )
Which disk(s) would you like to use? (or '?' for help or 'none') [none] xvda
The following disk is selected:
  xvda	(3.1 GB  )
How would you like to use it? ('sys', 'data' or '?' for help) [?] sys
WARNING: The following disk(s) will be erased:
  xvda	(3.1 GB  )
WARNING: Erase the above disk(s) and continue? [y/N]: y
Initializing partitions on /dev/xvda...
Creating file systems...
Installing system on /dev/xvda3:


Installation is complete. Please reboot.

#

当您重新启动时,pv 引导加载程序 pvgrub 将在 /boot/grub/grub.cfg 中查找其菜单,因此请首先创建该文件。

挂载 boot 分区并为 pvgrub 创建一个 grub/grub.cfg 文件。(请注意,grub.cfg 用于 pvgrub2,它取代了 pvgrub1 及其从 2013 年开始的 menu.lst。)

mount /dev/xvda1 /mnt mkdir /mnt/grub

安装一个基本的文本编辑器,如 nanovim

apk add nano

如果使用 nano,请输入

nano /mnt/grub/grub.cfg

然后添加以下内容以创建一个基本的 grub2 配置文件

Contents of /mnt/grub/grub.cfg

menuentry 'alpine-xen' { set root=(xen/xvda,msdos1) linux /boot/vmlinuz-virt root=/dev/xvda3 modules=ext4 console=hvc0 initrd /boot/initramfs }

最后,Ctrl-S 保存,Ctrl-X 退出 nano。

卸载并关闭电源。

umount /mnt poweroff

调整 domU 配置文件以从全新安装启动

在您的 Dom0 中,编辑您的 DomU 配置文件以使用 pvgrub 启动。

Contents of /etc/xen/a1.cfg

# Alpine Linux PV DomU kernel = "/usr/lib/grub-xen/grub-x86_64-xen.bin" # Path to HDD and iso file disk = [ 'format=raw, vdev=xvda, access=w, target=/data/a1.img' ] # Network configuration vif = ['bridge=br0'] # DomU settings memory = 512 name = "alpine-a1" vcpus = 1 maxvcpus = 1

确保已安装 grub-xenhost。

apk add grub-xenhost

记住卸载回环 iso 镜像。

umount /media/cdrom

下次启动时,您将看到 grub 启动菜单,并且您的 VM 将启动。

使用旧版 pvgrub

要使用旧版 pvgrub,您需要使用 /boot/grub/menu.lst 而不是 /boot/grub/grub.cfg

Contents of /etc/xen/a1.cfg

default 0 timeout 2 title alpine-xen-pv root (hd0,0) kernel /boot/vmlinuz-virt root=/dev/xvda3 modules=ext4 console=hvc0 initrd /boot/initramfs-virt

并且在 /etc/xen/a1.cfg 中,您需要将 'kernel' 加载器更改为

Contents of /etc/xen/a1.cfg

... kernel = "/usr/lib/xen/boot/pv-grub-x86_64.gz" ...

参见