parted로 Partition, Format하기

새 디스크 / USB 저장장치를 리눅스 계열에서 사용하고자 할 때.

디스크 확인 lsblk

lsblk 명령은 디바이스 장치가 마운트 된 곳을 출력해 준다.

1
2
3
4
5
6
7
8
NAME                      MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 63.3M 1 loop /snap/core20/1828
loop1 7:1 0 91.8M 1 loop /snap/lxd/23991
sda 8:0 0 119.2G 0 disk
├─sda1 8:1 0 1M 0 part
├─sda2 8:2 0 1G 0 part /boot
└─sda3 8:3 0 118.2G 0 part
└─ubuntu--vg-ubuntu--lv 253:0 0 118.1G 0 lvm /

새 디스크 장치(SSD, HDD, USB 등) 를 붙이고 다시 확인하면 새로운 디스크는 sd[a-z] 형식으로 표현된다.

아래 sdb 는 현재 파티션이 1개 존재하는 상태이다.

1
2
3
4
5
6
7
8
9
10
11
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 63.3M 1 loop /snap/core20/1828
loop1 7:1 0 91.8M 1 loop /snap/lxd/23991
sda 8:0 0 119.2G 0 disk
├─sda1 8:1 0 1M 0 part
├─sda2 8:2 0 1G 0 part /boot
└─sda3 8:3 0 118.2G 0 part
└─ubuntu--vg-ubuntu--lv 253:0 0 118.1G 0 lvm /
sdb 8:16 0 931.5G 0 disk
└─sdb1 8:17 0 931.5G 0 part

[USB 장치]

USB 장치는 mmcblk[0-9] 형식으로 표시된다. 참고 Raspberry Pi:mmcblk

1
2
3
4
5
6
7
8
9
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 119.2G 0 disk
├─sda1 8:1 0 84.5G 0 part
└─sda6 8:6 0 28.9G 0 part /
mmcblk0 179:0 0 7.5G 0 disk
├─mmcblk0p2 179:2 0 6.8G 0 part /media/qkboo/ROOT
├─mmcblk0p3 179:3 0 486.1M 0 part
└─mmcblk0p1 179:1 0 200M 0 part /media/qkboo/EFI

parted 사용

파티션 및 포맷을 위해 마운트된 파티션을 언마운트 한다. parted 는 상호작용 프롬프트에서 사용하거나 단일 명령어로 사용할 수 있다.

parted 프롬프트 사용

[ext4 파티션 생성]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
sudo parted /dev/sdb
(parted) print
Number Start End Size File system Name Flags
1 0.00GB 32.0GB 32.0GB

(parted) mklabel gpt
Warning: The existing disk label on /dev/sda will be destroyed and all data on
this disk will be lost. Do you want to continue?
Yes/No? y

(parted) unit GB
(parted) mkpart primary 0 1000.0GB #디스크 크기 입력

(parted) print
Number Start End Size File system Name Flags
1 0.00GB 32.0GB 32.0GB primary lvm
(parted) quit

[fat32 파티션 생성]

USB 스토리지는 아래 같이 나타난다. 다음은 USB 파티션에 fat32 파일시스템을 프롬프트로 생성하고 있다.

1
2
3
4
5
sudo parted /dev/mmcblk0
(parted) mklabel msdos
(parted) mkpart primary fat32 1MiB 100%
(parted) set 1 boot on
(parted) quit

쉘에서 parted 명령 사용

parted 를 쉘 명령으로 사용해 단계별로 파티션을 생성할 수 있다.

1
2
3
sudo parted /dev/mmcblk0 rm 1
sudo parted /dev/mmcblk0 rm 2
sudo parted /dev/sdc mkpart primary ext3 4MiB 100%

Format, Mount & fstab

생성한 파티션에 시스템 지원 파일 시스템을 생성해야 한다. 해당 파일 시스템으로 파티션을 포맷한 후에 지정한 디렉토리에 마운트를 해서 사용하면 된다. 지속적인 사용을 위해서 /etc/fstab 에 파티션을 마운트 포인트로 등록하면 재시동 후에도 동일한 폴더에 마운트 된다.

mkfs

mkfs 명령은 파일 시스템에 따랴서 -t 옵션에 파일시스템을 지시하거나 mkfs.[FS] 형식을 명령을 바로 쓰기도 한다.

다음을 sdb1 파티션을 ext4 로 포맷하고 있다.

1
sudo mkfs -t ext4 /dev/sdb1

[USB vfat 파일시스템 생성]

1
sudo mkfs -V -t vfat /dev/mmcblk0p1

fstab 에 등록

/etc/fstab 에 새로 포맷한 디스크 경로를 추가 한다.

1
2
3
4
5
6
# HDD
/dev/sdb1 /Home2 ext4 defaults 0 1

# USB LV volume
/dev/vg_usb/dbvol /data ext4 defaults 0 1
/dev/vg_usb/workvol /home/pi/work ext4 defaults 0 1

참고

Raspberry Pi: mmcblk

mmcblk

SD/MMC card 는 MMC 서브시스템을 /dev/mmcblk{id} 형식으로 블럭 장치로 사용한다.

dmesg 로 부트 메시지를 보면 SDHCI 인터페이스에 장착한 장치를 확인할 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
[    0.789621] sdhci: Secure Digital Host Controller Interface driver
[ 0.789628] sdhci: Copyright(c) Pierre Ossman
[ 0.789999] sdhost-bcm2835 3f202000.sdhost: could not get clk, deferring probe
[ 0.790252] sdhci-pltfm: SDHCI platform and OF driver helper
[ 0.791051] ledtrig-cpu: registered to indicate activity on CPUs
[ 0.791232] hidraw: raw HID events driver (C) Jiri Kosina
[ 0.791461] usbcore: registered new interface driver usbhid
[ 0.791467] usbhid: USB HID core driver
[ 0.792448] vchiq: vchiq_init_state: slot_zero = 0xb6980000, is_master = 0
[ 0.794533] Initializing XFRM netlink socket
[ 0.794566] NET: Registered protocol family 17
[ 0.794724] Key type dns_resolver registered
[ 0.795223] Registering SWP/SWPB emulation handler
[ 0.796192] registered taskstats version 1
[ 0.796681] vc-sm: Videocore shared memory driver
[ 0.796694] [vc_sm_connected_init]: start
[ 0.802967] [vc_sm_connected_init]: end - returning 0
[ 0.809343] 3f201000.serial: ttyAMA0 at MMIO 0x3f201000 (irq = 87, base_baud = 0) is a PL011 rev2
[ 0.809410] console [ttyAMA0] enabled
[ 0.811406] sdhost: log_buf @ b6913000 (f6913000)
[ 0.889149] mmc0: sdhost-bcm2835 loaded - DMA enabled (>1)
[ 0.889333] of_cfs_init
[ 0.889478] of_cfs_init: OK
[ 0.890211] Waiting for root device /dev/mmcblk0p2...
[ 0.956566] mmc0: host does not support reading read-only switch, assuming write-enable
[ 0.958563] mmc0: new high speed SDHC card at address 59b4
[ 0.959555] mmcblk0: mmc0:59b4 00000 14.9 GiB
[ 0.961428] mmcblk0: p1 p2

메시지에서 보듯 mmc0 장치에 카드가 삽입되기 전에 인터럽트가 없다.

1
2
$ cat /proc/interrupts |grep mmc
86: 393 0 0 0 ARMCTRL-level 88 Edge mmc0

https://developer.toradex.com/knowledge-base/sd-mmc-card-(linux)

SD Card 포맷 및 디스크 이미지 사용하기

SBC, PC 등의 머신에서 SD Card 사용에 필요한 사항을 정리했다.

2018-08-30: 전체 내용 편집
2017-10-30: swap 추가, timezone 수정
{:.right-history}


## SD Card 와 디스크 이미지 사용하기

SD Card는 Secure Digital의 약자로 Flash memory(비휘발성) 카드 포맷이다.

자세한 내용은 Wikipedia: SD Card 를 확인하자.

자세히 보기