대표적인 Single Board Computer(SBC) 인 라즈베라파이 CM4를 구매하여 시스템을 꾸며 보았다. CM4 는 32 GB eMMC Flash memory 가 내장되어 있어 OS (ubuntu) 를 설치할 수 있으나 용량이 적어 다른 앱을 설치하거나 사용 데이타가 커지면 금방 디스크가 차게 된다. 이를 극복하기 위해 캐리어 보드에 M.2 ssd를 설치하고 M.2 디스크에서 부팅하게 하는 방법을 정리하였다.
1. eMMC Flash memory 에 우분투 (ubuntu) 설치
먼저 eMMC에 우분투를 설치한다. Rasberry Pi Manager 를 이용하여 OS를 설치하는 방법에 대해서는 인터넷에 잘 나와있어 여기서는 설명하지 않겠다.
2. M.2 ssd 파티셔닝 하기
아래와 같은 방법으로 M.2 ssd를 파티션 한다.
먼저 디스크를 확인해 보자 '
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
loop0 7:0 0 4K 1 loop /snap/bare/5
loop1 7:1 0 57.9M 1 loop /snap/core20/1590
loop2 7:2 0 151.4M 1 loop /snap/firefox/1671
loop3 7:3 0 383.8M 1 loop /snap/gnome-3-38-2004/113
loop4 7:4 0 91.7M 1 loop /snap/gtk-common-themes/1535
loop5 7:5 0 44.3M 1 loop /snap/snap-store/581
loop6 7:6 0 40.6M 1 loop /snap/snapd/16299
loop7 7:7 0 276K 1 loop /snap/snapd-desktop-integration/15
mmcblk0 179:0 0 29.1G 0 disk
├─mmcblk0p1 179:1 0 256M 0 part /boot/firmware
└─mmcblk0p2 179:2 0 28.9G 0 part /
mmcblk0boot0 179:32 0 4M 1 disk
mmcblk0boot1 179:64 0 4M 1 disk
nvme0n1 259:0 0 465.8G 0 disk
파티션을 위해 다음의 명령을 실행한다.
$ sudo fdisk /dev/nvme0n1
Command (m for help): p
Disk /dev/nvme0n1: 465.76 GiB, 500107862016 bytes, 976773168 sectors
Disk model: WD Blue SN570 500GB
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xa356d7d1
Device Boot Start End Sectors Size Id Type
/dev/nvme0n1p1 2048 976773119 976771072 465.8G 83 Linux
아래와 같이 기존의 파티션을 지운다.
Command (m for help): d
Selected partition 1
Partition 1 has been deleted.
Command (m for help): n
그리고 새로운 파티션을 만든다.
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1):
First sector (2048-976773167, default 2048):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-976773167, default 976773167):
Created a new partition 1 of type 'Linux' and of size 465.8 GiB.
Partition #1 contains a ext4 signature.
Do you want to remove the signature? [Y]es/[N]o: N
그리고 만들어진 파티션 맵을 기록한다.
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
다음의 명령을 실행한다.
$ sudo partprobe /dev/nvme0n1
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
loop0 7:0 0 4K 1 loop /snap/bare/5
loop1 7:1 0 57.9M 1 loop /snap/core20/1590
loop2 7:2 0 151.4M 1 loop /snap/firefox/1671
loop3 7:3 0 383.8M 1 loop /snap/gnome-3-38-2004/113
loop4 7:4 0 91.7M 1 loop /snap/gtk-common-themes/1535
loop5 7:5 0 44.3M 1 loop /snap/snap-store/581
loop6 7:6 0 40.6M 1 loop /snap/snapd/16299
loop7 7:7 0 276K 1 loop /snap/snapd-desktop-integration/15
mmcblk0 179:0 0 29.1G 0 disk
├─mmcblk0p1 179:1 0 256M 0 part /boot/firmware
└─mmcblk0p2 179:2 0 28.9G 0 part /
mmcblk0boot0 179:32 0 4M 1 disk
mmcblk0boot1 179:64 0 4M 1 disk
nvme0n1 259:0 0 465.8G 0 disk
└─nvme0n1p1 259:1 0 465.8G 0 part
이제 eMMC에 있는 내용을 M.2로 copy 한다.
$ sudo dd if=/dev/mmcblk0 of=/dev/nvme0n1 bs=4MB
7817+1 records in
7817+1 records out
완료 후 다음의 명열을 실행한다.
$ sudo sync
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
loop0 7:0 0 4K 1 loop /snap/bare/5
loop1 7:1 0 57.9M 1 loop /snap/core20/1590
loop2 7:2 0 151.4M 1 loop /snap/firefox/1671
loop3 7:3 0 383.8M 1 loop /snap/gnome-3-38-2004/113
loop4 7:4 0 91.7M 1 loop /snap/gtk-common-themes/1535
loop5 7:5 0 44.3M 1 loop /snap/snap-store/581
loop6 7:6 0 40.6M 1 loop /snap/snapd/16299
loop7 7:7 0 276K 1 loop /snap/snapd-desktop-integration/15
mmcblk0 179:0 0 29.1G 0 disk
├─mmcblk0p1 179:1 0 256M 0 part /boot/firmware
└─mmcblk0p2 179:2 0 28.9G 0 part /
mmcblk0boot0 179:32 0 4M 1 disk
mmcblk0boot1 179:64 0 4M 1 disk
nvme0n1 259:0 0 465.8G 0 disk
├─nvme0n1p1 259:2 0 256M 0 part
└─nvme0n1p2 259:3 0 28.9G 0 part
나의 경우는 500 GB M.2 ssd를 장착했으나 위에 나타난 것 과 같이 약 30 GB 만 사용하고 있어 nvme0n1p2 파티션을 전체 ssd 로 확장해 줄 필요가 있다.
$ sudo reboot
리부팅 된 후 다음의 명령으로 필요한 pkg를 설치한다.
$ sudo apt install raspi-config
$ sudo raspi-config
그리고 나타난 메뉴에서 다음을 선택하여 파티션을 확장해 준다 .
6. Advanced Options
A1. Expand Filesystem
그리고
$ sudo reboot
부팅후 다음의 명령으로 root directory와 부팅 디바이스가 변경된 것을 확인하자.
$ lsblk
$ df -h