LoginSignup
18
21

More than 5 years have passed since last update.

Parted を使ってディスクを初期化する

Last updated at Posted at 2018-01-15

まとめ

msdos 形式でパーティション作成 (R-Car M3 等)

$ sudo parted /dev/sdc mklabel msdos
$ sudo parted /dev/sdc mkpart primary 0% 100%

gpt でパーティション作成 (今時の方法)

$ sudo parted /dev/sdc mklabel gpt
$ sudo parted /dev/sdc mkpart hoge 0% 100%

フォーマット

$ sudo mkfs.ext4 /dev/sdc1

解説

今まで fdisk で何となく生きてこれたがちゃんと parted について調べた。やりたいことは単純で、SD カードを初期化して全部 ext4 にしたい。

まず、SD カードデバイスの確認には私は lsblk を使っている。この例だとたまたま3つのパーティションが出来ているが、これを全部消して ext4 全部にしたい。

$ lsblk
NAME                        MAJ:MIN RM   SIZE RO TYPE   MOUNTPOINT
sdc                           8:32   1    15G  0 disk   
├─sdc2                        8:34   1   1.5G  0 part   
├─sdc3                        8:35   1    44M  0 part   
└─sdc1                        8:33   1  23.3M  0 part   

parted にはコマンドラインから操作する command line と一旦 parted の中に入って操作する interactive の2つのモードがあるが、ここでは command line だけを使う。たとえば、

parted /dev/sdc print

で /dev/sdc にある SD カードのパーティションを表示する。command line でもかなり色んな質問をして来るが、無視したい場合は --script オプションで質問を無視する事も出来る。

$ sudo parted /dev/sdc print
Warning: Not all of the space available to /dev/sdc appears to be used, you can fix the GPT to use all of the space (an extra
28113994 blocks) or continue with the current setting? 
Fix/Ignore? I                                                             
Model: TS-RDF5 SD Transcend (scsi)
Disk /dev/sdc: 16.1GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system     Name     Flags
 1      1049kB  25.4MB  24.4MB  fat16           primary  legacy_boot
 2      26.2MB  1648MB  1622MB  ext4            primary
 3      1648MB  1694MB  46.1MB  linux-swap(v1)  primary

パーティションテーブルを作り直すには mklabel を使う。

mklabel label-type

label-type としては古い msdos と新しい gpt がある。

$ sudo parted /dev/sdc mklabel gpt
Warning: The existing disk label on /dev/sdc will be destroyed and all data on this disk will be lost. Do you want to continue?
Yes/No? Y
Information: You may need to update /etc/fstab.

パーティションの作成には mkpart を使う。

mkpart [part-type fs-type name] start end

mklabel で msdos を指定すると part-type (primary | extended) が必須になる。mklabel で gpt を指定すると name が必須となる。start と end の単位として セクタやバイト数など色々使える。ただ、% 以外を使うと The resulting partition is not properly aligned for best performance. という警告が出る事があって使いづらい。

ディスク全域を使うには以下のようにする。gpt の場合 name が必須らしいので適当に hoge と入れた。ここで fs-type の指定も出来るが、フォーマットは後で行うので省略して良い。

$ sudo parted /dev/sdc mkpart hoge 0% 100%
Information: You may need to update /etc/fstab.

パーティションをフォーマット

$ sudo mkfs.ext4 /dev/sdc1

出来上がり。

ちなみに

sudo parted -s /dev/sdc mklabel msdos mkpart primary 0% 100%

のように続けて一行でコマンドを書けるらしいが、これで作った SD は妙なエラーが出て実機で動かなかった。(要調査)

参考

18
21
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
21