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

참고

Duplicate class ... in module kotlin-stdlib-1.8.0

모듈 build.gradle 에서 모듈의 dependencies 의존성을 잘못 선택하면 여러 에러가 발생하는데. 이번에 최신버전 등으로 건드리면 만나는 에러중 하나가 Depllicated 같은 에러인거 같다.

원래 의존성은 아래 같다.

1
2
3
4
5
6
dependencies {
implementation 'androidx.appcompat:appcompat:1.6.1'

// CameraX core library
def camerax_version = '1.2.0-alpha04'
implementation "androidx.camera:camera-core:$camerax_version"

Android Studio의 Assistance 가 build.gradle 에서 의존성 모듈에 대한 최신버전이 제시되었다.

아래 같이 변경했다.

1
2
3
4
dependencies {
// CameraX core library
def camerax_version = '1.3.0-alpha03' // '1.2.0-alpha04'
implementation "androidx.camera:camera-core:$camerax_version"

그래해 해당 모듈의 최신버전으로 선택했더니 아래같은 에러가 발생했다.

그랬더니 그림 같은 에러가 발생하게 되었다.

원래 버전 혹은 해당 Minor 최신버전으로 변경하니 문제가 사라졌다.

1
2
3
dependencies {
def camerax_version = '1.2.1'
implementation "androidx.camera:camera-core:$camerax_version"

모듈 들의 의존성 버전은 조심해서 건드리자…ㅎㅎ