스크립트를 통한 자동 파티셔닝

스크립트를 통한 자동 파티셔닝

저는 Arch Linux 설치를 자동화하는 데 도움이 되는 스크립트(학습 목적으로)를 작성 중입니다. 이 스크립트에서는 파티셔닝 문제가 발생했습니다. fdisk, cfdisk, gparted를 사용하여 분할하는 방법을 알고 있지만 이러한 모든 도구에는 수동 개입이 필요합니다. 하지만 자동으로 파티션을 만들고 싶습니다. 이와 관련하여 스크립트에 다음 단계를 포함해야 합니다.

  1. /dev/sda에 GPT 파티션 테이블 생성
  2. 기본 부팅 파티션 생성 - efi(FAT32) - 500MB - /dev/sda1
  3. 기본 루트 파티션 생성 - ext4 - 17GB - /dev/sda2
  4. 기본 스왑 파티션 생성 - 스왑 - 2GB - /dev/sda3

나중에 mkfs 명령을 통해 파일 시스템을 구현할 수 있다는 것을 알고 있습니다. 그러나 EFI 및 SWAP 파티션의 경우 파티션을 분할할 때 이것이 일반 "Linux" 파티션이 아니라는 점을 시스템에 알려야 합니다. 스크립트에서 이러한 단계를 자동화하는 방법을 안내해 주시겠습니까?

답변1

물론, sfdisk가 이 목적에 가장 적합하다는 것을 알았지만 이러한 도구를 사용할 때는 매우 주의해야 합니다. 잘못된 디스크를 분할하여 데이터를 찾을 수 없게 되기 쉽습니다(비록 대부분 손상되지는 않지만).

다음은 GPT 파티션 테이블의 예입니다. 이것은 다음과 같이 장치에 <file>파이프해야 하는 파티션 테이블 텍스트 파일( )입니다 .sfdiskcat <file> | sfdisk <device>

label: gpt
device: /dev/sdY
unit: sectors

1: size=2048,type=21686148-6449-6E6F-744E-656564454649,name=part-bios
2: size=512MiB,type=C12A7328-F81F-11D2-BA4B-00A0C93EC93B,name=part-efi
3: size=512MiB,type=0FC63DAF-8483-4772-8E79-3D69D8477DE4,name=part-boot
4: size=852GiB,type=E6D6D379-F507-44C2-A23C-238F2A3DF928,name=part-lvm
5: type=0FC63DAF-8483-4772-8E79-3D69D8477DE4,name=part-extra

#
# full list of partition UUIDs: sfdisk -X gpt -T
#

이번에는 스크립트의 또 다른 예입니다(더 간단한 경우, DOS 유형 태그이지만 아이디어를 얻으실 수 있습니다).

#!/bin/bash

DEV=/dev/sdXXXXXX # pick your disk device

wipefs -a ${DEV} # recommended if you want to swap partition table types

# partitioning for 20G disk
BOOT_SIZE=512
ROOT_SIZE_SEC=16384

echo "label: dos
device: ${DEV}
unit: sectors

${DEV}1 : size=${BOOT_SIZE_SEC}MiB, type=83
${DEV}2 : size=${ROOT_SIZE_SEC}MiB, type=83
${DEV}3 : type=82
" | sfdisk ${DEV}

답변2

이 구조를 사용할 수 있습니다. 이것은 FAT 형식으로 25MB 파티션을 만드는 데 사용한 스크립트입니다.

명령을 대화형으로 실행 fdisk하고 각 응답에 주석을 달면서 시작하세요. 이 응답을 올바른 순서로 배치하는 데 사용하십시오 echo. 비어 있으면 echo기본 옵션을 나타냅니다.

(
  echo o;
  echo n;
  echo ;
  echo ;
  echo ;
  echo +25M;
  echo a;
  echo n;
  echo ;
  echo ;
  echo ;
  echo ;
  echo w;
) | fdisk /dev/sdb

mkfs.vfat -n 'BOOT' /dev/sdb1

답변3

@schrodigerscatcuriosit

내 필요에 맞게 스크립트를 편집했습니다. 여기있어:

(
  echo g;
  echo n;
  echo ;
  echo ;
  echo +500M;
  echo n;
  echo ;
  echo ;
  echo +17G;
  echo n;
  echo ;
  echo ;
  echo ;
  echo t;
  echo 1;
  echo 1;
  echo t;
  echo ;
  echo 19;
  echo w;
) | fdisk /dev/sda

나는 몇 가지 사항을 변경했습니다.

  1. 첫 번째 "n" 뒤에는 3개가 아닌 2개의 기본 옵션이 있습니다.
  2. 끝에 "echo t"를 추가하고 파티션 1을 선택한 다음 EFI 시스템인 옵션 1을 선택했습니다.
  3. 다시 "echo t"를 추가하고 파티션 3의 유형을 스왑으로 변경했습니다.

/dev/sda1의 유형을 EFI로, /dev/sda3의 유형을 SWAP로 변경하는 것이 필요하다고 생각합니다. 어떻게 생각하나요?

관련 정보