![Parted:在驱动器上创建用于 EUFI 引导的分区,fat16 无法正确安装或在固件上显示为引导选项](https://linux22.com/image/133414/Parted%EF%BC%9A%E5%9C%A8%E9%A9%B1%E5%8A%A8%E5%99%A8%E4%B8%8A%E5%88%9B%E5%BB%BA%E7%94%A8%E4%BA%8E%20EUFI%20%E5%BC%95%E5%AF%BC%E7%9A%84%E5%88%86%E5%8C%BA%EF%BC%8Cfat16%20%E6%97%A0%E6%B3%95%E6%AD%A3%E7%A1%AE%E5%AE%89%E8%A3%85%E6%88%96%E5%9C%A8%E5%9B%BA%E4%BB%B6%E4%B8%8A%E6%98%BE%E7%A4%BA%E4%B8%BA%E5%BC%95%E5%AF%BC%E9%80%89%E9%A1%B9.png)
我有一个库(此处称为“wic”),它生成一个drive.img
包含多个分区的文件,其中包括带有 UFI exe 的启动分区。如果我dd if=drive.img of=/dev/sdb
,它工作完美。
我指的是 wic 来制作另一个脚本,该脚本将直接在驱动器上创建相同的分区,而不是中间的drive.img
.
在我的脚本中,启动分区包含原始库逐位生成的确切文件/结构。我参考 wic 来确定parted
要调用的确切命令。
问题是使用我的脚本启动时未检测到 EFI exe。
我注意到我创建的驱动器与 wic 制作的驱动器(在 后dd if=drive.img of=/dev/sdb
)之间存在一些差异,这可能有助于确定我做错了什么。
- 如果我之前使用 wic 闪存驱动器,然后使用我的脚本重新创建分区,则效果很好。但是,运行我的脚本几次后,它将停止工作,并且驱动器将开始表现异常。
parted
无法识别 fat 分区的文件系统类型。- 当我的脚本不起作用时,在安装时
/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
请注意,我知道分区大小不同,但我不认为这是问题所在。