Как настроить Xen с dom 0 Alpine Linux, LUKS LVM и GRUB на платформе UEFI?
Я хотел бы иметь следующую настройку: система в режиме UEFI с жестким диском с разделами GPT. Диск должен содержать (незашифрованный) системный раздел EFI, зашифрованный загрузочный раздел и зашифрованный раздел lvm. GRUB должен быть загрузчиком, а поверх него я хочу ядро Xen и Alpine Linux как dom 0.
Чтобы установить Alpine Linux без Xen, я скачал ISO-образ и записал его на USB-накопитель с Rufus (GPT, iso mode). Затем я загружаюсь с USB-накопителя в режиме UEFI и могу успешно установить Alpine.
Чтобы установить Alpine Linux с настроенными разделами, я запускаю следующие команды:
Настройка Alpine Linux:
setup-keymap us us-intl setup-hostname -n localhost hostname=$(cat $ROOT/etc/hostname 2>/dev/null) setup-interfaces -i <<EOF auto lo iface lo inet loopback auto eth0 iface eth0 inet dhcp hostname $hostname auto eth1 iface eth1 inet dhcp hostname $hostname EOF /etc/init.d/networking --quiet start >/dev/null passwd setup-timezone -z Europe/Amsterdam setup-proxy none setup-apkrepos -f setup-sshd -c none setup-ntp -c chrony
Установить инструменты:
apk update apk add cryptsetup e2fsprogs grub-efi haveged lvm2 parted rc-service haveged start # optionally: only needed to wipe disks
Создание разделов диска:
parted --script /dev/sda mklabel gpt parted --script --align=optimal /dev/sda mkpart fat32 0% 538MB parted --script /dev/sda set 1 esp on parted --script --align=optimal /dev/sda mkpart non-fs 538MB 748MB parted --script --align=optimal /dev/sda mkpart non-fs 748MB 100% parted --script /dev/sda set 3 LVM on # optionally: wiping disks, but this takes too much time for test setups haveged -n 0 | dd of=/dev/sda1 haveged -n 0 | dd of=/dev/sda2 haveged -n 0 | dd of=/dev/sda3
Создание файловых систем:
mkfs.vfat /dev/sda1 # fat32 for ESP cryptsetup luksFormat --type luks /dev/sda2 cryptsetup open --type luks /dev/sda2 bootcrypt mkfs.ext4 /dev/mapper/bootcrypt # encrypted boot partition with ext4 cryptsetup luksFormat --type luks2 /dev/sda3 cryptsetup open --type luks2 /dev/sda3 lvmcrypt pvcreate /dev/mapper/lvmcrypt # encrypted lvm partition vgcreate vg0 /dev/mapper/lvmcrypt lvcreate -L 512M vg0 -n swap lvcreate -l 100%FREE vg0 -n root lvscan # check lvm partitions mkfs.ext4 /dev/vg0/root # ext4 on lvm root partition (alias /dev/mapper/vg0-root) mkswap /dev/vg0/swap # swap lvm partition (alias /dev/mapper/vg0-swap)
Создание монтирований и папок, установка Alpine Linux:
mount -t ext4 /dev/vg0/root /mnt/ mkdir -p /mnt/boot/ mount -t ext4 /dev/mapper/bootcrypt /mnt/boot/ mkdir -p /mnt/boot/efi/ mount -t vfat /dev/sda1 /mnt/boot/efi/ USE_EFI=1 # seems to be ignored by the setup-disk script, can be removed setup-disk -m sys /mnt/
Обновить конфигурацию:
boot_UUID=$(blkid | awk "\$1 == \"/dev/sda2:\" { print \$2 }" | cut -d'"' -f2) lvm_UUID=$(blkid | awk "\$1 == \"/dev/sda3:\" { print \$2 }" | cut -d'"' -f2) root_UUID=$(blkid | awk "\$1 == \"/dev/mapper/vg0-root:\" { print \$2 }" | cut -d'"' -f2) swap_UUID=$(blkid | awk "\$1 == \"/dev/mapper/vg0-swap:\" { print \$2 }" | cut -d'"' -f2) printf "target='bootcrypt'\n" >> /mnt/etc/conf.d/dmcrypt printf "source=UUID=\"$boot_UUID\"\n" >> /mnt/etc/conf.d/dmcrypt #chroot /mnt rc-update add dmcrypt boot (there seems to be a bug in openrc: https://github.com/OpenRC/openrc/issues/243) chroot /mnt ln -s /etc/init.d/dmcrypt /etc/runlevels/boot/dmcrypt # temporary workaround printf "UUID=$swap_UUID\tswap\tswap\tdefault\t0 0\n" >> /mnt/etc/fstab printf 'features="ata base ide scsi usb virtio ext4 lvm cryptsetup"\n' > /mnt/etc/mkinitfs/mkinitfs.conf mkinitfs -c /mnt/etc/mkinitfs/mkinitfs.conf -b /mnt/ $(ls /mnt/lib/modules/) mkdir -p /mnt/boot/grub/ mkdir -p /etc/default/ cat > /mnt/boot/grub/grub.cfg <<EOF set timeout=2 insmod all_video menuentry "Alpine Linux" { linux /boot/vmlinuz-vanilla modules=sd-mod,usb-storage,ext4 cryptroot=UUID=$lvm_UUID cryptdm=lvmcrypt root=UUID=$root_UUID nomodeset quiet rootfstype=ext4 initrd /boot/initramfs-vanilla } EOF cat >> /etc/default/grub <<EOF GRUB_ENABLE_CRYPTODISK=y EOF grub-install --target=x86_64-efi --bootloader-id=alpine --boot-directory=/mnt/boot --efi-directory=/mnt/boot/efi --recheck --no-nvram install -D /mnt/boot/efi/EFI/alpine/grubx64.efi /mnt/boot/efi/EFI/boot/bootx64.efi
Таким образом, GRUB запрашивает пароль загрузочного раздела, initramfs (или ядро или что-то еще?) Запрашивает пароль раздела lvm, и, наконец, OpenRC запрашивает пароль загрузочного раздела (интернет предоставляет достаточно источников, почему загрузочный раздел необходимо расшифровать дважды) ,
Завершить настройку:
umount /mnt/boot/efi/ umount /mnt/boot/ umount /mnt/ swapoff -a vgchange -a n cryptsetup luksClose lvmcrypt cryptsetup luksClose bootcrypt reboot
Итак, на данный момент у меня есть система в режиме UEFI с разделами GPT, LUKS, LVM, GRUB и Alpine Linux. Я могу использовать Alpine Linux, как и ожидалось, и никаких проблем здесь нет.
Теперь я хочу установить Xen и запустить следующие команды:
for mod in xen_netback xen_blkback xenfs xen_pciback xen_wdt tun; do if modprobe $mod; then grep -q -q $mod /etc/modules || echo $mod >> /etc/modules fi done apk add xen xen-hypervisor for svc in xenstored xenconsoled xendomains xenqemu; do rc-update add $svc default done grubcfg=$(cat /boot/grub/grub.cfg) cat > /boot/grub/grub.cfg <<EOF menuentry "Xen Alpine Linux" { multiboot2 /boot/xen.gz placeholder smt=1 module2 /boot/vmlinuz-vanilla placeholder modules=sd-mod,usb-storage,ext4 cryptroot=UUID=$lvm_UUID cryptdm=lvmcrypt root=UUID=$root_UUID nomodeset quiet rootfstype=ext4 module2 /boot/initramfs-vanilla } $grubcfg EOF
Когда я выбираю Xen Alpine Linux из вариантов загрузки, Xen запускается без ошибок, но после отказа от консоли у меня появляется черный экран, и клавиатура больше не отвечает. То же самое происходит, когда я удаляю опцию тихого ядра из grub.cfg. Он не выводит никакой дополнительной информации. Как я могу решить эту проблему или эта настройка не поддерживается?
Я заметил, что когда я использую multiboot и module вместо multiboot2 и module2, Xen выдает ошибку "(XEN) Ошибка ACPI (tbxfroot-8217): действительный RSDP не был найден [20070126]" и отключает ACPI, но на этот раз после Отказывается от консоли, система запрашивает пароль раздела lvm. Но проблема в том, что клавиатура не отвечает, поэтому я не могу ввести пароль и продолжить процесс загрузки.
0 ответов на вопрос
Похожие вопросы
-
4
Как сделать загрузчик Windows по умолчанию?
-
1
в двойной загрузке Ubuntu перестала загружаться; теперь он просто идет в Grub
-
2
Установка двойной загрузки Ubuntu Grub error 18
-
-
1
Как удалить / добавить параметры Windows из загрузчика
-
2
Изменение фонового изображения загрузочного экрана Linux Mint
-
1
Не могли бы вы иметь возможность создания образа жесткого диска в Grub?
-
1
Установка Windows 7 на машине с двойной загрузкой
-
3
Восстановите grub mbr и / boot, используя Ubuntu 9.04 live CD
-
2
Xen: возможно ли запустить установленную Windows внутри Xen?
-
6
Загрузка нескольких ОС и GRUB