スクリプトによる自動パーティション化

スクリプトによる自動パーティション化

私は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}

おすすめ記事