Eu quero mudar de Arch + Windows [GPT, inicialização dupla usando o menu EFI incorporado] para Alpine + Windows [GPT, suporte de inicialização de BIOS legado, XEN, partições de LVM para Alpine como Dom0 e Windows virtualizado como Dom1] . Digamos que seja a minha ideia de "pesquisa". Como fazer uma instância do windows no XEN e como instalá-lo está fora do escopo. Eu farei isso sozinho. Preocupo-me mais com o processo de inicialização: flags / options configurados de forma adequada, recursos / módulos incluídos no initramfs, etc. A instalação será feita em HDD externo. Há duas razões para isso: (1) ter certeza de que tudo funciona bem antes de passar para o built-in one e (2) para tornar a solução portátil / Live. Por favor, não há GRUB . Quer fazer isso usando apenas SYSLINUX.
Então, é assim que "imagino" que o layout do disco deve ser:
[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)
...
Esta é minha lista de suposições:
/usr/share/syslinux/efi64/syslinux.efi
as
/mnt/EFI/EFI/Boot/bootx64.efi
e crie
%código%. Conteúdo do
Este último deve coincidir com /mnt/EFI/loader/entries/alpine.conf
. Para referência
Eu uso:
link
syslinux.cfg
deve, de alguma forma, encontrar e pular para
%código%. Então carregar
gptmbr.bin
e determinar como o kernel XEN deve ser
começado. /mnt/LVM/boot/syslinux/ldsyslinux.c32
Começa e opções tiradas de syslinux.cfg
(certamente, o conteúdo deve coincidir com syslinux.efi
). Há alguma incerteza sobre as coisas que eu não encontrei muita informação na web:
loader/entries/alpine.conf
e syslinux.cfg
do Syslinux. Existe alguma informação no wiki do Arch que diz que sys é loader e carrega o resto de si mesmo do c32. Nada mais .. ldlinux.sys
e ldlinux.c32
do Syslinux. Parece que o segundo é o que eu preciso. Esta é a minha lista "TODO" (coisas como mkdir & ampount foram omitidas). Observe que as etapas marcadas com (?) Precisam de esclarecimentos adicionais:
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 -
Perguntas:
mbr.bin
de alguma forma na ordem em que gptmbr.bin
conseguiu encontrar a partição ao inicializar? /dev/vg0/boot
por gptmbr.bin
onde mencionei isso? Tags lvm mbr gpt syslinux alpine-linux