私は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に変更する必要があると思います。どう思いますか?