Parted: EUFI 부팅을 위해 드라이브에 파티션을 생성하면 fat16이 올바르게 설치되지 않거나 펌웨어의 부팅 옵션으로 표시됩니다.

Parted: EUFI 부팅을 위해 드라이브에 파티션을 생성하면 fat16이 올바르게 설치되지 않거나 펌웨어의 부팅 옵션으로 표시됩니다.

drive.imgUFI exe가 있는 부팅 파티션을 포함하여 여러 파티션이 있는 파일을 생성하는 라이브러리(여기서는 "wic"라고 함)가 있습니다 . 그렇게 하면 dd if=drive.img of=/dev/sdb완벽하게 작동합니다.

중간이 아닌 드라이브에 직접 동일한 파티션을 생성하는 또 다른 스크립트를 만들기 위해 wic를 언급하고 있습니다 drive.img.

내 스크립트에서 부팅 파티션에는 원본 라이브러리에서 비트 단위로 생성된 정확한 파일/구조가 포함되어 있습니다. parted호출할 정확한 명령을 결정하기 위해 wic을 참조합니다 .

문제는 내 스크립트를 사용하여 시작할 때 EFI exe가 감지되지 않는다는 것입니다.

내가 만든 드라이브와 WIC가 만든 드라이브(뒷면 dd if=drive.img of=/dev/sdb) 사이에 몇 가지 차이점이 있음을 발견했는데, 이는 내가 뭘 잘못하고 있는지 판단하는 데 도움이 될 수 있습니다.

  • 이전에 wic 플래시 드라이브를 사용한 다음 스크립트를 사용하여 파티션을 다시 생성하면 제대로 작동합니다. 그러나 스크립트를 몇 번 실행한 후에는 작동이 중지되고 드라이브가 비정상적으로 작동하기 시작합니다.
  • partedfat 파티션의 파일 시스템 유형을 인식할 수 없습니다.
  • 내 스크립트가 작동하지 않으면 설치할 때 /dev/sdb1루프백 장치를 사용합니다.

산출:

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

wic를 사용한 후 이 파티션을 마운트하면 루프백 없이 파티션이 올바르게 마운트됩니다.

이것은 내 스크립트입니다.

#!/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

편집하다: 스크립트를 사용할 때는 parted파일 시스템 유형을 볼 수 없지만 wic를 사용할 때는 볼 수 있습니다.

내 스크립트:

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

빅:

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

파티션 크기가 다르다는 것을 알고 있지만 그것이 문제라고 생각하지 않습니다.

관련 정보