라즈베리 파이는 기본적으로 부팅파일만 담고 실행하게 되면 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
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 : 메모리 확인
'Machine' 카테고리의 다른 글
[SerialPort 통신] Virtual Serial Port Emulator 사용 (0) | 2017.02.23 |
---|