저는 Arch Linux 설치를 자동화하는 데 도움이 되는 스크립트(학습 목적으로)를 작성 중입니다. 이 스크립트에서는 파티셔닝 문제가 발생했습니다. fdisk, cfdisk, gparted를 사용하여 분할하는 방법을 알고 있지만 이러한 모든 도구에는 수동 개입이 필요합니다. 하지만 자동으로 파티션을 만들고 싶습니다. 이와 관련하여 스크립트에 다음 단계를 포함해야 합니다.
- /dev/sda에 GPT 파티션 테이블 생성
- 기본 부팅 파티션 생성 - efi(FAT32) - 500MB - /dev/sda1
- 기본 루트 파티션 생성 - ext4 - 17GB - /dev/sda2
- 기본 스왑 파티션 생성 - 스왑 - 2GB - /dev/sda3
나중에 mkfs 명령을 통해 파일 시스템을 구현할 수 있다는 것을 알고 있습니다. 그러나 EFI 및 SWAP 파티션의 경우 파티션을 분할할 때 이것이 일반 "Linux" 파티션이 아니라는 점을 시스템에 알려야 합니다. 스크립트에서 이러한 단계를 자동화하는 방법을 안내해 주시겠습니까?
답변1
물론, sfdisk가 이 목적에 가장 적합하다는 것을 알았지만 이러한 도구를 사용할 때는 매우 주의해야 합니다. 잘못된 디스크를 분할하여 데이터를 찾을 수 없게 되기 쉽습니다(비록 대부분 손상되지는 않지만).
다음은 GPT 파티션 테이블의 예입니다. 이것은 다음과 같이 장치에 <file>
파이프해야 하는 파티션 테이블 텍스트 파일( )입니다 .sfdisk
cat <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
나는 몇 가지 사항을 변경했습니다.
- 첫 번째 "n" 뒤에는 3개가 아닌 2개의 기본 옵션이 있습니다.
- 끝에 "echo t"를 추가하고 파티션 1을 선택한 다음 EFI 시스템인 옵션 1을 선택했습니다.
- 다시 "echo t"를 추가하고 파티션 3의 유형을 스왑으로 변경했습니다.
/dev/sda1의 유형을 EFI로, /dev/sda3의 유형을 SWAP로 변경하는 것이 필요하다고 생각합니다. 어떻게 생각하나요?