编写带有文件系统签名问题的 fdisk 脚本

编写带有文件系统签名问题的 fdisk 脚本

我正在尝试使用 Bash 脚本自动化 fdisk。在我的脚本中,我有以下代码块:

echo "Creating root filesystem partition..."
(
   echo n
   echo 3 
   echo
   echo
   echo w
) | fdisk ${DEVICE}

其中DEVICE是物理磁盘/dev/sda /dev/nvme0n1等,但不是分区。但是,如果磁盘之前创建了加密文件系统,则会在简单提示中fdisk要求删除签名。我可以简单地在块上添加一行,但这会导致不包含任何签名的磁盘出现问题。crypto_LUKSYes/Noecho Ycrypto_LUKS

我曾尝试在调用该块之前调用wipefs --all --force ${DEVICE}and wipefs --all --force ${DEVICE}[1-9]*,但是它仅删除一些普通文件系统和分区表,不适用于LUKS签名。

答案1

到目前为止,从标准输入/输出回显 fdisk 选项似乎是非常硬编码的方法,根据 @phuclv 的建议,使用 sgdisk 是一种非常通用的自动化分区方式。

例如,我将主帖中的这些行更改为基于 sgdisk 的行,这是非常有效的方法:

# Create a GPT on the disk:
sgdisk -o ${DEVICE}

# Create the EFI partition:
sgdisk -n 1:0:+512M ${DEVICE}

# Create the /boot partition:
sgdisk -n 2:0:+$512M ${DEVICE}

# Create the / partition:
sgdisk -n 3:0:0 ${DEVICE}

在该三组数字中,第一个数字表示所需的分区号,第二个数字表示第一个扇区号(如果您想要第一个可用扇区,则输入零),最后一个数字表示分区(您可以使用固定位置或相对位置)像我一样按大小单位定位到第一个扇区,或者如果您想使用最新可用扇区的分区,则将其设置为零)。

如果您问 sgdisk 如何帮助删除 LUKS 签名,我可以说 sgdisk 会强制删除这些签名,而不是像 fdisk 的 CLI 提示符那样询问。

相关内容