Fdiskコマンドを1行で使用して、USBディスクにパーティションを作成できますか?.
fdiskコマンドは本質的に対話型ですが、fdiskコマンドを使用して1行でパーティション作成を自動化したいと考えています。
fdisk
を自動化することは可能ですが、維持するのは簡単ではありません。他の回答が注記しているように、 parted または sfdisk は、必要なことを実行するように設計されており、自動化が簡単です。
parted
を使用して1行でパーティションを作成するには:
parted -a optimal /dev/usb mkpart primary 0% 4096MB
このUNIX SEの投稿 に見られるように。各部分はかなり自明ですが、念のためにmkpart
の定義方法を次に示します。
mkpart
[part-typefs-typename]開始終了
角かっこ内は任意ですが、part-type、startのprimary
は0%
で終わり、4096MB
または、USBスティックの大きさ。
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行のリクエストに適合していなくても、どのように実行できるかを示しています。
すべてを消去し、単一のパーティションを作成します。
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 コマンドを使用する必要があります。
sfdisk
には、stdinからパーティション情報を読み込む非インタラクティブモードもあります。ただし、parted
の方が柔軟性があります。
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の場合、プログラムは最初に使用可能なパーティション番号を使用します。