Loading
2014.03.31 00:59 - Vazrupe Vazrupe

라즈베리 파이(라즈비안) 파티션 확장&스왑 파티션 설정하기

라즈베리 파이는 기본적으로 부팅파일만 담고 실행하게 되면 1.8G정도의 용량을 사용한다.


하지만 최대 사용 용량은 2G 정도로 지정되어 있고, 기본적으로 이 용량을 'sudo raspi-config'에서

'1 Expand-Filesystem'을 실행하여 SD카드의 모든 용량을 사용할 수 있다.


하지만 이 때의 문제점은 남아있는 모든 용량(Sector)을 사용하기 때문에,

Swap 파티션을 생성하지 못하는 문제가 있다.


1. 파티션 확장 -> Swap 파티션 생성(실패)


반대로 Swap 파티션을 생성하고 파티션을 확장하려고 하면 그것도 되지않는다.


이유인 즉슨, 확장을 하려는 파티션이 무조건 마지막 파티션이어야 하기 때문이다.


라즈비안의 기본 파티션은 2개가 있다.


이 중 확장해야하는 파티션은 2번째 파티션인 '/dev/mmcblk0p2'이다.


하지만 이번에는 먼저 Swap 파티션을 생성하였기 때문에 3번 파티션인 '/dev/mmcblk0p3'이 존재하게 된다.


따라서 'sudo raspi-config → 1 Expand-Filesystem'은 동작하지 않게 된다.


2. Swap 파티션 생성 -> 파티션 확장(실패)



이 문제를 해결하려고 하면 파티션을 확장하고, Swap 파티션을 생성하여야 하는데, 1번의 방식과는 다른 방식으로 해야한다.


기존의 라즈비안 설정 도구인 'raspi-config'을 사용하지 않고, fdisk를 이용해 2번째 파티션을 다시 생성하여 용량을 재설정하는 것이다.


1. $ sudo fdisk -l


Disk /dev/mmcblk0: 7948 MB, 7948206080 bytes

4 heads, 16 sectors/track, 242560 cylinders, total 15523840 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x000714e9


        Device Boot      Start         End      Blocks   Id  System

/dev/mmcblk0p1            8192      122879       57344    c  W95 FAT32 (LBA)

/dev/mmcblk0p2          122880     3788799     1832960   83  Linux


여기서 주목해야 할 곳은 처음으로 밑줄 친 '15523840' 값이다. 이 값은 SD 카드의 sector의 개수를 나타낸다.


sector의 시작이 0이므로 마지막 Sector의 값은 저기서 1을 뺀 '15523839'가 된다.


여기서 1G만큼의 Sector를 빼야한다.


15523839 - 2097152(1G) = 13426687


이 계산으로 나온 값이 Swap 파티션의 시작 Sector이다. 이 값을 잘 기억해두자.


이제 두번째로 밑줄 친 '122880'을 보자. 이 값은 바로 바로 2번째 파티션이 시작하는 Sector의 위치이다.


이 값을 기억해야 하는 이유는 'fdisk 명령어'를 이용해 파티션을 생성할 때 시작 섹터(First Sector)가 2048이 기본값이기 때문이다.


2. $ sudo fdisk -c -u /dev/mmcblk0


Command (m for help): d

Partition number (1-4): 2


여기까지하면 2번째 파티션이 지워진다.


Command (m for help): n

Partition type:

   p   primary (3 primary, 0 extended, 1 free)

   e   extended

Select (default e): p

Selected Partition (default 2): 2

First Sector (2048-15523839, default 2048): 122880

Last sector, +sectors or +size{K,M,G} (122880-15523839, default 15523839): 13426686


이제 2번째 파티션 생성이 끝났다.


Last sector의 값은 Swap 파티션의 First Sector-1이다. 위에서 계산한 값보다 1적게 넣어주면 된다.


Command (m for help): w


3. $ resize2fs /dev/mmcblk0p2

$ sudo shutdown -r now


생성된 2번째 파티션을 인식시키고 재부팅을 시켜준다. 이후 다시 로그온한다.


4. $ sudo fdisk -c -u /dev/mmcblk0


Command (m for help): n

Partition type:

   p   primary (3 primary, 0 extended, 1 free)

   e   extended

Select (default e): p

Selected Partition (default 3): 3

First Sector (2048-15523839, default 2048): 13426687

Last sector, +sectors or +size{K,M,G} (13426687-15523839, default 15523839): 15523839

Command (m for help): t

Partition number (1-4): 3

Hex code (type L to list codes): 82

Command (m for help): w


Swap 파티션의 생성이 끝났다.


Disk /dev/mmcblk0: 7948 MB, 7948206080 bytes

4 heads, 16 sectors/track, 242560 cylinders, total 15523840 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x000714e9


        Device Boot      Start         End      Blocks   Id  System

/dev/mmcblk0p1            8192      122879       57344    c  W95 FAT32 (LBA)

/dev/mmcblk0p2          122880    13426686    6651903+  83  Linux

/dev/mmcblk0p3        13426687    15523840     1048576+  82  Linux swap / Solaris 


$ sudo shutdown -r now


5. $ sudo mkswap /dev/mmcblk0p3

$ sudo swapon /dev/mmcblk0p3

$ sudo vi /etc/fstab


(/dev/mmcblk0p2 아래에 다음을 추가)

/dev/mmcblk0p3  swap            swap    defaults          0       0


$ vi ~/.bashrc

맨 마지막에 아래를 추가


sudo dphys-swapfile swapoff

sudo dphys-swapfile uninstall


$ sudo shutdown -r now


6. 이제 용량 확장과, Swap 파티션이 완성되었는지 확인하면 된다.


$ df -T / $ df -m : 용량 확인

$ swapon -s : swap 영역 확인

$ free -m : 메모리 확인

  1. BlogIcon Teraphonia 2014.08.16 15:16 신고

    이거 고민하고 있었는데.. 좋은 정보 감사합니다!! 스크랩 해갈게요~!

댓글을 입력하세요

티스토리 툴바