Posts Raspberry Pi Storage Mount - 라즈베리파이 USB / SD Card Memory 재부팅시 자동 Mount 하기
Post
Cancel

Raspberry Pi Storage Mount - 라즈베리파이 USB / SD Card Memory 재부팅시 자동 Mount 하기

pi

FlyingDeuk's

라즈베리파이 Booting SD의 용량이 제한적이라 추가적인 저장공간을 추가해야 한다.
리눅스는 기본적으로 mount라는 명령어로 mount해야하는 데 이는 재부팅하면 다시 해줘야하는 불편함이 있어 자동으로 mount하는 방법이다.

리눅스 초보로 일일이 찾아본 내용들 내가 필요했던 내용들을 좀 자세하게 적었다. 나와 같은 초보자들이 검색을 줄일 수 있다면…

Wiki's

마운트(mount) 는 컴퓨터 과학에서 저장 장치에 접근할 수 있는 경로를 디렉터리 구조에 편입시키는 작업을 말한다. 좁은 의미로는 유닉스 계열의 운영 체제에서의 mount 명령어 또는 그 명령어를 사용하는 것을 말한다. mount 명령어를 사용하면 저장 장치의 접근 경로를 원하는 위치에 생성할 수 있다. 마운트를 이용하면 분산 파일 시스템으로 확장하기가 용이하다. 사용자는 마운트된 미디어의 파일들에만 접근이 가능하다.[1]

저장소 자동으로 Mount하기

라즈베리파이는 USB 삽입하면 자동으로 root/media 폴더에 자동으로 mount한다. 권한 설정의 문제도 있고 위치상 접근이 어려워 원하는 위치에 마운트해서 사용하는 것이 휠씬 편리하다.

mount 명령을 쓰면 되지만 이는 수동으로 부팅시마다 일일이 명령을 해줘야 하니 자동 Mount하는 법을 알아봤다.

저장매체 선정

일반적으로 저렴한 가격으로 사용가능한 매체는 UBS 메모리 일 것이다. 가성비 있는 128GB 정도의 USB를 마운트해서 영화나 드라마를 저장할 생각이다.

HDD, SSD 등을 고려할 수는 있으나 간단하게 사용할 목적으로…

저장매체 포맷(filesystem) 결정

일반적으로 약간의 구글링으로 전문적인 지식은 얻을 수 있을 거 같으니 간단한 경험과 고려사항만 적는다.

  • MAC OS format : 여러 기기 호환성을 고려해서 Pass
  • Windows format : FAT 32, ex FAT, NTFS
    • FAT 32 : 여러 OS에서 호환성은 가장 좋다. 하지만 대용량 파일을 지원하지않아 Pass (4GB 이상은 안됨)
    • ex FAT : 대용량 파일을 지원하는 FAT의 다음 버전 정도. 일부 안드로이드 OS에선 인식이 안됨.
    • NTFS : Windows에서 가장 많이 사용하는 형식. MacBook은 유료 어플이 있어야하며 리눅스는 최근들어 기본으로 인식됨.
  • Linux Format : 최근 ext4를 많이 사용하는 듯함. 다른 모든 기기에선 불가능.

각각의 형식은 해당 OS에 최적화 되어 있는 것은 당연한 듯하다.

처음엔 NTFS로 포멧… 노트북과 라즈베리파이를 왔다가 갔다가 하면서 쓸 생각으로… 하지만 라즈베리파이(linux)에서 NTFS는 읽기는 괜찮으나 쓰기 속도가 많이 떨어진단다. 그래서 ext4로 변경했다. (테스트 결과 그런거 같음)

저장소 포맷 하기(filesystem 만들기)

라즈베리파이에 삽입후 Linux에서 포맷하는 법을 알아본다. ext4로 포맷은 빼지않고 쭉 라즈베리파이에서만 사용한다는 걸 의미하니…

일단 Unmount 하기

포맷을 위해서는 Unmount 상태에서 해야한다. 라즈베리파이에서 USB 삽입과 동시에 Mount된 것 부터 해제해야함.

1
/dev/sda1 is mounted; will not make a filesystem here!

Mount되어 있으면 포맷이 안된다.

Disk 정보 확인(filesystem)

리눅스에서 디스크를 지정하기 위해서는 여러가지 방법이 있다.

  • UUID, PARTUUID : 저장매체의 고유 ID (포맷후 부여되는 고유번호, 전체 또는 Partition)
  • /dev/sda1 : Device에 물리는 이름 (저장매체 종류에 따라 순서대로 OS에서 부여)
  • LABEL : USB에 부여된 이름 (내가 지정해준 LABEL)

    lsblk, blkid로 해당 정보를 확인 가능하다.

참조 : Linux(debian) - Disk 정보 확인 명령어

1
2
3
4
5
6
7
$ sudo lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda           8:0    1 119.2G  0 disk
└─sda1        8:1    1 119.2G  0 part /media/deuk/deukUSB
mmcblk0     179:0    0 476.9G  0 disk
├─mmcblk0p1 179:1    0   256M  0 part /boot
└─mmcblk0p2 179:2    0 476.7G  0 part /

lsblk : list block 리눅스엔 disk 대신 block으로 표현한다. /media/deuk/deukUSB 에 mount 자동으로 mount 되어 있다.

1
2
3
4
5
$ sudo blkid
/dev/mmcblk0p1: LABEL_FATBOOT="boot" LABEL="boot" UUID="04A5-3FE5" TYPE="vfat" PARTUUID="71364f66-01"
/dev/mmcblk0p2: LABEL="rootfs" UUID="c1578b06-85c2-4327-9c65-4c474a8f23f9" TYPE="ext4" PARTUUID="71364f66-02"
/dev/mmcblk0: PTUUID="71364f66" PTTYPE="dos"
/dev/sda1: LABEL="DeukUSB" UUID="3941989C2008AD55" TYPE="ntfs" PARTUUID="bbb5899b-01"

blkid : block id 위에 설명한 모든 정보를 확인 가능하다. sda1은 sd memory의 첫번째로 삽입된 걸 의미함.

Unmount 하기

device 정보로 Unmount. Device 이름으로 지정.

참조 : Linux(debian) - Disk Mount(자동) 명령어 -> Mount/Unmount에 대한 자세한 내용

1
$ sudo umount /dev/sda1

Root 폴더이므로 sudo!!!

Format 하기 (filesystem 만들기)

MAC OS 를 제외한 거의 모든 형식으로 Format이 가능하며 리눅스에서는 mkfs(make file system)이라 표현함.

참조 : Linux(debian) - Disk Format 명령어 -> 모든 형식의 설명

ext4 filesystem

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
$ sudo mke2fs -t ext4 -L deukUSB -v /dev/sda1
mke2fs 1.44.5 (15-Dec-2018)
/dev/sda1 contains a ext4 file system
	last mounted on Tue Jul 20 14:15:31 2021
Proceed anyway? (y,N) y
fs_types for mke2fs.conf resolution: 'ext4'
Filesystem label=deukUSB
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
7815168 inodes, 31258616 blocks
1562930 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2178940928
954 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Filesystem UUID: 6623e408-3e34-48a3-be7e-031cd21d0e42
Superblock backups stored on blocks:
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
	4096000, 7962624, 11239424, 20480000, 23887872

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (131072 blocks): done
Writing superblocks and filesystem accounting information: done

mke2fs Option (최근에 바뀐 명령어 참조에 자세한 내용 있음)

  • -t : 파일 시스템 지정 (ext4)
  • -L : 라벨 지정 (deukUSB)
  • -v : 자세한 수행 정보 출력
  • /dev/sda1 : 대상 지정

ntfs filesystem

1
$ sudo mkntfs -f -L deukUSB -v /dev/sda1

-f : fast 빠른 포멧
-L : 라벨 지정
-v : 자세한 수행 정보 출력

이외에도 많은 option들이 있지만 많이 사용하는 것만을 설명함 자세한 건 참조…

재부팅시 자동 Mount하기 by fstab

USB 삽입후 자동마운트는 위치와 권한의 문제, 그냥 Mount는 재부팅시 다시 명령어를 입력해야 하기 때문에 fstab을 이용한 자동 Mount를 많이들 이용한다.

1
$ sudo vim /etc/fstab

fstab은 /etc 폴더에 있고 수정해주면 된다.

1
2
3
4
5
proc            /proc           proc    defaults          0       0
PARTUUID=71364f66-01  /boot           vfat    defaults          0       2
PARTUUID=71364f66-02  /               ext4    defaults,noatime  0       1
# a swapfile is not a swap partition, no line here
#   use  dphys-swapfile swap[on|off]  for that

부팅용 SD 카드에 2개의 Partition 으로 /boot 는 부팅을 위한 part, 일반 저장으로 위한 / 의 두개로 나눠져있고 하나는 vfat(FAT32), 다른 하나는 ext4로 되어 있음을 알 수 있다.

아래 줄에 추가해주면 된다. 위에서 얘기한데로 UUID, PARTUUID, dev/sda1, LABEL로 지정 가능하나 간단하게 /dev/sda1 으로 지정해 주었다.

/dev/sda1dev/sda1 으로 맨앞에 / 를 빼먹으면… 부팅안된다… 해결 방법은 맨 밑에…

ntfs filesystem

1
2
/dev/sda1   /home/deukUSB    ntfs   uid=1001,gid=1001,umask=002   0   0
# ntfs filesystem 사용자 지정, umask 설정 가능, ntfs 만 가능함.

ntfs 의 경우는 mount후에는 권한 및 사용자 변경이 불가능하다. 옵션으로 마운트시에 지정해야지만 가능하다.

ext4 filesystem

1
2
/dev/sda1   /home/deukUSB    ext4   defaults   0  0
# ext4 filesystem 사용자 지정, umask 설정이 안되나 mount후에도 지정이 가능하다. defaults 면 일반적인 사용엔 문제없다.

ext4 의 경우는 소유자와 권한 설정은 나중에 해주면 된다. 문제없음.
권한 및 소유자 변경은 참조…
참조 : Linux(debian) - 소유권, 권한 변경 명령어

$ sudo vim /etc/fstab

최종적으로 이런 형태가 되면 된다.

1
2
3
4
5
6
7
8
proc            /proc           proc    defaults          0       0
PARTUUID=71364f66-01  /boot           vfat    defaults          0       2
PARTUUID=71364f66-02  /               ext4    defaults,noatime  0       1
# a swapfile is not a swap partition, no line here
#   use  dphys-swapfile swap[on|off]  for that

/dev/sda1   /home/deukUSB    ext4   defaults   0  0

재부팅해서 확인하면 됨.
옵션에 대한 자세한 사항은…
참조 : Linux(debian) - Disk Mount(자동) 명령어

fstab 부팅 안될 시 해결법

fstab은 굉장히 민감한 거 같다. 처음 레즈베리파이를 힘겹게 설치하고 fstab ntfs를 Ntfs로 썼다가 다시 깔았다. 처음부터…

repair or recovery 모드

VNC, Terminal로만 사용하는 사용자는 당황할 수 밖에 없었다. 일단 HDMI로 모니터에 연결하자.

부팅화면에서 아래와 같은 메세지와 함께 멈춘다.

1
2
Give root password for maintenance
(or type Control-D to continue):

root password 입력해서 fstab 수정해준다.

$ vim /etc/fstab

root 권한이라 sudo는 불필요. 아래가 내가 실수해서 수정한 내용들이다. 무슨 숨은 그림 찾기도 아니고…

  • dev/sda1 -> /dev/sda1
  • Ntfs -> ntfs
  • default -> defaults

    혹여나 read-only mode인 경우 mount -o remount,rw /로 read-write mode 변경이 필요한 경우도 있단다.

reboot

reboot 해결되면 다행


P.S

쓰다보니 너무 장황하게 쓴거 같다. 초보로 고생한 내용들을 쓰다가 보니…

어쨌든 Windows에 익숙했던 단어들이 다르게 쓰이는 경우를 경험할 수 있어서 나름 재미있었다.

HDD, SSD, CD-ROM 등도 개념은 비슷하니 검색해보면 쉽게 될 듯…


< Back to Raspberry Pi >

This post is licensed under CC BY 4.0 by the author.

FIRE TV Brand-New UI - 파이어티비 새로운 디자인 UI

iPad IPTV m3u - 아이패드 m3u 활용 한국 실시간 방송 보기

Comments powered by Disqus.