Bash 스크립트를 사용하여 fdisk를 자동화하려고 합니다. 내 스크립트에는 다음 코드 블록이 있습니다.
echo "Creating root filesystem partition..."
(
echo n
echo 3
echo
echo
echo w
) | fdisk ${DEVICE}
그 중에는 DEVICE
물리적 디스크 /dev/sda
/dev/nvme0n1
등이 있지만 파티션은 없습니다. 그러나 디스크가 이전에 암호화된 파일 시스템을 생성한 경우 fdisk
서명을 제거하라는 간단한 메시지가 표시됩니다. 블록에 한 줄만 추가하면 되지만 서명이 없는 디스크에서는 문제가 발생합니다.crypto_LUKS
Yes/No
echo Y
crypto_LUKS
블록을 호출하기 전에 wipefs --all --force ${DEVICE}
호출 을 시도했지만 서명 wipefs --all --force ${DEVICE}[1-9]*
이 아닌 일부 일반 파일 시스템과 파티션 테이블만 삭제합니다 LUKS
.
답변1
지금까지 stdin/out에서 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}
세 개의 숫자 집합에서 첫 번째 숫자는 원하는 파티션 번호를 나타내고, 두 번째 숫자는 첫 번째 섹터 번호를 나타내며(사용 가능한 첫 번째 섹터를 원할 경우 0 입력), 마지막 숫자는 파티션을 나타냅니다(고정 위치 또는 나처럼 첫 번째 섹터를 크기 단위로 배치하려면 상대 위치를 사용하고, 사용 가능한 최신 섹터가 있는 파티션을 사용하려면 0으로 설정하세요.
sgdisk가 LUKS 서명을 제거하는 데 어떻게 도움이 되는지 묻는다면 sgdisk가 fdisk의 CLI 프롬프트처럼 요청하는 대신 이러한 서명을 강제로 제거한다고 말할 수 있습니다.