web-dev-qa-db-ja.com

fdisk-単一行のパーティション

Fdiskコマンドを1行で使用して、USBディスクにパーティションを作成できますか?.

fdiskコマンドは本質的に対話型ですが、fdiskコマンドを使用して1行でパーティション作成を自動化したいと考えています。

8
kumar

fdiskを自動化することは可能ですが、維持するのは簡単ではありません。他の回答が注記しているように、 parted または sfdisk は、必要なことを実行するように設計されており、自動化が簡単です。

別れた

partedを使用して1行でパーティションを作成するには:

parted -a optimal /dev/usb mkpart primary 0% 4096MB

このUNIX SEの投稿 に見られるように。各部分はかなり自明ですが、念のためにmkpartの定義方法を次に示します。

mkpart [part-typefs-typename]開始終了

角かっこ内は任意ですが、part-typestartprimary0%で終わり、4096MBまたは、USBスティックの大きさ。

sfdisk

sfdiskへの入力は、おそらくfdiskへの入力ほど理解しにくいとは言えませんが、自動化のために意図されています

#!/bin/sh
# Example Usage: create_sd /dev/sdb

DRIVE=$1

dd if=/dev/zero of=$DRIVE bs=1024 count=1024

SIZE=`fdisk -l $DRIVE | grep Disk | awk '{print $5}'`

echo DISK SIZE - $SIZE bytes

CYLINDERS=`echo $SIZE/255/63/512 | bc`

echo CYLINDERS - $CYLINDERS

{
echo ,9,0x0C,*
echo ,,,-
} | sfdisk -D -H 255 -S 63 -C $CYLINDERS $DRIVE

mkfs.vfat -F 32 -n "boot" ${DRIVE}1
mke2fs -j -L "rootfs" ${DRIVE}2

The Linux Daily から来ており、1行のリクエストに適合していなくても、どのように実行できるかを示しています。

10
chicks

すべてを消去し、単一のパーティションを作成します。

dev='/dev/sdb'
Sudo umount "$dev"
printf "o\nn\np\n1\n\n\nw\n" | Sudo fdisk "$dev"
Sudo mkfs.ext4 "${dev}1"

参照: https://superuser.com/questions/332252/creating-and-formating-a-partition-using-a-bash-script

おそらく、fdiskの代わりに parted コマンドを使用する必要があります。

2
Peter Lindqvist

sfdiskには、stdinからパーティション情報を読み込む非インタラクティブモードもあります。ただし、partedの方が柔軟性があります。

2
justarobert

代わりに sfdisk を使用してください。

Sfdiskのmanページは少しわかりにくいですが、sfdiskを使用してパーティション設定を自動化する方法のいくつかの 特定の例 を次に示します。 1つの例は、sfdisk -lを介して1つのドライブからパーティション情報を保存し、それを新しいドライブに直接ダンプすることです。

2
Phil Hollenback

GPTテーブルには sgdisk を使用できます:

sgdisk -n 0:0:0 /dev/sde

-n、--new = partnum:start:end新しいパーティションを作成します。パーティション番号、開始セクター、および終了セクターを入力します。開始セクターと終了セクターはどちらも、セクター番号として、またはキビバイト(K)、メビバイト(M)、ギビバイト(G)、テビバイト(T)、またはペビバイト(P)で測定される位置として絶対条件で指定できます。たとえば、40Mはディスクの先頭から40MiBの位置を指定します。 + 2Gのように数値の前に「+」または「-」記号を付けることで、指定されたデフォルト範囲の開始または終了に対して相対的な位置を指定できます。たとえば、+ 2Gはデフォルトの開始セクターの後に2GiBの点を指定し、-200Mは最後の利用可能なセクターの前のポイント200MiB。開始値または終了値0は、デフォルト値を指定します。これは、開始セクターで使用可能な最大のブロックの開始であり、終了セクターで同じブロックの終了です。 partnum値が0の場合、プログラムは最初に使用可能なパーティション番号を使用します。

0
spellanser