Alpine LVM-Installation mit UEFI / BIOS-Dual-Boot-Unterstützung

753
Timur Fayzrakhmanov

Ich möchte von Arch + Windows [GPT, Dual Boot mit integriertem EFI-Menü] zu Alpine + Windows [GPT, Unterstützung für ältere BIOS-Starts, XEN, LVM-Partitionen sowohl für Alpine als Dom0 als auch für virtualisierte Windows als Dom1 wechseln . Sagen wir es meine "Forschung" -Idee. Wie man eine Instanz von Fenstern in XEN erstellt und installiert, ist außerhalb des Gültigkeitsbereichs. Ich werde es alleine machen. Ich befasse mich mehr mit dem Boot-Vorgang: eigens konfigurierte Flags / Optionen, enthaltene Features / Module in initramfs usw. Die Installation wird auf einer externen Festplatte durchgeführt. Dafür gibt es zwei Gründe: (1) um sicher zu gehen, dass alles in Ordnung ist, bevor Sie zum integrierten Gerät wechseln, und (2) um die Lösung tragbar / live zu machen. Bitte keine GRUB . Sie möchten es nur mit SYSLINUX machen.

So "stelle" ich mir das Plattenlayout vor:

[mbrgpt.bin] # see [3] [protective MBR] [GPT table] EFI partition (FAT32, 200MB) # mount point is /mnt/EFI, see [1] LVM partition /boot (FAT32, 200MB) # mount point is /mnt/LVM/boot, see [2] / (EXT4, 40GB) # mount point is /mnt/LVM/root windows (NTFS, 60GB) ... 

Dies ist meine Annahmenliste:

  • [1] Ich brauche zu kopieren, /usr/share/syslinux/efi64/syslinux.efiwie /mnt/EFI/EFI/Boot/bootx64.efiund erstellen /mnt/EFI/loader/entries/alpine.conf. Der Inhalt des letzteren sollte mit übereinstimmen syslinux.cfg. Als Referenz verwende ich: https://wiki.alpinelinux.org/wiki/Create_UEFI_boot_USB#Create_configuration_files_for_boot_loader
  • [2] Ich weiß, dass es keine gute Idee ist, einen Teil der LVM-Struktur zu erstellen, aber zu Forschungszwecken - er möchte sowieso ein logisches Volume sein (oder gar nicht erstellen). Ich habe im Arch Linux-Forum gehört, dass SYSLINUX dies unterstützt. Es wurden jedoch keine "Zeugen" im Internet gefunden.
  • [3] Wenn ich von einem älteren BIOS-System aus boote, gptmbr.binsollte es irgendwie zu finden und überspringen /mnt/LVM/boot/syslinux/ldsyslinux.c32. Laden Sie dann syslinux.cfgund bestimmen Sie, wie der XEN-Kernel gestartet werden soll.
  • [*] Wenn ich von einem UEFI-System aus boote, werden syslinux.efi Starts und Optionen übernommen loader/entries/alpine.conf (sicherlich sollte der Inhalt mit übereinstimmen syslinux.cfg).

Es gibt einige Ungewissheit über die Dinge, die ich im Web nicht gefunden habe:

  • Unterschied zwischen Syslinux ldlinux.sysund ldlinux.c32. In Archs Wiki gibt es einige Informationen, die besagen, dass sys loader ist und der Rest von c32 geladen wird. Nichts mehr..
  • Unterschied zwischen Syslinux mbr.binund gptmbr.binBoot-Records. Anscheinend ist das zweite was ich brauche.

Dies ist meine "TODO" -Liste (Dinge wie mkdir & umount wurden kurz übersprungen). Bitte beachten Sie, dass Schritte, die mit (?) Gekennzeichnet sind, zusätzliche Informationen benötigen:

1. Partitioning medium gdisk /dev/sdx # create new GPT table # create EFI partition and set type to "EFI System" (sdx1) # create Linux LVM part and set type to "Linux LVM" (sdx2) # set an attribute for EFI part (?) # known attributes are: 0: system partition 1: hide from EFI 2: legacy BIOS bootable (seems like this is what gptmbr.bin need to pick it up) 60: read-only 62: hidden 63: do not automount  2. Format EFI partition  apk add dosfstools mkfs.fat -F 32 /dev/sdx1  3. Copy SYSLINUX's UEFI bootloader mount /dev/sdx1 /mnt/EFI cp /usr/share/syslinux/efi64/syslinux.efi /mnt/EFI/EFI/Boot/bootx64.efi  4. Install LVM apk add lvm2 rc-update add lvm # add device mapper modprobe dm-mod echo dm-mod >> /etc/modules  5. Create LVM layout pvcreate /dev/sdx2 vgcreate vg0 /dev/sdX2 # root lvcreate -n root -L 40G vg0 mkfs.ext4 /dev/vg0/root # boot lvcreate -n boot -L 200M vg0 mkfs.fat -F 32 /dev/vg0/boot # windows etc goes here ...  6. Rebuild initramfs mount /dev/vg0/root /mnt/LVM/root vi /etc/mkinitfs/mkinitfs.conf # append lvm to features=".." mkinitfs -c /etc/mkinitfs/mkinitfs.conf -b /mnt/LVM/boot  7. Create swap file mount /dev/vg0/root /mnt/LVM/root && cd /mnt/LVM/root fallocate -l 2G ./swapfile # or dd if=/dev/zero of=./swapfile bs=1M count=2048 chmod 600 ./swapfile mkswap ./swapfile swapon ./swapfile rc-update add swap # add '/swapfile none swap defaults 0 0' to /etc/fstab  8. Install SYSLINUX package & burn VBR apk add syslinux dd if=/usr/share/syslinux/gptmbr.bin of=/dev/sdx  9. Copy Alpine mount /dev/vg0/boot /mnt/LVM/boot setup-bootable /path/to/latest-alpine.iso /mnt/LVM/boot  10. Install SYSLINUX and tight things together syslinux --directory /boot/syslinux/ --install /dev/sdb1 vi /mnt/LVM/boot/syslinux/syslinux.cfg # (?) vi /mnt/EFI/loader/entries/alpine.conf # (?)  Last. Store changes made locally into root lbu package - | tar -C /mnt/LVM/root -xzf - 

Fragen:

  1. Sind die oben genannten Schritte ein guter Weg? Wenn ich etwas verpasst habe oder überkompliziert, lass es mich wissen.
  2. Muss ich /dev/vg0/bootirgendwie markieren, gptmbr.binum die Partition beim Booten finden zu können?
  3. Kann ich mich von LVM Boot - Partition und Ersatz los /mnt/LVM/bootmit, /mnt/LVM/rootwo ich es erwähnt?
0

0 Antworten auf die Frage