Parted: Criando partições em uma unidade para boot de EUFI, fat16 não monta corretamente ou aparece em firmware como opção de boot

0

Eu tenho uma biblioteca (referida aqui como "wic") que gera um arquivo drive.img que contém várias partições, incluindo uma partição de inicialização com um exe UFI. Se eu dd if=drive.img of=/dev/sdb , funciona perfeitamente.

Estou me referindo ao wic para criar outro script que criará as mesmas partições diretamente na unidade, em vez de um intermediário drive.img .

No meu script, a partição de inicialização contém os arquivos / estrutura exatos que a biblioteca original produziu, bit por bit. Eu me referi ao wic para determinar os comandos exatos do parted para chamar.

O problema é que o exe EFI não é detectado na inicialização usando meu script.

Eu notei algumas diferenças entre a unidade que eu crio e a que a wic faz (depois de dd if=drive.img of=/dev/sdb ) que pode ajudar a determinar o que estou fazendo errado.

  • Se eu anteriormente exibia uma unidade com wic e depois usava meu script para recriar as partições, tudo funciona bem. No entanto, depois de algumas vezes executar meu script, ele irá parar de funcionar e a unidade começará a se comportar de maneira estranha.
  • parted não reconhece o tipo de sistema de arquivos para a partição fat.
  • Quando meu script não está funcionando, ao montar /dev/sdb1 , ele usará um dispositivo de loopback.

Saída:

sdb           8:64   1    15G  0 disk
├─sdb1        8:65   1   1.5G  0 part
├─sdb2        8:66   1    12G  0 part
└─sdb3        8:67   1   1.5G  0 part
loop0         7:3    0  16.6M  0 loop  /media/pknopf/efi
loop1         7:4    0  16.6M  0 loop  /media/pknopf/efi1

Quando eu monto esta partição depois de usar wic, a partição é montada corretamente, sem loopback.

Aqui está o meu script.

#!/usr/bin/env bash

DEVICE="/dev/sdb"
# This is a fat filesystem that contains grub EFI and grub.cfg.
BOOTIMG="/boot.img"

parted -s $DEVICE mklabel gpt
parted -a optimal $DEVICE mkpart primary fat16 0% 10%
parted -a optimal $DEVICE mkpart primary ext2 10% 90%
parted -a optimal $DEVICE mkpart primary ext2 90% 100%

sgdisk --partition-guid=1:3948166f-7d1b-4b75-ad77-5ed5ad5f8e37 $DEVICE
sgdisk --partition-guid=2:9d69c3d4-4175-4a46-baba-64f95bcea861 $DEVICE
sgdisk --partition-guid=3:79067919-3db0-4c63-b78e-b72ce880cd42 $DEVICE

parted $DEVICE name 1 msdos
parted $DEVICE name 2 medxplatform
parted $DEVICE name 3 data

sync

# Boot partition
parted $DEVICE set 1 esp on
# $BOOTIMG is a pre-made fat img using mkdosfs
dd if=$BOOTIMG of=${DEVICE}1 

# Rootfs partition
mkfs.ext4 ${DEVICE}2 -F -L medxplatform

# Data partition
mkfs.ext4 ${DEVICE}3 -F -L data

EDITAR : Parece que parted não vê o tipo de sistema de arquivos ao usar meu script, mas o vê ao usar wic.

Meu script:

Model: innostor USB 3.0 (scsi)
Disk /dev/sde: 16.1GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system  Name          Flags
 1      1049kB  1611MB  1610MB               msdos         legacy_boot, msftdata
 2      1611MB  14.5GB  12.9GB  ext4         medxplatform
 3      14.5GB  16.1GB  1610MB  ext4         data

Wic:

Model: innostor USB 3.0 (scsi)
Disk /dev/sdf: 16.1GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system  Name          Flags
 1      1049kB  25.7MB  24.7MB  fat16        msdos         legacy_boot, msftdata
 2      26.2MB  10.5GB  10.5GB  ext4         medxplatform
 3      10.5GB  11.6GB  1074MB  ext4         data

Note, estou ciente de que os tamanhos das partições são diferentes, mas não acho que seja esse o problema.

    
por Paul Knopf 15.05.2018 / 17:04

0 respostas